repo นี้มีคอลเลกชันของตัวติดตามหลายวัตถุที่ล้ำสมัยสำหรับการแบ่งส่วนการตรวจจับวัตถุและโมเดลการประมาณค่าท่าทาง สำหรับวิธีการที่ใช้คำอธิบายลักษณะที่ปรากฏทั้งรุ่นหนัก (clipreid) และรุ่น Lightweight-of-the-art Reid (LightMBN, OSNET และอีกมากมาย) พร้อมใช้งานสำหรับการดาวน์โหลดอัตโนมัติ เราให้ตัวอย่างเกี่ยวกับวิธีการใช้แพ็คเกจนี้พร้อมกับรูปแบบการตรวจจับวัตถุยอดนิยมเช่น: YOLOV8, YOLOV9 และ YOLOV10
ผู้ติดตาม | สถานะ | hota ↑ | Mota ↑ | IDF1 ↑ |
---|---|---|---|---|
บ็อตสเตอร์ | 68.504 | 77.165 | 80.986 | |
ที่แข็งแกร่ง | 68.329 | 76.348 | 81.206 | |
ไบต์ | 66.536 | 76.909 | 77.855 | |
Ocsort | 65.187 | 74.819 | 75.957 | |
ความไม่พอใจ | 64.096 | 76.511 | 71.875 | |
deepocsort | 62.913 | 74.483 | 73.459 | |
ลูกผสม |
หมายเหตุ: การประเมินผลดำเนินการในช่วงครึ่งหลังของชุดการฝึกอบรม MOT17 เนื่องจากชุดการตรวจสอบไม่สามารถเข้าถึงได้แบบสาธารณะ การตรวจจับและการฝังที่ใช้ก่อนที่ใช้มาจากที่นี่ ตัวติดตามแต่ละตัวได้รับการกำหนดค่าด้วยพารามิเตอร์ดั้งเดิมที่ให้ไว้ในที่เก็บอย่างเป็นทางการของพวกเขา
ตัวเลือกการติดตามหลายวัตถุประสงค์ของวันนี้ขึ้นอยู่กับความสามารถในการคำนวณของฮาร์ดแวร์ underlaying Boxmot นำเสนอวิธีการติดตามที่หลากหลายที่ตรงกับข้อ จำกัด ของฮาร์ดแวร์ที่แตกต่างกันไปตลอดทางตั้งแต่ CPU ไปจนถึง GPU ที่ใหญ่กว่า Morover เราให้บริการสคริปต์สำหรับการทดลองที่รวดเร็วเป็นพิเศษโดยการบันทึกการตรวจจับและการฝังตัวซึ่งจะถูกโหลดลงในอัลกอริทึมการติดตามใด ๆ หลีกเลี่ยงค่าใช้จ่ายของการสร้างข้อมูลนี้ซ้ำ ๆ
เริ่มต้นด้วย python> = 3.9 สภาพแวดล้อม
หากคุณต้องการเรียกใช้ YOLOV8, YOLOV9 หรือ YOLOV10 ตัวอย่าง:
git clone https://github.com/mikel-brostrom/boxmot.git
cd boxmot
pip install poetry
poetry install --with yolo # installed boxmot + yolo dependencies
poetry shell # activates the newly created environment with the installed dependencies
แต่ถ้าคุณต้องการนำเข้าโมดูลการติดตามเท่านั้นคุณสามารถทำได้:
pip install boxmot
$ python tracking/track.py --yolo-model yolov10n # bboxes only
python tracking/track.py --yolo-model yolov9s # bboxes only
python tracking/track.py --yolo-model yolov8n # bboxes only
yolov8n-seg # bboxes + segmentation masks
yolov8n-pose # bboxes + pose estimation
$ python tracking/track.py --tracking-method deepocsort
strongsort
ocsort
bytetrack
botsort
imprassoc
การติดตามสามารถทำงานในรูปแบบวิดีโอส่วนใหญ่
$ python tracking/track.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
path/ * .jpg # glob
' https://youtu.be/Zgi9g1ksQHc ' # YouTube
' rtsp://example.com/media.mp4 ' # RTSP, RTMP, HTTP stream
วิธีการติดตามบางวิธีรวมคำอธิบายลักษณะที่ปรากฏและการเคลื่อนไหวในกระบวนการติดตาม สำหรับผู้ที่ใช้รูปลักษณ์คุณสามารถเลือกรุ่น REID ตามความต้องการของคุณจากสวนสัตว์รุ่น REID นี้ โมเดลเหล่านี้สามารถปรับให้เหมาะสมยิ่งขึ้นสำหรับคุณที่ต้องการโดยสคริปต์ reid_export.py
$ python tracking/track.py --source 0 --reid-model lmbn_n_cuhk03_d.pt # lightweight
osnet_x0_25_market1501.pt
mobilenetv2_x1_4_msmt17.engine
resnet50_msmt17.onnx
osnet_x1_0_msmt17.pt
clip_market1501.pt # heavy
clip_vehicleid.pt
...
โดยค่าเริ่มต้นตัวติดตามติดตามคลาส MS Coco ทั้งหมด
หากคุณต้องการติดตามชุดย่อยของคลาสที่คุณทำนายการทำนายให้เพิ่มดัชนีที่เกี่ยวข้องหลังจากการตั้งค่าสถานะคลาส
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
นี่คือรายการของวัตถุที่เป็นไปได้ทั้งหมดที่รุ่น YOLOV8 ที่ผ่านการฝึกอบรมเกี่ยวกับ MS Coco สามารถตรวจจับได้ โปรดสังเกตว่าการจัดทำดัชนีสำหรับคลาสใน repo นี้เริ่มต้นที่ศูนย์
ประเมินการรวมกันของเครื่องตรวจจับวิธีการติดตามและแบบจำลอง Reid บนชุดข้อมูล MOT มาตรฐานหรือคุณกำหนดเองโดย
$ python3 tracking/val.py --benchmark MOT17-mini --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method deepocsort --verbose --source ./assets/MOT17-mini/train
$ python3 tracking/val.py --benchmark MOT17 --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method ocsort --verbose --source ./tracking/val_utils/MOT17/train
การตรวจจับและการฝังจะถูกเก็บไว้สำหรับโมเดล YOLO และ Reid ที่เลือกตามลำดับซึ่งจะถูกโหลดลงในอัลกอริทึมการติดตามใด ๆ หลีกเลี่ยงค่าใช้จ่ายของการสร้างข้อมูลนี้ซ้ำ ๆ
เราใช้อัลกอริธึมทางพันธุกรรมที่รวดเร็วและมีชนชั้นสูงสำหรับการปรับแต่งพารามิเตอร์ hyperparameter โดยค่าเริ่มต้นวัตถุประสงค์คือ: hota, mota, idf1 เรียกใช้โดย
# saves dets and embs under ./runs/dets_n_embs separately for each selected yolo and reid model
$ python tracking/generate_dets_n_embs.py --source ./assets/MOT17-mini/train --yolo-model yolov8n.pt yolov8s.pt --reid-model weights/osnet_x0_25_msmt17.pt
# evolve parameters for specified tracking method using the selected detections and embeddings generated in the previous step
$ python tracking/evolve.py --benchmark MOT17-mini --dets yolov8n --embs osnet_x0_25_msmt17 --n-trials 9 --tracking-method botsort
ชุดพารามิเตอร์ไฮเปอร์พารามิเตอร์ที่นำไปสู่ผลลัพธ์ HOTA ที่ดีที่สุดถูกเขียนลงในไฟล์กำหนดค่าของตัวติดตาม
เราสนับสนุนการส่งออกรุ่น Reid ไปยัง ONNX, OpenVino, Torchscript และ Tensorrt
# export to ONNX
$ python3 boxmot/appearance/reid_export.py --include onnx --device cpu
# export to OpenVINO
$ python3 boxmot/appearance/reid_export.py --include openvino --device cpu
# export to TensorRT with dynamic input
$ python3 boxmot/appearance/reid_export.py --include engine --device 0 --dynamic
ชุดพารามิเตอร์ไฮเปอร์พารามิเตอร์ที่นำไปสู่ผลลัพธ์ HOTA ที่ดีที่สุดถูกเขียนลงในไฟล์กำหนดค่าของตัวติดตาม
ตัวอย่างคำอธิบาย | สมุดบันทึก |
---|---|
Torchvision Bounding Box การติดตามด้วย Boxmot | |
Torchvision โพสต์การติดตามด้วย boxmot | |
การแบ่งส่วน Torchvision ด้วย Boxmot |
สำหรับข้อบกพร่องในการติดตาม YOLO และคำขอคุณสมบัติกรุณาเยี่ยมชมปัญหา GitHub สำหรับการสอบถามทางธุรกิจหรือคำขอสนับสนุนอย่างมืออาชีพโปรดส่งอีเมลไปที่: [email protected]