Una guía 2021 para la segmentación semántica

Nodo de origen: 872271

Introducción

El aprendizaje profundo ha tenido mucho éxito al trabajar con imágenes como datos y actualmente se encuentra en una etapa en la que funciona mejor que los humanos en múltiples casos de uso. Los problemas más importantes que los humanos han estado interesados ​​en resolver con la visión por computadora son clasificación de imágenes, detección y segmentación de objetos en el orden creciente de su dificultad.

En la simple y vieja tarea de la clasificación de imágenes, solo nos interesa obtener las etiquetas de todos los objetos que están presentes en una imagen. En la detección de objetos damos un paso más y tratamos de saber, junto con todos los objetos que están presentes en una imagen, la ubicación en la que están presentes los objetos con la ayuda de cuadros delimitadores. La segmentación de imágenes lo lleva a un nuevo nivel al tratar de averiguar con precisión el límite exacto de los objetos en la imagen.

Fuente http://cs224d.stanford.edu/index.html

En este artículo, analizaremos este concepto de segmentación de imágenes, discutiremos los casos de uso relevantes, las diferentes arquitecturas de redes neuronales involucradas en el logro de los resultados, las métricas y los conjuntos de datos a explorar.

¿Qué es la segmentación de imágenes?

Sabemos que una imagen no es más que una colección de píxeles. La segmentación de imágenes es el proceso de clasificar cada píxel en una imagen que pertenece a una determinada clase y, por lo tanto, puede considerarse como un problema de clasificación por píxel. Hay dos tipos de técnicas de segmentación

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Segmentación semántica : - La segmentación semántica es el proceso de clasificar cada píxel que pertenece a una etiqueta en particular. No es diferente en diferentes instancias del mismo objeto. Por ejemplo, si hay 2 gatos en una imagen, la segmentación semántica da la misma etiqueta a todos los píxeles de ambos gatos.
  2. Segmentación de instancias : - La segmentación de instancias difiere de la segmentación semántica en el sentido de que otorga una etiqueta única a cada instancia de un objeto particular en la imagen. Como se puede ver en la imagen de arriba, a los 3 perros se les asignan colores diferentes, es decir, etiquetas diferentes. Con la segmentación semántica a todos se les habría asignado el mismo color.

Así que ahora llegaremos al punto en el que necesitaríamos este tipo de algoritmo

Casos de uso de segmentación de imágenes

Reconocimiento de escritura a mano : - Junjo et todos demostraron cómo se utiliza la segmentación semántica para extraer palabras y líneas de documentos escritos a mano en su Documento de investigación de 2019 reconocer caracteres escritos a mano

Fuente

Modo retrato de Google : - Hay muchos casos de uso en los que es absolutamente esencial separar el primer plano del fondo. Por ejemplo, en el modo retrato de Google, podemos ver el fondo borroso mientras que el primer plano permanece sin cambios para dar un efecto genial.

Fuente: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Historias de YouTube : - Google lanzó recientemente una función de historias de YouTube para que los creadores de contenido muestren diferentes antecedentes mientras crean historias.

Fuente: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Maquillaje virtual : - Aplicar lápiz labial virtual ahora es posible con la ayuda de la segmentación de imágenes

Fuente: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4.prueba virtual : - La prueba virtual de ropa es una característica interesante que estaba disponible en las tiendas utilizando hardware especializado que crea un modelo 3D. Pero con el aprendizaje profundo y la segmentación de imágenes, se puede obtener lo mismo utilizando solo una imagen 2d.

Fuente: - https://arxiv.org/pdf/1807.07688.pdf

Búsqueda de imágenes visuales : - La idea de segmentar la ropa también se utiliza en algoritmos de recuperación de imágenes en el comercio electrónico. Por ejemplo, Pinterest / Amazon le permite cargar cualquier imagen y obtener productos relacionados con un aspecto similar haciendo una búsqueda de imágenes basada en segmentar la parte de la tela

Fuente: - https://github.com/paucarre/tiefvision

Autos sin conductor : - Los coches autónomos necesitan una comprensión completa de su entorno a un nivel de píxel perfecto. Por lo tanto, la segmentación de imágenes se utiliza para identificar carriles y otra información necesaria.

Fuente: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets ayuda a las empresas de Fortune 500 a permitir mejores experiencias de los clientes a escala mediante la segmentación semántica.

Métodos y Técnicas

Antes del advenimiento del aprendizaje profundo, se usaban técnicas clásicas de aprendizaje automático como SVM, Random Forest, K-means Clustering para resolver el problema de la segmentación de imágenes. Pero al igual que con la mayoría de las declaraciones de problemas relacionados con la imagen, el aprendizaje profundo ha funcionado mejor que las técnicas existentes y se ha convertido en una norma ahora cuando se trata de segmentación semántica. Repasemos las técnicas que se están utilizando para resolver el problema.

