Métodos de reconocimiento de objetos en imágenes. Reconocimiento de objetos. Caso simple, separación unidimensional.

Como tema de investigación inteligencia artificial El reconocimiento de imágenes tiene una larga historia y una gran significado práctico. Se utilizó por primera vez para leer números escritos a mano. Actualmente, el ámbito de su aplicación se ha ampliado significativamente: desde la medición, control, clasificación y montaje hasta procesos de producción y finalizando con el análisis de imágenes leídas a distancia, diagnósticos a partir de fotografías médicas, evaluación cuantitativa datos experimentales, identificación humana, diseño automático, comprensión de las imágenes como función visión técnica robots, etc. El proceso de reconocimiento de imágenes humanas no es procesamiento simple información visual, pero un proceso complejo, papel importante en el que juegan los factores psicológicos. En particular, el proceso de comprensión de una imagen implica inferencia semántica, pero su implementación requiere la recopilación de amplios conocimientos y decisiones intuitivas que van más allá de la lógica, por lo que es extremadamente difícil simular tal proceso en una computadora.

EN medios existentes Se utiliza el reconocimiento de imágenes. varios metodos dependiendo de si el objeto de reconocimiento es artificial o natural. En el primer caso, suelen tratar de objetos individuales de forma clara, por lo que gran número investigación

se centra en la coincidencia de patrones detectando bordes y aristas o infiriendo formas tridimensionales utilizando reglas geométricas. Entre los objetos naturales, hay muchos objetos de forma irregular con claroscuro, por lo que, generalmente mediante análisis de conglomerados, se dividen en áreas homogéneas y luego, en función de las características de las formas de estas áreas, se llega a una conclusión sobre el objeto. Además, en últimamente Se están realizando muchas investigaciones sobre la reproducción de formas bidimensionales y tridimensionales de objetos basándose en el procesamiento de una gran cantidad de imágenes. En robótica existe la necesidad de procesar imágenes en movimiento en tiempo real, es decir, gran valor gana velocidad de reconocimiento.

EN caso general El proceso de reconocimiento de imágenes usando una computadora es el siguiente.

1. Obtener información de la imagen utilizando una cámara u otros medios y convertirla en información digital: Esto da como resultado que los fotogramas se divida en una gran cantidad de elementos, y a cada elemento se le asigna color y contraste.

2. Pretratamiento. Eliminación de ruido, normalización para comparación con un estándar, segmentación (seleccionando información local necesaria para el reconocimiento), etc.

3. Extracción de características. Las características de la imagen pueden tener diferentes niveles. Estrictamente hablando, la segmentación también forma parte de la extracción de características. Los métodos de extracción de características pueden ser locales o globales. Ejemplo método local son la detección de bordes, la agrupación global y el método de expansión de regiones. La detección de bordes utiliza discontinuidades entre regiones, mientras que la agrupación es una segmentación basada en la detección de regiones homogéneas. Ya que en cualquier caso la información de la imagen contiene ruido que no se elimina en la etapa pretratamiento La segmentación requiere el procesamiento de información difusa. La extracción de características globales se lleva a cabo en relación con la forma, propiedades, posición relativa y otras características de las áreas seleccionadas. Este procedimiento es de gran importancia para la posterior fase de evaluación.

4. Comprensión y evaluación. El proceso de comprensión de una imagen.

llamado clasificación e identificación comparando los grupos resultantes con modelos famosos, o construcción imágenes tridimensionales objeto original utilizando conclusiones. El resultado de este proceso es el objetivo final del reconocimiento de imágenes.

Actualmente se han realizado numerosos estudios sobre el proceso de reconocimiento de imágenes, pero los resultados siguen siendo extremadamente insatisfactorios. Por ejemplo, cuestiones como la comprensión de imágenes complejas, la transformación mutua de información verbal y de vídeo, el reconocimiento de líneas curvilíneas y formas irregulares, reconocimiento imágenes borrosas, extracción de características de alto rendimiento, inferencia semántica e imaginación, etc.

Los principales enfoques metodológicos actualmente aceptados en el reconocimiento son la estadística, el análisis de conglomerados, la deducción en lógica bivaliva y muchos otros, pero todos ellos están muy lejos del proceso de reconocimiento característico de los humanos. La extracción de características es la más etapa importante en el reconocimiento de imágenes, pero también excepcionalmente complejo. De hecho, ¿qué es un atributo de imagen? ¿Por qué una caricatura se parece más a una persona que una fotografía suya? Aparentemente, un papel importante en el proceso de reconocimiento humano lo desempeña la información que parece no ser más que ruido para una computadora, pero que de alguna manera se extrae y presenta. Los signos de este tipo pueden identificarse por los sentimientos de una persona y no por la lógica. Además, a la hora de reconocer imágenes borrosas, no funcionan las capacidades analíticas, sino las capacidades de generalización, es decir, También es un proceso intuitivo. Para simular tales procesos, es necesaria la investigación de métodos para procesar información subjetiva y técnicas para manejar macroinformación. La investigación sobre el reconocimiento de imágenes borrosas apenas comienza, pero ya se espera mayor desarrollo una nueva metodología que cumple con los requisitos descritos anteriormente.

Consideremos brevemente el estado del reconocimiento de imágenes borrosas. Dado que la información de vídeo incluso de un objeto bastante claro puede verse alterada por el ruido, la detección de bordes se utiliza con mayor frecuencia. lógica difusa. Un ejemplo típico es la clasificación

elementos de imagen utilizando agrupamiento difuso. Sin embargo, dado que los elementos absolutamente idénticos son raros, es necesaria una agrupación "difusa". Se utilizan métodos similares al clasificar imágenes que tienen una extensión relativa a la imagen de referencia (reconocimiento de caracteres escritos a mano, voz, etc.).

Al detectar contornos directamente surge un problema de ruido que no se puede solucionar completamente con la ayuda de filtros. Además, se necesitan hallazgos para reponer las áreas perdidas. Para ello se utilizan reglas heurísticas que, sin embargo, tienen un carácter cualitativo confuso. Al pasar a la etapa de comprensión de imágenes, surge el problema de una correspondencia difusa más efectiva de imágenes, lo que requiere una comparación no solo en la forma, sino también en la semántica para resolverla. En particular, esta situación se presenta en el campo del diagnóstico por rayos X, donde la formación de reglas es imposible.

A continuación se muestran algunos ejemplos típicos de investigación de reconocimiento de imágenes utilizando lógica difusa.

  • Tutorial

Hace tiempo que quería escribir un artículo general que contuviera los conceptos básicos del reconocimiento de imágenes, una especie de guía para metodos basicos, diciéndote cuándo usarlos, qué problemas resuelven, qué se puede hacer por la noche de rodillas y en qué es mejor no pensar sin tener un equipo de 20 personas.

Llevo mucho tiempo escribiendo algunos artículos sobre reconocimiento óptico, por eso la gente me escribe un par de veces al mes. varias personas con preguntas sobre este tema. A veces tienes la sensación de que vives con ellos. mundos diferentes. Por un lado, entiendes que lo más probable es que la persona sea un profesional en un tema relacionado, pero en métodos reconocimiento óptico sabe muy poco. Y lo más molesto es que está intentando aplicar un método de un campo de conocimiento cercano, lo cual es lógico, pero no funciona del todo en Reconocimiento de Imágenes, pero no entiende esto y se ofende mucho si empiezas a decirle algo de lo más básico. Y teniendo en cuenta que contar desde lo básico requiere mucho tiempo, que a menudo no está disponible, se vuelve aún más triste.

Este artículo está destinado a que una persona que nunca haya trabajado con métodos de reconocimiento de imágenes pueda, en 10 a 15 minutos, crear en su cabeza una determinada imagen básica del mundo que corresponda al tema y comprender en qué dirección excavar. Muchas de las técnicas descritas aquí son aplicables al procesamiento de radar y audio.
Empezaré con un par de principios que siempre comenzamos a decirle a un cliente potencial, o a una persona que quiere empezar a hacer Reconocimiento Óptico:

  • A la hora de resolver un problema, parta siempre de lo más simple. Es mucho más fácil ponerle una etiqueta a una persona. color naranja que seguir a una persona, destacándola en cascadas. Es mucho más fácil llevar una cámara con una resolución más alta que desarrollar un algoritmo de superresolución.
  • Una formulación estricta del problema en los métodos de reconocimiento óptico es mucho más importante que en los problemas. programación del sistema: uno palabra extra Se puede añadir el 50% del trabajo a las especificaciones técnicas.
  • No hay reconocimiento en las tareas. soluciones universales. No se puede crear un algoritmo que simplemente "reconozca cualquier inscripción". Un cartel en la calle y una hoja de texto son objetos fundamentalmente diferentes. Probablemente se pueda hacer algoritmo general(un buen ejemplo de Google), pero esto requerirá mucho trabajo de un equipo grande y constará de docenas de subrutinas diferentes.
  • OpenCV es una biblia que tiene muchos métodos y puede resolver el 50% de casi cualquier problema, pero OpenCV es sólo una pequeña parte de lo que realmente se puede hacer. En un estudio, las conclusiones fueron escritas: "El problema no se puede resolver utilizando métodos OpenCV, por lo tanto, no tiene solución". Intente evitar esto, no sea perezoso y evalúe con seriedad la tarea actual desde cero cada vez, sin utilizar plantillas OpenCV.
