Point Tracking
Nokta takibi, seçilen noktaları bir video boyunca izler ve her birinin her karede nerede olduğunu ve görünür olup olmadığını bildirir. Yöntemler, modeller ve kullanım alanları.
Nokta takibi, video boyunca tek tek noktaları izleme bilgisayarlı görü görevidir: Bir karede kol üzerindeki bir nokta veya pencerenin köşesi gibi bir sorgu noktası verildiğinde takipçi, aynı fiziksel noktanın diğer karelerin her birinde nerede göründüğünü ve görünür olup olmadığını tahmin eder. Sorgu, önceden tanımlanmış bir kilit noktası yerine herhangi bir piksel olabildiği için yeni araştırmalar bu göreve herhangi bir noktayı takip etme (TAP) adını verir. Nokta takibi, örtülme boyunca da birçok karede seyrek bir nokta kümesini izler; bu yönüyle nesneleri kimlikli sınırlayıcı kutular olarak izleyen nesne takibinden ve ardışık iki kare arasındaki her pikselin hareketini tahmin eden optik akıştan ayrılır.
Nokta Takibi Nasıl Çalışır#
Klasik Kanade-Lucas-Tomasi (KLT) takipçisi, iki yönde güçlü dokuya sahip köşeleri, yani Shi-Tomasi'nin “izlenecek iyi özelliklerini” seçer ve çevrelerindeki parçayı en iyi hizalayan küçük kaymayı hesaplayarak her köşeyi sonraki karede bulur; daha büyük hareketleri ele almak için görüntü piramidi kullanır. OpenCV her iki adımı da uygular:
import cv2
import numpy as np
# Read an overhead clip of people walking and pick 300 corners in its first frame
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4")
prev = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
points = cv2.goodFeaturesToTrack(prev, maxCorners=300, qualityLevel=0.01, minDistance=5)
start = points.copy()
# Follow every point frame to frame with pyramidal Lucas-Kanade optical flow
while (frame := cap.read()[1]) is not None:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
points, status, _ = cv2.calcOpticalFlowPyrLK(prev, gray, points, None)
found = status.ravel() == 1 # keep only the points found again
points, start, prev = points[found], start[found], gray
distance = np.linalg.norm(points - start, axis=-1)
print(f"{len(points)} of 300 points tracked to the last frame, median shift {np.median(distance):.1f} px")Kod 292 of 300 points tracked to the last frame, median shift 28.7 px çıktısını verir: klibin 62 karesi boyunca takipçi 8 noktayı kaybeder; kalan noktalar başladıkları yerden ortanca 28,7 piksel uzakta sonlanır. KLT yalnızca ardışık kareleri karşılaştırdığından küçük hatalar birikir ve örtülmeyi algılayamaz: Yoldan geçen biri zemindeki bir noktayı kapatınca takipçi bu noktayı kişinin üzerine kaydırıp bildirmeyi sürdürebilir.
Öğrenilmiş Nokta Takipçileri#
Derin öğrenme takipçileri aynı anda birçok kare üzerinde akıl yürütür ve her kare için bir konum ile görünürlük bayrağı tahmin eder. TAP-Vid kıyaslaması, insanların nokta izlerini elle etiketlediği gerçek videolarla görevi 2022'de tanımladı. PIPs (2022), kısa örtülmeleri aşabilmek için noktanın yörüngesini kare pencereleri boyunca iyileştirir; TAPIR (2023) ise önce sorgu noktasının özelliklerini her kareyle eşleştirir, ardından zamansal bağlamı kullanarak izi iyileştirir. Meta'nın CoTracker modeli, birçok noktayı birlikte bir Transformer ile takip eder; böylece aynı nesne üzerindeki noktalar, içlerinden biri gizlendiğinde birbirlerine destek olur. Gerçek videolardaki etiketli yörüngeler az bulunduğundan CoTracker3 (2024), önce sentetik videolarla, ardından başka takipçilerin sözde etiketler verdiği gerçek videolarla eğitilir ve önceki takipçilerden 1.000 kat daha fazla veriyle eğitilmiş modellere kıyasla daha iyi sonuçlar bildirir.
Gerçek Dünya Uygulamaları#
Ultralytics takip modu, çoklu nesne takibinde kamera hareketini gidermek için nokta takibini kullanır: varsayılan TrackTrack takipçisi ile BoT-SORT her karede en fazla 400 köşe seçer, piramidal Lucas-Kanade akışıyla bunları izler ve RANSAC (gmc_method: sparseOptFlow) ile dönme, ölçek ve ötelemeyi hesaplar; ardından her izin tahmin edilen kutusunu yeni YOLO26 tespitleriyle eşleştirmeden önce kaydırır.
- Görsel efektler: Eşleştirme hareketi, eklenen grafiklerin yüzeylere sabit kalması için sahnedeki noktaları izler; görüntü sabitleme ise izlenen noktaların ortaya çıkardığı kamera hareketini giderir.
- 3D yeniden yapılandırma: Hareketten yapı ve görsel SLAM, kamera pozlarını ve sahne geometrisini çıkarmak için kareler boyunca izlenen noktaları üçgenler.
- Robot öğrenmesi: Herhangi bir noktanın yörünge modellemesi, bir görev sırasında sahnedeki noktaların nasıl hareket edeceğini tahmin eder ve bu izleri robot eylemlerine dönüştürür; 130'dan fazla görevde ortalama olarak video ön eğitimine dayalı taban çizgilerinden yaklaşık %80 daha iyi sonuç verir.