Red totalmente convolucional

La arquitectura general de una CNN consta de pocas capas convolucionales y agrupadas seguidas de pocas capas completamente conectadas al final. El artículo de Fully Convolutional Network publicado en 2014 sostiene que se puede pensar que la capa final completamente conectada hace una convolución 1 × 1 que cubre toda la región.

Fuente: - https://arxiv.org/abs/1411.4038

Por lo tanto, las capas densas finales se pueden reemplazar por una capa de convolución logrando el mismo resultado. Pero ahora la ventaja de hacer esto es que el tamaño de la entrada ya no necesita arreglarse. Cuando se involucran capas densas, el tamaño de la entrada está restringido y, por lo tanto, cuando se debe proporcionar una entrada de diferente tamaño, se debe cambiar el tamaño. Pero al reemplazar una capa densa con convolución, esta restricción no existe.

Además, cuando se proporciona un tamaño de imagen más grande como entrada, la salida producida será un mapa de características y no solo una salida de clase como para una imagen de tamaño de entrada normal. Además, el comportamiento observado del mapa de características final representa el mapa de calor de la clase requerida, es decir, la posición del objeto se resalta en el mapa de características. Dado que la salida del mapa de características es un mapa de calor del objeto requerido, es información válida para nuestro caso de uso de segmentación.

Dado que el mapa de características obtenido en la capa de salida es una muestra descendente debido al conjunto de convoluciones realizadas, querríamos aumentar la muestra utilizando una técnica de interpolación. El muestreo ascendente bilineal funciona, pero el artículo propone el uso de muestreo ascendente aprendido con deconvolución, que incluso puede aprender un muestreo ascendente no lineal.

La parte de muestreo descendente de la red se llama codificador y la parte de muestreo ascendente se llama decodificador. Este es un patrón que veremos en muchas arquitecturas, es decir, reducir el tamaño con codificador y luego aumentar el muestreo con decodificador. En un mundo ideal, no querríamos reducir la muestra mediante la combinación y mantener el mismo tamaño en todo momento, pero eso conduciría a una gran cantidad de parámetros y sería computacionalmente inviable.

Fuente: - https://arxiv.org/abs/1411.4038

Aunque los resultados obtenidos han sido decentes, los resultados observados son toscos y no uniformes. La razón de esto es la pérdida de información en la capa de entidades final debido a la reducción de resolución de 32 veces utilizando capas de convolución. Ahora se vuelve muy difícil para la red hacer un upsampling 32x usando esta pequeña información. Esta arquitectura se llama FCN-32

Para abordar este problema, el documento propuso otras 2 arquitecturas FCN-16, FCN-8. En FCN-16, la información de la capa de agrupación anterior se usa junto con el mapa de características final y, por lo tanto, ahora la tarea de la red es aprender un muestreo de 16x, que es mejor en comparación con FCN-32. FCN-8 intenta mejorarlo aún más al incluir información de una capa de agrupación anterior más.

A

U-net se basa en la red totalmente convolucional desde arriba. Fue construido con fines médicos para encontrar tumores en los pulmones o el cerebro. También consta de un codificador que muestra la imagen de entrada a un mapa de características y el decodificador que muestra el mapa de características para ingresar el tamaño de la imagen utilizando capas de deconvolución aprendidas.

Fuente: - https://arxiv.org/abs/1505.04597

La principal contribución de la arquitectura U-Net son las conexiones de acceso directo. Vimos anteriormente en FCN que, dado que tomamos una muestra de una imagen como parte del codificador, perdimos mucha información que no se puede recuperar fácilmente en la parte del codificador. FCN intenta abordar esto tomando información de las capas agrupadas antes de la capa de características final.

U-Net propone un nuevo enfoque para resolver este problema de pérdida de información. Propone enviar información a cada capa de muestreo ascendente en el decodificador desde la capa de muestreo descendente correspondiente en el codificador, como se puede ver en la figura anterior, capturando así información más fina y manteniendo el cálculo bajo. Dado que las capas al comienzo del codificador tendrían más información, reforzarían la operación de muestreo ascendente del decodificador proporcionando detalles finos correspondientes a las imágenes de entrada, mejorando así mucho los resultados. El documento también sugirió el uso de una función de pérdida novedosa que discutiremos a continuación.

Laboratorio profundo

Deeplab de un grupo de investigadores de Google ha propuesto una multitud de técnicas para mejorar los resultados existentes y obtener resultados más finos a menores costos computacionales. Las 3 principales mejoras sugeridas como parte de la investigación son

1) convoluciones atroces
2) Atroz agrupación piramidal espacial
3) Uso de campos aleatorios condicionales para mejorar el resultado final
Discutamos sobre todos estos

Convolución atroz

