Detectando um objeto de vidro cheio

10

Fui enviado aqui a partir desta pergunta no stackoverflow , desculpe-me se a pergunta for muito específica e não estiver nas maneiras aqui :)

A tarefa é encontrar um copo com líquido específico. Deixe-me mostrar as fotos e depois descrever o que estou tentando alcançar e como eu estava tentando alcançar até agora na descrição abaixo das imagens.

As imagens : (parece que eu preciso de pelo menos 10 reputação para postar fotos e links, então os links terão que fazer :( caso contrário, você pode olhar para a questão do estouro da pilha)

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Uma descrição detalhada : Eu estava tentando implementar um algoritmo que detectasse um vidro de uma forma específica no opencv (o vidro pode ser transformado por um ângulo / distância diferentes do tiro da câmera). Também haverá outros copos de outras formas. O copo que eu estou procurando também será preenchido com um líquido colorido que o diferenciará dos óculos que contêm outras cores.

Até agora, tentei usar o extrator de recurso SIFT para tentar encontrar alguns recursos no vidro e depois combiná-los com outras fotos com o vidro.

Essa abordagem funcionou apenas em condições muito específicas, onde eu teria vidro em uma posição muito específica e o fundo seria semelhante às imagens de aprendizagem. O problema também é que o vidro é um objeto 3D e eu não sei como extrair recursos disso (talvez várias fotos de diferentes ângulos estejam ligadas de alguma forma?).

Agora eu não sei que outra abordagem eu poderia usar. Encontrei algumas pistas sobre isso (aqui /programming/10168686/algorithm-improvement-for-coca-cola-can-shape-recognition#answer-10219338 ), mas os links parecem estar quebrados.

Outro problema seria detectar diferentes "níveis de vazio" em tais vidros, mas eu nem consegui encontrar o vidro propriamente dito.

Quais seriam suas recomendações sobre a abordagem nesta tarefa? Seria melhor usar uma maneira diferente de encontrar o recurso de objeto 3d local? Ou seria melhor usar outra abordagem completamente? Eu ouvi falar sobre algoritmos "aprendendo" o objeto a partir de um conjunto de várias fotos, mas nunca vi isso na prática.

Qualquer conselho seria muito apreciado

user1916182
fonte
alguma solução final com amostra de código fonte completa em c #?
Kanjet
uau, isso é uma solicitação bastante específica. o problema ainda não tem uma solução e não investirei mais tempo na solução. acredito, a julgar pelo artigo mencionado aqui, que os fundamentos científicos não terão uma solução muito em breve também, pois o algoritmo sugerido teve taxas de precisão muito baixas. de qualquer forma, como esse projeto era para o meu trabalho, acabei discutindo sobre um compromisso com um cliente, pois a tarefa é irreal para ser concluída hoje em dia. usou alguns detectores regulares de características semelhantes a haar para "qualquer coisa que pareça uma xícara" e depois selecionou tons de amarelo para detectar cerveja. Não é a tarefa original
user1916182

Respostas:

0

Talvez este documento possa ajudá-lo: http://ai.stanford.edu/~ang/papers/iros09-ScalableLearningObjectDetectionGPU.pdf

Embora eles usem o sistema estéreo ativo, além das imagens 2D, para obter imagens em profundidade, é interessante como eles usam os recursos baseados em patches, construindo um dicionário do objeto com muitos fragmentos pequenos e treinando um classificador. Talvez você possa adicionar esses recursos para melhorar sua taxa de detecção.

Giorgio Luigi Luna Morales
fonte
Eu não acho que este trabalho possa ser usado muito bem em praxis selvagens. o robô descrito no documento requer um sensor de profundidade para detectar informações de profundidade ... não é muito prático carregar um kinect ao tirar fotos aleatórias em um telefone celular ou algo assim ... mas sim, os recursos baseados em patch são uma abordagem muito interessante!
user1916182
-1

Houve muito trabalho nisso quando se trata de software de reconhecimento facial. Por exemplo, se você notar no Facebook ao marcar fotos, a localização dos rostos é encaixotada e sugerida a você.

Tenho visto muita literatura sobre reconhecimento facial em imagens usando redes neurais e uma rápida pesquisa no Google, sem dúvida, gera uma grande quantidade de informações sobre o assunto. Essas redes aceitam os pixels da imagem como entradas. No seu caso, a maneira como a opacidade muda / reflete o vidro pode ser uma boa identificação dos recursos que a rede aprenderá.

Um problema pode ser o número de fotos que você precisa usar como dados de treinamento e o pré-processamento delas (ou seja, identificar os rostos você mesmo). Se não for possível fazer isso com imagens suficientes para treinar sua rede bem o suficiente, será necessário procurar alguns atalhos no estágio de aprendizado. Este documento é relevante para o que você deseja fazer: http://www.ll.mit.edu/publications/journal/pdf/vol04_no2/4.2.5.neuralnetwork.pdf

Felizmente, este é um campo muito ativo e grande parte do código necessário para esse tipo de problema está prontamente disponível online.

Quando você conseguir identificar os óculos nas imagens, poderá realizar análises adicionais a partir daí.

rwolst
fonte
isso é completamente irrelevante
user1916182
Interessante você deveria dizer isso. Enfim, aqui está um link para os algoritmos de detecção usados ​​pelo Facebook com base em redes neurais. Boa sorte, github.com/facebookresearch/Detectron .
rwolst