İçeriğe geç

Ultralytics YOLO11 Kullanarak Nesne Sayımı

Nesne Sayımı nedir?

Colab'de Nesne Sayımını Açın

Ultralytics YOLO11 ile nesne sayımı, video ve kamera akışlarındaki belirli nesnelerin doğru bir şekilde tanımlanmasını ve sayılmasını içerir. YOLO11, en son teknolojiye sahip algoritmaları ve derin öğrenme yetenekleri sayesinde kalabalık analizi ve gözetim gibi çeşitli senaryolar için verimli ve hassas nesne sayımı sağlayarak gerçek zamanlı uygulamalarda öne çıkar.



İzle: Ultralytics YOLO11 ile Gerçek Zamanlı Nesne Sayımı Nasıl Yapılır? 🍏

Nesne Sayımının Avantajları

  • Kaynak Optimizasyonu: Nesne sayımı, doğru sayımlar sağlayarak verimli kaynak yönetimine olanak tanır ve envanter yönetimi gibi uygulamalarda kaynak tahsisini optimize eder.
  • Gelişmiş Güvenlik: Nesne sayımı, varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır, proaktif tehdit algılamaya yardımcı olur.
  • Bilinçli Karar Verme: Nesne sayımı, perakende, trafik yönetimi ve diğer çeşitli alanlardaki süreçleri optimize ederek karar verme için değerli bilgiler sunar.

Gerçek Dünya Uygulamaları

Lojistik Su Ürünleri Yetiştiriciliği
Ultralytics YOLO11 Kullanılarak Konveyör Bandı Paketleri Sayımı Ultralytics YOLO11 Kullanarak Denizde Balık Sayımı
Ultralytics YOLO11 Kullanılarak Konveyör Bandı Paketleri Sayımı Ultralytics YOLO11 Kullanarak Denizde Balık Sayımı

Ultralytics YOLO Kullanarak Nesne Sayma

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video.mp4"

# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# region_points = [(20, 400), (1080, 400)]                                      # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]   # polygon region

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize object counter object
counter = solutions.ObjectCounter(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "bytetrack.yaml"
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = counter(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

ObjectCounter Argümanlar

İşte şunları içeren bir tablo: ObjectCounter argümanlar:

Argüman Tür Varsayılan Açıklama
model str None Ultralytics YOLO Model Dosyasına Giden Yol.
show_in bool True Video akışında giriş sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti.
show_out bool True Video akışında çıkış sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti.
region list '[(20, 400), (1260, 400)]' Sayma bölgesini tanımlayan nokta listesi.

ObjectCounter çözümü, birkaçının kullanımına izin verir track argümanlar:

Argüman Tür Varsayılan Açıklama
tracker str 'botsort.yaml' Kullanılacak izleme algoritmasını belirtir, örneğin: bytetrack.yaml veya botsort.yaml.
conf float 0.3 Algılamalar için güven eşiğini ayarlar; daha düşük değerler daha fazla nesnenin izlenmesine olanak tanır ancak yanlış pozitifleri içerebilir.
iou float 0.5 Çakışan algılamaları filtrelemek için Intersection over Union (IoU) eşiğini ayarlar.
classes list None Sonuçları sınıf indeksine göre filtreler. Örneğin, classes=[0, 2, 3] yalnızca belirtilen sınıfları izler.
verbose bool True İzleme sonuçlarının görüntülenmesini kontrol eder ve izlenen nesnelerin görsel bir çıktısını sağlar.
device str None Çıkarım için cihazı belirtir (örn. cpu, cuda:0 veya 0). Kullanıcıların model yürütme için CPU, belirli bir GPU veya diğer işlem cihazları arasında seçim yapmasına olanak tanır.

Ek olarak, aşağıda listelenen görselleştirme argümanları desteklenir:

Argüman Tür Varsayılan Açıklama
show bool False Eğer True, ek açıklamalı görüntüleri veya videoları bir pencerede görüntüler. Geliştirme veya test sırasında anında görsel geri bildirim için kullanışlıdır.
line_width None or int None Sınırlayıcı kutuların çizgi genişliğini belirtir. Eğer None, çizgi genişliği, görüntü boyutuna göre otomatik olarak ayarlanır. Netlik için görsel özelleştirme sağlar.
show_conf bool True Etiketin yanında her algılama için güvenilirlik puanını görüntüler. Modelin her algılama için kesinliği hakkında fikir verir.
show_labels bool True Görsel çıktıdaki her algılama için etiketleri görüntüler. Algılanan nesnelerin anında anlaşılmasını sağlar.

SSS

Ultralytics YOLO11 kullanarak bir videodaki nesneleri nasıl sayarım?

Ultralytics YOLO11 kullanarak bir videodaki nesneleri saymak için şu adımları izleyebilirsiniz:

  1. Gerekli kütüphaneleri içe aktarın (cv2, ultralytics).
  2. Sayma bölgesini tanımlayın (örneğin, bir poligon, çizgi vb.).
  3. Video yakalamayı ayarlayın ve nesne sayacını başlatın.
  4. Nesneleri izlemek ve tanımlanan bölge içinde saymak için her bir kareyi işleyin.

İşte bir bölgede sayım yapmak için basit bir örnek:

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    assert cap.isOpened(), "Error reading video file"
    w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

Daha gelişmiş yapılandırmalar ve seçenekler için, birden çok bölgedeki nesneleri aynı anda saymak üzere RegionCounter çözümüne göz atın.

Nesne sayımı için Ultralytics YOLO11 kullanmanın avantajları nelerdir?

Nesne sayımı için Ultralytics YOLO11 kullanmak çeşitli avantajlar sunar:

  1. Kaynak Optimizasyonu: Doğru sayımlar sağlayarak verimli kaynak yönetimine olanak tanır ve envanter yönetimi gibi sektörlerde kaynak tahsisini optimize etmeye yardımcı olur.
  2. Gelişmiş Güvenlik: Varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır, proaktif tehdit algılama ve güvenlik sistemlerine yardımcı olur.
  3. Bilinçli Karar Verme: Perakende, trafik yönetimi ve daha pek çok alanda süreçleri optimize etmek için karar verme konusunda değerli bilgiler sunar.
  4. Gerçek zamanlı İşleme: YOLO11'in mimarisi gerçek zamanlı çıkarımı mümkün kılarak canlı video akışları ve zamana duyarlı uygulamalar için uygun hale getirir.

Uygulama örnekleri ve pratik uygulamalar için, belirli bölgelerdeki nesneleri izlemek üzere TrackZone çözümünü inceleyin.

Ultralytics YOLO11 kullanarak belirli nesne sınıflarını nasıl sayabilirim?

Ultralytics YOLO11 kullanarak belirli nesne sınıflarını saymak için, izleme aşamasında ilgilendiğiniz sınıfları belirtmeniz gerekir. Aşağıda bir Python örneği verilmiştir:

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    assert cap.isOpened(), "Error reading video file"
    w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

Bu örnekte, classes_to_count=[0, 2] sınıfındaki nesneleri saydığı anlamına gelir 0 ve 2 (örneğin, COCO veri kümesindeki kişi ve araba). Sınıf indeksleri hakkında daha fazla bilgiyi şurada bulabilirsiniz: COCO veri kümesi dokümantasyonu.

Gerçek zamanlı uygulamalar için neden diğer nesne algılama modelleri yerine YOLO11 kullanmalıyım?

Ultralytics YOLO11, Faster R-CNN, SSD ve önceki YOLO sürümleri gibi diğer nesne algılama modellerine göre çeşitli avantajlar sunar:

  1. Hız ve Verimlilik: YOLO11, gerçek zamanlı işleme yetenekleri sunarak, gözetim ve otonom sürüş gibi yüksek hızlı çıkarım gerektiren uygulamalar için idealdir.
  2. Doğruluk: Nesne algılama ve izleme görevleri için en üstün doğruluğu sağlar, yanlış pozitiflerin sayısını azaltır ve genel sistem güvenilirliğini artırır.
  3. Entegrasyon Kolaylığı: YOLO11, mobil ve uç cihazlar dahil olmak üzere çeşitli platformlar ve cihazlarla sorunsuz entegrasyon sunar ve bu da modern yapay zeka uygulamaları için çok önemlidir.
  4. Esneklik: Belirli kullanım durumu gereksinimlerini karşılamak için yapılandırılabilir modellerle nesne algılama, segmentasyon ve izleme gibi çeşitli görevleri destekler.

Özellikleri ve performans karşılaştırmaları hakkında daha derinlemesine bilgi edinmek için Ultralytics YOLO11 Dokümantasyonuna göz atın.

YOLO11'i kalabalık analizi ve trafik yönetimi gibi gelişmiş uygulamalar için kullanabilir miyim?

Evet, Ultralytics YOLO11, gerçek zamanlı algılama yetenekleri, ölçeklenebilirliği ve entegrasyon esnekliği sayesinde kalabalık analizi ve trafik yönetimi gibi gelişmiş uygulamalar için mükemmel bir şekilde uygundur. Gelişmiş özellikleri, dinamik ortamlarda yüksek doğruluklu nesne takibi, sayımı ve sınıflandırmasına olanak tanır. Örnek kullanım durumları şunlardır:

  • Kalabalık Analizi: Büyük toplantıları izleyin ve yönetin, güvenliği sağlayın ve bölge tabanlı sayım ile kalabalık akışını optimize edin.
  • Trafik Yönetimi: Hız tahmini yetenekleriyle araçları takip ve sayın, trafik düzenlerini analiz edin ve gerçek zamanlı olarak tıkanıklığı yönetin.
  • Perakende Analitiği: Mağaza yerleşimlerini optimize etmek ve müşteri deneyimini iyileştirmek için müşteri hareket düzenlerini ve ürün etkileşimlerini analiz edin.
  • Endüstriyel Otomasyon: Konveyör bantlarındaki ürünleri sayın ve kalite kontrol ve verimlilik iyileştirmeleri için üretim hatlarını izleyin.

Daha özel uygulamalar için, gerçek dünya bilgisayarlı görü zorlukları için tasarlanmış kapsamlı bir araç seti için Ultralytics Çözümlerini keşfedin.



📅 1 yıl önce oluşturuldu ✏️ 2 ay önce güncellendi

Yorumlar