Este repositorio contiene una colección de rastreadores de objetos múltiples de última generación para los modelos de segmentación, detección de objetos y pose de estimación. Para los métodos que utilizan la descripción de apariencia, los modelos Reid de estado pesados (ClipRid) y livianos de última generación (LightMBN, OsNet y más) están disponibles para descarga automática. Proporcionamos ejemplos sobre cómo usar este paquete junto con modelos populares de detección de objetos como: yolov8, yolov9 y yolov10
Rastreador | Estado | HOTA ↑ | MOTA ↑ | IDF1 ↑ |
---|---|---|---|---|
botsort | ✅ | 68.504 | 77.165 | 80.986 |
Strongsort | ✅ | 68.329 | 76.348 | 81.206 |
bytetrack | ✅ | 66.536 | 76.909 | 77.855 |
ocsort | ✅ | 65.187 | 74.819 | 75.957 |
impasoc | ✅ | 64.096 | 76.511 | 71.875 |
profundo | ✅ | 62.913 | 74.483 | 73.459 |
híbrido |
Notas: La evaluación se realizó en la segunda mitad del conjunto de capacitación MOT17, ya que el conjunto de validación no es accesible públicamente. Las detecciones e incrustaciones previamente generadas utilizadas se obtuvieron desde aquí. Cada rastreador se configuró con los parámetros originales proporcionados en sus repositorios oficiales.
Las opciones de seguimiento de objetos múltiples de hoy dependen en gran medida de las capacidades de cálculo del hardware de subestimación. BoxMot proporciona una gran variedad de métodos de seguimiento que cumplen con diferentes limitaciones de hardware, desde CPU solo hasta GPU más grandes. Merover, proporcionamos scripts para la experimentación ultra rápida al guardar detecciones e incrustaciones, que luego se cargan en cualquier algoritmo de seguimiento. Evitando la sobrecarga de generar repetidamente estos datos.
Comience con Python> = 3.9 entorno.
Si desea ejecutar los ejemplos Yolov8, Yolov9 o 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
Pero si solo desea importar los módulos de seguimiento, simplemente puede:
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
El seguimiento se puede ejecutar en la mayoría de los formatos de video
$ 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
Algunos métodos de seguimiento combinan la descripción de la apariencia y el movimiento en el proceso de seguimiento. Para aquellos que usan la apariencia, puede elegir un modelo REID basado en sus necesidades de este zoológico del modelo Reid. Este modelo puede optimizarse aún más para sus necesidades por el script 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
...
Por defecto, el rastreador rastrea todas las clases de Coco.
Si desea rastrear un subconjunto de las clases que modela predice, agregue su índice correspondiente después del indicador de clases,
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
Aquí hay una lista de todos los objetos posibles que un modelo Yolov8 capacitado en MS Coco puede detectar. Observe que la indexación para las clases en este repositorio comienza en cero
Evaluar una combinación de detector, método de seguimiento y modelo REID en el conjunto de datos MOT estándar o usted personalizado por
$ 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
Las detecciones e incrustaciones se almacenan para el modelo YOLO y Reid seleccionado respectivamente, que luego se cargan en cualquier algoritmo de seguimiento. Evitando la sobrecarga de generar repetidamente estos datos.
Utilizamos un algoritmo genético multiobjetivo rápido y elitista para el ajuste del hiperparameter del rastreador. Por defecto, los objetivos son: HOTA, MOTA, IDF1. Ejecutarlo
# 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
El conjunto de hiperparámetros que conducen al mejor resultado de HOTA se escriben en el archivo de configuración del rastreador.
Apoyamos la exportación del modelo REID a ONNX, OpenVino, Torchscript y 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
El conjunto de hiperparámetros que conducen al mejor resultado de HOTA se escriben en el archivo de configuración del rastreador.
Descripción del ejemplo | Computadora portátil |
---|---|
Seguimiento de la caja delimitador de la vía antorchas con BoxMot | |
Torchvision Pose Tracking con BoxMot | |
Seguimiento de segmentación de Vision de antorchas con BoxMot |
Para los errores de seguimiento de Yolo y las solicitudes de funciones, visite los problemas de GitHub. Para consultas comerciales o solicitudes de soporte profesional, envíe un correo electrónico a: [email protected]