Ultralytics YOLO27:

Ultralytics YOLO26 ile Nesne Sayımı#

Nesne Sayımı Nedir?#

Open Object Counting In Colab

Ultralytics YOLO26 ile nesne sayımı, videolarda ve kamera akışlarında belirli nesnelerin doğru şekilde tanımlanıp sayılmasını içerir. YOLO26, en gelişmiş algoritmaları ve derin öğrenme yetenekleri sayesinde kalabalık analizi ve gözetim gibi çeşitli senaryolarda verimli ve hassas nesne sayımı sağlayarak gerçek zamanlı uygulamalarda öne çıkar.



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

Nesne Sayımını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 sayımı, varlıkları doğru şekilde izleyip sayarak güvenlik ve gözetimi geliştirir ve proaktif tehdit algılamaya yardımcı olur.
  • Bilinçli Karar Verme: Nesne sayımı, karar verme için değerli içgörüler sunarak perakende, trafik yönetimi ve diğer çeşitli alanlardaki süreçleri optimize eder.

Gerçek Dünya Uygulamaları#

LojistikSu Ürünleri Yetiştiriciliği
Ultralytics YOLO26 ile Konveyör Bandındaki Paketlerin SayımıUltralytics YOLO26 ile Denizde Balık Sayımı
Ultralytics YOLO26 ile Konveyör Bandındaki Paketlerin SayımıUltralytics YOLO26 ile Denizde Balık Sayımı

YOLO26 ile Nesne Sayma#

Bir sayım region tanımla — bir çizgi için iki nokta, bir çokgen için üç veya daha fazla nokta — ve bunu ObjectCounter çözümüne aktar. Sayaç, her nesneyi kareler boyunca izler ve izlenen nesneler çizgiyi geçtiğinde veya bölgeden geçtiğinde GİRİŞ/ÇIKIŞ sayılarını toplar; ardından çıktı videosuna yazabileceğin açıklamalı bir kare döndürür.

Ultralytics YOLO ile Nesne Sayımı
# 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 bağımsız değişkeni iki nokta (çizgi için) veya üç ya da daha fazla noktalı bir çokgen kabul eder. Koordinatları bağlanmaları gereken sırayla tanımla; böylece sayaç giriş ve çıkışların tam olarak nerede gerçekleştiğini bilir.

ObjectCounter Bağımsız Değişkenleri#

ObjectCounter bağımsız değişkenlerini içeren tablo aşağıda verilmiştir:

Bağımsız değişkenTürVarsayılanAçıklama
modelstrNoneBir Ultralytics YOLO model dosyasının yolu.
show_inboolTrueVideo akışında giriş sayılarının gösterilip gösterilmeyeceğini denetleyen bayrak.
show_outboolTrueVideo akışında çıkış sayılarının gösterilip gösterilmeyeceğini denetleyen bayrak.
regionlist veya dictNoneİlgi bölgesini tanımlayan noktalar: (x, y) demetlerinden oluşan bir liste veya birden fazla bölge için bölge adlarını nokta listelerine eşleyen bir sözlük (RegionCounter yalnızca). None olduğunda bölge gerektiren çözümler önceden tanımlanmış varsayılan değere geri döner.
line_widthint2Çözümün çizdiği kutular, kilit noktaları ve sayılar için çizgi kalınlığı.
verboseboolTrueÇözümün kare başına giriş şeklini, sınıf sayılarını ve işlem hızını kaydetmesini etkinleştirir. Takip çağrısı her zaman sessizdir.

ObjectCounter çözümü, çeşitli track bağımsız değişkenlerinin kullanılmasına olanak tanır:

Bağımsız değişkenTürVarsayılanAçıklama
trackerstr'botsort.yaml'Kullanılacak takip algoritmasını belirtir. Yerleşik seçenekler: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Algılamalar için güven eşiğini belirler; daha düşük değerler daha fazla nesnenin takip edilmesine olanak tanır ancak yanlış pozitifler içerebilir.
ioufloat0.7Örtüşen algılamaları filtrelemek için Birleşim Üzerindeki Kesişim (IoU) eşiğini belirler.
classeslistNoneSonuçları sınıf dizinine göre filtreler. Örneğin, classes=[0, 2, 3] yalnızca belirtilen sınıfları takip eder.
devicestrNoneÇıkarım için cihazı belirtir (ör. cpu, cuda:0 veya 0). Kullanıcıların model çalıştırma işlemi için CPU, belirli bir GPU veya diğer hesaplama cihazları arasında seçim yapmasına olanak tanır.
imgszint or tuple640Hedef çıkarım görüntü boyutu: kare için bir tamsayı veya bir (height, width) çifti. Şekiller model adımına göre ayarlanır.
max_detint300İzlemeden önce kare başına tutulan maksimum algılama sayısı; yoğun sahnelerde bir çözümün işlediği nesneleri sınırlar.
quantizeint or strNoneÇıkarım hassasiyeti: PyTorch ve TorchScript modelleri için 16 (FP16) veya 32/ayarlanmamış (FP32); diğer formatlar, yapılarının ve çalışma zamanının seçtiği hassasiyette hesaplama yapar. Kullanımdan kaldırılan half bayrağının yerini alır.

