¿Cuáles son los mejores algoritmos actuales de visión por computadora que pueden aprender a reconocer un objeto (digamos una flor) a partir de una sola imagen?

Lo mejor que puede hacer un algoritmo de visión por computadora es calcular un espacio de características descriptivo y efectivo que luego se pueda alimentar a una rutina de toma de decisiones bien seleccionada y optimizada.

Ahora, ¿qué es un espacio de características? Es una criatura multidimensional hecha de variables diseñadas para describir una parte de imagen procesada, preferiblemente de forma numérica. Esto podría ser solo un conjunto de píxeles en una ventana de un tamaño definido. Esta podría ser una luminosidad promedio de píxeles. Esta podría ser la frecuencia más fuerte en el espectro de Fourier. Realmente, el cielo es el límite. Lo mejor que puede hacer un algoritmo actual de visión por computadora es asegurarse (tal vez seleccionar automáticamente) que las características que procesa manifiestan la capacidad de tener diferentes valores en una parte de una imagen donde el objeto está presente desde una parte de una imagen donde El objeto está ausente.

La segunda mejor cosa que puede hacer un algoritmo es ejecutar una rutina de toma de decisiones optimizada y bien seleccionada (que se ajuste al espacio de características y distribución que es). La rutina de toma de decisiones es una declaración vaga por una razón. Puede ser un clasificador estadístico supervisado, uno no supervisado, puede ser una red neuronal, puede ser un árbol de decisión, puede ser un conjunto de reglas, puede ser una rutina de la que aún no hemos oído hablar.

Hay muchos grupos de investigación trabajando en la detección de objetos en imágenes, algunos muy exitosos, otros en camino. Algunos lo hacen como objetivo, otros usan la detección de objetos como una de las aplicaciones de las metodologías que investigan. Estos grupos seleccionan su metodología y luego se esfuerzan para que sea la mejor. La carrera está en marcha y lo seguirá siendo por mucho, mucho tiempo.

Obtenga una suscripción a las revistas IEEE, verá cómo se ven los algoritmos más nuevos.

El software de computadora solo recientemente se volvió lo suficientemente inteligente como para reconocer objetos en fotografías. Ahora, los investigadores de Stanford que utilizan el aprendizaje automático han creado un sistema que da el siguiente paso, escribiendo una historia simple de lo que está sucediendo en cualquier imagen digital. El sistema puede analizar una imagen desconocida y explicarla con palabras y frases que tengan sentido “, dijo Fei -Fei Li, profesor de ciencias de la computación y director del Laboratorio de Inteligencia Artificial de Stanford. Este es un hito importante “, dijo Li. “Es la primera vez que tenemos un sistema de visión por computadora que podría contar una historia básica sobre una imagen desconocida.

Los humanos, dijo Li, crean historias mentales que ponen en contexto lo que vemos. “Contar una historia sobre una imagen resulta ser un elemento central de la inteligencia visual humana, pero hasta ahora ha resultado muy difícil hacerlo con algoritmos informáticos”, dijo.

En el corazón del sistema de Stanford hay algoritmos que permiten al sistema mejorar su precisión escaneando escena tras escena, buscando patrones y luego usando la acumulación de escenas descritas previamente para extrapolar lo que se representa en la siguiente imagen desconocida.

“Es casi como aprende un bebé”, dijo Li.

Finalmente, estos avances conducirán a sistemas robóticos que pueden navegar en situaciones desconocidas. A corto plazo, los sistemas basados ​​en máquinas que pueden discernir la historia en una imagen permitirán a las personas buscar archivos de fotos o videos y encontrar imágenes específicas.

“La mayor parte del tráfico en Internet son archivos de datos visuales, y esto podría ser materia oscura en lo que respecta a las herramientas de búsqueda actuales”, dijo Li. “La visión por computadora busca iluminar esa materia oscura”.

El nuevo documento de Stanford describe dos años de esfuerzo que se derivan de la investigación que Li ha estado realizando durante una década. Su trabajo se basa en los avances que han llegado, a veces lentamente, en los últimos 50 años desde que el científico del MIT Seymour Papert convocó un “proyecto de verano” para crear visión por computadora en 1966.

Concebida durante los primeros días de la inteligencia artificial, esa línea de tiempo demostró ser extremadamente optimista, ya que los informáticos lucharon por replicar en máquinas lo que tardó millones de años en evolucionar en seres vivos. Los investigadores tardaron 20 años en crear sistemas que pudieran dar el primer paso relativamente simple de reconocer objetos discretos en fotografías.

