El propósito de este pequeño proyecto es agregar el seguimiento de objetos a Yolov2 y lograr un seguimiento de objetos múltiples en tiempo real.
La arquitectura actual está configurada solo para rastrear un tipo de objetos, pero debería ser fácil de generalizar sobre todos los objetos.
Actualmente admite el seguimiento de las personas (ya que los pesos proporcionados para Deep_Sort fueron entrenados en el seguimiento de las personas)
python
numpy
opencv 3
tensorflow 1.0
Cython.
sklean.
Para usar el tipo:
scikit-learn
scikit-image
FilterPy
1-Clone Este repositorio: git clone https://github.com/bendidi/Tracking-with-darkflow.git
2 -Inicializar todos los submódulos: git submodule update --init --recursive
3 -Vaya al directorio de Darkflow y haga en su lugar python3 setup.py build_ext --inplace
Descargue los pesos:
Lea más sobre Yolo (en Darknet) y descargue archivos de peso aquí, en caso de que no se pueda encontrar el archivo de peso, Thtrieu ha cargado parte de su aquí, que incluyen yolo-full y yolo-tiny de V1.0, tiny-yolo-v1.1 de V1.1 y yolo , tiny-yolo-voc de V2.
La artchitectura que utilicé/probé en este proyecto es cfg/yolo.cfg con los pesos de pesas bin/yolo.weights .
A continuación, debe descargar los pesos profundos aquí (carpeta de redes), proporcionada por nwojke
Los pesos profundos proporcionados por Nwojke han sido cancelados. Puedes conseguirlos de aquí en su lugar (gracias a @Louxy126)
Extraiga la carpeta y copie a deep_sort/resources
Editar banderas en run.py siguiendo su configuración:
demo : ruta al archivo de video para usar, configurado en "cámara" si desea usar su cámara
model : qué configuración del modelo usar para yolo, puede obtener más información y archivos .cfg aquí (colóquelos en Darkflow/ CFG/ Carper)
load : los pesos correspondientes para usar con el modelo elegido (colóquelos en Darkflow/Bin/) Más información aquí
threshold : el umbral de confidancia de las detecciones de Yolo
gpu : cuánto GPU usar, 0 significa usar CPU
track : para activar el seguimiento o no
trackObj : qué objetos rastrear como una lista (observe que el codificador de Deep_Sort solo estaba entrenado en las personas, por lo que necesita entrenar a su propio codificador, más información aquí)
saveVideo : si guardar video o no
BK_MOG : Agregue el módulo de sustracción de fondo MOG de OpenCV, solo útil cuando YOLO no puede detectar a las personas en un video (de baja calidad, ...) úselo para detectar cajas en torno a objetos en movimiento
tracker : qué rastreador usar: "Deep_sort" o "Sort"
**NOTE** : "deep_sort" only supports people tracking as it was only trained to track people(the code for training is not yet published)
**TODO** : add support for GOTURN tracker(tensorflow implementation)
**TODO** : add support for opencv trackers (MIL,KCF,TLD,MEDIANFLOW)
skip : omita los marcos para aumentar los fps, ¡podría disminuir la precisión!
csv : Guardar el archivo CSV de las detecciones en el formato (Frame_id, Object_id, X, Y, W, H)
display : visualizar video mientras procesa o no
A continuación, solo tienes que ejecutar python run.py , ¡y disfruta!
`velocidad usando yolo.cfg:
YOLO with track Flag set to False : 30fps
YOLO with track Flag set to True (deep_sort) : 14 fps
YOLO with track and background subtraction Flags set to True : 10.5 fps
Pruebas realizadas en (1024, 1280, 3) Video de resolución en NVIDIA GTX 1080
Saltar hasta 3 cuadros permite más velocidad mientras mantiene la precisión del seguimiento '
Este proyecto está utilizando el código bifurcado desde:
thtrieu/Darkflow: para las detecciones y clasificaciones de objetos en tiempo real.
NWOJKE/Deep_Sort: para un seguimiento simple en tiempo real en línea con una métrica de asociación profunda.
Siga los enlaces para comprender todas las características de cada proyecto.
@article{redmon2016yolo9000,
title={YOLO9000: Better, Faster, Stronger},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1612.08242},
year={2016}
}
@article{Wojke2017simple,
title={Simple Online and Realtime Tracking with a Deep Association Metric},
author={Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich},
journal={arXiv preprint arXiv:1703.07402},
year={2017}
}
@inproceedings{Bewley2016_sort,
author={Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben},
booktitle={2016 IEEE International Conference on Image Processing (ICIP)},
title={Simple online and realtime tracking},
year={2016},
pages={3464-3468},
keywords={Benchmark testing;Complexity theory;Detectors;Kalman filters;Target tracking;Visualization;Computer Vision;Data Association;Detection;Multiple Object Tracking},
doi={10.1109/ICIP.2016.7533003}
}