Eu tenho um projeto de hobby que estou pensando em me comprometer como uma maneira de aumentar minha experiência até agora limitada de aprendizado de máquina. Tirei e concluí o MOOC do Coursera sobre o assunto. Minha pergunta é com relação à viabilidade do projeto.
A tarefa é a seguinte:
De vez em quando, os gatos vizinhos visitam meu jardim, o que eu não gosto, pois eles tendem a defecar no meu gramado. Eu gostaria de ter um sistema de aviso que me avise quando houver um gato presente, para que eu possa persegui-lo usando meu super imersão. Por uma questão de simplicidade, diga que eu só me importo com um gato com cores preto e branco.
Eu configurei um raspberry pi com módulo de câmera que pode capturar vídeos e / ou fotos de uma parte do jardim.
Imagem de exemplo:
Minha primeira idéia foi treinar um classificador para identificar objetos semelhantes a gatos ou gatos, mas depois de perceber que não poderei obter um número suficientemente grande de amostras positivas, abandonei isso em favor da detecção de anomalias.
Estimo que, se eu capturasse uma foto a cada segundo do dia, eu terminaria com talvez cinco fotos contendo gatos (de cerca de 60.000 com luz solar) por dia.
Isso é possível usando a detecção de anomalias? Se sim, quais recursos você sugeriria? Minhas idéias até agora seriam simplesmente contar o número de pixels com certas cores; faça algum tipo de detecção de blob / segmentação de imagem (que eu não sei como fazer e, portanto, gostaria de evitar) e execute a mesma análise de cores neles.
fonte
Respostas:
Você pode simplificar seu problema significativamente usando uma abordagem de detecção de movimento / alteração. Por exemplo, você pode comparar cada imagem / quadro com uma desde o início (por exemplo, um minuto antes) e considerar apenas os pixels que foram alterados desde o início. Você pode então extrair a região retangular da mudança e usá-la como base para sua classificação ou detecção de anomalia.
Adotar esse tipo de abordagem pode simplificar significativamente seu classificador e reduzir sua taxa de alvos falsos, porque você pode ignorar qualquer coisa que não seja do tamanho de um gato (por exemplo, uma pessoa ou pássaro). Você usaria as regiões de alteração extraídas que não foram filtradas para formar o conjunto de treinamento para o seu classificador (ou detector de anomalias).
Certifique-se de obter sua taxa-alvo falsa suficientemente baixa antes de montar uma torre a laser no seu sistema de detecção de intrusão de felinos.
fonte
Este é um projeto interessante e também bastante ambicioso :)
Não tenho certeza se a detecção de anomalias (pelo menos no sentido descrito no curso que você seguiu) seria um algoritmo muito adequado nesse caso.
Eu consideraria uma abordagem mais viável o que foi discutido no final do curso em que um fluxo de trabalho de Photo OCR foi demonstrado.
A abordagem consistiria em segmentar sua imagem em "blocos" menores e analisá-los um por um, usando um algoritmo de aprendizado supervisionado, e tentar classificar cada bloco de acordo com o gato ou não. Se um bloco contém um gato, o alarme dispara. Como bônus, você também obtém a posição do gato, de modo que você pode pensar em incorporar uma resposta "automática" como uma etapa futura do seu projeto.
O benefício aqui é que você não precisará treinar seu algoritmo usando um conjunto de dados específico para o seu jardim (o que, como você menciona é difícil de criar), mas você pode usar imagens de gatos retirados da rede (por exemplo, talvez você possa procurar por "gato na grama" ou algo assim) e talvez trechos de fotos de seus (ou de outros) jardins. Portanto, você não precisa gastar seu tempo coletando fotos da câmera e evita o risco de ter uma amostra muito pequena (comparável) de positivos (ou seja, gatos).
Agora, claro, como é fácil construir um detector de gatos preciso é outro tópico.
fonte
A estratégia de detecção de movimento / mudança é certamente adequada, mas eu acrescentaria uma operação extra. Eu detectaria as regiões com maior probabilidade de serem alteradas, por exemplo, a escada parece um lugar onde os humanos podem ser (também gatos) e grama onde cães, gatos ou humanos podem estar.
Capturava um mapa com o tamanho do objeto e a trajetória e, com isso, criava um cluster com o objetivo de detectar um objeto (com tamanho específico dentro da imagem em termos de pixels) que se move com uma certa velocidade e trajetória.
Você pode conseguir isso usando R ou sugiro o OpenCV para detectar movimento e seguir objetos diferentes.
fonte
A subtração em segundo plano do OpenCV encontrará objetos se movendo sobre o seu endurecimento. Depois disso, você pode usar um classificador ou uma análise de forma para diferenciar gatos, pessoas, árvores e etc.
fonte
Isso é um passaro? E um gato? Temos tamanho de gato em preto e branco! pegas aqui. então isso iria falhar.
A primeira coisa seria excluir todas as áreas verdes, os gatos raramente são verdes.
Em seguida, compare o restante com uma imagem de referência para remover objetos estáticos, como pedras e escadas.
A detecção de objetos de tamanho mínimo deve ser possível, mas para uma classificação a resolução é muito baixa. Também pode ser seu vizinho testando seu novo drone com controle remoto.
Com duas câmeras, você pode fazer um mapeamento 3d dos objetos e eliminar objetos voadores.
fonte