Detecção de pessoas de cima

16

Estou tentando encontrar algum método para detectar pessoas usando apenas uma câmera 3 metros acima do solo. Este é um quadro retornado pela câmera:

insira a descrição da imagem aqui

ATUALIZAÇÃO: Teste de vídeo -> http://dl.dropbox.com/u/5576334/top_head_shadow.avi

Para fazer isso, primeiro entendo que preciso executar uma segmentação em segundo plano em primeiro plano. Essa é a parte fácil.

Com a máscara de primeiro plano, sou capaz de fazer operações simples como Hough transformar para encontrar círculos, mas dessa maneira apenas detecta 60% das cabeças, incluindo muitos falsos positivos.

Eu poderia usar algumas outras técnicas simples, como segmentação de cores, mas descobri que as cabeças das pessoas são muito diferentes, vistas de cima por causa de seu penteado, cor, quantidade de cabelo, ...

Outra opção que eu tenho sobre isso é a possibilidade de usar descritores HOG, ou recursos do tipo Haar, mas eu precisaria de um extenso banco de dados de pessoas vistas de cima para treinar os modelos. Eu não encontrei nada parecido.

Eu pensei que este seria um problema muito recorrente, mas não consigo encontrar muito sobre isso na literatura ou na internet. Qualquer ajuda para resolver esta tarefa será apreciada :-)

ATUALIZAÇÃO: para obter mais informações, o objetivo é implementar algum método genérico para fazer o rastreamento do fluxo de pedestres. O primeiro protótipo será testado em um shopping.

emepetres
fonte
1
Se você pode postar alguns vídeos, é possível que alguém escreva um protótipo. Você pode postar por favor?
Andrey Rubshtein
@ Andy, eu enviei um teste de vídeo mostrando o problema.
Emepetres
@emepetres Se você tem recursos para testar esse problema, talvez também tenha recursos para encontrar uma câmera secundária? Combinando vistas de duas câmeras (uma top-view, e uma frontal ou a partir de um ângulo) e usando informações de ambos os sons interessantes e como uma abordagem plausível rastreamento fluxo de pedestres (dependendo da precisão que você precisa)
penelope
4
essa tarefa é chamada "contagem de pessoas" na literatura.
mrgloom
Você pode fornecer um link para este vídeo. Ele não está disponível no link fornecido mais
Garvita Tiwari

Respostas:

11

Existem outros objetos que podem se mover ao lado das pessoas? Se não houver, basta encontrar os blobs (componentes conectados) na sua máscara de primeiro plano, e esse é o seu pessoal.

Eles também podem "colidir" um com o outro, criando um blob em vez de dois. Nesse caso, você pode fazer um rastreamento de movimento e resolver a ambiguidade usando o fato de que a trajetória e a velocidade são suaves.

Se houver outros objetos (como cães, carros), você deve criar um classificador que obtenha parâmetros de blob como:

  • Estatísticas de blob (tamanho, solidez, etc.)
  • Cor
  • Informações de borda
  • Velocidade (em caso de rastreamento)

E retorna a classe correta (Humano / Não humano).

Andrey Rubshtein
fonte
1
Estou procurando um método robusto que possa distinguir entre humano / não humano também. Dessa forma, depois de pensar em sua resposta, acho que o uso de parâmetros de blob como você sugeriu, combinado com o rastreamento de alguns recursos e algumas informações estatísticas do blob, deve ser suficientemente robusto.
Emepetres
8

Eu estive na posição "para usar métodos bem testados, precisaria de um extenso banco de dados de exemplos que não tenho" em uma empresa muito pequena que "não podia pagar". Lamento muito que simplesmente não fizesse o que fosse necessário para obter o máximo possível de dados. Eu acho que teria feito um mundo de diferença para eles no final.

Qualquer tipo de detecção da visão do mundo real tem um milhão de coisas em que você não pensava até tentar e falhar. É um problema antigo muitas e muitas vezes mais difícil do que parece. Eu recomendaria seguir o método newtons de "ficar sobre os ombros dos gigantes" (ou, quase tão bom, em cima de uma grande pilha de anões). Ou seja, use um método que você já sabe que funciona e é robusto. Todas as coisas que parecerem "boas o suficiente" irão falhar miseravelmente.

O estado da arte na detecção de pedestres pela última vez que conheci foi o HOG, que foi originalmente testado exatamente nesse cenário. Você quer rastrear, então precisará brincar um pouco no google scholar para descobrir isso. O ponto principal é que eu estive em uma posição semelhante e, por isso, recomendo que você obtenha seu banco de dados, o que for necessário e use algo que você sabe que funciona, que já foi testado com uma taxa de falha conhecida, e não algo que apenas soa bem. A marcha de 40 anos de morte dos algoritmos de visão computacional que "parecem que eles funcionarão" não é algo que você deseja fazer parte.