Uno de los principales problemas con el enfoque FCN es la reducción excesiva debido a las operaciones de agrupación consecutivas. Debido a la serie de agrupaciones, la imagen de entrada se muestra hacia abajo en 32x, que nuevamente se muestra hacia arriba para obtener el resultado de segmentación. La reducción de resolución en 32x da como resultado una pérdida de información que es muy importante para obtener resultados precisos en una tarea de segmentación. Además, la desconvolución para aumentar la muestra en 32x es una operación costosa de cálculo y memoria, ya que hay parámetros adicionales involucrados en la formación de un muestreo aprendido.

El artículo propone el uso de la convolución Atrous o la convolución del agujero o la convolución dilatada que ayuda a comprender el contexto grande utilizando el mismo número de parámetros.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

La convolución dilatada funciona aumentando el tamaño del filtro agregando ceros (llamados agujeros) para llenar el espacio entre los parámetros. El número de agujeros / ceros rellenados entre los parámetros del filtro se llama mediante un término tasa de dilatación. Cuando la tasa es igual a 1, no es más que la convolución normal. Cuando la tasa es igual a 2, se inserta un cero entre todos los demás parámetros, lo que hace que el filtro parezca una convolución de 5 × 5. Ahora tiene la capacidad de obtener el contexto de convolución de 5 × 5 mientras tiene parámetros de convolución de 3 × 3. De manera similar, para la tasa 3, el campo receptivo va a 7 × 7.

En Deeplab, las últimas capas de agrupación se reemplazan para tener un paso 1 en lugar de 2, lo que mantiene la tasa de muestreo descendente a solo 8x. Luego se aplica una serie de convoluciones atroces para capturar el contexto más amplio. Para el entrenamiento, la máscara etiquetada de salida se muestra hacia abajo en 8x para comparar cada píxel. Para la inferencia, el muestreo ascendente bilineal se utiliza para producir una salida del mismo tamaño que da resultados lo suficientemente decentes a costos computacionales / de memoria más bajos, ya que el muestreo ascendente bilineal no necesita ningún parámetro a diferencia de la deconvolución para el muestreo ascendente.

ÁSPID

La agrupación piramidal espacial es un concepto introducido en SPPNet para capturar información de múltiples escalas de un mapa de características. Antes de la introducción de SPP, se suministran imágenes de entrada a diferentes resoluciones y los mapas de características calculados se utilizan juntos para obtener la información de múltiples escalas, pero esto requiere más tiempo y cálculos. Con Spatial Pyramidal Pooling se puede capturar información de múltiples escalas con una sola imagen de entrada.

Fuente: - http://kaiminghe.com/eccv14sppnet/index.html

Con el módulo SPP, la red produce 3 salidas de dimensiones 1 × 1 (es decir, GAP), 2 × 2 y 4 × 4. Estos valores se concatenan convirtiéndolos en un vector 1d, capturando así información a múltiples escalas. Otra ventaja de utilizar SPP es que se pueden proporcionar imágenes de entrada de cualquier tamaño.

ASPP toma el concepto de fusionar información de diferentes escalas y lo aplica a las convoluciones de Atrous. La entrada se convoluciona con diferentes velocidades de dilatación y las salidas de estas se fusionan.

Fuente: - http://liangchiehchen.com/projects/DeepLab.html

Como se puede observar la entrada se convoluciona con filtros de 3 × 3 de tasas de dilatación 6, 12, 18 y 24 y las salidas se concatenan entre sí ya que son del mismo tamaño. También se agrega una salida de convolución 1 × 1 a la salida fusionada. Para proporcionar también la información global, la salida GAP también se agrega a lo anterior después del muestreo ascendente. La salida fusionada de 3 × 3 salidas dilatadas variadas, 1 × 1 y salida GAP se pasa a través de convolución 1 × 1 para llegar al número requerido de canales.

Dado que la imagen requerida para segmentar puede ser de cualquier tamaño en la entrada, la información de múltiples escalas de ASPP ayuda a mejorar los resultados.

Mejora de la producción con CRF

La agrupación es una operación que ayuda a reducir el número de parámetros en una red neuronal, pero también trae consigo una propiedad de invariancia. La invariancia es la calidad de una red neuronal que no se ve afectada por ligeras traducciones en la entrada. Debido a esta propiedad obtenida con la agrupación, la salida de segmentación obtenida por una red neuronal es aproximada y los límites no están definidos de manera concreta.

Fuente: - http://liangchiehchen.com/projects/DeepLab.html

Para hacer frente a esto, el artículo propone el uso del modelo gráfico CRF. El campo aleatorio condicional opera un paso de posprocesamiento e intenta mejorar los resultados producidos para definir los límites del modelador. Funciona clasificando un píxel en función no solo de su etiqueta, sino también de otras etiquetas de píxeles. Como se puede ver en la figura anterior, el límite grueso producido por la red neuronal se vuelve más refinado después de pasar por CRF.