Ayrıca aşağıda listelenen görselleştirme bağımsız değişkenleri de desteklenir:

Bağımsız değişkenTürVarsayılanAçıklama
showboolFalseTrue olduğunda 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 almak için kullanışlıdır.
show_confboolTrueHer algılamanın güven skorunu etiketin yanında görüntüler. Modelin her algılamaya ilişkin kesinliği hakkında fikir verir.
show_labelsboolTrueGörsel çıktıda her algılama için etiketleri görüntüler. Algılanan nesnelerin hemen anlaşılmasını sağlar.

SSS#

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

    1. Gerekli kitaplıkları (cv2, ultralytics) içe aktar.
    2. Sayım bölgesini (ör. çokgen, çizgi vb.) tanımla.
    3. Video yakalamayı ayarla ve nesne sayacını başlat.
    4. Nesneleri izlemek ve tanımlanan bölge içindeki nesneleri saymak için her kareyi işle.

    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 fazla bölgedeki nesneleri aynı anda saymaya yönelik RegionCounter çözümüne göz at.

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

    1. Kaynak Optimizasyonu: Doğru sayımlar sağlayarak verimli kaynak yönetimini kolaylaştırır ve envanter yönetimi gibi sektörlerde kaynak tahsisini optimize etmeye yardımcı olur.
    2. Gelişmiş Güvenlik: Varlıkları doğru şekilde izleyip sayarak güvenlik ve gözetimi geliştirir; proaktif tehdit algılamaya ve güvenlik sistemlerine yardımcı olur.
    3. Bilinçli Karar Verme: Karar verme için değerli içgörüler sunarak perakende, trafik yönetimi ve daha birçok alandaki süreçleri optimize eder.
    4. Gerçek Zamanlı İşleme: YOLO26'nın mimarisi gerçek zamanlı çıkarımı mümkün kılarak onu canlı video akışları ve zamana duyarlı uygulamalar için uygun hale getirir.

    Uygulama örnekleri ve pratik kullanım alanları için belirli bölgelerdeki nesneleri izlemeye yönelik TrackZone çözümünü incele.

  • Ultralytics YOLO26 kullanarak belirli nesne sınıflarını saymak için izleme aşamasında ilgilendiğin sınıfları belirtmen 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", "yolo26n.pt", [0, 2])

    Bu örnekte classes_to_count=[0, 2], 0 ve 2 sınıfındaki nesneleri (ör. COCO veri kümesindeki kişi ve araba) saydığı anlamına gelir. Sınıf dizinleri hakkında daha fazla bilgiyi COCO veri kümesi belgelerinde bulabilirsin.

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

    1. Hız ve Verimlilik: YOLO26, gerçek zamanlı işleme özellikleri sunarak gözetim ve otonom sürüş gibi yüksek hızlı çıkarım gerektiren uygulamalar için ideal hale gelir.
    2. Doğruluk: En gelişmiş algılama ve izleme doğruluğunu sunarak yanlış pozitifleri azaltır ve genel sistem güvenilirliğini artırır.
    3. Entegrasyon Kolaylığı: YOLO26, mobil cihazlar ve uç cihazlar dahil olmak üzere çeşitli platform ve cihazlarla sorunsuz entegrasyon sunar; bu, modern AI uygulamaları için kritik öneme sahiptir.
    4. Esneklik: Algılama ve segmentasyon görevlerini destekler; ayrıca üzerinde izleme modu ve belirli kullanım alanı gereksinimlerini karşılayacak şekilde yapılandırılabilir modeller sunar.

    Özelliklerini ve performans karşılaştırmalarını daha ayrıntılı incelemek için Ultralytics YOLO26 Belgelerine göz at.

  • 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 son derece uygundur. Gelişmiş özellikleri, dinamik ortamlarda yüksek doğrulukla nesne izleme, sayma ve sınıflandırma olanağı sağlar. Örnek kullanım alanları şunlardır:

    • Kalabalık Analizi: Güvenliği sağlamak ve bölge tabanlı sayımla kalabalık akışını optimize etmek için büyük toplulukları izle ve yönet.
    • Trafik Yönetimi: Araçları izle ve say, trafik düzenlerini analiz et ve hız tahmini özellikleriyle yoğunluğu gerçek zamanlı yönet.
    • Perakende Analitiği: Mağaza düzenlerini optimize etmek ve müşteri deneyimini iyileştirmek için müşteri hareketi düzenlerini ve ürün etkileşimlerini analiz et.
    • Endüstriyel Otomasyon: Kalite kontrolü ve verimlilik iyileştirmeleri için konveyör bantlarındaki ürünleri say ve üretim hatlarını izle.

    Daha özel uygulamalar için gerçek dünyadaki bilgisayarlı görü zorluklarına yönelik kapsamlı bir araç seti sunan Ultralytics Çözümlerini incele.

Yorumlar