Más recientemente, la aparición de Internet ha ayudado a impulsar la visión por computadora. Por un lado, el crecimiento de las cargas de fotos y videos ha creado una demanda de herramientas para clasificar, buscar y tamizar información visual. Por otro lado, los algoritmos sofisticados que se ejecutan en computadoras potentes han llevado a sistemas electrónicos que pueden entrenarse a sí mismos realizando tareas repetitivas, mejorando a medida que avanzan.

Los informáticos llaman a esto aprendizaje automático, y Li comparó esto con cómo un niño aprende fútbol al salir y patear la pelota. Un entrenador puede demostrar cómo patear y comentar la técnica del niño. Pero la mejora se produce desde adentro, ya que los ojos, el cerebro, los nervios y los músculos del niño hacen pequeños ajustes.

Los algoritmos de aprendizaje automático guían este proceso de mejora en los sistemas basados ​​en computadora. Cómo aprenden los humanos es un proceso sutil que no se entiende completamente. Investigadores como Li están desarrollando formas de crear retroalimentación positiva en bucles en máquinas mediante la inserción de instrucciones matemáticas en el software.

Los últimos algoritmos de Li incorporan el trabajo que sus investigadores y otros han realizado. Esto incluye entrenar su sistema en un diccionario visual, utilizando una base de datos de más de 14 millones de objetos. Cada objeto se describe mediante un término matemático, o vector, que permite que la máquina reconozca la forma la próxima vez que se encuentre. Esas definiciones matemáticas están vinculadas a las palabras que los humanos usarían para describir los objetos, ya sean autos, zanahorias, hombres, montañas o cebras.

Li desempeñó un papel de liderazgo en la creación de esta herramienta de capacitación, el proyecto ImageNet, pero su trabajo actual va mucho más allá de memorizar este diccionario visual.

El nuevo algoritmo de visión por computadora de su equipo se entrenó buscando patrones en un diccionario visual, pero esta vez un diccionario de escenas, una tarea más complicada que solo mirar objetos.

Esta era una base de datos más pequeña, compuesta por decenas de miles de imágenes. Cada escena se describe de dos maneras: en términos matemáticos que la máquina podría usar para reconocer escenas similares y también en una frase que los humanos entenderían. Por ejemplo, una imagen podría ser “gato se sienta en el teclado”, mientras que otra podría ser “niña monta a caballo en el campo”.

Estas dos bases de datos, una de objetos y otra de escenas, sirvieron como material de capacitación. El algoritmo de aprendizaje automático de Li analizó los patrones en estas imágenes predefinidas y luego aplicó su análisis a imágenes desconocidas y utilizó lo que había aprendido para identificar objetos individuales y proporcionar un contexto rudimentario. En otras palabras, contó una historia simple sobre la imagen.

Por ejemplo, si el sistema de visión por computadora de Li discernió los contornos matemáticos de un mamífero peludo de cuatro patas acostado sobre un objeto, podría contar una historia como “el perro yace en la alfombra”. Si las matemáticas describían una criatura bípeda junto a un cuadrúpedo, el software podría definir esto como “el niño está cerca de la vaca”.

noticias de Coutesy-Stanford

Es difícil, no imposible, hay problemas con los algoritmos actuales de aprendizaje automático (ML) que necesitan una gran cantidad de datos de entrenamiento para realizar una tarea aparentemente trivial, como reconocer una flor de un solo ejemplo. Un niño puede aprender a reconocer un elefante a partir de muy pocas imágenes de ejemplo y ser capaz de generalizar imágenes de elefantes novedosas, como dibujos y dibujos animados. El cerebro humano es de hecho una máquina de aprendizaje muy notable.

Incluso se ha demostrado que los insectos como los abejorros pueden aprender tareas complejas con datos mínimos, solo a partir de una demostración básica de la tarea. Por lo tanto, dicho esto, nuestros modelos ML tienen mucho que emular de sus homólogos biológicos.

Aprender de unos pocos ejemplos se denomina aprendizaje de una sola vez y muchos investigadores lo están investigando actualmente. El aprendizaje de transferencia es lo que se acerca a esto porque, en sentido real, volvamos al ejemplo del elefante, cuando un niño mira la foto de un elefante, su cerebro codifica la apariencia de los elefantes en función no solo de lo que ve, sino también de lo que ya sabe. sobre el mundo a partir de experiencias pasadas. Dado que el niño sabe que incluso si el elefante gira boca abajo, sigue siendo lo mismo, por lo que dicho conocimiento se transfiere automáticamente de las experiencias pasadas a esta tarea de reconocimiento de elefante. Esto es transferencia de conocimiento en sentido general porque el cerebro del niño transfiere conocimiento de experiencias pasadas no relacionadas a esta tarea.