Es muy difícil dar un consejo universal o decir cómo crear algún tipo de estructura alrededor de la cual se pueda construir una solución a problemas arbitrarios. visión por computadora. El propósito de este artículo es estructurar lo que se puede utilizar. intentaré romperlo métodos existentes en tres grupos. El primer grupo es el filtrado preliminar y la preparación de imágenes. El segundo grupo es el procesamiento lógico de los resultados del filtrado. El tercer grupo son los algoritmos de toma de decisiones basados ​​​​en procesamiento lógico. Los límites entre grupos son muy arbitrarios. Para resolver un problema, no siempre es necesario utilizar métodos de todos los grupos; a veces son suficientes dos y, a veces, incluso uno.

La lista de métodos proporcionada aquí no está completa. Sugiero agregar métodos críticos en los comentarios que no escribí y atribuir 2-3 palabras adjuntas a cada uno.

Parte 1. Filtración

En este grupo coloqué métodos que te permiten seleccionar áreas de interés en imágenes sin analizarlas. Mayoría de estos métodos aplica algún tipo de transformación única a todos los puntos de la imagen. A nivel de filtrado no se realiza ningún análisis de la imagen, pero los puntos que se filtran pueden considerarse como áreas con características especiales.
Binarización por umbral, selección del área del histograma.
La transformación más simple es la binarización de la imagen por umbral. Para Imágenes RGB e imágenes en escala de grises, el umbral es el valor del color. Hay problemas ideales en los que tal transformación es suficiente. Supongamos que desea seleccionar objetos automáticamente en una hoja de papel blanca:




La elección del umbral en el que se produce la binarización determina en gran medida el proceso de binarización en sí. EN en este caso, la imagen fue binarizada por el color promedio. Normalmente, la binarización se realiza mediante un algoritmo que selecciona de forma adaptativa un umbral. Dicho algoritmo puede ser la elección de expectativa o modo. O puede seleccionar el pico más grande del histograma.

La binarización puede proporcionar muy resultados interesantes cuando trabajamos con histogramas, incluso en la situación en la que consideramos una imagen no en RGB, sino en HSV. Por ejemplo, segmente los colores de interés. Según este principio, se pueden construir tanto un detector de etiquetas como un detector de piel humana.
Filtrado clásico: Fourier, filtro de paso bajo, filtro de paso alto
Los métodos clásicos de filtrado de radar y procesamiento de señales se pueden aplicar con éxito a una variedad de tareas de reconocimiento de patrones. método tradicional en radar, que casi nunca se utiliza en imágenes en forma pura, es la transformada de Fourier (más específicamente, la FFT). Una de las pocas excepciones en las que se utiliza la transformada unidimensional de Fourier es la compresión de imágenes. Para el análisis de imágenes, una transformación unidimensional generalmente no es suficiente; es necesario utilizar una transformación bidimensional que requiere muchos más recursos.

Pocas personas realmente lo calculan; por lo general, es mucho más rápido y más fácil usar la convolución del área de interés con un filtro listo para usar, sintonizado para frecuencias altas (HPF) o bajas (LPF). Este método, por supuesto, no permite el análisis del espectro, pero en tarea específica El procesamiento de vídeo normalmente no requiere análisis, sino resultados.


lo mas ejemplos simples filtros que implementan el subrayado bajas frecuencias(filtro gaussiano) y altas frecuencias(Filtro Gabor).
Para cada punto de la imagen, se selecciona una ventana y se multiplica con un filtro del mismo tamaño. El resultado de tal convolución es un nuevo valor en puntos. Al implementar filtros de paso bajo y filtros de paso alto se obtienen imágenes del siguiente tipo:



Ondas
Pero ¿qué pasa si utilizamos alguna función característica arbitraria para la convolución con la señal? Entonces se llamará "transformación Wavelet". Esta definición de wavelets no es correcta, pero tradicionalmente, en muchos equipos, el análisis de wavelets es la búsqueda de un patrón arbitrario en una imagen mediante convolución con un modelo de este patrón. Existe un conjunto de funciones clásicas que se utilizan en el análisis de wavelets. Estos incluyen la onda de Haar, la onda de Morlet, la onda del sombrero mexicano, etc. Las primitivas de Haar, sobre las cuales hubo varios de mis artículos anteriores (,), se relacionan con funciones similares para el espacio bidimensional.


Arriba hay 4 ejemplos de wavelets clásicas. Onda de Haar tridimensional, Onda de Meyer bidimensional, Onda de Sombrero mexicano, Onda de Daubechies. un buen ejemplo Usando una interpretación ampliada de las ondículas está el problema de encontrar un resplandor en el ojo, para el cual la ondícula es el resplandor mismo:

Las wavelets clásicas se suelen utilizar para su clasificación (que se describirá a continuación).
Correlación
Después de una interpretación tan libre de las wavelets por mi parte, vale la pena mencionar la correlación real que subyace a ellas. Al filtrar imágenes esto herramienta indispensable. Una aplicación clásica es correlacionar una transmisión de video para encontrar cambios o flujos ópticos. El detector de desplazamiento más simple es también, en cierto sentido, un correlador de diferencias. Donde las imágenes no se correlacionaban, había movimiento.

Funciones de filtrado
Una clase interesante de filtros es el filtrado de funciones. Estos son filtros puramente matemáticos que le permiten detectar simples función matemática en la imagen (recta, parábola, círculo). Se construye una imagen acumulativa en la que para cada punto imagen original Se dibujan muchas funciones que lo generan. La transformación más clásica es la transformada de Hough para líneas. En esta transformación, para cada punto (x;y), se traza un conjunto de puntos (a;b) de la recta y=ax+b para los cuales la igualdad es verdadera. Obtienes hermosas imágenes:


(el primer plus es para el primero en encontrar un truco en la imagen y esta definición y explicarlo, el segundo plus es para el primero en decir lo que se muestra aquí)
La transformada de Hough le permite encontrar funciones parametrizables. Por ejemplo círculos. Hay una transformación modificada que le permite buscar cualquier archivo . A los matemáticos les gusta muchísimo esta transformación. Pero, lamentablemente, al procesar imágenes no siempre funciona. Velocidad de funcionamiento muy lenta, muy alta sensibilidad a la calidad de la binarización. Incluso en situaciones ideales, prefería conformarme con otros métodos.
Un análogo de la transformada de Hough para líneas rectas es la transformada de radón. Se calcula mediante FFT, lo que proporciona una ganancia de rendimiento en una situación en la que hay muchos puntos. Además, se puede aplicar a una imagen no binarizada.
Filtrado de contorno
Una clase separada de filtros es el filtrado de bordes y contornos. Los contornos son muy útiles cuando queremos pasar de trabajar con una imagen a trabajar con los objetos de esa imagen. Cuando un objeto es bastante complejo, pero claramente distinguible, a menudo la única forma de trabajar con él es seleccionar sus contornos. Hay una serie de algoritmos. resolviendo el problema circuitos de filtrado:

La mayoría de las veces se utiliza Canny, que funciona bien y cuya implementación está en OpenCV (Sobel también está allí, pero luciendo peor contornos).



Otros filtros
Arriba están los filtros cuyas modificaciones ayudan a resolver el 80-90% de los problemas. Pero además de ellos, hay filtros más raros que se utilizan en tareas locales. Hay docenas de filtros de este tipo, no los enumeraré todos. Son interesantes los filtros iterativos (por ejemplo), así como las transformaciones ridgelet y curvlet, que son una fusión del filtrado y análisis de wavelets clásicos en el campo de la transformada del radón. La transformada beamlet funciona maravillosamente en el límite de la transformada wavelet y análisis lógico, permitiéndole seleccionar contornos:

Pero estas transformaciones son muy específicas y están diseñadas para tareas poco comunes.

Parte 2. Procesamiento lógico de los resultados del filtrado.

El filtrado proporciona un conjunto de datos adecuados para su procesamiento. Pero a menudo no es posible simplemente tomar y utilizar estos datos sin procesarlos. En esta sección habrá varios métodos clásicos que te permitirán pasar de una imagen a las propiedades de los objetos, o a los objetos mismos.
Morfología
La transición del filtrado a la lógica, en mi opinión, son los métodos de la morfología matemática (,). En esencia, estas son las operaciones más simples de hacer crecer y erosionar imágenes binarias. Estos métodos le permiten eliminar el ruido de una imagen binaria aumentando o disminuyendo los elementos existentes. Existen algoritmos de contorneado basados ​​en la morfología matemática, pero normalmente se utilizan algún tipo de algoritmos híbridos o algoritmos combinados.
Análisis de contorno
Los algoritmos para obtener límites ya se mencionaron en la sección de filtrado. Los límites resultantes se convierten simplemente en contornos. Para el algoritmo Canny esto sucede automáticamente; para otros algoritmos se requiere binarización adicional. Puede obtener un contorno para un algoritmo binario, por ejemplo, utilizando el algoritmo del escarabajo.
Un contorno es una característica única de un objeto. Esto a menudo le permite identificar un objeto por su contorno. Existe un poderoso aparato matemático que le permite hacer esto. El dispositivo se llama análisis de contorno (,).

