Inicio
Temas
Segmentación de imágenes
La segmentación de imágenes es una técnica de visión artificial que divide una imagen digital en grupos discretos de píxeles (segmentos de imagen) para fundamentar la detección de objetos y tareas relacionadas. Al analizar los datos visuales complejos de una imagen en segmentos con formas específicas, la segmentación de imágenes permite un procesamiento de imágenes más rápido y avanzado.
Las técnicas de segmentación de imágenes van desde el análisis heurístico simple e intuitivo hasta la implementación de vanguardia del aprendizaje profundo. Los algoritmos convencionales de segmentación de imágenes procesan características visuales de alto nivel de cada píxel, como el color o el brillo, para identificar los límites de los objetos y las regiones de fondo. El aprendizaje automático, que aprovecha los conjuntos de datos anotados, se utiliza para entrenar modelos a fin de que clasifiquen con precisión los tipos específicos de objetos y regiones que contiene una imagen.
Al ser un método muy versátil y práctico de visión artificial, la segmentación de imágenes tiene una amplia variedad de casos de uso de inteligencia artificial, desde ayudar en el diagnóstico médico por imágenes hasta la automatización de la locomoción en la robótica y los automóviles autónomos e identificar objetos de interés en imágenes satelitales.
La segmentación de imágenes representa una evolución avanzada tanto de la clasificación de imágenes como de la detección de objetos, así como un conjunto distintivo de capacidades únicas de visión artificial.
La clasificación de imágenes aplica una etiqueta de clase a toda una imagen. Por ejemplo, un modelo simple de clasificación de imágenes podría ser entrenado para categorizar imágenes de vehículos como “automóvil” o “camión”. Los sistemas convencionales de clasificación de imágenes son poco sofisticados, ya que no procesan las características individuales de la imagen por separado.
La detección de objetos combina la clasificación de imágenes con la localización de objetos, generando regiones rectangulares, llamadas “cuadros delimitadores”, en las que se ubican los objetos: en lugar de simplemente etiquetar la imagen de un vehículo como “automóvil” o “camión”, un modelo de detección de objetos podría indicar en qué parte de la imagen se encuentra/n el/los automóvil/es o camión/es. Si bien la detección de objetos puede clasificar varios elementos dentro de una imagen y aproximar el ancho y la altura de cada elemento, no puede discernir límites o formas precisos. Esto limita la capacidad de los modelos convencionales para delinear objetos que se encuentran demasiado juntos con cuadros delimitadores superpuestos.
La segmentación de imágenes procesa datos visuales a nivel de píxel, utilizando varias técnicas para anotar píxeles individuales como pertenecientes a una clase o instancia específica. Las técnicas “clásicas” de segmentación de imágenes determinan anotaciones mediante el análisis de cualidades inherentes de cada píxel (llamado “análisis heurístico”) como el color y la intensidad, mientras que los modelos de aprendizaje profundo emplean redes neuronales complejas para el reconocimiento de patrones sofisticados. Los resultados de esta anotación son máscaras de segmentación, que representan el límite y la forma específicos píxel por píxel de cada clase, que generalmente corresponde a diferentes objetos, características o regiones, en la imagen.
A grandes rasgos, la segmentación de imágenes se utiliza para tres tipos de tareas: segmentación semántica, segmentación de instancias y segmentación panóptica.
La diferencia entre cada tipo de tarea de segmentación de imágenes radica en cómo tratan las clases semánticas: las categorías específicas a las que se puede pertenecer un píxel determinado.
En la jerga de la visión artificial, hay dos tipos de clases semánticas. Cada una se presta a diferentes técnicas para proporcionar una segmentación precisa y eficaz.
Cosas (things) se refiere a clases de objetos con formas características, como “automóvil” o “árbol” o “persona”. Normalmente, las cosas tienen instancias claramente definidas y contables. Varían relativamente poco de tamaño de una instancia a otra, así como están constituidas por partes distintas de la cosa en sí: por ejemplo, todos los automóviles tienen ruedas, pero una rueda no es un automóvil.
Elementos (stuff) se refiere a clases semánticas que son amorfas y de tamaño muy variable, como “cielo” o “agua” o “hierba”. Por lo general, las elementos no tienen instancias individuales claramente definidas ni contables. A diferencia de las cosas, los elementos no tienen partes distintivas: brizna de pasto y pastizal son ambos igualmente “pasto”.
Algunas clases, en determinadas condiciones de imagen, pueden ser a la vez cosas o elementos. Por ejemplo, un grupo numeroso de personas puede interpretarse como múltiples “personas” (cada una de ellas una cosa contable y con forma claramente definida) o como una “multitud” singular y amorfa.
Si bien la mayoría de las iniciativas de detección de objetos se centran principalmente en las clases de cosas, es importante tener en cuenta que los elementos (cielo, paredes, pisos, suelo) constituyen la mayor parte de nuestro contexto visual. Los elementos son un punto de datos esencial para identificar cosas, y viceversa: una cosa metálica en una carretera suele ser un coche; el fondo azul detrás de un barco es probablemente agua, mientras que el fondo azul detrás de un avión es probablemente cielo. Esto es de particular importancia para los modelos de aprendizaje profundo.
La segmentación semántica es el tipo más simple de segmentación de imágenes. Un modelo de segmentación semántica asigna una clase semántica a cada píxel, pero no genera ningún otro contexto o información (como los objetos).
La segmentación semántica trata a todos los píxeles como elementos; no diferencia entre elementos y cosas.
Por ejemplo, un modelo de segmentación semántica entrenado para identificar determinadas clases en una calle urbana produciría máscaras de segmentación que indicarían los límites y contornos de cada clase relevante de cosa (como vehículos o postes de luz) y elementos (como carreteras y aceras), pero no haría ninguna distinción entre (ni contaría el número de) múltiples instancias de la misma clase. Por ejemplo, los automóviles estacionados uno frente a otro podrían tratarse simplemente como un segmento largo de “automóvil”.
La segmentación de instancias invierte las prioridades de la segmentación semántica: mientras que los algoritmos de segmentación semántica predicen solo la clasificación semántica de cada píxel (sin tener en cuenta instancias individuales), la segmentación de instancias delinea la forma exacta de cada instancia de objeto por separado.
La segmentación de instancias aísla las cosas de los elementos (mismos que ignora) y, por lo tanto, puede entenderse como una forma evolucionada de detección de objetos que genera una máscara de segmentación precisa en lugar de un cuadro delimitador aproximado.
Es una tarea más difícil que la segmentación semántica: incluso cuando las cosas de la misma clase se tocan o incluso se superponen entre sí, los modelos de segmentación de instancias deben ser capaces de separar y determinar la forma de cada una, mientras que los modelos de segmentación semántica pueden simplemente agruparlas. Considere, por ejemplo, cómo tratan los dos distintos modelos a los autos estacionados en esta imagen de una calle urbana.
Los algoritmos de segmentación de instancias generalmente adoptan un enfoque de dos etapas o one-shot (de una etapa) para abordar el problema. Los modelos de dos etapas, como las redes neuronales convolucionales basadas en regiones (R-CNN), realizan la detección convencional de objetos para generar cuadros delimitadores para cada instancia propuesta, y luego realizan una segmentación y clasificación más refinadas dentro de cada cuadro delimitador. Los modelos one-shot, como YOLO (You Only Look Once), logran segmentación de instancias en tiempo real mediante la detección, clasificación y segmentación simultánea de los objetos.
Los métodos one-shot ofrecen mayor velocidad (con una desventaja respecto de la precisión), mientras que los de dos etapas ofrecen una mayor precisión (con una desventaja respecto de la velocidad).
Los modelos de segmentación panóptica determinan la clasificación semántica de todos los píxeles y diferencian cada instancia de objeto en una imagen, combinando los beneficios de la segmentación semántica y de instancias.
En una tarea de segmentación panóptica, cada píxel debe anotarse tanto con una etiqueta semántica como con un “ID de instancia”. Los píxeles que comparten la misma etiqueta e ID pertenecen al mismo objeto; en el caso de los píxeles que se determinan elementos, se ignora el ID de instancia.
Por lo tanto, la segmentación panóptica proporciona a los sistemas de visión artificial una comprensión integral y holística de una imagen dada. Si bien su atractivo es obvio, lograr la segmentación panopítica de una manera consistente y computacionalmente eficiente es un desafío imponente.
El reto consiste en unificar dos metodologías contradictorias: los modelos de segmentación semántica tratan todos los píxeles como elementos, ignorando las instancias individuales de las cosas; los modelos de segmentación de instancias aíslan cosas individuales, ignorando los elementos. Ninguno de estos modelos puede absorber adecuadamente las responsabilidades del otro.
Los primeros intentos de modelos de segmentación panóptica simplemente combinaron los dos modelos, realizando cada tarea por separado y luego combinando su resultado en una fase de posprocesamiento. Este método tiene dos desventajas principales: requiere un gran sobrecoste (overhead) y batalla con las discrepancias entre la salida de puntos de datos por la red de segmentación semántica y la salida de puntos de datos por la red de segmentación de instancias.
Las arquitecturas de segmentación panóptica más recientes pretenden evitar estos inconvenientes con un enfoque más unificado del aprendizaje profundo. La mayoría se desarrollan a partir de una “red troncal” (backbone), como una red piramidal de características (FPN), que extrae características de la imagen de entrada, introduce los datos extraídos en ramas paralelas, como una “rama de primer plano” y una “rama de fondo”, o “cabeza semántica” y “cabeza de instancia”, y luego fusiona la salida de cada rama mediante un sistema ponderado. Las arquitecturas panópticas propuestas incluyen EfficientPS, OANet, PanopticFPN, UPSNet, SOGNet, BGRNet, AUNet, FPSNet y SpatialFlow.
Las técnicas tradicionales de segmentación de imágenes utilizan información de los valores de color de un píxel (y características relacionadas como el brillo, el contraste o la intensidad) para la extracción de características, y se pueden entrenar rápidamente con algoritmos simples de aprendizaje automático para tareas como la clasificación semántica.
Si bien los métodos de segmentación basados en el aprendizaje profundo son capaces de brindar mayor precisión y un análisis de imágenes más sofisticado, especialmente tareas como la segmentación panóptica que requieren una gran cantidad de información contextual, los métodos tradicionales son mucho menos costosos y exigentes desde el punto de vista computacional, y pueden resolver determinados problemas de manera más eficaz.
Las técnicas comunes de segmentación de imágenes tradicionales (o “clásicas”) incluyen:
Entrenadas en un conjunto de datos anotado de imágenes, las redes neuronales de los modelos de segmentación de imágenes de aprendizaje profundo descubren patrones subyacentes en los datos visuales y disciernen las características destacadas más relevantes para la clasificación, detección y segmentación.
A pesar de las desventajas respecto de los requisitos informáticos y el tiempo de entrenamiento, los modelos de aprendizaje profundo superan sistemáticamente a los modelos tradicionales y forman la base de la mayoría de los avances continuos en la visión artificial.
Los modelos de aprendizaje profundo destacados que se utilizan en la segmentación de imágenes incluyen:
Para no solo trazar los límites de los segmentos de imagen, sino también predecir cuáles elementos o cosas representa cada segmento, los modelos de aprendizaje profundo se entrenan en grandes conjuntos de datos anotados para reconocer clases semánticas específicas. A partir de estas imágenes preetiquetadas, los modelos de aprendizaje profundo infieren los patrones y valores de píxel típicos de cada etiqueta.
Diferentes tareas requieren diferentes datos de entrenamiento: un sistema de visión artificial para automóviles autónomos se entrena en imágenes etiquetadas con clases semánticas como “persona”, “automovil”, “carril” y “señal de alto”, mientras que los modelos de imágenes médicas requieren optimización para reconocer clases específicas de tejido físico, o tumores y otras patologías.
Los conjuntos de datos de entrenamiento deben ser etiquetados previamente por humanos expertos, lo cual es una tarea extremadamente laboriosa. La mayoría de los modelos de segmentación de imágenes utilizan grandes conjuntos de datos de código abierto. Estos conjuntos de datos públicos también sirven como “verdad fundamental” al evaluar el éxito de los modelos entrenados: las métricas de rendimiento a menudo se expresan como porcentaje de resultados que coinciden con precisión con las anotaciones en el conjunto de datos de entrenamiento.
Los conjuntos de datos de entrenamiento populares para modelos de segmentación de imágenes de aprendizaje profundo incluyen:
La segmentación de imágenes se ha convertido en una herramienta esencial en diversos campos.
Libere el poder de la visión artificial sin código para la inspección visual automatizada con un conjunto de herramientas intuitivas para etiquetar, entrenar y desplegar modelos de visión de inteligencia artificial.
Los sistemas modernos de visión artificial ofrecen una precisión sobrehumana cuando se trata de reconocimiento y análisis de imágenes, pero realmente no entienden lo que ven. En IBM Research, estamos diseñando sistemas de IA con la capacidad de ver el mundo al igual que nosotros.
Este curso para principiantes lo ayuda a comprender la visión artificial y sus diversas aplicaciones en múltiples industrias. Como parte del curso, utilizará Python, Pillow y OpenCV para el procesamiento básico de imágenes, así como realizará clasificación y detección de objetos.
Dé los primeros pasos con IBM Maximo Visual Inspection para crear y entrenar modelos basados en IA para inspeccionar sus activos y productos, e identificar los defectos que pueden causar problemas de producción y calidad.