이 repo에는 세분화, 객체 감지 및 포즈 추정 모델을위한 플러그 가능한 최첨단 다중 방지 트래커 컬렉션이 포함되어 있습니다. 외관 설명을 사용하는 방법의 경우 무거운 (클립 리드) 및 가벼운 최첨단 Reid 모델 (LightMBN, OSNET 등)을 모두 자동 다운로드 할 수 있습니다. 우리는이 패키지를 사용하는 방법에 대한 예제를 제공합니다.
트래커 | 상태 | hota ↑ | 모타 ↑ | 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 교육 세트의 후반부에 평가가 수행되었습니다. 사전 생성 된 탐지 및 사용 된 임베딩은 여기에서 공급되었습니다. 각 트래커는 공식 리포지토리에 제공된 원래 매개 변수로 구성되었습니다.
오늘날의 다중 방향 추적 옵션은 언더 레이싱 하드웨어의 계산 기능에 크게 의존합니다. 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
다음은 Coco에 대해 훈련 할 수있는 Yolov8 모델이 감지 할 수있는 모든 가능한 객체의 목록입니다. 이 repo의 클래스에 대한 인덱싱은 0에서 시작합니다.
표준 MOT 데이터 세트 또는 사용자 정의에서 검출기, 추적 방법 및 Reid 모델의 조합을 평가하십시오.
$ 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 모델에 대해 저장된 다음 각 추적 알고리즘에로드됩니다. 이 데이터를 반복적으로 생성하는 오버 헤드를 피합니다.
우리는 추적기 과당 튜닝을 위해 빠르고 엘리트주의 다목적 유전자 알고리즘을 사용합니다. 기본적으로 목표는 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 결과로 이어지는 초 파라미터 세트는 트래커의 구성 파일에 기록됩니다.
우리는 Onnx, OpenVino, Torchscript 및 Tensorrt로 Reid 모델 내보내기를 지원합니다.
# 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 결과로 이어지는 초 파라미터 세트는 트래커의 구성 파일에 기록됩니다.
예제 설명 | 공책 |
---|---|
BoxMot을 사용한 TorchVision 경계 상자 추적 | |
Torchvision은 BoxMot을 사용하여 추적합니다 | |
BoxMot을 사용한 TorchVision 세그먼테이션 추적 |
Yolo 추적 버그 및 기능 요청은 Github 문제를 방문하십시오. 비즈니스 문의 또는 전문 지원 요청은 다음과 같이 이메일을 보내주십시오 : [email protected]