Para ser honesto, nunca he podido aplicar el análisis de contorno en problemas reales. Se requieren condiciones demasiado ideales. O no hay límites o hay demasiado ruido. Pero, si necesitas reconocer algo en condiciones ideales- entonces el análisis de contornos es una opción maravillosa. Funciona muy rápido, hermosas matemáticas y lógica clara.
Puntos especiales
Los puntos singulares son características únicas de un objeto que permiten compararlo consigo mismo o con clases similares de objetos. Hay varias docenas de formas de identificar estos puntos. Algunos métodos identifican puntos especiales en cuadros adyacentes, algunos después de un largo período de tiempo y cuando cambia la iluminación, otros le permiten encontrar puntos especiales que permanecen así incluso cuando se gira el objeto. Comencemos con métodos que le permiten encontrar puntos especiales, que no son tan estables, pero que se calculan rápidamente, y luego iremos en complejidad creciente:
Clase primera. Puntos especiales que se mantienen estables durante un período de segundos. Estos puntos se utilizan para guiar un objeto entre fotogramas de vídeo adyacentes o para combinar imágenes de cámaras vecinas. Dichos puntos incluyen máximos locales de la imagen, esquinas de la imagen (el mejor detector es, quizás, el detector Charis), puntos en los que se logra la máxima dispersión, ciertos gradientes, etc.
Segunda clase. Puntos especiales que se mantienen estables ante cambios de iluminación y pequeños movimientos del objeto. Estos puntos sirven principalmente para el entrenamiento y posterior clasificación de tipos de objetos. Por ejemplo, un clasificador de peatones o un clasificador de rostros es el producto de un sistema construido precisamente sobre dichos puntos. Algunas de las ondas mencionadas anteriormente pueden ser la base de tales puntos. Por ejemplo, primitivas de Haar, búsqueda de aspectos destacados, búsqueda de otras funciones específicas. Estos puntos incluyen los encontrados mediante el método del histograma de gradientes direccionales (HOG).
Tercer grado. Puntos estables. Sólo conozco dos métodos que proporcionan una estabilidad total y sus modificaciones. Esto y. Te permiten encontrar puntos especiales incluso cuando giras la imagen. El cálculo de dichos puntos lleva más tiempo en comparación con otros métodos, pero es suficiente. tiempo limitado. Desafortunadamente, estos métodos están patentados. Aunque en Rusia es imposible patentar algoritmos, se utiliza para el mercado interno.

Parte 3. Entrenamiento

La tercera parte de la historia estará dedicada a métodos que no trabajan directamente con la imagen, pero que permiten tomar decisiones. Básicamente estos son diferentes métodos. aprendizaje automático y toma de decisiones. Recientemente Yandyx publicó en Habr sobre este tema, es muy buena seleccion. Aquí está en la versión de texto. Para un estudio serio del tema, recomiendo verlos. Aquí intentaré describir varios métodos principales utilizados específicamente en el reconocimiento de patrones.
En el 80% de las situaciones, la esencia del aprendizaje en la tarea de reconocimiento es la siguiente:
Hay una muestra de prueba que contiene varias clases de objetos. Que sea la presencia/ausencia de una persona en la foto. Para cada imagen hay un conjunto de características que han sido resaltadas por alguna característica, ya sea Haar, HOG, SURF o alguna wavelet. El algoritmo de aprendizaje debe construir un modelo según el cual podrá analizar una nueva imagen y decidir qué objeto está en la imagen.
¿Cómo se hace esto? Cada una de las imágenes de prueba es un punto en el espacio de características. Sus coordenadas son el peso de cada una de las características de la imagen. Sean nuestras señales: “Presencia de ojos”, “Presencia de una nariz”, “Presencia de dos manos”, “Presencia de oídos”, etc... Destacaremos todas estas señales utilizando nuestros detectores existentes, que están entrenados en partes del cuerpo similares a las humanas Para una persona en un espacio así, el punto correcto sería. Para el mono, pon un punto para el caballo. El clasificador se entrena utilizando una muestra de ejemplos. Pero no en todas las fotografías mostraban manos, otras no tenían ojos y en la tercera, el mono tenía nariz humana por un error del clasificador. Un clasificador humano capacitado divide automáticamente el espacio de características de tal manera que diga: si la primera característica se encuentra en el rango 0,5 Esencialmente, el objetivo del clasificador es dibujar áreas en el espacio de características que sean características de los objetos de clasificación. Así es como se verá una aproximación secuencial a la respuesta para uno de los clasificadores (AdaBoost) en un espacio bidimensional:


Hay muchos clasificadores. Cada uno de ellos funciona mejor en alguna tarea en particular. La tarea de seleccionar un clasificador para una tarea específica es en gran medida un arte. Aquí hay algunas bellas imágenes sobre el tema.
Caso simple, separación unidimensional.
Veamos un ejemplo del caso más simple de clasificación, cuando el espacio de características es unidimensional y necesitamos separar 2 clases. Esta situación ocurre con más frecuencia de lo que piensas: por ejemplo, cuando necesitas distinguir dos señales o comparar un patrón con una muestra. Tengamos una muestra de entrenamiento. Esto produce una imagen donde el eje X es la medida de similitud y el eje Y es el número de eventos con dicha medida. Cuando el objeto deseado es similar a sí mismo, se obtiene una gaussiana izquierda. Cuando no lo parece, es el indicado. El valor de X=0,4 separa las muestras de modo que una decisión equivocada minimiza la probabilidad de tomar una decisión equivocada. La búsqueda de tal separador es tarea de clasificación.


Una pequeña nota. El criterio que minimice el error no siempre será el óptimo. El siguiente gráfico es un gráfico de un sistema de reconocimiento de iris real. Para tal sistema, el criterio se elige para minimizar la probabilidad de admisión falsa de una persona no autorizada a la instalación. Esta probabilidad se denomina “error tipo I”, “probabilidad de falsa alarma”, “falso positivo”. En la literatura en lengua inglesa “False Access Rate”.
) AdaBusta es uno de los clasificadores más comunes. Sobre él se construye, por ejemplo, la cascada Haar. Suele utilizarse cuando se necesita clasificación binaria, pero nada impide entrenar para un mayor número de clases.
SVM ( , , , ) Uno de los clasificadores más potentes, que tiene muchas implementaciones. Básicamente, en las tareas de aprendizaje que encontré, funcionó de manera similar a Adabusta. Se considera bastante rápido, pero su entrenamiento es más difícil que el de Adabusta y requiere elegir el core adecuado.

También hay redes neuronales y regresión. Pero para clasificarlos brevemente y mostrar en qué se diferencian, necesitamos un artículo mucho más extenso que este.
________________________________________________
Espero haber podido ofrecer una descripción general rápida de los métodos utilizados sin sumergirme en las matemáticas y la descripción. Quizás esto ayude a alguien. Aunque, por supuesto, el artículo está incompleto y no dice una palabra sobre cómo trabajar con imágenes estéreo, ni sobre LSM con filtro de Kalman, ni sobre el enfoque adaptativo de Bayes.
Si te gusta el artículo, intentaré hacer una segunda parte con una selección de ejemplos de cómo se resuelven los problemas existentes de ImageRecognition.

Y finalmente

¿Qué leer?
1) Una vez me gustó mucho el libro "Procesamiento de imágenes digitales" de B. Yane, que está escrito de forma sencilla y clara, pero al mismo tiempo se dan casi todas las matemáticas. Bueno para familiarizarse con los métodos existentes.
2) Un clásico del género es R. González, R. Woods “Digital Image Processing”. Por alguna razón fue más difícil para mí que el primero. Mucho menos matemáticas, pero más métodos e imágenes.
3) “Procesamiento y análisis de imágenes en problemas de visión por computadora”, escrito sobre la base de un curso impartido en uno de los departamentos de Física y Tecnología. Hay muchos métodos y sus descripciones detalladas. Pero en mi opinión, el libro tiene dos grandes desventajas: se centra fuertemente en el paquete de software que lo acompaña, con demasiada frecuencia la descripción de un método simple se convierte en una jungla matemática de la que es difícil salir; derivar el diagrama estructural del método. Pero los autores han creado un sitio web conveniente donde se presenta casi todo el contenido: wiki.technicalvision.ru Agregar etiquetas

( , parte 6.1)

El reconocimiento de imágenes es un área que se superpone con el reconocimiento de patrones, pero que se encuentra algo alejada de él. Una de las principales diferencias es que las imágenes de la misma imagen pueden variar en sus características geométricas y de brillo, pero esto no es particularmente interesante para nosotros y se corrige mediante métodos de preprocesamiento de imágenes bien estudiados. La segunda de las principales diferencias es que las imágenes de la misma imagen están sujetas a deformaciones no triviales, por ejemplo, diferentes ángulos de un objeto tridimensional, dirección de la iluminación, cambios de pose/expresiones faciales/gestos, etc., que no No encaja en el esquema de dividir el espacio de las imágenes. Y aquí es donde comienza la diversión.

En algunos lugares entraré en detalles sobre el reconocimiento de imágenes, ya que el tema es cercano a mí, y publicaré algunas ideas y mi opinión sobre lo que debería ser un sistema de reconocimiento de imágenes ideal.

Una vez describí mucho de esto en detalle. No sin imprecisiones, pero en general cuerdo. También indica de dónde fueron tomadas las fotografías y los datos exactos de los artículos científicos.

