İçeriğe geç

Nesne Sayma kullanarak Ultralytics YOLO11

Nesne Sayma Nedir?

Colab'da Açık Nesne Sayma

Nesne sayma ile Ultralytics YOLO11 videolarda ve kamera akışlarında belirli nesnelerin doğru bir şekilde tanımlanmasını ve sayılmasını içerir. YOLO11 , son teknoloji 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: Sınıf Bazında Nesne Sayma Ultralytics YOLOv8

Nesne Saymanın Avantajları

  • Kaynak Optimizasyonu: Nesne sayımı, doğru sayımlar sağlayarak verimli kaynak yönetimini kolaylaştırır ve envanter yönetimi gibi uygulamalarda kaynak tahsisini optimize eder.
  • Gelişmiş Güvenlik: Nesne sayma, varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır ve proaktif tehdit tespitine yardımcı olur.
  • Bilgilendirilmiş Karar Alma: Nesne sayımı, perakende, trafik yönetimi ve diğer çeşitli alanlarda karar verme, süreçleri optimize etme için değerli bilgiler sunar.

Gerçek Dünya Uygulamaları

Lojistik Akuakültür
Konveyör Bant Paketleri Kullanarak Sayma Ultralytics YOLO11 Denizde Balık Sayımı Ultralytics YOLO11
Konveyör Bant Paketleri Kullanarak Sayma Ultralytics YOLO11 Denizde Balık Sayımı Ultralytics YOLO11

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 bir tablo ObjectCounter Argümanlar:

Tartışma Tip Varsayılan Açıklama
model str None Ultralytics YOLO Model Dosyasının Yolu.
show_in bool True Video akışında giriş sayılarının görüntülenip görüntülenmeyeceğini kontrol etmek için bayrak.
show_out bool True Video akışında çıkış sayılarının görüntülenip görüntülenmeyeceğini kontrol etmek için bayrak.
region list [(20, 400), (1260, 400)] Sayım bölgesini tanımlayan noktaların listesi.

Bu ObjectCounter çözümü birkaç farklı track Argümanlar:

Tartışma Tip Varsayılan Açıklama
tracker str 'botsort.yaml' Kullanılacak izleme algoritmasını belirtir, örn, bytetrack.yaml veya botsort.yaml.
conf float 0.3 Algılamalar için güven eşiğini ayarlar; düşük değerler daha fazla nesnenin izlenmesine izin verir ancak yanlış pozitifler içerebilir.
iou float 0.5 Çakışan algılamaları filtrelemek için Birlik üzerinde Kesişim (IoU) eşiğini ayarlar.
classes list None Sonuçları sınıf dizinine 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 ederek 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 CPU, belirli bir GPU veya model yürütme için diğer hesaplama cihazları arasında seçim yapmasına olanak tanır.

Ayrıca, aşağıda listelenen görselleştirme argümanları da desteklenmektedir:

Tartışma Tip Varsayılan Açıklama
show bool False Eğer True, 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.

SSS

Ultralytics YOLO11 adresini kullanarak bir videodaki nesneleri nasıl sayabilirim?

Ultralytics YOLO11 adresini kullanarak bir videodaki nesneleri saymak için aşağıdaki adımları takip edebilirsiniz:

  1. Gerekli kütüphaneleri içe aktarın (cv2, ultralytics).
  2. Sayım bölgesini tanımlayın (örn. bir çokgen, ç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 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, aynı anda birden fazla bölgedeki nesneleri saymaya yönelik RegionCounter çözümüne göz atın.

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

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

  1. Kaynak Optimizasyonu: Doğru sayımlar sağlayarak verimli kaynak yönetimini kolaylaştırır, envanter yönetimi gibi sektörlerde kaynak tahsisini optimize etmeye yardımcı olur.
  2. Geliştirilmiş Güvenlik: Varlıkları doğru bir şekilde izleyerek ve sayarak, proaktif tehdit algılama ve güvenlik sistemlerine yardımcı olarak güvenlik ve gözetimi geliştirir.
  3. Bilgilendirilmiş Karar Alma: Perakende, trafik yönetimi ve daha fazlası gibi alanlarda karar verme, süreçleri optimize etme için değerli içgörüler sunar.
  4. Gerçek Zamanlı İşleme: YOLO11' in mimarisi gerçek zamanlı çıkarıma olanak tanıyarak onu canlı video akışları ve zamana duyarlı uygulamalar için uygun hale getirir.

Uygulama örnekleri ve pratik uygulamalar için, belirli bölgelerdeki nesneleri izlemeye yönelik TrackZone çözümünü keşfedin.

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

Ultralytics YOLO11 adresini 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ının nesnelerini saydığı anlamına gelir 0 ve 2 (örneğin, COCO veri kümesindeki kişi ve araba). Sınıf endeksleri hakkında daha fazla bilgi için COCO veri seti 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 sağlar:

  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 son teknoloji doğruluk sağlar, yanlış pozitiflerin sayısını azaltır ve genel sistem güvenilirliğini artırır.
  3. Entegrasyon Kolaylığı: YOLO11 , modern yapay zeka uygulamaları için çok önemli olan mobil ve uç cihazlar da dahil olmak üzere çeşitli platformlar ve cihazlarla sorunsuz entegrasyon sunar.
  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 için Ultralytics YOLO11 Dokümantasyonuna göz atın.

YOLO11 adresini 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 şekilde uygundur. Gelişmiş özellikleri, dinamik ortamlarda yüksek doğrulukta nesne izleme, sayma ve sınıflandırma sağlar. Örnek kullanım durumları şunları içerir:

  • Kalabalık Analizi: Büyük toplantıları izleyin ve yönetin, güvenliği sağlayın ve bölge bazlı sayımla kalabalık akışını optimize edin.
  • Trafik Yönetimi: Araçları takip edin ve sayın, trafik düzenlerini analiz edin ve hız tahmini özellikleriyle trafik sıkışıklığını gerçek zamanlı olarak yönetin.
  • Perakende Analitiği: Mağaza düzenlerini optimize etmek ve müşteri deneyimini iyileştirmek için müşteri hareket modellerini 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ünyadaki bilgisayarla görme zorlukları için tasarlanmış kapsamlı bir araç seti için Ultralytics Çözümlerini keşfedin.

📅1 yıl önce oluşturuldu ✏️ 6 gün önce güncellendi

Yorumlar