O projeto é baseado na detecção e rastreamento de pessoas e estou focando principalmente no rastreamento de pessoas. Conforme mostrado no gif de saída no README.md ou no output.mp4, cada pessoa receberá um id
assim que entrar em um frame e o id
será mantido independentemente da detecção acontecer em frames simultâneos. O algoritmo faz a detecção de pessoas e o rastreia enquanto ele permanece no quadro.
Person_det_track.py detecta e rastreia a pessoa usando SSD e Filtro Kalman
Por favor, tente manter a versão fornecida tanto quanto possível, caso contrário você enfrentará problemas de compatibilidade. Usei a melhor combinação possível durante o tempo de codificação.
opencv [v3.1]
Fluxo tensor [v1.5.0]
O método aqui proposto está dividido em 2 partes principais
Detecção de Pessoa - A detecção de pessoa em tempo real é feita com a ajuda do Single Shot MultiBox Detector. O SSD atinge 75,1% de mAP, superando um modelo Faster R-CNN de última geração comparável. e o modelo SSD está disponível no zoológico de detecção do Tensorflow. A integração perfeita do SSD com o tensorflow ajuda na otimização e implementação adicionais do algoritmo. A detecção de objetos SSD é composta por 2 partes:
Rastreamento de Pessoa - A caixa delimitadora pode ser obtida em torno do objeto/pessoa executando o modelo de Detecção de Objeto em cada quadro, mas isso é computacionalmente caro. O algoritmo de rastreamento usado aqui é Kalman Filtering. O Filtro de Kalman há muito é considerado a solução ideal para muitas tarefas de rastreamento e previsão de dados. Seu uso na análise do movimento visual. O objetivo da Filtragem é extrair as informações necessárias de um sinal, ignorando todo o resto. Neste projeto, o Filtro de Kalman é alimentado com a velocidade, posição e direção da pessoa o que o ajuda a prever a localização futura da Pessoa com base em seus dados anteriores.
A parte de rastreamento ainda enfrenta alguns problemas no momento da oclusão. (Trabalhando nisso)
O sistema consiste em duas partes: primeiro, detecção humana e, segundo, rastreamento. As primeiras pesquisas foram tendenciosas mais para o reconhecimento humano do que para o rastreamento. Monitorar os movimentos de um ser humano levantou a necessidade de rastreamento. Os movimentos de monitoramento são de grande interesse para determinar as atividades e a atenção de uma pessoa.
Reduzindo o requisito de poder de computação - Um algoritmo normal de detecção de objeções detecta o Objeto, mas não rastreia (atribui um ID) um Objeto entre quadros; portanto, deve ser executado em cada quadro para obter a caixa delimitadora. O rastreamento ajudará a reduzir o número de vezes que o algoritmo de detecção deve ser executado, ou seja, em vez de executar o algoritmo de detecção a cada quadro, esta implementação executa a detecção a cada 5 quadros.
Compensação de falha do modelo de detecção de objetos - pode haver algumas situações em que o SSD pode não detectar a pessoa. Até mesmo a oclusão pode afetar significativamente o detector; é aí que o algoritmo de rastreamento pode nos ajudar muito.
Recuperação de identidade - O rastreamento de um ser humano pode ser usado como uma etapa anterior no reconhecimento biométrico de rosto. Manter o controle contínuo de uma pessoa permitirá identificá-la a qualquer momento. Mesmo que a identificação facial não seja possível em um determinado conjunto de quadros, sua identidade pode ser encontrada no rastreamento. Por Neeraj Menon