Cómo se representa una imagen en un sistema de reconocimiento de patrones. Lo más simple es que cada píxel es un eje en el espacio de la imagen, el brillo de un píxel es su posición en este espacio. Esto sugiere inmediatamente la conclusión de que el motor de reconocimiento no tiene en cuenta la naturaleza bidimensional de las imágenes, pero hablaremos de esto más adelante. Hay otras representaciones que también se basan en el brillo de los píxeles y pueden ser un poco mejores (¡sólo un poco!) a la hora de reflejar las relaciones bidimensionales de los píxeles.

¿Qué se desprende de tal representación? Cambiar la posición del objeto reconocido, su rotación en un plano bidimensional o cambiar la escala es un desastre para el motor de reconocimiento. Porque un píxel correspondiente, por ejemplo, a la punta de la nariz irá hasta el borde de la oreja o, desde el punto de vista del reconocimiento, el valor de entrada, que debería caer sobre su eje en el espacio de la imagen, caerá sobre un eje completamente diferente (¡no está claro cuál!) (en otras palabras, llamado cambio en la topología del espacio). Y tal reordenamiento de ejes rompe completamente las superficies divisorias en el espacio de las imágenes. Por supuesto, puede decir que el motor de reconocimiento aprende todas las posiciones y escalas del objeto en la imagen. Pero, lamentablemente, el número de disposiciones diferentes es tan grande que no es realista hacerlo.

La siguiente consecuencia es que un cambio en el brillo de la imagen arroja toda la imagen a un punto completamente diferente en el espacio de la imagen. Aunque aquí los ejes permanecen en su lugar, el cambio de brillo sigue siendo un gran problema para el reconocimiento.

Como resultado, el motor de reconocimiento reaccionará no tanto al contenido de la imagen, sino a su brillo y tamaño/posición.

Pero todo esto no da tanto miedo; las herramientas de procesamiento de imágenes han podido corregir la geometría y el brillo durante mucho tiempo. (Otro problema, comparable en complejidad y métodos utilizados al reconocimiento de imágenes, es determinar la ubicación y el tamaño de un objeto en una imagen, lo que se llama detección). También existen transformaciones de imágenes (llamadas momentos), cuyos coeficientes son los mismos para cualquier posición y tamaño del objeto. Por lo tanto, una de las primeras etapas del reconocimiento de imágenes (que no está presente en el reconocimiento de patrones) es la normalización de la imagen, que se resuelve mediante herramientas de procesamiento de imágenes bastante simples. Cómo se resuelve esto en el cerebro humano también es una cuestión interesante; veamos más a fondo.

Pero lo más complicado para el reconocimiento es la deformación de la proyección bidimensional asociada a la esencia tridimensional del objeto (cambios de ángulo y dirección de la iluminación) y cambios en el propio objeto (postura, gestos, expresiones faciales, etc.). ). Debido a que estas deformaciones no se pueden corregir mediante métodos de procesamiento de imágenes y, en general, primero debemos determinar qué tipo de deformación ocurrió. Por tanto, el rasgo favorito de los motores de reconocimiento es cuando reaccionan más al ángulo, reconociendo diferentes objetos en un mismo ángulo como iguales. Con la iluminación, una broma similar, por ejemplo, en el mismo lugar, la transición del blanco al negro, al cambiar la dirección de la iluminación al contrario, se convertirá en lo contrario, una transición del negro al blanco, y no se puede normalizar el brillo. corregido.

Para ser justos, vale la pena señalar que hay formas en las que se crea un conjunto de entrenamiento grande con imágenes tomadas especialmente desde diferentes ángulos y direcciones de iluminación, y luego la imagen de entrada, si cae dentro de los límites de estas condiciones, se reconoce bien. Además, tras una formación tan exhaustiva, se pueden introducir en el sistema nuevos objetos que ya no se fotografiaban con una variación tan amplia de ángulos e iluminación. Pero este método es un caso especial y también bastante engorroso. Y para nosotros, en general, no nos interesa, ya que se relaciona más con las matemáticas y la estadística.

Otro método consiste en restaurar una imagen tridimensional a partir de una proyección bidimensional. Entonces el ángulo y la iluminación no influyen y los cambios de postura se procesan más fácilmente. Es cierto que el método no es fácil de implementar y no todo es sencillo. Al restaurar una imagen tridimensional, generalmente se requiere un modelo más general del objeto (sin él, la restauración, aunque posible, será "poco convincente" y menos adecuada para el reconocimiento), y también correlacionar la proyección con el modelo tridimensional. Lleva elementos de reconocimiento de imágenes. Pero esto tampoco nos interesa, ya que aquí hay matemáticas más exactas.

Un motor de reconocimiento "puro" debería hacer frente a las deformaciones de la imagen enumeradas por sí solo, sin modelos precisos ni conjuntos de entrenamiento especialmente preparados. El reconocedor no debe operar sobre la imagen como una matriz unidimensional, pero debe comprender que la imagen consta de fragmentos bidimensionales, el contenido del fragmento puede cambiar, aunque su significado sigue siendo el mismo (el ejemplo anterior sobre el cambio de dirección de iluminación o una expresión facial diferente), el fragmento en sí puede cambiar en relación con el centro de la imagen y en relación con otras piezas (un ángulo diferente o un cambio en la expresión facial), la combinación de piezas puede cambiar (por ejemplo, las gafas tienen apareció, el peinado/barba en la cara ha cambiado, aunque el dueño mismo es el mismo).

Los reconocedores que muestran buenos resultados pueden hacer muchas de las cosas anteriores, cada uno a su manera. ¡Pero! Si se ha desarrollado un motor de reconocimiento específico claro para un área determinada, será difícil que un motor de reconocimiento más general pueda competir con él, aunque el motor de reconocimiento general es aplicable a condiciones más amplias. Por ejemplo, el reconocimiento facial tiene métodos bien desarrollados para la detección, normalización y extracción de características clave de la posición facial para fotografías tomadas en condiciones bien controladas. Y para estas características clave, no los reconocedores más complejos funcionan muy bien, y eso es más que suficiente. Si una imagen facial correctamente preprocesada se envía a la entrada de una red neuronal (perceptrón multicapa), esto también se considera un motor de reconocimiento privado, porque para una imagen no procesada, dicha red tendrá resultados desastrosos.

¿Cómo afrontan exactamente los reconocedores las deformaciones de la imagen anterior?

Destacando los puntos clave y su contenido. Por ejemplo, para una cara, se determina la posición de la punta de la nariz, los labios, las comisuras del ojo, el contenido de los fragmentos de imagen alrededor de estos puntos y se calculan las distancias mutuas entre estos puntos. Para caracteres escritos a mano, esto puede incluir los puntos de curvatura del trazado, el ángulo de las curvaturas y la distancia entre las esquinas. En parte, se utilizan métodos de reconocimiento de patrones para encontrar estos puntos, en parte son reglas lógicas programadas manualmente por un experto humano. Luego, estos datos se envían a un motor de reconocimiento normal. Dado que ya se han extraído las relaciones bidimensionales entre puntos y se ha encontrado el contenido de las vecindades de los puntos, el reconocedor ya puede hacer frente a deformaciones bidimensionales dividiendo el espacio de la imagen. Aquí ya se ha realizado una búsqueda y comparación de ejes, la topología de la imagen se ajusta a la topología del espacio de imagen del motor de reconocimiento, y las distancias entre puntos clave permiten medir las distorsiones de esta topología, minimizando diferencias de ángulos y prestar atención a a qué persona pertenece la cara. Además, la búsqueda de puntos clave fue:

  • una instantánea iterativa, en lugar de una instantánea de entrada-salida, sin construir largas cadenas lógicas, la búsqueda fue "primero en amplitud" con una enumeración de opciones locales,
  • No se examinaron todas las opciones posibles, sino sólo las más realistas.
  • la búsqueda se detiene cuando se alcanza el criterio óptimo; no se garantiza la optimización.


Puntos de identificación y distancias: a) utilizados en el examen fotográfico forense; b) utilizado con mayor frecuencia en la construcción de sistemas de identificación automatizados.

La desventaja de este enfoque es que solo se analiza una pequeña cantidad de puntos y el resto de la imagen se descarta, lo que puede resultar en una mala calidad del reconocimiento. Por ejemplo, si un punto se encuentra incorrectamente, esto ya es fatal, pero si también analiza las áreas circundantes, entonces el error se puede minimizar. Pero para ciertas áreas bien desarrolladas (como el reconocimiento facial), este enfoque es suficiente.

El siguiente método es la deformación de la imagen. Es como si sobre la imagen reconocida se extendiera una red, en cuyos nodos se forman los píxeles originales. Luego se distorsiona la red (los nodos cambian de posición) y se calcula la imagen distorsionada. La diferencia se calcula entre cada imagen del conjunto de entrenamiento y la imagen distorsionada. La imagen original que, tras un cierto número de iteraciones de distorsión, produce la menor diferencia con la imagen distorsionada se considera más similar a ésta (distorsión mínima con correspondencia máxima). Para buscar la dirección de la distorsión, puede haber un criterio de minimización basado en las imágenes originales y distorsionadas (como en los flujos ópticos) o una búsqueda aleatoria, como el recocido. Las deformaciones pueden ser elásticas o inelásticas. Elástico significa que cuando se distorsionan, los nodos de la red no pueden saltar entre sí, por ejemplo, la oreja no cabe en el medio de la nariz. En consecuencia, los inelásticos permiten cualquier permutación de nodos. ¿Cuál de ellos es mejor? No recuerdo las comparaciones exactas, pero las deformaciones intuitivamente elásticas son más agradables. Las distorsiones pueden seguir el método de recocido descrito en la parte anterior, como resultado del cual la distorsión se "congelará" en una de las imágenes de entrenamiento más similares.


