O objetivo deste pequeno projeto é adicionar rastreamento de objetos ao YOLOV2 e obter rastreamento de objetos múltiplos em tempo real.
A arquitetura atual está definida para rastrear apenas um tipo de objetos, mas deve ser fácil generalizar em todos os objetos.
Atualmente, apoia o rastreamento de pessoas (como os pesos fornecidos para Deep_sort foram treinados no rastreamento de pessoas)
python
numpy
opencv 3
tensorflow 1.0
Cython.
sklean.
Para usar o tipo:
scikit-learn
scikit-image
FilterPy
1-Clone este repositório: git clone https://github.com/bendidi/Tracking-with-darkflow.git
2 -Inicialize todos os submódulos: git submodule update --init --recursive
3 -Vá para o Darkflow Directory e faça no local Build: python3 setup.py build_ext --inplace
Baixe os pesos:
Leia mais sobre YOLO (em DarkNet) e baixe arquivos de peso aqui, caso não seja encontrado o arquivo de peso, Thtrieu enviou parte dele aqui, que incluem yolo-full e yolo-tiny de V1.0, tiny-yolo-v1.1 de V1.1 e yolo , tiny-yolo-voc de V2.
O ArtChitecture que usei/testei neste projeto é cfg/yolo.cfg com os pesos bin/yolo.weights .
Em seguida, você precisa baixar os pesos Deep_sort aqui (pasta de redes), fornecida por NWOJKE
Os pesos Deep_Sort fornecidos pela NWOJKE foram cancelados. Você pode obtê -los daqui em vez disso (graças a @Louxy126)
Extraia a pasta e copie -a para deep_sort/resources
Edite sinalizadores em run.py após sua configuração:
demo : caminho para o arquivo de vídeo para usar, defina como "câmera", se desejar usar sua câmera
model : Qual configuração do modelo a ser usada para o YOLO, você pode obter mais informações e arquivos .cfg aqui (coloque -os no Darkflow/ CFG/ Pasta)
load : os pesos correspondentes a serem usados com o modelo escolhido (coloque -os no fluxo escuro/bin/) mais informações aqui
threshold : o limiar de confidência das detecções YOLO
gpu : quanto GPU usar, 0 significa usar CPU
track : para ativar o rastreamento ou não
trackObj : quais objetos a rastrear como uma lista (observe que o codificador de Deep_sort foi treinado apenas nas pessoas, então você precisa treinar seu próprio codificador, mais informações aqui)
saveVideo : se deve salvar vídeo ou não
BK_MOG : Adicione o módulo de subtração de fundo do MOG da OpenCV, só útil quando o YOLO não pode detectar pessoas em um vídeo (baixa qualidade, ...) Use para detectar caixas em torno de objetos em movimento
tracker : Qual rastreador usar: "Deep_sort" ou "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 : Pule os quadros para aumentar o FPS, pode diminuir a precisão!
csv : Salvar o arquivo CSV das detecções no formato (estrutura_id, object_id, x, y, w, h)
display : Exiba o vídeo enquanto processa ou não
Em seguida, você só precisa correr python run.py e aproveitar!
`velocidade 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
Testes realizados em (1024, 1280, 3) Vídeo de resolução no NVIDIA GTX 1080
pular até 3 quadros permite mais velocidade, mantendo a precisão do rastreamento`
Este projeto está usando o código bifurcado de:
THTRIEU/Darkflow: Para as detecções e classificações de objetos em tempo real.
NWOJKE/DEEP_SORT: Para um simples rastreamento on -line em tempo real com uma métrica de associação profunda.
Siga os links para entender todos os recursos de cada projeto.
@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}
}