Ultralytics YOLO26 ile Mesafe Hesaplama
Mesafe Hesaplama Nedir?
İki nesne arasındaki boşluğu ölçmek, belirli bir alan içindeki mesafe hesaplama olarak bilinir. Ultralytics YOLO26 söz konusu olduğunda, kullanıcı tarafından vurgulanan sınırlayıcı kutular için mesafeyi hesaplamak amacıyla sınırlayıcı kutu merkez noktası kullanılır.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Görseller
| Ultralytics YOLO26 ile 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 boyutunun tahmin edilmesine olanak tanır.
- Sahne Anlama: Otonom araçlar ve gözetim sistemleri gibi uygulamalarda daha iyi karar verme için 3B sahne kavramayı iyileştirir.
- Çarpışma Önleme: Hareketli nesneler arasındaki mesafeleri izleyerek sistemlerin potansiyel çarpışmaları tespit etmesini sağlar.
- Uzamsal Analiz: İzlenen ortamdaki nesne ilişkilerinin ve etkileşimlerinin analizini kolaylaştırır.
Mesafe Hesaplama
- Mesafeyi hesaplamak için farenin sol tuşuyla herhangi iki sınırlayıcı kutuya tıkla.
- Çizilen tüm noktaları silmek için farenin sağ tuşunu kullan.
- Yeni noktalar eklemek için çerçevede herhangi bir yere sol tıkla.
Mesafe bir tahmindir
Mesafe bir tahmindir ve derinlik bilgisinden yoksun 2B veriler kullanılarak hesaplandığı için tam olarak doğru olmayabilir.
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 windowsDistanceCalculation() Argümanları
İşte DistanceCalculation argümanlarını içeren bir tablo:
| Argüman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Bir Ultralytics YOLO model dosyasına giden yol. |
You can also make use of various track arguments in the DistanceCalculation solution.
| Argüman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Kullanılacak takip algoritmasını belirtir, örneğin bytetrack.yaml veya botsort.yaml. |
conf | float | 0.1 | Tespitler için güven eşiğini belirler; daha düşük değerler daha fazla nesnenin takip edilmesine izin verir ancak hatalı pozitifleri içerebilir. |
iou | float | 0.7 | Çakışan tespitleri filtrelemek için Birleşim Üzerinde Kesişim (IoU) eşiğini belirler. |
classes | list | None | Sonuçları sınıf dizinine göre filtreler. Örneğin, classes=[0, 2, 3] sadece belirtilen sınıfları takip eder. |
verbose | bool | True | Takip edilen nesnelerin görsel bir çıktısını sağlayarak takip sonuçlarının görüntülenmesini kontrol eder. |
device | str | None | Çıkarım için cihazı belirtir (örneğin cpu, cuda:0 veya 0). Kullanıcıların model yürütme için CPU, belirli bir GPU veya diğer bilgi işlem cihazları arasında seçim yapmasına olanak tanır. |
Üstelik, aşağıdaki görselleştirme argümanları da mevcuttur:
| Argüman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
show | bool | False | Eğer True ise, 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 | int or None | None | Sınırlayıcı kutuların çizgi kalınlığını belirtir. None ise, çizgi kalınlığı otomatik olarak görüntü boyutuna göre ayarlanır. Netlik için görsel özelleştirme sağlar. |
show_conf | bool | True | Etiketle birlikte her tespit için güven puanını görüntüler. Her bir tespit için modelin kesinliği hakkında fikir verir. |
show_labels | bool | True | Görsel çıktıda her tespit için etiketleri görüntüler. Tespit edilen nesnelerin anında anlaşılmasını sağlar. |
Uygulama Ayrıntıları
DistanceCalculation sınıfı, nesneleri video kareleri boyunca takip ederek ve seçilen sınırlayıcı kutuların merkez noktaları arasındaki Öklid mesafesini hesaplayarak çalışır. İki nesneye tıkladığında, çözüm şu işlemleri yapar:
- Seçilen sınırlayıcı kutuların merkez noktalarını (orta noktalar) çıkarır
- Bu merkez noktalar arasındaki Öklid mesafesini piksel cinsinden hesaplar
- Nesneler arasında bir bağlantı çizgisi ile mesafeyi kare üzerinde görüntüler
Uygulama, fare etkileşimlerini yönetmek, kullanıcıların nesneleri seçmesine ve gerektiğinde seçimleri temizlemesine olanak tanımak için mouse_event_for_distance yöntemini kullanır. process yöntemi, kare kare işlemeyi, nesneleri takip etmeyi 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ç ve mağaza düzeni etkinliğini analiz et
- Endüstriyel Güvenlik: Çalışanlar ve makineler arasındaki güvenli mesafeleri izle
- Trafik Yönetimi: Araç mesafesini analiz et ve yakın takip durumlarını tespit et
- Spor Analizi: Oyuncular, top ve sahadaki önemli konumlar arasındaki mesafeleri hesapla
- Sağlık Hizmetleri: Bekleme alanlarında uygun mesafeyi sağla ve hasta hareketlerini izle
- Robotik: Robotların engellerden ve insanlardan uygun mesafeleri korumasını sağla
SSS
Ultralytics YOLO26 kullanarak nesneler arasındaki mesafeleri nasıl hesaplarım?
To calculate distances between objects using Ultralytics YOLO26, you need to identify the bounding box centroids of the detected objects. This process involves initializing the DistanceCalculation class from Ultralytics' solutions module and using the model's tracking outputs to calculate the distances.
Ultralytics YOLO26 ile mesafe hesaplamayı kullanmanın avantajları nelerdir?
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ı tahmin etmeye yardımcı olur, bu da daha iyi bağlamsal anlayışa katkıda bulunur.
- Sahne Anlama: 3B sahne kavramayı geliştirerek otonom sürüş ve gözetim gibi uygulamalarda daha iyi karar vermeye yardımcı olur.
- Gerçek Zamanlı İşleme: Hesaplamaları anında gerçekleştirerek canlı video analizi için uygun hale getirir.
- Entegrasyon Yetenekleri: nesne takibi ve hız tahmini gibi diğer YOLO26 çözümleriyle sorunsuz çalışır.
Ultralytics YOLO26 ile gerçek zamanlı video akışlarında mesafe hesaplama yapabilir miyim?
Evet, Ultralytics YOLO26 ile gerçek zamanlı video akışlarında mesafe hesaplama yapabilirsin. Süreç, OpenCV kullanarak video karelerini yakalamayı, YOLO26 nesne algılama çalıştırmayı 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 bak.
Ultralytics YOLO26 kullanarak mesafe hesaplama sırasında çizilen noktaları nasıl silerim?
Ultralytics YOLO26 ile mesafe hesaplama sırasında çizilen noktaları silmek için sağ fare tıklamasını kullanabilirsin. Bu eylem, çizdiğin tüm noktaları temizleyecektir. Daha fazla ayrıntı için mesafe hesaplama örneğinin altındaki not bölümüne başvur.
Ultralytics YOLO26'da DistanceCalculation sınıfını başlatmak için temel argümanlar nelerdir?
Ultralytics YOLO26'da DistanceCalculation sınıfını başlatmak için temel argümanlar şunlardır:
model: YOLO26 model dosyasına giden yol.tracker: Kullanılacak takip algoritması (varsayılan 'botsort.yaml' şeklindedir).conf: Algılamalar için güven eşiği.show: Çıktıyı görüntüleme bayrağı.
Kapsamlı bir liste ve varsayılan değerler için DistanceCalculation argümanlarına bak.