Deformación elástica: combinación de píxeles en la imagen original y nueva





Flujo óptico (deformación inelástica). Mapear una imagen desconocida sobre una conocida, la misma persona. De izquierda a derecha: imagen desconocida, imagen de base de datos, imagen desconocida con bloques reemplazados por bloques de una imagen conocida.


Flujo óptico (deformación inelástica). Mapear una imagen desconocida a una imagen de la base de datos. Imágenes de diferentes personas. La calidad de la visualización es peor.


Flujo óptico (deformación inelástica). Distorsiones de la red de imágenes al convertir una imagen en otra. A la izquierda hay imágenes de una persona, a la derecha hay imágenes de diferentes personas.

La desventaja de este enfoque es que deforma estúpidamente la imagen, tratando de minimizar la diferencia píxel a píxel, sin tener en cuenta por completo el significado de la imagen. Por ejemplo, la sonrisa de una persona puede suavizar la expresión de otra porque la diferencia píxel a píxel es menor. O en otras palabras, se permiten cualquier trayectoria de distorsión de la imagen (incluso las elásticas), aunque para imágenes reales estas trayectorias son estrictamente fijas y están asociadas con cambios de perspectiva, expresiones faciales, etc. Además, no está claro qué pasará si la zona no experimenta distorsión, pero, por ejemplo, aparecen gafas que no estaban en la imagen original. La deformación probablemente se volverá loca al intentar transformar las gafas en ojos :)

Otro punto importante es que tal deformación busca sólo la similitud, sin descifrar los rasgos distintivos, la diferencia que distingue un objeto de otro (como hace la red neuronal en las partes anteriores). Como resultado, es posible hacer bromas cuando un motor de reconocimiento de este tipo detecta un peinado elegante e idéntico, ignorando pequeños cambios en la forma de los ojos (por cierto, los buenos sistemas de reconocimiento descartan los peinados y otros factores de "ruido" en la etapa de imagen). preprocesamiento).

Hay una variación cuando no se extiende una celosía sobre la imagen, sino un marco más significativo, por ejemplo, para la cara, que incluye puntos como la punta de la nariz, las puntas de los labios, los ojos, las orejas y las cejas. Estos motores de reconocimiento actúan de forma más inteligente porque ya cuentan con los datos necesarios. Ni siquiera es necesario buscar estos puntos; basta con establecer un marco aproximado, y el resto se encontrará durante la deformación. Otra cosa es que en el conjunto de entrenamiento estos puntos deben estar claramente ubicados (y esta es una tarea separada y difícil, o se realiza parcialmente de forma manual), y luego se puede comparar el modelo de referencia con uno desconocido distorsionado no solo por el contenido de los puntos, sino también por la naturaleza de las distorsiones de la red. Esto se llama gráficos dinámicos (o elásticos, no lo recuerdo exactamente).


El siguiente método se llama Modelos Ocultos de Markov (HMM). Su esencia se describe a continuación de forma algo confusa (pero brevemente), pero un ejemplo con reconocimiento de imágenes lo aclara todo. En términos generales, el HMM es una matriz de probabilidades de transición entre estados de un sistema físico o señal. Cuando entra en un determinado estado, el sistema genera uno de los "valores" del conjunto de "valores" de este estado. Cada “valor” de este estado tiene su propia probabilidad de ser emitido. Además, algunos “significados” pueden ser característicos de otros estados. Normalmente no sabemos por qué estados pasa el proceso de una señal o de un sistema físico, sino que sólo vemos los "valores" emitidos, por eso los modelos se denominan ocultos.



Diagrama del modelo de Markov, ejemplo de una secuencia de observaciones O y una secuencia de estados S

Para el reconocimiento, los HMM se utilizan de la siguiente manera. Cada imagen es considerada como una secuencia de tales “significados”. Para cada clase se calcula su propio HMM. Luego, para una imagen desconocida, se lanzan todos los modelos disponibles y entre ellos se busca el que produce la secuencia de “valores” más similar. Esto se llama problema de reconocimiento y existe una fórmula exacta para resolverlo. Para la tarea de configurar modelos basados ​​en imágenes disponibles, no existen fórmulas exactas, pero, como en el entrenamiento de redes neuronales, existen métodos heurísticos (subóptimos, una especie de descenso de gradiente).

Los HMM bidimensionales han funcionado bien en el reconocimiento de imágenes. En ellos, se entiende por “valor” el contenido de un cuadrado de una imagen con un lado de varios píxeles. El estado es la posición de este cuadrado en la imagen. La imagen está densamente cubierta por una red de dichos estados (y los límites de los cuadrados vecinos pueden superponerse parcialmente, lo que proporciona un mejor resultado de reconocimiento). La matriz de transición está construida de tal manera que las transiciones solo son posibles entre estados adyacentes en una red de imagen bidimensional. Es decir, se buscará un cuadrado con la punta de la nariz entre las mejillas y la boca, pero no detrás de la oreja, y si en una imagen desconocida la nariz se encuentra a la izquierda, entonces los cuadrados vecinos: mejillas, nariz, mentón, etc. - se buscará a la izquierda.








Existe una variación del entrenamiento SMM, cuando cada SMM se "entrenó" inicialmente en todas las imágenes de entrenamiento, y solo luego se perfeccionó con las "propias", el resultado de reconocimiento fue mayor. Es decir, el SMM aprendió cómo se ve y cambia un objeto típico “en general”, y luego se sintonizó con la apariencia y los cambios de un objeto específico. Y esto no se debe al conocimiento de un modelo físico exacto y específico, sino al procedimiento general de entrenamiento y a ejemplos específicos del mundo real.

Resulta que dentro del HMM (esto también se aplica a las redes convolucionales, ver más abajo) se construye un modelo plausible del objeto. Este no es el modelo que se obtiene, por ejemplo, mediante la reconstrucción tridimensional de una imagen, ni el modelo cuando se determinan manualmente un conjunto de características clave y las relaciones entre ellas. HMM, por el contrario, no recrea un modelo físico exacto, sino un modelo plausible. Un modelo que produce un comportamiento similar de un objeto, pero debido a procesos que no tienen nada que ver con la física real del objeto. Cuando se configura correctamente, el modelo físico y plausible coincidirá con los resultados de salida en las condiciones en las que entrenamos el modelo plausible. Pero más allá de estas condiciones, comienzan las divergencias, a veces con efectos interesantes. Por ejemplo, una persona puede reconocer fácilmente a otra por una caricatura, aunque matemáticamente la imagen de una caricatura no es en modo alguno comparable a una imagen digitalizada del rostro de una persona. Otros ejemplos cotidianos son fáciles de encontrar. Una persona en sus acciones no se guía por las leyes exactas de la física, sino por la física "ingenua", que opera en las condiciones cotidianas, pero que es completamente inaplicable cuando vamos más allá de los límites de estas condiciones. Se pueden encontrar cosas similares tanto en el pensamiento lógico como en el figurado; de aquí provienen las fantasías y la creatividad, al observarlas una persona puede compararlas o sentir procesos físicos reales que, desde un punto de vista científico, no pueden describirse mediante tales fantasías. . Y, dicho sea de paso, para tales reconocedores no es difícil revertirlos de modo que para un objeto determinado produzcan variaciones de sus cambios. Naturalmente, además de imágenes reales, también recibiremos un montón de “fantasías” del motor de reconocimiento, que nos parecen extrañas. Esta es también la base para determinar las áreas clave de la imagen, aquellas áreas que contribuyen más al reconocimiento. Pero volveremos a las fantasías y a los modelos plausibles; ahora continuaremos con el reconocimiento de imágenes.

Así, HMM es un reconocimiento de imágenes casi perfecto:

  • puede hacer frente a las deformaciones de la imagen buscando la pieza deseada en un determinado vecindario,
  • la deformación de la imagen es elástica, teniendo en cuenta las características específicas de los objetos que se reconocen (la nariz no pasa detrás de la oreja),
  • puede hacer frente a cambios en combinaciones de piezas (como un cambio de peinado o apariencia de gafas), debido a que a cada estado le corresponden varios valores de sus piezas,
  • la imagen se cubre herméticamente con una cuadrícula de búsqueda y se analiza en su conjunto.

Pero SMM tiene un inconveniente. Los HMM no saben diferenciar entre clases reconocibles y no saben cómo encontrar características distintivas. Las redes neuronales, por ejemplo, dicen “sí” a la clase reconocida y “no” a todas las demás, mientras que el HMM dice “sí” a todas las clases, y de estas “sí” se selecciona la máxima, que se considera la reconocida. clase. Y, hasta donde tengo entendido, HMM no mide el cambio en las distancias entre las piezas, lo que podría mejorar el resultado, sino que solo busca la mejor manera de disponer las piezas en la imagen, teniendo en cuenta su proximidad. Aunque sería interesante poner la red distorsionada encontrada de esta forma (en forma de distancias entre nodos, donde un nodo es la posición de una pieza) en un motor de reconocimiento.