Deeplab-v3 introdujo la normalización por lotes y sugirió la tasa de dilatación multiplicada por (1,2,4) dentro de cada capa en un bloque Resnet. También se propuso agregar características de nivel de imagen al módulo ASPP que se discutió en la discusión anterior sobre ASPP como parte de este documento

Fuente: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + sugirió tener un decodificador en lugar de un simple muestreo bilineal hasta 16x. El decodificador toma una pista del decodificador utilizado por arquitecturas como U-Net que toma información de las capas del codificador para mejorar los resultados. La salida del codificador se muestrea 4x utilizando un muestreo ascendente bilineal y se concatena con las características del codificador, que nuevamente se muestrea 4x después de realizar una convolución 3 × 3. Este enfoque produce mejores resultados que un muestreo directo de hasta 16 veces. También se propone usar la arquitectura Xception modificada en lugar de Resnet como parte del codificador y ahora se usan convoluciones separables en profundidad sobre las convoluciones Atrous para reducir el número de cálculos.

Red de convolución global

Fuente: - https://arxiv.org/pdf/1703.02719.pdf

La segmentación semántica implica realizar dos tareas al mismo tiempo

i) Clasificación
ii) Localización

Las redes de clasificación se crean para ser invariantes a la traducción y la rotación, por lo que no dan importancia a la información de ubicación, mientras que la localización implica obtener detalles precisos de la ubicación. Por tanto, estas dos tareas son intrínsecamente contradictorias. La mayoría de los algoritmos de segmentación dan más importancia a la localización, es decir, la segunda en la figura anterior y, por lo tanto, pierden de vista el contexto global. En este trabajo el autor propone una manera de dar importancia a la tarea de clasificación también sin perder la información de localización.

Fuente: - https://arxiv.org/pdf/1703.02719.pdf

El autor propone lograr esto mediante el uso de núcleos grandes como parte de la red, lo que permite conexiones densas y, por lo tanto, más información. Esto se logra con la ayuda de un bloque GCN como se puede ver en la figura anterior. El bloque GCN se puede considerar como un filtro de convolución akxk donde k puede ser un número mayor que 3. Para reducir el número de parámetros, el filtro akxk se divide en 1 xk y kx 1, kx1 y 1xk bloques que luego se suman. Así, al incrementar el valor k, se captura un contexto más amplio.

Además, el autor propone un bloque de Refinamiento de Límites que es similar a un bloque residual visto en Resnet que consiste en una conexión de acceso directo y una conexión residual que se resumen para obtener el resultado. Se observa que tener un bloque de Refinamiento de límites resultó en la mejora de los resultados en el límite de la segmentación.

Los resultados mostraron que el bloque GCN mejoró la precisión de clasificación de los píxeles más cercanos al centro del objeto, lo que indica la mejora causada por la captura del contexto de largo alcance, mientras que el bloque de Refinamiento de límites ayudó a mejorar la precisión de los píxeles más cercanos al límite.

Vea más de una vez: KSAC para segmentación semántica

La familia Deeplab usa ASPP para tener múltiples campos receptivos que capturan información usando diferentes tasas de convolución atroces. Aunque ASPP ha sido significativamente útil para mejorar la segmentación de resultados, existen algunos problemas inherentes causados ​​por la arquitectura. No hay información compartida entre las diferentes capas paralelas en ASPP, lo que afecta el poder de generalización de los núcleos en cada capa. Además, dado que cada capa se adapta a diferentes conjuntos de muestras de entrenamiento (objetos más pequeños a tasas atroces más pequeñas y objetos más grandes a tasas atroces más grandes), la cantidad de datos para cada capa paralela sería menor, lo que afectaría la generalización general. Además, el número de parámetros en la red aumenta linealmente con el número de parámetros y, por lo tanto, puede provocar un sobreajuste.

Fuente: - https://arxiv.org/pdf/1908.09443.pdf

Para manejar todos estos problemas, el autor propone una estructura de red novedosa llamada Kernel-Sharing Atrous Convolution (KSAC). Como se puede ver en la figura anterior, en lugar de tener un kernel diferente para cada capa paralela en ASPP, se comparte un solo kernel, mejorando así la capacidad de generalización de la red. Al usar KSAC en lugar de ASPP, el 62% de los parámetros se guardan cuando se usan tasas de dilatación de 6,12, 18 y XNUMX.

Otra ventaja de utilizar una estructura KSAC es que el número de parámetros es independiente del número de velocidades de dilatación utilizadas. Por lo tanto, podemos agregar tantas tarifas como sea posible sin aumentar el tamaño del modelo. ASPP da mejores resultados con tasas 6,12,18 pero la precisión disminuye con 6,12,18,24 indicando un posible sobreajuste. Pero la precisión de KSAC aún mejora considerablemente, lo que indica la capacidad de generalización mejorada.

