İçeriğe geç

Ultralytics YOLO26 Kullanarak Nesne Sayımı

Nesne Sayımı nedir?

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

Ultralytics YOLO26 ile nesne sayımı, videolardaki ve kamera akışlarındaki belirli nesnelerin doğru bir şekilde tanımlanmasını ve sayılmasını içerir. YOLO26, 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 üstün performans gösterir.



İzle: Ultralytics YOLO26 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ı

LojistikSu Ürünleri Yetiştiriciliği
Ultralytics YOLO26 Kullanarak Konveyör Bandı Paket SayımıUltralytics YOLO26 Kullanarak Denizde Balık Sayımı
Ultralytics YOLO26 Kullanarak Konveyör Bandı Paket SayımıUltralytics YOLO26 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)]"

region argümanı, iki nokta (bir çizgi için) veya üç veya daha fazla noktaya sahip bir çokgen kabul eder. Koordinatları, sayaç giriş ve çıkışların tam olarak nerede gerçekleştiğini bilecek şekilde bağlanmaları gereken sırayla tanımlayın.

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)]  # rectangular 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="yolo26n.pt",  # model="yolo26n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes, e.g., person and car with the COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers, e.g., "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ümanTürVarsayılanAçıklama
modelstrNoneBir Ultralytics YOLO model dosyasının yolu.
show_inboolTrueVideo akışında giriş sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti.
show_outboolTrueVideo akışında çıkış sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti.
regionlist'[(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ümanTürVarsayılanAçıklama
trackerstr'botsort.yaml'Kullanılacak izleme algoritmasını belirtir, örneğin: bytetrack.yaml veya botsort.yaml.
conffloat0.1Algı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.
ioufloat0.7Çakışan algılamaları filtrelemek için Intersection over Union (IoU) eşiğini ayarlar.
classeslistNoneSonuçları sınıf indeksine göre filtreler. Örneğin, classes=[0, 2, 3] yalnızca belirtilen sınıfları izler.
verboseboolTrueİzleme sonuçlarının görüntülenmesini kontrol eder ve izlenen nesnelerin görsel bir çıktısını sağlar.
devicestrNoneÇı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ümanTürVarsayılanAçıklama
showboolFalseEğ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_widthint or NoneNoneSı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_confboolTrueEtiketin 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_labelsboolTrueGö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 YOLO26 kullanarak bir videodaki nesneleri nasıl sayarım?

Ultralytics YOLO26 kullanarak bir videodaki nesneleri saymak için şu adımları takip edebilirsiniz:

  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", "yolo26n.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.

Ultralytics YOLO26'yı nesne sayımı için kullanmanın avantajları nelerdir?

Ultralytics YOLO26'yı nesne sayımı için 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: YOLO26'nın mimarisi, gerçek zamanlı çıkarım yapılmasına olanak tanıyarak 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 YOLO26 kullanarak belirli nesne sınıflarını nasıl sayabilirim?

Ultralytics YOLO26 kullanarak belirli nesne sınıflarını saymak için, track etme aşamasında ilgilendiğiniz sınıfları belirtmeniz gerekir. Aşağıda bir python örneği bulunmaktadır:

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", "yolo26n.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 setindeki 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 detect etme modelleri yerine YOLO26'yı kullanmalıyım?

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

  1. Hız ve Verimlilik: YOLO26, 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ığı: YOLO26, mobil ve uç cihazlar dahil olmak üzere çeşitli platformlar ve cihazlarla sorunsuz entegrasyon sunar; bu da modern yapay zeka uygulamaları için kritik öneme sahiptir.
  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.

Daha derinlemesine bilgi edinmek için Ultralytics YOLO26 Dokümantasyonuna göz atın ve özelliklerini, performans karşılaştırmalarını keşfedin.

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

Evet, Ultralytics YOLO26, 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 track, sayma ve sınıflandırmaya 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.



📅 2 yıl önce oluşturuldu ✏️ 7 gün önce güncellendi
glenn-jocherRizwanMunawarRizwanMunawarMatthewNoycepderrengerleonnilBurhan-QUltralyticsAssistantIvorZhu331AyushExel

Yorumlar