PS: Não estou tentando criticar a visão do computador. É uma das minhas áreas favoritas. Mas a história sugere que existem mil passos errados a serem seguidos e não muitos corretos. É melhor seguir alguém que já encontrou alguns dos passos certos.

John Robertson
fonte
Talvez você esteja certo, e eu deva gastar algum tempo criando um bom banco de dados para treinar e testar um descritor HOG. Dessa forma, você sabe qual tamanho mínimo teria esse banco de dados para fazer o treinamento corretamente?
Emepetres
1
Eu não sei. Uma variedade tão ampla quanto possível. Além disso, HOG é um detector, retorna uma resposta "sim, existe uma pessoa" ou "não há pessoa" para uma imagem e nada mais. Não diz nada sobre onde a pessoa está (local) ou quais pixels são a pessoa (segmentação) ou se existem várias pessoas versus uma pessoa. Eu acho que algumas adaptações ao HOG foram feitas (algumas patenteadas), mas o ponto é o que você deseja é o rastreamento de pessoas e o HOG no que diz respeito apenas à detecção , nem mesmo à localização. Eu nunca fiz isso, mas o rastreamento de pessoas é um tópico de longa data. Confira os documentos sobre rastreamento de pessoas.
9263 John Robertson
1
@ John Robertson HOG não é um detector, é apenas um descritor e é usado com algum classificador (SVM + HOG por exemplo) e pode retornar a localização do objeto.
mrgloom
1
@ Mrgloom Você está certo. Ele retorna o local fazendo uma pesquisa em janelas. Isso é rápido apenas usando um método patenteado por uma grande corporação. Eu não pretendia usar o detector de palavras no sentido técnico aqui, apenas no sentido claro de inglês de que é algo que detecta. Ele apenas fornece a localização em um sentido genérico de que, dentro dessa janela, existe alguém em aproximadamente 80-90% da escala da janela, mas sem qualquer identificação de quais partes da janela podem pertencer à pessoa. Eu estou familiarizado com a distinção técnica descritor / detector.
John Robertson
3

Eu acho que você pode começar combinando algumas respostas daqui.

Há duas abordagens diferentes mencionadas nesta resposta, com a grande diferença de que é impossível fazer a detecção de rostos, pois você não vê rostos. Mas a outra abordagem ainda é aplicável: decidir se o clima é um pedestre ou não com base em suas ações (movimentos) .

Como você previu, isso sugeriria o uso de algum tipo de segmentação de primeiro plano e segundo plano. Um pesquisador muito rápido encontrou este artigo recente que parecia bastante promissor, mas como nunca fiz isso pessoalmente, você ou outra pessoa pode ter sugestões melhores para o algoritmo específico a ser usado nesta etapa.

Agora, a primeira resposta que eu vinculei apenas fornece uma idéia de abordagem muito geral. Porém, esta resposta pode lhe dar uma idéia dos próximos passos: rastreie os objetos e tente distinguir entre eles com base na velocidade ou na direção do movimento .

Finalmente, nunca resolvi o problema que você teve, então provavelmente não sou de muita ajuda, mas talvez as respostas às quais vinculei possam lhe dar uma idéia geral de por onde começar. Também me surpreendeu o fato de não encontrar nenhum trabalho e artigo anterior ao procurar uma resposta para o seu problema, mas talvez você precise apenas de alguém para lhe dizer as palavras-chave corretas para descrever esse problema .

Penélope
fonte
Obrigado pela sua resposta. O artigo sobre segmentação em primeiro plano parece muito interessante. Como você e @Andrey sugeriram, seguirei a abordagem da análise de blob para determinar o número de humanos em cada blob.
emepetres
@emepetres Seria bom se você deixe-nos saber sobre seus resultados, e como bem sucedido foi a abordagem uma vez que você experimentá-lo e testá-lo
penelope
1

Eu tenho algum tipo de tarefa, conforme descrito aqui, contando pessoas. Mas minha exigência é que a câmera esteja voltada para as pessoas do lado esquerdo / direito, e não sobre a cabeça.

Dito isto, explorando a possível solução para o meu caso, deparo com um método interessante para o seu caso (detecção de sobrecarga). Essas soluções usam câmera estéreo para que você possa lidar com blobs (as pessoas se aproximando demais) vendo a profundidade (por exemplo, veja apenas blobs na média das pessoas no nível da cabeça).

Este produto pode fornecer uma explicação melhor: digiop . Consulte o folheto para obter mais explicações técnicas.

PS Não estou representando a empresa, apenas apontando uma solução bem documentada

bonchenko
fonte
Obrigado por compartilhar. Parece ser uma maneira interessante de resolver o problema.
Emepetres