Esta técnica de intercambio de kernel también se puede ver como un aumento en el espacio de características, ya que el mismo kernel se aplica en múltiples velocidades. De manera similar a cómo el aumento de entrada da mejores resultados, el aumento de características realizado en la red debería ayudar a mejorar la capacidad de representación de la red.

Segmentación de video

Para casos de uso como automóviles autónomos, robótica, etc., existe la necesidad de una segmentación en tiempo real en el video observado. Las arquitecturas discutidas hasta ahora están diseñadas para la precisión y no para la velocidad. Entonces, si se aplican por cuadro en un video, el resultado llegaría a una velocidad muy baja.

Además, en general, en un video hay mucha superposición en las escenas a través de cuadros consecutivos que podrían usarse para mejorar los resultados y la velocidad que no entrarán en la imagen si el análisis se realiza por cuadro. Usando estas señales, analicemos las arquitecturas que están diseñadas específicamente para videos.

STFCN

Spatio-Temporal FCN propone usar FCN junto con LSTM para hacer la segmentación de video. Ya sabemos cómo se puede utilizar FCN para extraer características para segmentar una imagen. Las LSTM son un tipo de redes neuronales que pueden capturar información secuencial a lo largo del tiempo. STFCN combina el poder de FCN con LSTM para capturar tanto la información espacial como la información temporal

Fuente: - https://arxiv.org/abs/1608.05971

Como puede verse en la figura anterior, STFCN consiste en un módulo espacio-temporal FCN seguido de deconvolución. El mapa de características producido por un FCN se envía al módulo espacio-temporal que también tiene una entrada del módulo del marco anterior. El módulo basado en estas dos entradas captura la información temporal además de la información espacial y la envía a través de la cual se muestrea hasta el tamaño original de la imagen utilizando una deconvolución similar a cómo se hace en FCN.

Dado que tanto FCN como LSTM trabajan juntos como parte de STFCN, la red se puede entrenar de extremo a extremo y supera los enfoques de segmentación de un solo cuadro. Hay enfoques similares donde LSTM es reemplazado por GRU pero el concepto es el mismo de capturar la información espacial y temporal.

CNN de vídeo semántico mediante deformación de la representación

Este artículo propone el uso de flujo óptico a través de marcos adyacentes como una entrada adicional para mejorar los resultados de la segmentación.

Fuente: - https://arxiv.org/abs/1708.03088

El enfoque sugerido se puede vincular a cualquier arquitectura estándar como un complemento. El ingrediente clave que está en juego es el módulo NetWarp. Para calcular el mapa de segmentación, se calcula el flujo óptico entre la trama actual y la trama anterior, es decir, Ft y se pasa a través de un FlowCNN para obtener Λ (Ft). Este proceso se llama Transformación de flujo. Este valor se pasa a través de un módulo warp que también toma como entrada el mapa de características de una capa intermedia calculada pasando por la red. Esto proporciona un mapa de características deformado que luego se combina con el mapa de características intermedio de la capa actual y toda la red se entrena de extremo a extremo. Esta arquitectura logró resultados SOTA en conjuntos de datos de referencia de video de CamVid y Cityscapes.

Convnets de relojería para la segmentación semántica de video

Este artículo propone mejorar la velocidad de ejecución de una red neuronal para la tarea de segmentación en videos aprovechando el hecho de que la información semántica en un video cambia lentamente en comparación con la información a nivel de píxel. Entonces, la información en las capas finales cambia a un ritmo mucho más lento en comparación con las capas iniciales. El papel sugiere diferentes momentos

Fuente: - https://arxiv.org/abs/1608.03609

La figura anterior representa la comparación de la tasa de cambio para un grupo de capas de nivel medio4 y una capa profunda fc7. A la izquierda vemos que, dado que hay muchos cambios en los fotogramas, ambas capas muestran un cambio, pero el cambio para pool4 es mayor. A la derecha vemos que no hay muchos cambios en los marcos. Por tanto, pool4 muestra un cambio marginal mientras que fc7 muestra un cambio casi nulo.

La investigación utiliza este concepto y sugiere que en los casos en que no hay mucho cambio en los marcos, no es necesario volver a calcular las características / salidas y se pueden usar los valores almacenados en caché del marco anterior. Dado que la tasa de cambio varía con las capas, se pueden configurar diferentes relojes para diferentes conjuntos de capas. Cuando el reloj marca, se calculan las nuevas salidas; de lo contrario, se utilizan los resultados almacenados en caché. La velocidad de los tics del reloj se puede fijar estáticamente o se puede aprender dinámicamente

Fuente: - https://arxiv.org/abs/1608.03609

Segmentación semántica de vídeo de baja latencia

Este documento mejora la discusión anterior al seleccionar de forma adaptativa los marcos para calcular el mapa de segmentación o para usar el resultado en caché en lugar de usar un temporizador fijo o una heurística.