Por lo tanto, actualmente podemos emular débilmente las excelentes capacidades de transferencia de conocimiento del cerebro humano utilizando el aprendizaje por transferencia. La única diferencia es que nuestras técnicas de transferencia de aprendizaje solo pueden funcionar si los problemas están relacionados o correlacionados en términos matemáticos.

Entonces, dicho esto, déjenme discutir sobre un posible sistema que puede reconocer una flor a partir de un ejemplo de ella.


Todos sabemos que un ejemplo no es suficiente, por lo que utilizaremos una red previamente capacitada, especialmente una que se capacitó en una gran cantidad de ejemplos, como la red VGG-16. Necesitamos una sola foto de la flor en cuestión y aplicar el aumento de datos, como rotaciones, escalas y ruido, para que nuestro sistema capacitado pueda ser robusto a esas transformaciones.

Luego, necesitamos algunos ejemplos de entrenamiento negativos, el aprendizaje automático requiere que tengas algunos ejemplos negativos. Afortunadamente, el espacio negativo siempre es muy grande y fácilmente disponible. Por lo tanto, podemos encontrar fácilmente estos ejemplos simplemente tomando fotos que no son flores, o incluso simplemente sacando algunas fotos aleatorias de Internet, al menos es probable que la mayoría de las fotos no sean fotos de flores, recuerde que el espacio negativo es enorme, así que El muestreo aleatorio para encontrar ejemplos negativos está bien.

Luego necesitamos conectar una máquina de vectores de soporte lineal (SVM) a la red VGG-16. Solo nos interesa la última capa convolucional (conv) porque esas características son lo suficientemente de alto nivel como para manejar un clasificador simple como un SVM lineal. Por lo tanto, dada una red pre-entrenada [matemática] g [/ matemática] con parámetros [matemática] w [/ matemática], podemos mapear cada ejemplo de capacitación a través de esa red como:

[matemáticas] y = g (x, w) [/ matemáticas]

donde [math] y [/ math] = funciones de conv de alto nivel

Entonces podemos alimentar los vectores [math] y [/ math] al SVM lineal. Dados estos ejemplos de alto nivel, podemos continuar y entrenar al SVM. Si no aplicamos el aumento de datos, aún podemos usar un solo ejemplo positivo para entrenar el llamado SVM ejemplar, pero aún necesitamos los ejemplos negativos para que el SVM pueda aprender correctamente.


Un sistema como el descrito anteriormente puede aprender con pocos ejemplos de capacitación porque está utilizando una red pre-capacitada. Eso no es trampa porque incluso el cerebro humano está pre-entrenado para lograr el aprendizaje de una sola vez. Aunque el cerebro tiene capacidades de transferencia de conocimiento muy poderosas.

Por lo tanto, el sistema anterior no resuelve de ninguna manera el aprendizaje de una sola vez, sino que simplemente tenía como objetivo señalarle que puede usar el aprendizaje de transferencia en senarios cuando los datos son limitados. El SVM ejemplar con las características correctas puede aprender de un solo ejemplo positivo pero con muchos ejemplos negativos.

Espero que esto ayude.

La clasificación de objetos visuales es una tarea que se ha estudiado durante décadas. Con el auge del aprendizaje profundo y las redes neuronales convolucionales, hay modelos que se están acercando a los niveles humanos de precisión.

Mire esto para ver algunos resultados del modelo de visión por computadora de vanguardia.

Puede probar Vision API de Google o bibliotecas OpenCV de código abierto

Vision API – Análisis de contenido de imagen | Google Cloud Platform

Biblioteca OpenCV

Esto se llama aprendizaje ‘one shot’.

Si utiliza un aumento bastante extremo (distorsión, rotación, variación de color, variación de tono, variación de ruido, etc.) durante el entrenamiento, puede entrenar un algoritmo en su única imagen real al generar millones de imágenes ‘falsas’ similares, y poder reconocer con éxito una variedad de flores.

Si tiene un modelo compatible con 3D, posiblemente pueda asignar la imagen de la flor a un modelo 3D, y con eso podría entrenarla para reconocer aún más flores.

Sin embargo, en el caso general, necesita muchos ejemplos de capacitación.