Le but de ce petit projet est d'ajouter le suivi des objets à Yolov2 et d'atteindre le suivi des objets multiples en temps réel.
L'architecture actuelle est définie pour suivre un seul type d'objets, mais il devrait être facile à généraliser sur tous les objets.
Soutenir actuellement le suivi des personnes (car les poids fournis pour Deep_sort ont été formés au suivi des personnes)
python
numpy
opencv 3
tensorflow 1.0
Cython.
sklean.
pour utiliser le tri:
scikit-learn
scikit-image
FilterPy
1 - Clone Ce référentiel: git clone https://github.com/bendidi/Tracking-with-darkflow.git
2 - Initialiser tous les sous-modules: git submodule update --init --recursive
3 - Allez dans Darkflow Directory et DO AU python3 setup.py build_ext --inplace
Téléchargez les poids:
En savoir plus sur Yolo (dans Darknet) et télécharger des fichiers de poids ici, au cas où le fichier de poids ne peut pas être trouvé, Thtrieu a téléchargé certains de ses ici, qui incluent yolo-full et yolo-tiny de V1.0, tiny-yolo-v1.1 de V1.1 et yolo , tiny-yolo-voc de V2.
L'architecture que j'ai utilisée / testée dans ce projet est cfg/yolo.cfg avec les poids bin/yolo.weights .
Ensuite, vous devez télécharger les poids deep_sort ici (dossier de réseaux), fourni par NWOJKE
Les poids Deep_sort fournis par NWOJKE ont été annulés. Vous pouvez les obtenir d'ici à la place (grâce à @ louxy126)
Extraire le dossier et le copier sur deep_sort/resources
Modifier les drapeaux dans run.py suivant votre configuration:
demo : chemin vers le fichier vidéo à utiliser, réglé sur "Camera" si vous souhaitez utiliser votre appareil photo
model : quelle configuration de modèle à utiliser pour Yolo, vous pouvez obtenir plus d'informations et des fichiers .cfg ici (mettez-les dans DarkFlow / CFG / dossier)
load : les poids correspondants à utiliser avec le modèle choisi (mettez-les dans DarkFlow / bin /) plus d'informations ici
threshold : le seuil de confidance des détections Yolo
gpu : quelle quantité de GPU à utiliser, 0 signifie utiliser le processeur
track : pour activer le suivi ou non
trackObj : Quels objets à suivre comme une liste (notez que l'encodeur de Deep_Sort n'a été formé que sur les gens, vous avez donc besoin de former votre propre encodeur, plus d'informations ici)
saveVideo : Que ce soit pour enregistrer la vidéo ou non
BK_MOG : Ajoutez le module de soustraction d'arrière-plan du MOG d'OpenCV, uniquement utile lorsque Yolo ne peut pas détecter les gens dans une vidéo (basse qualité, ...) utilisez-le pour détecter les boîtes autour d'objets en mouvement
tracker : quel tracker utiliser: "deep_sort" ou "tri"
**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 : sautez les cadres pour augmenter le FPS, pourrait réduire la précision!
csv : Enregistrer le fichier CSV des détections au format (frame_id, objet_id, x, y, w, h)
display : afficher la vidéo lors du traitement ou non
Ensuite, il suffit d'exécuter python run.py et de profiter!
`Vitesse en utilisant 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
Tests effectués sur (1024, 1280, 3) Vidéo de résolution sur Nvidia GTX 1080
Sauter jusqu'à 3 images permet une plus grande accélération tout en gardant la précision du suivi`
Ce projet utilise du code fourchu à partir de:
Thtrieu / darkflow: pour les détections et classifications d'objets en temps réel.
Nwojke / Deep_sort: pour un suivi simple en ligne en ligne avec une métrique d'association profonde.
Veuillez suivre les liens pour comprendre toutes les fonctionnalités de chaque projet.
@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}
}