Fuente: - https://arxiv.org/abs/1804.00389

El documento propone dividir la red en 2 partes, características de bajo nivel y características de alto nivel. El costo de computar características de bajo nivel en una red es mucho menor en comparación con las características superiores. La investigación sugiere utilizar las características de la red de bajo nivel como indicador del cambio en el mapa de segmentación. En sus observaciones, encontraron una fuerte correlación entre el cambio de características de bajo nivel y el cambio del mapa de segmentación. Por lo tanto, para comprender si es necesario calcular si es necesario calcular las características más altas, se encuentra la diferencia de características más bajas en 2 fotogramas y se compara si cruza un umbral en particular. Todo este proceso está automatizado por una pequeña red neuronal cuya tarea es tomar las características inferiores de dos fotogramas y dar una predicción de si las características superiores deben calcularse o no. Dado que la decisión de la red se basa en las tramas de entrada, la decisión tomada es dinámica en comparación con el enfoque anterior.

Segmentación para nubes de puntos

Los datos que provienen de un sensor como LIDAR se almacenan en un formato llamado Nube de puntos. La nube de puntos no es más que una colección de un conjunto desordenado de puntos de datos 3D (o cualquier dimensión). Es una representación escasa de la escena en 3D y CNN no se puede aplicar directamente en tal caso. Además, cualquier arquitectura diseñada para tratar con nubes de puntos debe tener en cuenta que es un conjunto desordenado y, por lo tanto, puede tener muchas permutaciones posibles. Por tanto, la red debe ser invariante a la permutación. Además, los puntos definidos en la nube de puntos se pueden describir por la distancia entre ellos. Por lo tanto, los puntos más cercanos en general contienen información útil que es útil para las tareas de segmentación.

PuntoNet

PointNet es un artículo importante en la historia de la investigación sobre nubes de puntos que utiliza el aprendizaje profundo para resolver las tareas de clasificación y segmentación. Estudiemos la arquitectura de Pointnet

Fuente: - https://arxiv.org/abs/1612.00593

La entrada de la red para n puntos es una matriz de nx 3. La matriz nx 3 se asigna a nx 64 usando una capa compartida de múltiples perceptrones (red completamente conectada) que luego se asigna a nx 64 y luego a nx 128 y nx 1024. La agrupación máxima se aplica para obtener un vector 1024 que se convierte en k salidas pasando a través de MLP con tamaños 512, 256 y k. Finalmente, las salidas de clase k se producen de manera similar a cualquier red de clasificación.

La clasificación se ocupa solo de las características globales, pero la segmentación también necesita características locales. Por lo tanto, las características locales de la capa intermedia en nx 64 se concatenan con características globales para obtener una matriz ans 1088 que se envía a través de mlp de 512 y 256 para llegar a nx 256 y luego a través de MLP de 128 y m para dar m clases de salida para cada punto en la nube de puntos.

Además, la red implica una transformación de entrada y una transformación de características como parte de la red cuya tarea es no cambiar la forma de la entrada, sino añadir invariancia a las transformaciones afines, es decir, traslación, rotación, etc.

CNN

Fuente: - https://arxiv.org/abs/1904.08017

A-CNN propone el uso de convoluciones anulares para capturar información espacial. Sabemos por CNN que las operaciones de convolución capturan la información local, que es esencial para comprender la imagen. A-CNN ideó una nueva convolución llamada convolución anular que se aplica a los puntos vecinos en una nube de puntos.

La arquitectura toma como entrada nx 3 puntos y encuentra normales para ellos que se utilizan para ordenar los puntos. Se toma una submuestra de puntos utilizando el algoritmo FPS que da como resultado ni x 3 puntos. Sobre estas circunvoluciones anulares se aplica para aumentar a 128 dimensiones. La convolución anular se realiza en los puntos vecinos que se determinan mediante un algoritmo KNN.

Se realiza otro conjunto de las operaciones anteriores para aumentar las dimensiones a 256. Luego se aplica un mlp para cambiar las dimensiones a 1024 y se aplica la agrupación para obtener un vector global 1024 similar a la nube de puntos. Toda esta parte se considera el codificador. Para la clasificación, la salida global del codificador se pasa a través de mlp para obtener salidas de clase c. Para la tarea de segmentación, tanto las características globales como locales se consideran similares a PointCNN y luego se pasan a través de un MLP para obtener salidas de clase m para cada punto.

Métrica

Analicemos las métricas que se utilizan generalmente para comprender y evaluar los resultados de un modelo.

Precisión de píxeles

La precisión de píxeles es la métrica más básica que se puede utilizar para validar los resultados. La precisión se obtiene tomando la proporción de píxeles clasificados correctamente con el total de píxeles

Precisión = (TP + TN) / (TP + TN + FP + FN)

