Detectar un objeto de vidrio lleno

10

Me han enviado aquí desde esta pregunta en stackoverflow , discúlpeme si la pregunta es demasiado específica y no está en los modales aquí :)

La tarea es encontrar un vaso con un líquido específico. Permíteme mostrarte las imágenes y luego describir lo que estoy tratando de lograr y cómo estaba tratando de lograr hasta ahora en la descripción debajo de las imágenes.

Las imágenes : (parece que necesito al menos 10 reputación para publicar imágenes y enlaces, por lo que los enlaces tendrán que hacer :( de lo contrario, puede consultar la pregunta de desbordamiento de pila)

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Una descripción detallada : estaba tratando de implementar un algoritmo que detectara un vidrio de una forma específica en opencv (el vidrio puede ser transformado por un ángulo / distancia de disparo de cámara diferente). Habrá también otras gafas de otras formas. El vaso que estoy buscando también se llenará con un líquido coloreado que lo distinguirá de los vidrios que contienen otros colores.

Hasta ahora, he intentado usar el extractor de funciones SIFT para tratar de encontrar algunas funciones en el cristal y luego combinarlas con otras fotos con el cristal.

Este enfoque funcionó solo en condiciones muy específicas en las que tendría vidrio en una posición muy específica y el fondo sería similar a las imágenes de aprendizaje. El problema también es que el vidrio es un objeto 3D y no sé cómo extraer características de eso (tal vez varias fotos desde diferentes ángulos vinculados, ¿de alguna manera?).

Ahora no sé qué otro enfoque podría usar. He encontrado algunas pistas sobre esto (aquí /programming/10168686/algorithm-improvement-for-coca-cola-can-shape-recognition#answer-10219338 ) pero los enlaces parecen estar rotos.

Otro problema sería detectar diferentes "niveles de vacío" en dicho vidrio, pero ni siquiera he podido encontrar el vidrio correctamente.

¿Cuáles serían sus recomendaciones sobre el enfoque en esta tarea? ¿Sería mejor usar una forma diferente de encontrar la función de objeto 3d local? ¿O sería mejor usar otro enfoque por completo? He oído hablar de algoritmos que "aprenden" el objeto de un conjunto de varias fotos, pero nunca lo he visto en la práctica.

Cualquier consejo sería muy apreciado

usuario1916182
fuente
alguna solución final con muestra de código fuente completo en C #?
Kiquenet
wow, esa es una solicitud bastante específica. el problema aún no tiene solución y no invertiré más tiempo en resolverlo. Creo, a juzgar por el documento mencionado aquí, que los fundamentos científicos tampoco tendrán una solución muy pronto, ya que el algoritmo sugerido tenía tasas de precisión muy bajas. De todos modos, dado que este proyecto era para mi trabajo, terminé discutiendo sobre un compromiso con un cliente, ya que la tarea es irreal para completar hoy en día. usé algunos detectores de características similares a los del pelo para "cualquier cosa que parezca una taza" y luego seleccioné tonos amarillos para detectar la cerveza. no es la tarea original
user1916182

Respuestas:

0

Quizás este documento pueda ayudarlo: http://ai.stanford.edu/~ang/papers/iros09-ScalableLearningObjectDetectionGPU.pdf

Aunque usan el sistema estéreo activo además de imágenes 2D para adquirir imágenes de profundidad, es interesante cómo usan las características basadas en parches, construyendo un diccionario del objeto con muchos fragmentos pequeños y luego entrenando un clasificador. Tal vez pueda agregar estas características para mejorar su tasa de detección.

Giorgio Luigi Morales Luna
fuente
No creo que este trabajo pueda usarse muy bien en la praxis salvaje. el robot descrito en el documento requiere un sensor de profundidad para detectar información de profundidad ... no es muy práctico llevar un kinect cuando se toman imágenes aleatorias en un teléfono celular o algo así ... pero sí, ¡las características basadas en parches son un enfoque muy interesante!
user1916182
-1

Se ha trabajado mucho en esto cuando se trata de software de reconocimiento facial. Por ejemplo, si observa en Facebook al etiquetar fotos, la ubicación de las caras se encuadra y le sugiere.

He visto mucha literatura sobre reconocimiento facial en imágenes usando redes neuronales y una búsqueda rápida en Google sin duda arrojará una gran cantidad de información sobre el tema. Estas redes toman los píxeles de la imagen como entradas. En su caso, la forma en que la opacidad cambia / la luz se refleja en el cristal puede ser una buena característica de identificación que la red aprenderá.

Un problema puede ser la cantidad de fotos que tiene que usar como datos de entrenamiento y el procesamiento previo de estas (es decir, identificar las caras usted mismo). Si no es factible hacer esto para obtener suficientes imágenes para entrenar su red lo suficientemente bien, entonces deberá buscar algunos atajos en la etapa de aprendizaje. Este documento es relevante para lo que desea hacer: http://www.ll.mit.edu/publications/journal/pdf/vol04_no2/4.2.5.neuralnetwork.pdf

Afortunadamente, este es un campo muy activo y gran parte del código necesario para este tipo de problema está disponible en línea.

Una vez que pueda identificar los anteojos en las imágenes, puede realizar un análisis adicional desde allí.

rwolst
fuente
esto es completamente irrelevante
user1916182
Interesante deberías decir eso. De todos modos, aquí hay un enlace a los algoritmos de detección utilizados por Facebook basados ​​en redes neuronales. Buena suerte, github.com/facebookresearch/Detectron .
rwolst