Cómo crear un sistema de reconocimiento de objetos

En la visión por computadora, hay dos sistemas principales a considerar al desarrollar un sistema de reconocimiento de objetos:

  • Reconocimiento de objetos a nivel de instancia: es el más fácil de lograr, ya que se trata de reconocer una instancia de un objeto en una escena. Implica encontrar puntos correspondientes entre un modelo de objeto en la base de datos y el de una escena.
  • Reconocimiento de objetos a nivel de categoría: Esto implica clasificar un objeto como perteneciente a una categoría de objetos conocida particular. Esto es más difícil y requiere selección de funciones especiales y algoritmos de aprendizaje.

Reconocimiento de objetos a nivel de instancia:

Hay 4 etapas principales:

  1. Detección de características
  2. Coincidencia de características
  3. Integración de funciones
  4. Modelo de ajuste y verificación

Detección de características : ¿Qué es una característica? Una característica en la visión por computadora es una estructura fácilmente localizable en una imagen, es decir, una característica debe ser fácil de encontrar en una imagen determinada. Debe tener una pose bien definida, es decir, una posición que sea fácil de recuperar de las mediciones realizadas en la imagen. La repetibilidad es un atributo importante de una característica y significa que la misma característica debe ser detectable incluso cuando una imagen / objeto sufre diferentes transformaciones, como distorsión proyectiva, escala, rotación o traducción.

Detectores de características como las células simples, complejas e hipercomplejas también se encuentran en la corteza visual primaria. La célula simple responde a un estímulo orientado similar a un borde en una ubicación 2D precisa en la retina. La celda compleja responde mejor a una barra móvil orientada, la sintonía de orientación es específica pero la sintonización de posición es floja, por lo que las celdas complejas son tolerantes a las distorsiones geométricas. La célula hipercompleja se detiene al final, es decir, solo puede responder a barras de cierta longitud, más grandes y la respuesta cae. A medida que la señal visual se mueve hacia arriba en la jerarquía del procesamiento visual, el tipo o tipo de características con las que las neuronas sintonizan se vuelven más complejas y específicas.

Tomando prestado de la corteza visual primaria, los detectores de funciones se utilizan mucho en la visión por computadora para acelerar el análisis de imágenes. Una característica fácilmente identificable son los bordes: los bordes indican un límite existente entre un objeto y el fondo; en términos de visión por computadora, un borde es una región de gran gradiente de magnitud, generalmente un cambio abrupto en la magnitud del gradiente indica la presencia de un borde. Los primeros sistemas de visión por computadora necesitaban una fase explícita de detección de bordes, pero los sistemas más nuevos no hacen una detección explícita de bordes, sino que trabajan directamente con información de gradiente de imagen o información de píxeles sin procesar.

Las esquinas son puntos donde se juntan dos bordes con diferentes orientaciones. Una definición más adecuada es, un punto de esquina o región es una región que muestra un cambio brusco en la apariencia dentro de su vecindario inmediato en todas las direcciones. Esto significa que una esquina es localizable, es decir, es fácil encontrar una ubicación de punto de esquina de manera consistente en diferentes configuraciones de imagen, un atributo muy importante, por lo tanto, los detectores de esquina se usan ampliamente para emparejar o alinear imágenes, pero no son variantes de escala.

Las gotas son regiones que son más brillantes o más claras que su región vecina inmediata. Por lo general, son complementarios a los detectores de esquinas y las manchas también son altamente localizables en términos de ubicación y escala 2D. Por lo tanto, los detectores de blob se utilizan mucho en la detección y el reconocimiento de objetos invariables a escala, como en la Transformación de características invariables a escala (SIFT).

Las crestas no se usan tanto en la visión por computadora y detecta principalmente objetos o características alargadas. Las buenas características a tener en cuenta son las esquinas y los blobs porque se ajustan muy bien a la definición de una característica.

Coincidencia de características: cuando se detecta un punto de característica, se extrae un descriptor alrededor de ese punto para resumir la apariencia de la imagen en la vecindad inmediata. Los descriptores suelen ser vectores de valores reales que se normalizan utilizando la norma L2, pero también pueden ser binarios. Se colocan en una estructura de indexación como el árbol kd o muchos otros, como el hash sensible a la localidad, de modo que los descriptores observados puedan coincidir con sus correspondientes características similares en la base de datos.

Integración de funciones : como se vio anteriormente, se detectan y se combinan varias funciones por escena determinada. Es necesario agrupar varias características consistentes con una pose de objeto particular en una percepción singular. Esto se puede lograr con un enfoque de transformación generalizada en el que cada característica vota por un centro de objeto, escala y orientación. Las bandejas de votación con suficientes votos, es decir, 4 y superiores, se consideran como hipótesis de instancia de objeto.

Ajuste y verificación del modelo: las hipótesis de instancia de objeto se analizan ajustando un modelo a la observación. Esto se hace mediante RANSAC: algoritmo de consenso de muestra aleatoria. Al ajustar una matriz de modelo de movimiento de homografía, las correspondencias de 4 puntos son suficientes para dar una buena solución. La verificación del modelo analiza un análisis probabilístico detallado de los valores internos y externos, para aceptar o rechazar una hipótesis.

Reconocimiento de objetos a nivel de categoría:

El reconocimiento de objetos a nivel de categoría se logra de una manera diferente a los métodos basados ​​en características descritos anteriormente. Los descriptores de características se ven muy afectados por los cambios de iluminación y apariencia que ocurren en los problemas de nivel de categoría. El simple uso de medidas de distancia como la distancia euclidiana al cuadrado o la suma de diferencias absolutas no es efectivo para objetos de nivel de categoría altamente variables. Por lo tanto, el método de reconocimiento a nivel de categoría emplea un enfoque no directo para el reconocimiento, el aprendizaje.

El método de ventana deslizante se usa mucho aquí, dada una imagen MxN, una ventana mucho más pequeña de tamaño mxn donde n << N ym << M se desplaza a través de la imagen MxN y en cada ubicación se evalúa una función de clasificación F.

La función de clasificación F puede variar desde una plantilla simple hasta una red neuronal profunda compleja. Los algoritmos de aprendizaje son vastos y actualmente las redes neuronales convolucionales de aprendizaje profundo son de última generación, especialmente en el reconocimiento de objetos a nivel de categoría. En los casos en que localizar un objeto no es importante, no es necesario tener una ventana deslizante más pequeña, por lo tanto, n == N ym == M, este suele ser el caso en el aprendizaje profundo donde F = red neuronal convolucional.

Conclusión:

Al igual que para superar cualquier obstáculo en la vida, todo se reduce a tenacidad y consistencia. Construí mi sistema de visión desde cero en un espacio de 4 años y me encantaría compartir este enlace no con fines de marketing sino como una demostración. La aplicación tiene un sistema de reconocimiento de objetos de nivel de instancia de última generación.

Si desea construir algo así o mejor, entonces debe trabajar constantemente en su pasión y con el propósito de llegar allí, leer muchas revistas y literatura sobre visión por computadora. Agregué una sección de referencia para que pueda leer algo de literatura a la que me refería con frecuencia mientras desarrollaba mi sistema de visión.

Hay mucho de qué hablar sobre el sistema de reconocimiento de objetos. Espero que esto ayude y siéntase libre de comentar para que pueda mejorar la respuesta.

Referencias

  1. Visión por computadora: algoritmos y aplicaciones
  2. Publicaciones de David Lowe
  3. Publicaciones de Richard Szeliski
  4. Josef Sivic
  5. imagenet: CNN
  6. image-net.org
  7. Transformación de característica invariante de escala
  8. Acelerado características robustas