La salida de la red neuronal durante el reconocimiento: la diferencia entre la clase reconocida (s11) y todas las demás es claramente visible. Los modelos de Markov no pueden hacer eso.

El siguiente método de reconocimiento de imágenes son los cognitrones, neocognitrones y redes neuronales convolucionales (CNN). Inicialmente, los cognitrones se inventaron, por así decirlo, basándose en la estructura de las neuronas en la corteza visual, luego se mejoraron y en las redes convolucionales se aisló un grano racional de toda esta estructura.

Para comprender cómo funcionan estas redes, es necesario comprender el concepto más importante: los mapas de características. Imagine que se escanea una imagen a través de una pequeña ventana cuadrada. Las posiciones de las ventanas en la imagen pueden superponerse parcialmente. En el cuadrado de la ventana, a cada píxel escaneado se le asigna su propio peso y la ventana genera el valor ponderado sumado de todos los píxeles. Un solo significado. Pero como hay muchas posiciones de ventana, se obtiene una red bidimensional de tales valores. Esta ventana detecta la presencia de alguna combinación de píxeles (característica) en la imagen. Como resultado, la cuadrícula de salida producirá valores altos donde existe la combinación deseada de píxeles y valores bajos donde el contenido no se parece en absoluto a lo que estamos buscando. Esta red se llama mapa de características. Además, no buscamos una característica, sino muchas diferentes, cada una de ellas tiene su propia ventana con su propio conjunto de pesos y, como resultado, obtenemos varios mapas de características paralelos como salida. Cada mapa de características (como una imagen) se envía a la entrada de su siguiente capa de reconocimiento y también recibe varios mapas paralelos más como salida. En la capa final, todas las tarjetas se envían a la entrada del reconocedor final, que puede ser bastante simple; el original usaba un perceptrón multicapa.



Está claro que dicho procesamiento de imágenes puede tener en cuenta pequeñas deformaciones y cambios. Existe una opción cuando los mapas de características se paralelizan aún más agregando mapas en los que las piezas se escanean y se rotan en diferentes ángulos. Gracias a esto, el reconocedor puede hacer frente a los giros. Siguiendo con el pensamiento en esta dirección, se pueden hacer muchas cosas interesantes, por ejemplo, ventanas de diferentes tamaños e invariancia en la escala de la imagen. Puedes hacer conexiones adicionales que irían no solo a cartas anteriores en la jerarquía, sino también a otras más distantes (esto ya huele a análisis intelectual de la escena). Otra opción interesante es cuando el mapa de características de la siguiente capa escanea no solo un mapa anterior, sino todos a la vez (como era el caso en el neocognitrón original). El procesamiento se vuelve inmediatamente más pesado (ventana tridimensional), pero también más potente. Desafortunadamente, no sé si esta opción se ha estudiado en una red convolucional. O en su lugar, al menos alimentar al reconocedor final con las salidas no solo de la última tarjeta, sino de todas las de la jerarquía.



Arquitectura de red neuronal convolucional. Capas convolucionales y de submuestreo.

Gracias a tales mapas de características, las redes convolucionales logran un procesamiento de imágenes más potente y cualitativamente diferente (piense por qué, imagine el proceso de formación de características al ascender en la jerarquía). Como podemos ver, aquí tampoco hay largas cadenas lógicas de inferencia y enumeración de opciones, la búsqueda es corta y "amplia" (simultáneamente paralela en todos los mapas de características).

En matemáticas, lo que hace una ventana con el conjunto original de píxeles se llama convolución (un tipo de transformación de frecuencia espacial) y los pesos de la ventana actúan como un filtro. Por eso las redes se llaman redes convolucionales. Las capas que hacen esto también se denominan convolucionales.

Por lo general, además de los mapas de características, también se introducen capas de promedio que, antes de pasar el mapa a la siguiente capa, reducen su tamaño promediando los píxeles vecinos (como la escala de la imagen); de lo contrario, se obtiene una gran cantidad de cálculos y, además, , se logra una generalización adicional de diversas distorsiones de las imágenes originales.

Cómo se entrenan dichas redes. La primera opción es construir un mapa topográfico de las piezas encontradas en la imagen original, y luego tomar los valores de este mapa y construir mapas de características basados ​​en ellos. Los mapas topográficos se crean de la misma manera para las siguientes capas de la jerarquía, pero los mapas de características ya se proporcionan como entrada. Un mapa topográfico significa que elaboramos, por así decirlo, un diccionario a partir de las piezas promediadas que se encuentran en la imagen. Además, las piezas, en primer lugar, se ordenarán en una red de n dimensiones, donde los vecinos serán similares y, en segundo lugar, lo que es más interesante para nosotros, las piezas del diccionario son muy adecuadas para construir mapas de características, ya que son características. y fragmentos de imágenes que aparecen con frecuencia, porque las piezas abstractas o que aparecen con poca frecuencia no entrarán en este mapa, y las piezas similares se agruparán en un promedio. En esta opción, la capacitación se realiza sin profesor, ya que para construir un mapa topográfico no es necesario que exista un error entre la salida deseada y real de la red, las características se agrupan automáticamente por su similitud; Solo el reconocedor final se entrena con un maestro, que recibe resultados de los mapas de características de la última capa.


Aplicación de mapas de Kohonen (bidimensionales) para reducir la dimensionalidad de las áreas de la imagen del rostro. A la izquierda hay un mapa topográfico de las áreas de la imagen antes del entrenamiento, a la derecha, después del entrenamiento.

La segunda opción es que los pesos de los mapas de características se configuren como los pesos de las neuronas en retropropagación. Es decir, de la salida de la red surge una configuración que indica qué características deben extraerse de la imagen para obtener el resultado. El trabajo original sobre redes convolucionales afirma que esta configuración es simple, pero no confiaría en la palabra de los autores, porque hay muchas opciones y no todas darán algo bueno. En la versión original, la red convolucional se entrena y funciona muy rápidamente y proporciona una precisión cercana al HMM (pero aún menor). Los SMM, con su asombrosa precisión, tardan mucho en entrenarse.

No sé qué opción es mejor. En teoría, dado que el reconocedor final se entrena con un profesor, los resultados deberían ser similares.

A partir de la descripción de la arquitectura de las redes convolucionales, veamos qué pueden hacer:

  • hacer frente a las deformaciones de la imagen debido al hecho de que la característica se escanea en toda la imagen,
  • son capaces de combinar piezas (gafas/peinado/...), debido a un conjunto de mapas de características paralelos,
  • Las deformaciones son elásticas (la nariz no pasa detrás de la oreja), por búsqueda y promediación en la zona circundante.

Lo que no pueden hacer. Primero, se compilan conjuntos de características para toda la imagen. De hecho, sería útil si, como en el HMM, cada vecindad (más precisamente, para la trayectoria de búsqueda) tuviera su propio conjunto de características. Es decir, en la zona de los ojos habría filtros exclusivamente con diferentes fragmentos de los ojos, pero no de la boca, aunque nunca se encontraría allí. Esto permitiría crear un diccionario más preciso para cada área, en lugar de promediar toda la imagen. Pero al mismo tiempo, esto haría que el motor de reconocimiento fuera más lento. En segundo lugar (y estrechamente relacionado con el primero), para que las trayectorias permitidas de cada fragmento estén claramente identificadas y, durante el proceso de reconocimiento, se midan los cambios en las distancias entre los fragmentos vecinos (más precisamente, ya que todos los vecinos en la red están conectados , de modo que se construyen y luego se comprueban las deformaciones admisibles de toda la red ). Por supuesto, las redes convolucionales ya hacen esto de alguna forma, pero intuitivamente parece que esto se puede hacer de manera más óptima. Una opción más sencilla y rápida es crear mapas de características locales (teniendo en cuenta el área temática). Por ejemplo, las zonas de los ojos, boca, nariz, oídos.

Eso es todo con los métodos básicos de reconocimiento de imágenes (usando el reconocimiento facial como ejemplo). Para otro tipo de imágenes, los principios de reconocimiento son los mismos, adaptados a su zona, a sus propias características.

La conclusión es esta. Al reconocer imágenes, la imagen primero se preprocesa, luego las características se extraen manualmente y/o automáticamente. Estas características se envían a cualquier motor de reconocimiento, el más complejo de los cuales son las superficies divisorias no lineales en el espacio de características; La etapa de extracción de características puede involucrar modelos físicos para reconstruir la esencia de un objeto, pero esto ya es matemática exacta. Las reglas de reconocimiento pueden basarse en la lógica de un experto humano en un campo determinado. Otro tipo de reconocedores (deformaciones de imágenes, modelos de Markov, redes convolucionales) intenta utilizar métodos heurísticos para recrear un modelo plausible del dominio del problema y aplicarlo a una imagen desconocida.

Y no hay milagros. O fórmulas exactas más el conocimiento de un experto humano o modelos plausibles, pesados ​​y universales. Mencionar cómo se supone que se produce el reconocimiento de imágenes en humanos son aún más palabras elegantes que una aplicación práctica.

Se proporciona una revisión de los métodos de redes neuronales utilizados en el reconocimiento de imágenes. Los métodos de redes neuronales son métodos basados ​​en el uso de varios tipos de redes neuronales (NN). Las principales áreas de aplicación de diversas redes neuronales para el reconocimiento de patrones e imágenes:

  • Aplicación para extraer características clave o rasgos de imágenes determinadas.
  • clasificación de las imágenes en sí o de las características ya extraídas de ellas (en el primer caso, la extracción de las características clave se produce implícitamente dentro de la red),
  • resolver problemas de optimización.

