Optical Flow
Bilgisayarlı görüde optik akışın temellerini keşfet. Hareket vektörlerinin video anlayışını nasıl güçlendirdiğini ve Ultralytics YOLO26'da takibi nasıl geliştirdiğini öğren.
Optik akış, bir gözlemci ile sahne arasındaki göreli hareketin neden olduğu, görsel bir sahnedeki nesnelerin, yüzeylerin ve kenarların görünür hareket örüntüsüdür. Bilgisayarlı görü alanında bu kavram, video dizileri içindeki zamansal dinamikleri anlamak için temel öneme sahiptir. Optik akış algoritmaları, birbirini izleyen iki kare arasındaki piksellerin yer değiştirmesini analiz ederek her vektörün belirli bir noktanın hareket yönünü ve büyüklüğünü temsil ettiği bir vektör alanı oluşturur. Bu düşük seviyeli görsel ipucu, yapay zekâ sistemlerinin bir görüntüde yalnızca ne olduğunu değil, nasıl hareket ettiğini de algılamasını sağlayarak statik görüntü analizinden dinamik video anlayışına geçişi mümkün kılar.
Optik Akışın Temel Mekanizmaları#
Optik akışın hesaplanması genellikle, bir nesne üzerindeki pikselin yoğunluğunun hareket etse bile bir kareden sonraki kareye kadar sabit kaldığını öne süren parlaklık sabitliği varsayımına dayanır. Algoritmalar, hareket vektörlerini çözmek için bu ilkeden yararlanarak iki temel yaklaşım kullanır:
- Seyrek Optik Akış: Bu yöntem, özellik çıkarımı yoluyla tespit edilen köşeler veya kenarlar gibi belirgin özelliklerin belirli bir alt kümesi için hareket vektörünü hesaplar. Lucas-Kanade yöntemi gibi algoritmalar hesaplama açısından verimlidir ve belirli ilgi noktalarının izlenmesinin yeterli olduğu gerçek zamanlı çıkarım görevleri için idealdir.
- Yoğun Optik Akış: Bu yaklaşım, karedeki her piksel için bir hareket vektörü hesaplar. Hesaplama açısından çok daha yoğun olsa da görüntü segmentasyonu ve yapısal analiz gibi ayrıntılı görevler için gerekli olan kapsamlı bir hareket haritası sağlar. Modern derin öğrenme mimarileri, büyük veri kümelerinden karmaşık hareket örüntülerini öğrenerek yoğun akış tahmininde çoğu zaman geleneksel matematiksel yöntemlerden daha iyi performans gösterir.
Optik Akış ve Nesne İzleme#
Sıklıkla birlikte kullanılsalar da optik akışı nesne izleme işleminden ayırt etmek çok önemlidir. Optik akış, anlık piksel hareketini açıklayan düşük seviyeli bir işlemdir; nesnenin kimliğini veya sürekliliğini kendiliğinden anlayamaz.
Buna karşılık nesne izleme, belirli varlıkların konumunu belirleyen ve bunlara zaman içinde tutarlı bir Kimlik atayan yüksek seviyeli bir görevdir. Ultralytics YOLO26 içine entegre edilenler gibi gelişmiş izleyiciler, nesneyi bulmak için genellikle nesne algılama gerçekleştirir ve ardından algılamaları kareler arasında ilişkilendirmek için (bazen optik akıştan türetilen) hareket ipuçlarını kullanır. Optik akış, "bu pikseller şu anda ne kadar hızlı hareket ediyor?" sorusunu yanıtlarken izleme, "Araba #5 nereye gitti?" sorusunu yanıtlar.
Gerçek Dünya Uygulamaları#
Piksel düzeyinde hareket tahmini yapabilme yeteneği, çok çeşitli gelişmiş teknolojilere güç verir:
- Otonom Araçlar ve Robotik: Optik akış, bir robotun veya aracın çevreye göre kendi hareketini tahmin etmesini sağlayan görsel odometride kullanılır. Ayrıca görsel alandaki nesnelerin ne kadar hızlı genişlediğini veya hareket ettiğini analiz ederek derinlik tahmini ve engellerden kaçınmaya yardımcı olur.
- Video Stabilizasyonu: Kameralar ve video düzenleme yazılımları, istem dışı kamera sarsıntısını tespit etmek için akış vektörlerini kullanır. Sistemler bu küresel hareketi telafi ederek görüntüleri dijital olarak stabilize edebilir. Bu, akıllı telefonlar ve aksiyon kameraları gibi modern tüketici elektroniği ürünlerinde standart bir özelliktir.
- Eylem Tanıma: Spor analitiği ve güvenlik alanlarında piksellerin zamansal akışını analiz etmek, sistemlerin karmaşık insan eylemlerini tanımlamasına yardımcı olur. Örneğin poz tahmini modelleri, uzuv hareketlerinin hızına göre yürüyen bir kişi ile koşan bir kişiyi ayırt etmek için akış verileriyle zenginleştirilebilir.
- Video Sıkıştırma: MPEG video kodlama gibi standartlar büyük ölçüde hareket tahminine dayanır. Kodek, her tam kareyi depolamak yerine optik akışı (hareket vektörlerini) ve kareler arasındaki farkı (artığı) depolayarak akış ve depolama için dosya boyutlarını önemli ölçüde azaltır.
Uygulama Örneği#
Aşağıdaki örnek, bilgisayarlı görü ekosisteminde standart bir araç olan OpenCV kütüphanesini kullanarak yoğun optik akışın nasıl hesaplanacağını gösterir. Bu kod parçacığı, birbirini izleyen iki kare arasındaki akış haritasını oluşturmak için Farneback algoritmasını kullanır.
import cv2
import numpy as np
# Simulate two consecutive frames (replace with actual image paths)
frame1 = np.zeros((100, 100, 3), dtype=np.uint8)
frame2 = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.rectangle(frame1, (20, 20), (40, 40), (255, 255, 255), -1) # Object at pos 1
cv2.rectangle(frame2, (25, 25), (45, 45), (255, 255, 255), -1) # Object moved
# Convert to grayscale for flow calculation
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# Compute magnitude and angle of 2D vectors
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
print(f"Max motion detected: {np.max(mag):.2f} pixels")Ham piksel hareketi yerine nesne sürekliliği gerektiren yüksek seviyeli uygulamalar için kullanıcılar Ultralytics YOLO11 ve YOLO26 içinde bulunan izleme modlarını değerlendirmelidir. Bu modeller, hareket analizinin karmaşıklığını soyutlayarak trafik izlemeden perakende analitiğine kadar uzanan görevler için kullanıma hazır sağlam nesne Kimlikleri ve yörüngeleri sunar.