La principal desventaja de utilizar esta técnica es que el resultado puede verse bien si una clase domina a la otra. Digamos, por ejemplo, que la clase de fondo cubre el 90% de la imagen de entrada, podemos obtener una precisión del 90% simplemente clasificando cada píxel como fondo

Intersección sobre Unión

IOU se define como la relación de intersección de la verdad del terreno y los resultados de segmentación pronosticados sobre su unión. Si estamos calculando para múltiples clases, se calcula el IOU de cada clase y se toma su media. Es una mejor métrica en comparación con la precisión de los píxeles, ya que si cada píxel se da como fondo en una entrada de 2 clases, el valor IOU es (90/100 + 0/100) / 2, es decir, 45% IOU, lo que da una mejor representación en comparación con 90. % exactitud.

Fuente: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

IOU ponderado en frecuencia

Esta es una extensión de los pagarés medios que discutimos y se usa para combatir el desequilibrio de clases. Si una clase domina la mayor parte de las imágenes de un conjunto de datos como, por ejemplo, el fondo, debe compararse con otras clases. Por lo tanto, en lugar de tomar la media de todos los resultados de la clase, se toma una media ponderada basada en la frecuencia de la región de la clase en el conjunto de datos.

Puntuación F1

La métrica que se usa popularmente en la clasificación F1 Score se puede utilizar para tareas de segmentación y para tratar el desequilibrio de clases.

Fuente: - https://en.wikipedia.org/wiki/F1_score

Precisión media

El área bajo la curva de Precisión - Recuperación para un umbral de IOU de umbral elegido en diferentes clases se utiliza para validar los resultados.

Funciones de pérdida

La función de pérdida se utiliza para guiar la red neuronal hacia la optimización. Analicemos algunas funciones de pérdida populares para la tarea de segmentación semántica.

Pérdida de entropía cruzada

El promedio simple de la pérdida de clasificación de entropía cruzada para cada píxel de la imagen se puede utilizar como función general. Pero esto nuevamente sufre debido al desequilibrio de clases que FCN propone rectificar utilizando pesos de clase.

UNet intenta mejorar esto dando más peso a los píxeles cerca del borde que son parte del límite en comparación con los píxeles internos, ya que esto hace que la red se enfoque más en identificar los bordes y no dé una salida gruesa.

Pérdida focal

La pérdida focal se diseñó para hacer que la red se centrara en ejemplos difíciles al dar más peso-edad y también para hacer frente al desequilibrio de clases extremo observado en los detectores de objetos de una sola etapa. Lo mismo se puede aplicar también en tareas de segmentación semántica.

Pérdida de dados

La función de dados no es más que puntuación F1. Esta función de pérdida intenta directamente optimizar la puntuación F1. De manera similar, la puntuación IOU directa también se puede usar para ejecutar la optimización

Pérdida de Tversky

Es una variante de la pérdida de dados que da diferente peso-edad a FN y FP

Distancia de Hausdorff

Es una técnica que se utiliza para medir la similitud entre los límites de la verdad fundamental y los predichos. Se calcula averiguando la distancia máxima desde cualquier punto en un límite hasta el punto más cercano en el otro. Reducir directamente la función de pérdida de límites es una tendencia reciente y se ha demostrado que ofrece mejores resultados, especialmente en casos de uso como la segmentación de imágenes médicas, donde la identificación del límite exacto juega un papel clave.

La ventaja de usar una pérdida de límite en comparación con una pérdida basada en la región como IOU o Dice Loss es que no se ve afectada por el desequilibrio de clases, ya que no se considera la región completa para la optimización, solo se considera el límite.

Fuente https://en.wikipedia.org/wiki/Hausdorff_distance

Los dos términos considerados aquí son para dos límites, es decir, la verdad del terreno y la predicción de salida.

Etiquetame :-

Herramienta de anotación de imágenes escrita en Python.
Admite anotaciones de polígono.
Código abierto y gratuito.
Se ejecuta en Windows, Mac, Ubuntu o mediante Anaconda, Docker
Enlace: - https://github.com/wkentaro/labelme

Fuente: - https://github.com/wkentaro/labelme

Herramienta de anotación de visión por computadora: -

Herramienta de anotación de video e imágenes desarrollada por Intel
Gratis y disponible en línea
Funciona en Windows, Mac y Ubuntu
Enlace: - https://github.com/opencv/cvat

Anotador de imágenes vgg: -

Herramienta gratuita de anotación de imágenes de código abierto
Página html simple <200 kb y se puede ejecutar sin conexión
Admite anotaciones de polígono y puntos.
Enlace: - https://github.com/ox-vgg/via

Fuente: - https://github.com/ox-vgg/via

Rectlabel: -