La arquitectura de las redes neuronales artificiales tiene algunas similitudes con las redes neuronales naturales. Los NN diseñados para resolver diversos problemas pueden diferir significativamente en sus algoritmos operativos, pero sus propiedades principales son las siguientes.

La red neuronal consta de elementos llamados neuronas formales, que son en sí mismos muy simples y están conectados a otras neuronas. Cada neurona convierte un conjunto de señales recibidas en su entrada en una señal de salida. Son las conexiones entre neuronas, codificadas por pesos, las que desempeñan un papel clave. Una de las ventajas de las redes neuronales (así como una desventaja al implementarlas en una arquitectura secuencial) es que todos los elementos pueden funcionar en paralelo, lo que aumenta significativamente la eficiencia en la resolución de un problema, especialmente en el procesamiento de imágenes. Además de que las redes neuronales pueden resolver eficazmente muchos problemas, proporcionan potentes mecanismos de aprendizaje flexibles y universales, lo que constituye su principal ventaja sobre otros métodos (métodos probabilísticos, separadores lineales, árboles de decisión, etc.). El aprendizaje elimina la necesidad de seleccionar características clave, su significado y las relaciones entre características. Sin embargo, la elección de la representación inicial de los datos de entrada (vector en un espacio n-dimensional, características de frecuencia, wavelets, etc.) afecta significativamente la calidad de la solución y es un tema aparte. Los NN tienen buena capacidad de generalización (mejor que los árboles de decisión), es decir Puede extender con éxito la experiencia adquirida en el conjunto de entrenamiento final al conjunto completo de imágenes.

Describamos el uso de redes neuronales para el reconocimiento de imágenes, señalando las posibilidades de aplicación para el reconocimiento humano a partir de una imagen facial.

1. Redes neuronales multicapa

La arquitectura de una red neuronal multicapa (MNN) consta de capas conectadas secuencialmente, donde la neurona de cada capa está conectada con sus entradas a todas las neuronas de la capa anterior y las salidas de la siguiente. Una red neuronal con dos capas de decisión puede aproximarse a cualquier función multidimensional con cierta precisión. Una red neuronal con una capa de decisión es capaz de formar superficies divisorias lineales, lo que reduce en gran medida la gama de problemas que pueden resolver; en particular, dicha red no podrá resolver un problema de tipo "exclusivo o". Una red neuronal con una función de activación no lineal y dos capas decisivas permite la formación de regiones convexas en el espacio de la solución, y con tres capas decisivas, regiones de cualquier complejidad, incluidas las no convexas. Al mismo tiempo, el MNS no pierde su capacidad de generalización. Los MNN se entrenan utilizando el algoritmo de retropropagación, que es un método de descenso de gradiente en el espacio de pesos para minimizar el error total de la red. En este caso, los errores (más precisamente, los valores de corrección de los pesos) se propagan en dirección opuesta desde las entradas a las salidas, a través de los pesos que conectan las neuronas.

La aplicación más sencilla de una red neuronal de una sola capa (llamada memoria autoasociativa) es entrenar la red para reconstruir imágenes alimentadas. Al alimentar una imagen de prueba como entrada y calcular la calidad de la imagen reconstruida, puede evaluar qué tan bien la red reconoció la imagen de entrada. Las propiedades positivas de este método son que la red puede restaurar imágenes distorsionadas y ruidosas, pero no es adecuado para fines más serios.

Arroz. 1. Red neuronal multicapa para clasificación de imágenes. La neurona con máxima actividad (aquí la primera) indica pertenencia a la clase reconocida.

MNN también se utiliza para la clasificación directa de imágenes: ya sea la imagen en sí de alguna forma o un conjunto de características clave de la imagen previamente extraídas se suministra como entrada en la salida, la neurona con actividad máxima indica la pertenencia a la clase reconocida (Fig. 1). Si esta actividad está por debajo de cierto umbral, se considera que la imagen enviada no pertenece a ninguna de las clases conocidas. El proceso de aprendizaje establece la correspondencia de las imágenes suministradas a la entrada con la pertenencia a una determinada clase. A esto se le llama aprendizaje supervisado. Cuando se aplica al reconocimiento humano a partir de una imagen facial, este enfoque es bueno para tareas de control de acceso para un pequeño grupo de personas. Este enfoque permite que la red compare directamente las imágenes en sí, pero a medida que aumenta el número de clases, el tiempo de entrenamiento y operación de la red aumenta exponencialmente. Por lo tanto, tareas como encontrar una persona similar en una gran base de datos requieren extraer un conjunto compacto de características clave en las que basar la búsqueda.

En se describe un enfoque para la clasificación utilizando características de frecuencia de toda la imagen. Se utilizó una red neuronal de una sola capa basada en neuronas multivalor. En la base de datos del MIT se registró un reconocimiento del 100%, pero el reconocimiento se realizó entre las imágenes para las que se entrenó la red.

El uso de MNN para clasificar imágenes faciales en función de características como las distancias entre ciertas partes específicas de la cara (nariz, boca, ojos) se describe en. En este caso, estas distancias se introdujeron en la entrada del NS. También se utilizaron métodos híbridos: en el primero, los resultados del procesamiento mediante un modelo oculto de Markov se introdujeron en la entrada del NN, y en el segundo, el resultado de la operación del NN se ingresó en la entrada del modelo de Markov. En el segundo caso no se observaron ventajas, lo que sugiere que el resultado de la clasificación NN es suficiente.

La aplicación de una red neuronal para la clasificación de imágenes se muestra cuando la entrada de la red recibe los resultados de la descomposición de la imagen utilizando el método del componente principal.

En MNN clásico, las conexiones neuronales entre capas están completamente conectadas y la imagen se representa como un vector unidimensional, aunque es bidimensional. La arquitectura de la red neuronal convolucional tiene como objetivo superar estas deficiencias. Utilizó campos receptores locales (proporcionan conectividad bidimensional local de neuronas), pesos compartidos (proporcionan detección de ciertas características en cualquier parte de la imagen) y organización jerárquica con submuestreo espacial. La red neuronal convolucional (CNN) proporciona resistencia parcial a cambios de escala, desplazamientos, rotaciones y distorsiones. La arquitectura de una CNN consta de muchas capas, cada una de las cuales tiene varios planos, y las neuronas de la siguiente capa están conectadas solo con una pequeña cantidad de neuronas de la capa anterior cercanas al área local (como en la visión humana). corteza). Los pesos en cada punto de un plano son los mismos (capas convolucionales). A la capa convolucional le sigue una capa que reduce su dimensión mediante un promedio local. Luego nuevamente la capa convolucional, y así sucesivamente. De esta forma se consigue una organización jerárquica. Las capas posteriores extraen características más generales que se ven menos afectadas por la distorsión de la imagen. La CNN se entrena utilizando el método estándar de retropropagación. Una comparación entre MNS y CNN mostró ventajas significativas de este último tanto en términos de velocidad como de confiabilidad de la clasificación. Una propiedad útil de las CNN es que las características generadas en las salidas de las capas superiores de la jerarquía se pueden utilizar para la clasificación utilizando el método del vecino más cercano (por ejemplo, calculando la distancia euclidiana), y la CNN puede extraer con éxito dichas características para las imágenes. que no están en el conjunto de entrenamiento. Las CNN se caracterizan por su rápida velocidad de aprendizaje y funcionamiento. Las pruebas de CNN en una base de datos ORL que contiene imágenes de rostros con ligeros cambios en la iluminación, escala, rotaciones espaciales, posición y diversas emociones mostraron aproximadamente un 98% de precisión en el reconocimiento, y para rostros conocidos, se presentaron variantes de sus imágenes que no estaban en el entrenamiento. colocar. Este resultado hace que esta arquitectura sea prometedora para futuros desarrollos en el campo del reconocimiento de imágenes de objetos espaciales.

Los MNN también se utilizan para detectar objetos de cierto tipo. Además del hecho de que cualquier MNN entrenado puede, hasta cierto punto, determinar si las imágenes pertenecen a “sus” clases, puede entrenarse especialmente para detectar de manera confiable ciertas clases. En este caso, las clases de salida serán clases que pertenecen y no pertenecen al tipo de imagen dado. Se utilizó un detector de red neuronal para detectar una imagen de rostro en la imagen de entrada. La imagen fue escaneada por una ventana de 20x20 píxeles, que fue alimentada a la entrada de la red, que decide si un área determinada pertenece a la clase de caras. La capacitación se llevó a cabo utilizando tanto ejemplos positivos (varias imágenes de rostros) como ejemplos negativos (imágenes que no son rostros). Para aumentar la confiabilidad de la detección se utilizó un equipo de redes neuronales, entrenadas con diferentes pesos iniciales, como resultado de lo cual las redes neuronales cometieron errores de diferentes maneras, y la decisión final se tomó mediante votación de todo el equipo.

Arroz. 2. Componentes principales (caras propias) y descomposición de la imagen en componentes principales.

