অধ্যায়Phase 4 · ভিডিও ও রিয়েল-টাইম সিস্টেম
4.4 18 মিনিট পড়া
Object Tracking (CSRT, KCF)
Single-object trackers।
🎬 গল্প দিয়ে শুরু
প্রতিটি frame-এ object detect করা ব্যয়বহুল। সমাধান — Tracker। একবার object box দিন, tracker পরের frame-গুলোতে নিজে নিজে follow করবে। CSRT, KCF, MOSSE — কিংবদন্তি tracker পরিবার।
Tracker API (legacy / contrib)
python
track.py
import cv2
cap = cv2.VideoCapture("car.mp4")
ok, frame = cap.read()
bbox = cv2.selectROI("pick", frame, False); cv2.destroyAllWindows()
tracker = cv2.TrackerCSRT_create() # বা TrackerKCF_create()
tracker.init(frame, bbox)
while True:
ok, frame = cap.read()
if not ok: break
ok, box = tracker.update(frame)
if ok:
x,y,w,h = [int(v) for v in box]
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
else:
cv2.putText(frame,"LOST",(20,40),
cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)
cv2.imshow("track", frame)
if cv2.waitKey(1)==27: breakOpenCV 4.5.2+
পুরনো
cv2.Tracker*_create API cv2.legacy-তে সরেছে। চেষ্টা করুন cv2.legacy.TrackerCSRT_create() যদি error আসে।Tracker তুলনা
| Tracker | Speed | Accuracy | কখন |
|---|---|---|---|
| MOSSE | সবচেয়ে দ্রুত (450+ FPS) | কম | Low-power, fast pan |
| KCF | দ্রুত | মাঝারি | General real-time |
| CSRT | ধীর | উচ্চ | Production, accuracy critical |
| MIL/Boosting | ধীর | পুরনো | Educational |
Multi-Object Tracking
python
import cv2
trackers = cv2.legacy.MultiTracker_create()
ok, frame = cap.read()
while True:
box = cv2.selectROI("pick", frame, False)
if box == (0,0,0,0): break
trackers.add(cv2.legacy.TrackerCSRT_create(), frame, box)
while True:
ok, frame = cap.read()
if not ok: break
ok, boxes = trackers.update(frame)
for b in boxes:
x,y,w,h = [int(v) for v in b]
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("multi", frame)
if cv2.waitKey(1)==27: breakDetect + Track hybrid (production pattern)
Real system-এ: প্রতি N frame-এ heavy detector (YOLO) চালান → bbox দিয়ে tracker init/update; মাঝে শুধু tracker। এতে accuracy + speed দুটোই।
text
Frame 1, 31, 61... → YOLO detect → re-init tracker
Frame 2-30 → tracker.update() only
যদি tracker lost → পরের frame-এ আবার detect প্র্যাকটিস টাস্ক
- একটি traffic video-তে CSRT দিয়ে একটি গাড়ি ট্র্যাক করুন; lost হলে message দিন।
- Multi-tracker দিয়ে দুটি object একসাথে track করুন; FPS measure করুন।
- প্রতি ৩০ frame-এ Haar/YOLO দিয়ে re-init করার hybrid version লিখুন।
সারসংক্ষেপ
- Tracker একটি object follow করে — detect-এর চেয়ে অনেক দ্রুত।
- MOSSE/KCF/CSRT speed-accuracy trade-off।
- Production system = সাময়িক detect + ধারাবাহিক track।
- Lost detection handle করতে fallback strategy রাখুন।