Herramienta de anotación pagada para Mac
Puede usar modelos básicos de AA para anotar previamente las imágenes
Admite polígonos, cubic-bezier, líneas y puntos
Enlace: - https://github.com/ryouchinsa/Rectlabel-support

Caja de etiquetas: -

Herramienta de anotación pagada
Admite la herramienta de lápiz para una anotación más rápida y precisa
Enlace: - https://labelbox.com/product/image-segmentation

Conjuntos de datos

Como parte de esta sección, analicemos varios conjuntos de datos populares y diversos disponibles en el público que se pueden usar para comenzar con la capacitación.

Contexto Pascal

Este conjunto de datos es una extensión del conjunto de datos de Pascal VOC 2010 y va más allá del conjunto de datos original al proporcionar anotaciones para toda la escena y tiene más de 400 clases de datos del mundo real.

Fuente: - https://cs.stanford.edu/~roozbeh/pascal-context/
Fuente: - https://cs.stanford.edu/~roozbeh/pascal-context/

Enlace: - https://cs.stanford.edu/~roozbeh/pascal-context/

Conjunto de datos COCO

El conjunto de datos de cosas de COCO tiene 164k imágenes del conjunto de datos de COCO original con anotaciones a nivel de píxeles y es un conjunto de datos de referencia común. Cubre 172 clases: 80 clases de cosas, 91 clases de cosas y 1 clase 'sin etiqueta'

Fuente: - http://cocodataset.org/#home

Enlace: - http://cocodataset.org/

Conjunto de datos de paisajes urbanos

Este conjunto de datos consta de verdades del terreno de segmentación para carreteras, carriles, vehículos y objetos en la carretera. El conjunto de datos contiene 30 clases y 50 ciudades recopiladas en diferentes condiciones ambientales y climáticas. También tiene un conjunto de datos de video de imágenes finamente anotadas que se pueden usar para la segmentación de videos. KITTI y CamVid son tipos similares de conjuntos de datos que se pueden utilizar para entrenar vehículos autónomos.

Fuente: - https://www.cityscapes-dataset.com/

Enlace: - https://www.cityscapes-dataset.com/

Lits conjunto de datos

El conjunto de datos se creó como parte de un desafío para identificar lesiones tumorales a partir de tomografías computarizadas del hígado. El conjunto de datos contiene 130 tomografías computarizadas de datos de entrenamiento y 70 tomografías computarizadas de datos de prueba.

Fuente: - https://competitions.codalab.org/competitions/17094

Enlace: - https://competitions.codalab.org/competitions/17094

Conjunto de datos de CCP

Cloth Co-Parsing es un conjunto de datos que se crea como parte de un artículo de investigación sobre el análisis conjunto de la ropa mediante el etiquetado y la segmentación conjunta de imágenes. El conjunto de datos contiene más de 1000 imágenes con anotaciones a nivel de píxel para un total de 59 etiquetas.

Fuente: - https://github.com/bearpaw/clothing-co-parsing

Fuente :- https://github.com/bearpaw/clothing-co-parsing

Conjunto de datos de Pratheepan

Un conjunto de datos creado para la tarea de segmentación de la piel basado en imágenes de Google que contiene 32 fotos de rostros y 46 fotos familiares.

Fuente: - http://cs-chan.com/downloads_skin_dataset.html

Enlace: - http://cs-chan.com/downloads_skin_dataset.html

Etiquetado de imágenes aéreas de Inria

Un conjunto de datos de mapas de segmentación aérea creados a partir de imágenes de dominio público. Tiene una cobertura de 810 km2 y tiene XNUMX clases edificable y no edificable.

Fuente: - https://project.inria.fr/aerialimagelabeling/
Fuente: - https://project.inria.fr/aerialimagelabeling/

Enlace: - https://project.inria.fr/aerialimagelabeling/

S3DIS

Este conjunto de datos contiene las nubes de puntos de seis partes interiores a gran escala en 3 edificios con más de 70000 imágenes.

Fuente: - http://buildingparser.stanford.edu/dataset.html

Enlace: - http://buildingparser.stanford.edu/dataset.html

Resumen

Hemos discutido una taxonomía de diferentes algoritmos que se pueden utilizar para resolver el caso de uso de la segmentación semántica ya sea en imágenes, videos o nubes de puntos y también sus contribuciones y limitaciones. También analizamos las formas de evaluar los resultados y los conjuntos de datos para comenzar. Esto debería proporcionar una comprensión completa de la segmentación semántica como tema en general.

Para obtener una lista de más recursos para la segmentación semántica, comience con https://github.com/mrgloom/awesome-semantic-segmentation.

OTRAS LECTURAS


Es posible que le interesen nuestras últimas publicaciones sobre:

Actualizar:
Se agregó más material de lectura.

Fuente: https://nanonets.com/blog/semantic-image-segmentation-2020/

Sello de tiempo:

Mas de IA y aprendizaje automático