Ultralytics YOLO27:

Ultralytics YOLO26 ile Mesafe Hesaplama#

Mesafe Hesaplama Nedir?#

Mesafe hesaplama, bir görüntü veya video karesi içindeki tespit edilen iki nesne arasındaki mesafeyi ölçme işlemidir. Ultralytics YOLO26 kullanıldığında, kullanıcı tarafından seçilen sınırlayıcı kutuların mesafesini hesaplamak için sınırlayıcı kutu ağırlık merkezi kullanılır.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Görseller#

Ultralytics YOLO26 ile Mesafe Hesaplama
Ultralytics YOLO26 Mesafe Hesaplama

Mesafe Hesaplamanın Avantajları#

  • Konumlandırma Hassasiyeti: Bilgisayarlı görü görevlerinde doğru uzamsal konumlandırmayı geliştirir.
  • Boyut Tahmini: Daha iyi bağlamsal anlayış için nesne boyutlarının tahmin edilmesini sağlar.
  • Sahne Anlayışı: Otonom araçlar ve gözetim sistemleri gibi uygulamalarda daha iyi karar verme için 3B sahne anlayışını geliştirir.
  • Çarpışmadan Kaçınma: Hareketli nesneler arasındaki mesafeleri izleyerek sistemlerin olası çarpışmaları tespit etmesini sağlar.
  • Uzamsal Analiz: İzlenen ortam içindeki nesne ilişkilerinin ve etkileşimlerinin analizini kolaylaştırır.
Mesafe Hesaplama
  • Mesafeyi hesaplamak için herhangi iki sınırlayıcı kutuya sol fare düğmesiyle tıklayın.
  • Çizilen tüm noktaları silmek için sağ fare düğmesini kullanın.
Mesafe bir tahmindir

Mesafe bir tahmindir ve derinlik bilgisinden yoksun 2B veriler kullanılarak hesaplandığı için tamamen doğru olmayabilir.

YOLO26 ile Mesafeleri Hesaplama#

DistanceCalculation çözümü, nesneleri kareler boyunca izler ve fareyle seçtiğin herhangi iki sınırlayıcı kutunun ağırlık merkezleri arasındaki Öklid mesafesini piksel cinsinden ölçer. Aşağıdaki örneği çalıştır, ardından bağlantı çizgisini çizmek ve mesafeyi okumak için iki nesneye sol tıkla; seçimini temizlemek için sağ tıkla.

Ultralytics YOLO ile Mesafe Hesaplama
import cv2

from ultralytics import solutions

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

# 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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # path to the YOLO26 model file.
    show=True,  # display the output
)

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

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

    results = distancecalculator(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

DistanceCalculation() Bağımsız Değişkenleri#

DistanceCalculation 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.
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.

DistanceCalculation çözümünde çeşitli track bağımsız değişkenlerinden de yararlanabilirsin.

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ğıdaki görselleştirme bağımsız değişkenleri kullanılabilir:

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.

Uygulama Ayrıntıları#

DistanceCalculation sınıfı, nesneleri video kareleri boyunca izleyerek ve seçilen sınırlayıcı kutuların ağırlık merkezleri arasındaki Öklid mesafesini hesaplayarak çalışır. İki nesneye tıkladığında çözüm:

  1. Seçilen sınırlayıcı kutuların ağırlık merkezlerini (merkez noktalarını) çıkarır
  2. Bu ağırlık merkezleri arasındaki Öklid mesafesini piksel cinsinden hesaplar
  3. Nesneler arasına bağlantı çizgisi çizerek mesafeyi kare üzerinde görüntüler

Uygulama, fare etkileşimlerini yönetmek için mouse_event_for_distance yöntemini kullanır ve kullanıcıların gerektiğinde nesneleri seçmesine ve seçimleri temizlemesine olanak tanır. process yöntemi ise kare kare işlemeyi, nesneleri izlemeyi ve mesafeleri hesaplamayı yönetir.

Uygulamalar#

YOLO26 ile mesafe hesaplamanın çok sayıda pratik uygulaması vardır:

  • Perakende Analitiği: Müşterilerin ürünlere yakınlığını ölçme ve mağaza yerleşiminin etkililiğini analiz etme
  • Endüstriyel Güvenlik: Çalışanlar ve makineler arasındaki güvenli mesafeleri izleme
  • Trafik Yönetimi: Araçlar arasındaki mesafeyi analiz etme ve takip mesafesi ihlalini tespit etme
  • Spor Analizi: Oyuncular, top ve sahanın önemli konumları arasındaki mesafeleri hesaplama
  • Sağlık Hizmetleri: Bekleme alanlarında uygun sosyal mesafeyi sağlama ve hastaların hareketlerini izleme
  • Robotik: Robotların engellerden ve insanlardan uygun mesafeyi korumasını sağlama

SSS#

  • Ultralytics YOLO26 kullanarak nesneler arasındaki mesafeleri hesaplamak için tespit edilen nesnelerin sınırlayıcı kutu ağırlık merkezlerini belirlemen gerekir. Bu işlem, Ultralytics'in solutions modülünden DistanceCalculation sınıfının başlatılmasını ve mesafeleri hesaplamak için modelin izleme çıktılarını kullanmayı içerir.

  • Ultralytics YOLO26 ile mesafe hesaplamayı kullanmak çeşitli avantajlar sunar:

    • Konumlandırma Hassasiyeti: Nesneler için doğru uzamsal konumlandırma sağlar.
    • Boyut Tahmini: Fiziksel boyutların tahmin edilmesine yardımcı olarak daha iyi bağlamsal anlayışa katkıda bulunur.
    • Sahne Anlayışı: 3B sahne kavrayışını geliştirerek otonom sürüş ve gözetim gibi uygulamalarda daha iyi karar vermeye yardımcı olur.
    • Gerçek Zamanlı İşleme: Hesaplamaları anlık olarak gerçekleştirerek canlı video analizi için uygun hale gelir.
    • Entegrasyon Yetenekleri: Nesne takibi ve hız tahmini gibi diğer YOLO26 çözümleriyle sorunsuz şekilde çalışır.
  • Evet, Ultralytics YOLO26 ile gerçek zamanlı video akışlarında mesafe hesaplayabilirsin. Bu işlem, OpenCV kullanarak video karelerini yakalamayı, YOLO26 nesne tespiti gerçekleştirmeyi ve ardışık karelerdeki nesneler arasındaki mesafeleri hesaplamak için DistanceCalculation sınıfını kullanmayı içerir. Ayrıntılı bir uygulama için video akışı örneğine bakabilirsin.

  • Ultralytics YOLO26 ile mesafe hesaplama sırasında çizilen noktaları silmek için sağ fare düğmesine tıklayabilirsin. Bu işlem çizdiğin tüm noktaları temizler. Daha fazla bilgi için mesafe hesaplama örneğinin notlar bölümüne bakabilirsin.

  • Ultralytics YOLO26'da DistanceCalculation sınıfını başlatmak için kullanılan temel bağımsız değişkenler şunlardır:

    • model: YOLO26 model dosyasının yolu.
    • tracker: Kullanılacak izleme algoritması (Çözümler varsayılan olarak botsort.yaml değerini kullanır).
    • conf: Tespitler için güven eşiği.
    • show: Çıktının görüntülenip görüntülenmeyeceğini belirten bayrak.

    Eksiksiz liste ve varsayılan değerler için DistanceCalculation bağımsız değişkenlerine bakabilirsin.

Yorumlar