Modern perakende ortamlarında müşteri davranışlarını anlamak hayati önem taşır. Ancak kalabalık koridorlarda bireylerin yolları kesiştiğinde standart nesne algılama yetersiz kalır. Ayak trafiğini, kalış sürelerini ve müşteri yolculuklarını gerçekten analiz etmek için geliştiricilerin Gerçek Zamanlı Çoklu Nesne Takibi (MOT) ile Yeniden Tanımlama (Re-ID) yöntemlerini birleştirmesi gerekir. Bu blog yazısı, bu sağlam veri yollarının nasıl mimari olarak tasarlanacağını inceler.
Kalabalık Sahnelerin Temel Zorluğu
Perakende analitiğindeki başlıca zorluk, engellenmedir (occlusion). Bir müşteri bir ürün aldığında veya bir vitrinin arkasında durduğunda, kameranın görüş alanından kaybolur. Basit sınırlayıcı kutu (bounding box) takibi burada genellikle başarısız olur; bu da tek bir kişinin iki farklı müşteri olarak sayıldığı kimlik değişimlerine yol açar. Ayrıca, benzer kıyafetler giyen bireyler—örneğin çalışan üniformaları veya benzer moda stilleri—görsel tanıma sistemlerini kafa karıştırabilir.
Bunu azaltmak için, basit koordinat tahmininin ötesine geçmemiz gerekir. Görünüm özelliklerini ve hareket modellerini kullanarak zaman içinde kimlik tutarlılığını koruyan bir sisteme ihtiyacımız var. Bu, algılama ve ilişkilendirme aşamalarından oluşan iki aşamalı bir yaklaşım gerektirir.
Takip Veri Yolunun Mimarisi
Sağlam bir veri yolu, genellikle YOLOv8 gibi son teknoloji bir algılayıcıyı DeepSORT veya ByteTrack gibi bir takip algoritmasıyla entegre eder. Algılayıcı, sınırlayıcı kutuları ve güven skorlarını sağlar; takipçi ise hareket tahmini için Kalman filtreleme ve görünüm eşleştirme için Re-ID gömme (embedding) değerlerine dayalı olarak benzersiz kimlikler atar.
Uygulama için Python, OpenCV ve PyTorch standart yığındır. Aşağıda, bir algılayıcıyı `trackers` kitaplık yapısını kullanarak bir takipçiyle nasıl entegre edebileceğinize dair basitleştirilmiş kavramsal bir örnek bulunmaktadır.
import cv2
import torch
from deepsort_realtime import DeepSortRealtime
# Algılayıcıyı başlatın (YOLOv8 örneği)
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
# Belirli bir Re-ID modeli ile takipçiyi başlatın
tracker = DeepSortRealtime(
model_weights="/path/to/reid_model.pth",
device="cuda", # Performans için GPU kullanın
max_dist=0.2, # Eşleştirme için kosinüs mesafe eşiği
min_confidence=0.3,
nms_max_overlap=1.0
)
# Video akışını işleyin
cap = cv2.VideoCapture("retail_footage.mp4")
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# Algılamayı çalıştırın
results = model(frame)
# Algılama sonuçlarıyla takipçileri güncelleyin
tracks = tracker.update_tracks(results, frame=frame)
for track in tracks:
if not track.is_confirmed():
continue
track_id = track.track_id
bbox = track.to_ltrb()
# Sonuçları çiz
x1, y1, x2, y2 = map(int, bbox)
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(frame, f"ID: {track_id}", (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
cv2.imshow("Retail Analytics", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Performans ve Doğruluk İçin Optimizasyon
Bu modelleri gerçek zamanlı olarak dağıtmak dikkatli bir optimizasyon gerektirir. İlk olarak, Re-ID modelinizin hafif olduğundan emin olun. OSNet veya ResNet50 gibi modeller uç cihazlar için çok ağır olabilir; daha hızlı çıkarım için MobileNet varyantlarını veya distile edilmiş modelleri kullanmayı düşünün. İkinci olarak, Kalman filtresindeki IoU (Kesişim Birliği) eşiklerini ayarlayın. Kalabalık sahnelerde daha yüksek bir eşek, gereksiz takip bölünmelerini önler ancak birleşmelere neden olabilir.
Ayrıca, bir "kayıp takip" tamponu uygulayın. Bir takip N kareden daha uzun süre kaybolursa, kimliği hemen yok etmeyin. Bunun yerine, onu bekleme durumunda tutun. Kişi tekrar görünürse, Re-ID modülü onu eski kimlikle eşleyebilir ve müşterinin yolculuğunun sürekliliğini koruyabilir.
Sonuç
Perakende için gerçek zamanlı bir takip sistemi oluşturmak karmaşık ancak ödüllüdür. Güçlü algılayıcıları sofistike Re-ID teknikleriyle birleştirerek işletmeler, müşteri davranışları hakkında benzersiz içgörüler elde edebilir. Veri yolunuzun hem doğru hem de verimli olmasını sağlamak için engellenme yönetimine ve performans optimizasyonuna odaklanın.