Escolar Documentos
Profissional Documentos
Cultura Documentos
Jones Granatyr
Dalton Vargas
O que é rastreamento de objetos?
• Localizar um objeto em quadros sucessivos de um vídeo
• Alguns algoritmos
• BOOSTING
• MIL
• KCF
• TLD
• MedianFlow
• MOSSE
• CSRT
• Goturn
• Meanshift
• CAMShift
• Optical Flow Sparse
• Optical Flow Dense
Aplicações
• Rastrear uma pessoa ou objeto específico dentre vários outros
• O rastreamento e análise do movimento de jogadores em uma partida de futebol
• O rastreamento de objetos tem vários usos, alguns dos quais são vigilância e segurança,
monitoramento de tráfego
Pré-requisitos
• Básico sobre lógica de programação (estruturas condicionais e de
repetição)
• Conhecimento em Python: desejável
• Conhecimento básico sobre o OpenCV: desejável
Rastreamento x Detecção
• Geralmente os algoritmos de rastreamento são mais rápidos que os
algoritmos de detecção
• Um bom algoritmo de rastreamento utilizará todas as informações que ele tem sobre
o objeto até esse ponto, enquanto um algoritmo de detecção sempre começa do zero
• Objetos: n frames
• Rastreamento: n-1 frames
• O rastreamento se beneficia das informações extras que ele possui, porém, podemos perder o controle de um
objeto quando ele fica atrás de um obstáculo ou se ele se move tão rápido que o algoritmo de rastreamento não
consegue alcançá-lo
• Caixa delimitadora que rastreia o objeto se afasta
• Executar um algoritmo de detecção
• O rastreamento pode ajudar quando a detecção falha
Rastreamento x Detecção
• O rastreamento preserva a identidade
Rastreamento x Detecção
• Por que precisamos do rastreamento de objetos? Não podemos
simplesmente detectar objetos em todos os quadros?
• Identidade
• A detecção de objetos pode falhar
• Pesquisa local ao invés de pesquisa global
• Detecção + rastreamento
Algoritmos de rastreamento
• Modelo de movimento
• Localização + velocidade nos quadros anteriores
• Prevê a localização aproximada do objeto
• Modelo de aparência
• Aparência do objeto (formato)
• Pesquisar em uma posição próxima para prever a localização
• Em laranja a localização
com a pontuação menor
do classificador, sendo
estes os negativos
MIL (Multiple Instance Learning) – mínimo
OpenCV 3.0.0
• Ao invés de considerar apenas a localização atual do objeto como um exemplo positivo, o algoritmo procura
posições ao redor da localização atual para gerar vários potenciais exemplos positivos
• Coleção de imagens positivas e coleção de imagens negativas. Nas positivas, somente uma imagem prevista será
considerada positiva
• Mesmo que a localização atual do objeto rastreado não seja precisa, quando amostras da vizinhança da localização
atual são colocadas na coleção de imagens positivas, há uma boa chance de que essa coleção de imagens contenha
pelo menos uma imagem na qual o objeto esteja bem centralizado
KCF (Kernel Correlation Filters) – mínimo OpenCV
3.1.0
• Utiliza o fato de que as múltiplas amostras positivas usadas no rastreador MIL têm grandes
regiões sobrepostas
• Esses dados sobrepostos levam a algumas boas propriedades matemáticas que são exploradas
por esse rastreador para tornar o rastreamento mais rápido e preciso
• O primeiro quadro é usado para inicializar o algoritmo
• Para os próximos seis quadros, cada um dos três KCF é atualizado para estimar a mudança de
escala do objeto
CSRT (Discriminative Correlation Filter with Channel
and Spatial Reliability) – mínimo OpenCV 3.4.2
• É criado um mapa de confiabilidade espacial para ajustar a região selecionada para rastreamento
• Adequado também para objetos não retangulares
• Utiliza 2 recursos padrões das imagens (HOGs e Colornames)
1. Da esquerda para a direita: patch de treinamento com a caixa delimitadora do objeto a ser rastreado
2. HOG para extrair informação útil da imagem
3. Probabilidade de objeto posterior após o teste aleatório de Markov
4. Patch de treinamento mascarado com o mapa final de confiabilidade
Artigo: https://www.arxiv-vanity.com/papers/1611.08461/
MedianFlow – mínimo OpenCV 3.0.0
• Não é muito adequado para objetos com movimentos rápidos ou que
mudam sua aparência rapidamente
• Rastreia o objeto nas direções para frente e para trás no tempo e mede
as discrepâncias entre essas duas trajetórias (entre os frames)
• Permite detectar falhas de rastreamento e selecionar trajetórias nas sequências de vídeo
Arquitetura CaffeNet
Comparativo entre os 8 algoritmos
Sugestão de uso:
• Use o KCF quando precisar de um FPS mais rápido, mas pode lidar
com uma precisão de rastreamento de objeto um pouco menor
Fonte: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_video/py_meanshift/py_meanshift.html
Meanshift
CAMshift (Continuously Adaptive Meanshift)
• Com o Meanshift, a janela sempre tem o mesmo tamanho, esteja o objeto muito longe ou muito
perto da câmera
• Este algoritmo faz com que o tamanho da janela continue sendo atualizado quando a janela de
rastreamento tenta convergir
• Calcula a elipse mais adequada e aplica novamente a mudança de média com a janela de pesquisa
recém-escalada e a janela anterior
Optical Flow
• Representa a direção de cada pixel e a velocidade
• Quanto mais longe o objeto estiver, menor o movimento dos pixels. Quanto mais perto o objeto, maior o
movimento dos pixels (matriz de cores HSV)
• A matiz (H) é usada para indicar a direção do movimento dos pixels (tentativa de estabelecer para onde cada ponto
da imagem está se movimentando)
• A saturação é usada para indicar a velocidade dos pixels
• Quando o deslocamento dos pixels é menor, a intensidade da cor também é menor (a saturação diminui)
• Quanto maior o deslocamento dos pixels, maior é a intensidade da cor (a saturação aumenta)
Optical Flow - Sparse
Optical Flow – Sparse
• Inicialmente o algoritmo faz a detecção de cantos/arestas para determinar a orientação dos vetores na imagem
utilizando o algoritmo de Harris (u e v indicam o deslocamento)
• Shi e Tomasi modificaram a equação de Harris Corner Detector. É feito o cálculo da pontuação R