También se utiliza una red neuronal para extraer características clave de la imagen, que luego se utilizan para la clasificación posterior. En , se muestra un método de implementación de redes neuronales del método de análisis de componentes principales. La esencia del método de análisis de componentes principales es obtener coeficientes decorados al máximo que caractericen las imágenes de entrada. Estos coeficientes se denominan componentes principales y se utilizan para la compresión estadística de imágenes, en la que se utiliza una pequeña cantidad de coeficientes para representar la imagen completa. Una red neuronal con una capa oculta que contiene N neuronas (que es mucho más pequeña que la dimensión de la imagen), entrenada utilizando el método de retropropagación para restaurar la imagen de salida dada como entrada, genera los coeficientes de los primeros N componentes principales en la salida de las neuronas ocultas. , que se utilizan para comparar. Normalmente se utilizan de 10 a 200 componentes principales. A medida que aumenta el número de un componente, su representatividad disminuye considerablemente y no tiene sentido utilizar componentes con números mayores. Cuando se utilizan funciones de activación no lineales de elementos neuronales, es posible una descomposición no lineal en componentes principales. La no linealidad permite reflejar con mayor precisión las variaciones en los datos de entrada. Aplicando el análisis de componentes principales a la descomposición de imágenes faciales, obtenemos componentes principales llamados caras propias (holones en la obra), que también tienen una propiedad útil: hay componentes que reflejan principalmente características esenciales de una cara como el género, la raza y las emociones. Cuando se reconstruyen, los componentes tienen una apariencia de cara: los primeros reflejan la forma más general de la cara y los segundos representan varias pequeñas diferencias entre las caras (Fig. 2). Este método es muy adecuado para encontrar imágenes similares de rostros en bases de datos grandes. También se muestra la posibilidad de reducir aún más las dimensiones de los componentes principales utilizando NN. Al evaluar la calidad de la reconstrucción de la imagen de entrada, se puede determinar con mucha precisión su pertenencia a la clase de caras.

El reconocimiento de imágenes es una rama importante e interesante de la informática que tiene una variedad de aplicaciones en la vida real. Así, el reconocimiento de imágenes se puede utilizar para reconocer matrículas, identificar la presencia de peatones en la vía, buscar y reconocer rostros en fotografías, sistemas para controlar un dispositivo mediante gestos, realizar controles de calidad automáticos en producción, y esto es sólo un subconjunto muy pequeño de aplicaciones prácticas de reconocimiento de imágenes. Por tanto, no es de extrañar que el interés de los investigadores en el campo de la informática y la inteligencia artificial por el reconocimiento de imágenes apareciera en los años 60 del siglo XX, y esta área de la ciencia todavía se está desarrollando activamente.

Existen muchas formulaciones para el problema del reconocimiento de imágenes y es bastante difícil definirlo sin ambigüedades. Por ejemplo, se puede considerar el reconocimiento de imágenes como la tarea de buscar e identificar ciertos objetos lógicos en la imagen original.

El reconocimiento de imágenes suele ser una tarea desafiante para un algoritmo informático. Esto se debe, en primer lugar, a la gran variabilidad de las imágenes de objetos individuales. Así, la tarea de encontrar un coche en una imagen es sencilla para el cerebro humano, que es capaz de identificar automáticamente la presencia de características importantes para un coche (ruedas, forma específica) en un objeto y, si es necesario, “obtener” la Imagen en la imaginación, imaginando los detalles que faltan, y extremadamente difícil para una computadora, ya que hay una gran cantidad de variedades de automóviles de diferentes marcas y modelos, que tienen formas en gran medida diferentes, además, la forma final del objeto en la imagen. Depende en gran medida del punto de disparo, el ángulo en el que se toma y otros parámetros. La iluminación también juega un papel importante, ya que afecta el color de la imagen resultante y también puede hacer que los detalles individuales sean invisibles o distorsionados.

Así, las principales dificultades en el reconocimiento de imágenes vienen provocadas por:

  • · Variabilidad de materias dentro de la clase.
  • Variabilidad de forma, tamaño, orientación, posición en la imagen.
  • · Variabilidad de la iluminación

Para combatir estas dificultades, se han propuesto diversos métodos a lo largo de la historia del reconocimiento de imágenes y ya se han logrado avances significativos en este área.

La primera investigación en el campo del reconocimiento de imágenes fue publicada en 1963 por L. Roberts en el artículo "Machine Perception Of Three-Dimensional Solids", donde el autor intentó abstraerse de posibles cambios en la forma de un objeto y se concentró en reconocer imágenes. de formas geométricas simples bajo diferentes condiciones de iluminación y cuando hay giros. El programa informático que desarrolló era capaz de identificar objetos geométricos de algunas formas simples en una imagen y generar un modelo tridimensional de los mismos en el ordenador.

En 1987, S. Ullman y D. Huttenlocher publicaron el artículo “Reconocimiento de objetos usando alineación” donde también intentaron reconocer objetos de formas relativamente simples, y el proceso de reconocimiento se organizó en dos etapas: primero, buscando el área en la imagen donde se encuentra el objeto objetivo, y determinar su posible tamaño y orientación (“alineación”) utilizando un pequeño conjunto de rasgos característicos, y luego comparación píxel por píxel de la imagen potencial del objeto con la esperada.

Sin embargo, la comparación de imágenes píxel a píxel tiene muchas desventajas importantes, como su complejidad, la necesidad de tener una plantilla para cada uno de los objetos de las clases posibles y también el hecho de que en el caso de la comparación píxel a píxel , sólo se puede realizar una búsqueda de un objeto específico y no de una clase completa de objetos. En algunas situaciones esto es aplicable, pero en la mayoría de los casos aún es necesario buscar no un objeto específico, sino muchos objetos de una determinada clase.

Una de las direcciones importantes en el desarrollo del reconocimiento de imágenes ha sido el reconocimiento de imágenes basado en la identificación de contornos. En muchos casos, son los contornos los que contienen la mayor parte de la información sobre la imagen y, al mismo tiempo, considerar la imagen como un conjunto de contornos permite simplificarla significativamente. Para solucionar el problema de encontrar bordes en una imagen, el enfoque clásico y más conocido es el Canny Edge Detector, cuyo funcionamiento se basa en la búsqueda de un máximo de gradiente local.

Otra dirección importante en el campo del análisis de imágenes es la aplicación de métodos matemáticos como el filtrado de frecuencia y el análisis espectral. Estos métodos se utilizan, por ejemplo, para comprimir imágenes (compresión JPEG) o mejorar su calidad (filtro gaussiano). Sin embargo, dado que estos métodos no están directamente relacionados con el reconocimiento de imágenes, no se analizarán con más detalle aquí.

Otra tarea que a menudo se considera en relación con el problema del reconocimiento de imágenes es el problema de la segmentación. El objetivo principal de la segmentación es resaltar objetos individuales en una imagen, cada uno de los cuales luego puede estudiarse y clasificarse por separado. La tarea de segmentación se simplifica enormemente si la imagen de origen es binaria, es decir, consta de píxeles de solo dos colores. En este caso, el problema de la segmentación suele resolverse utilizando métodos de morfología matemática. La esencia de los métodos de la morfología matemática es representar una imagen como un determinado conjunto de valores binarios y aplicar operaciones lógicas a este conjunto, siendo las principales la transferencia, la acumulación (suma lógica) y la erosión (multiplicación lógica). Utilizando estas operaciones y sus derivadas, como cerrar y abrir, es posible, por ejemplo, eliminar el ruido en una imagen o resaltar los límites. Si estos métodos se utilizan en un problema de segmentación, entonces su tarea más importante se convierte precisamente en eliminar el ruido y formar áreas más o menos homogéneas en la imagen, que luego se pueden encontrar fácilmente utilizando algoritmos similares a la búsqueda de componentes conectados en un gráfico. - estas serán las imágenes de los segmentos deseados.

Con respecto a la segmentación de imágenes RGB, una de las fuentes importantes de información sobre los segmentos de imágenes puede ser su textura. Para determinar la textura de una imagen, a menudo se utiliza el filtro Gabor, que fue creado en un intento de reproducir las características de la percepción de la textura por parte de la visión humana. El funcionamiento de este filtro se basa en la función de conversión de frecuencia de la imagen.

Otra familia importante de algoritmos utilizados para el reconocimiento de imágenes son los basados ​​en la búsqueda de características locales. Las características locales son algunas áreas claramente distinguibles de la imagen que le permiten correlacionar la imagen con el modelo (el objeto deseado) y determinar si la imagen dada coincide con el modelo y, si es así, determinar los parámetros del modelo (por ejemplo, ángulo de inclinación). , compresión aplicada, etc.). Para realizar sus funciones de manera eficiente, las singularidades locales deben ser resistentes a transformaciones afines, cambios, etc. Un ejemplo clásico de características locales son las esquinas, que a menudo están presentes en los límites de varios objetos. El algoritmo más popular para encontrar rincones es el detector de Harris.

Recientemente, los métodos de reconocimiento de imágenes basados ​​en redes neuronales y aprendizaje profundo se han vuelto cada vez más populares. El principal florecimiento de estos métodos se produjo tras la aparición a finales del siglo XX de las redes convolucionales (LeCun, ), que muestran resultados significativamente mejores en el reconocimiento de imágenes en comparación con otros métodos. Por lo tanto, la mayoría de los algoritmos líderes (y no solo) en el concurso anual de reconocimiento de imágenes ImageNet-2014 utilizaron redes convolucionales de una forma u otra.




Arriba