¿Cuál es la posición de fcn en una empresa extranjera?
fcn? es la abreviatura en inglés de redes totalmente convolucionales. Traducido como "red totalmente convolucional", la empresa extranjera fcn es una posición de programación de redes.
FCN clasifica imágenes a nivel de píxeles, resolviendo así el problema de la segmentación semántica. A diferencia de la CNN clásica que usa una capa completamente conectada después de la capa convolucional para obtener un vector de características de longitud fija para la clasificación (capa completamente conectada + salida softmax), FCN puede aceptar imágenes de entrada de cualquier tamaño y usa una capa de deconvolución para clasificar la última. capa convolucional. El mapa de características se aumenta para restaurarlo al mismo tamaño de la imagen de entrada, de modo que se pueda generar una predicción para cada píxel, mientras se conserva la información espacial en la imagen de entrada original. Finalmente, se realiza el mapa de características mejorado. uno por uno en el mapa de características muestreado.
Finalmente, la pérdida de clasificación softmax se calcula píxel a píxel, lo que equivale a que cada píxel corresponda a una muestra de entrenamiento. La siguiente figura es un diagrama estructural esquemático de la red totalmente convolucional (FCN) utilizada por Longjon para la segmentación semántica:
En pocas palabras, las áreas de FCN y CNN reemplazan la última capa completamente conectada de CNN con La capa convolucional genera una imagen etiquetada.
De hecho, el poder de CNN es que su estructura multicapa puede aprender características automáticamente y puede aprender características en múltiples niveles: la capa convolucional menos profunda tiene un campo de percepción más pequeño y puede aprender algunas características regionales. características; las capas convolucionales más profundas tienen un campo de percepción más grande y pueden aprender características más abstractas. Estas características abstractas son menos sensibles al tamaño, ubicación y orientación de los objetos, lo que ayuda a mejorar el rendimiento del reconocimiento. El siguiente es un diagrama esquemático de la red de clasificación CNN:
Estas características abstractas son muy útiles para la clasificación y pueden determinar qué tipos de objetos están contenidos en una imagen. Sin embargo, debido a que algunos detalles de los objetos lo son. perdido, No puede dar muy bien el contorno específico del objeto e indicar a qué objeto pertenece cada píxel, por lo que es muy difícil lograr una segmentación precisa.
Método de segmentación tradicional basado en CNN: para clasificar un píxel, se utiliza un parche de imagen alrededor del píxel como entrada de la CNN para entrenamiento y predicción. Este método tiene varias desventajas: Primero, la sobrecarga de almacenamiento es alta. Por ejemplo, el tamaño del bloque de imagen utilizado para cada píxel es 15x15, y luego la ventana se desliza continuamente. Cada ventana deslizante se utiliza para la clasificación por parte de CNN. Por lo tanto, el espacio de almacenamiento requerido aumenta considerablemente según el número y el tamaño de. la ventana corredera. El segundo es la baja eficiencia computacional. Los bloques de píxeles adyacentes se repiten básicamente y la convolución se calcula uno por uno para cada bloque de píxeles. Este cálculo también se repite en gran medida. En tercer lugar, el tamaño del bloque de píxeles limita el tamaño del área de detección. Por lo general, el tamaño del bloque de píxeles es mucho más pequeño que el tamaño de la imagen completa y solo se pueden extraer algunas características locales, lo que da como resultado un rendimiento de clasificación limitado.
La red totalmente convolucional (FCN) recupera la categoría a la que pertenece cada píxel a partir de características abstractas. Es decir, la clasificación desde el nivel de imagen se extiende aún más a la clasificación a nivel de píxel.
Capa completamente conectada -> capa convolucional
La única diferencia entre una capa completamente conectada y una capa convolucional es que las neuronas en la capa convolucional solo están conectadas a uno de los datos de entrada Las regiones locales están conectadas y las neuronas de la columna de convolución comparten parámetros. Sin embargo, en ambos tipos de capas, las neuronas calculan productos escalares, por lo que sus formas funcionales son las mismas. Por lo tanto, es posible convertir las dos entre sí:
Para cualquier capa convolucional, existe una capa completamente conectada que puede lograr la misma función de propagación directa que ella. La matriz de peso es una matriz enorme con todos ceros excepto algunos bloques específicos. Y en la mayoría de estos bloques los elementos son iguales.
Por el contrario, cualquier capa completamente conectada se puede convertir en una capa convolucional. Por ejemplo, para una capa completamente conectada con K = 4096, el tamaño del volumen de datos de entrada es 7 × 7 × 521. Esta capa completamente conectada puede considerarse equivalente como una capa completamente conectada con F = 7, P = 0, S. =1. , capa convolucional con K=4096?. En otras palabras, el tamaño del filtro se establece para que sea coherente con el tamaño del volumen de datos de entrada. Debido a que solo hay una columna de profundidad que cubre y se desliza a través del volumen de datos de entrada, la salida será ?1 × 1 × 4096, que es lo mismo que usar la capa original completamente conectada.
Convertir una capa completamente conectada en una capa convolucional: entre las dos transformaciones, convertir una capa completamente conectada en una capa convolucional es más útil en aplicaciones prácticas. Suponiendo que la entrada de una red neuronal convolucional es una imagen de 224x224x3, una serie de capas convolucionales y capas de reducción de resolución convierten los datos de la imagen en un volumen de datos de activación de tamaño 7x7x512. AlexNet utiliza dos capas completamente conectadas de tamaño 4096, y la última capa completamente conectada con 1000 neuronas se usa para calcular la puntuación de clasificación. Podemos convertir cualquiera de estas tres capas completamente conectadas en una capa convolucional:
Para la capa completamente conectada cuya primera área de conexión es [7x7x512], sea su tamaño de filtro F=7, por lo que el cuerpo de datos de salida es [1x1x4096].
Para la segunda capa completamente conectada, deje que su tamaño de filtro sea F=1, por lo que el volumen de datos de salida es [1x1x4096].
Haga algo similar a la última capa completamente conectada, sea F = 1, y el resultado final es [1x1x1000]
En la operación real, cada transformación requiere todos los pesos W. de la capa de conexión se transforman en los filtros de la capa convolucional. Entonces, ¿qué hace tal transformación? Puede ser más eficiente si la red convolucional se desliza sobre una imagen de entrada más grande para obtener múltiples salidas. Esta transformación nos permite completar las operaciones anteriores en un solo paso hacia adelante.
Por ejemplo: si queremos que una ventana flotante de tamaño 224 × 224 se deslice sobre una imagen de 384 × 384 con un tamaño de paso de 32, traiga cada posición de parada a la red convolucional y finalmente obtenga la Puntuación de categoría de 6×6 posiciones. El método anterior para convertir la capa completamente conectada en una capa convolucional será más simple. Si la imagen de entrada de 224 × 224 pasa a través de la capa de convolución y la capa de reducción de resolución y obtiene una matriz de [7x7x512], entonces la imagen grande de 384 × 384 obtendrá la matriz [12x12x512] directamente después de pasar por la misma capa de convolución y capa de reducción de resolución. matriz. Luego, a través de las tres capas convolucionales convertidas a partir de las tres capas completamente conectadas anteriores, finalmente se obtiene la salida de [6x6x1000] ((12 – 7)/1 + 1 = 6). ¡Este resultado es exactamente la puntuación de la ventana flotante en las posiciones de 6×6 donde se detuvo la imagen original!
Frente a una imagen de 384 × 384, deje que la red neuronal convolucional inicial (incluida la capa completamente conectada) evalúe de forma independiente los bloques de 224 × 224 en la imagen varias veces con un tamaño de paso de 32 píxeles. Es lo mismo que utilizar una red neuronal convolucional que transforma una capa completamente conectada en una capa convolucional para realizar una propagación hacia adelante.
Evaluar la ConvNet original (con capas FC) de forma independiente en recortes de 224x224 de la imagen de 384x384 en pasos de 32 píxeles da un resultado idéntico al reenviar la ConvNet convertida una vez.
Como se muestra A continuación, como se muestra, FCN convierte la capa completamente conectada en la CNN tradicional en una capa convolucional, y la red CNN correspondiente FCN convierte las últimas tres capas completamente conectadas en tres capas convolucionales. En la estructura tradicional de CNN, las primeras cinco capas son capas convolucionales, la sexta y séptima capa son cada una un vector unidimensional con una longitud de 4096 y la octava capa es un vector unidimensional con una longitud de 1000, correspondiente a 1000 probabilidades de clases diferentes. FCN representa estas tres capas como capas convolucionales, y los tamaños de los núcleos de convolución (número de canales, ancho, alto) son (4096,1,1), (4096,1,1) y (1000,1,1). respectivamente. Parece que no hay diferencia en los números, pero la convolución y la conexión completa son conceptos y procesos de cálculo diferentes. Utilizan los pesos y sesgos que CNN ha entrenado antes, pero la diferencia es que los pesos y sesgos tienen los suyos propios. rango y su propio núcleo de convolución. Por lo tanto, todas las capas de la red FCN son capas convolucionales, por lo que se denomina red totalmente convolucional.
La imagen a continuación es una capa completamente convolucional. La diferencia con la imagen de arriba es el subíndice de tamaño correspondiente a la imagen. El tamaño de la imagen ingresado en CNN es una imagen que acepta ser fijada y redimensionada. 227x227 La primera capa de agrupación El tamaño de la imagen final es 55x55, el tamaño de la imagen después de la segunda capa de agrupación es 27x27 y el tamaño de la imagen después de la quinta capa de agrupación es 13*13. La imagen ingresada por FCN tiene un tamaño H * W. Después de la agrupación, la primera capa se convierte en 1/4 del tamaño de la imagen original, la segunda capa se convierte en 1/8 del tamaño de la imagen original y la quinta capa se convierte en 1/ del original. tamaño de la imagen 16. La octava capa se convierte en 1/32 del tamaño de la imagen original (Corrección: de hecho, la primera capa en el código real es 1/2, y así sucesivamente).
Después de múltiples convoluciones y agrupaciones, las imágenes obtenidas son cada vez más pequeñas y la resolución es cada vez menor. Cuando la imagen alcanza ?H/32?W/32?, cuando la imagen es la capa más pequeña, la imagen generada se denomina mapa de calor de mapa de calor. El mapa de calor es nuestro mapa de diagnóstico de alta dimensión más importante. Características de alta dimensión. El paso más importante y el último paso es aumentar la muestra de la imagen original, ampliarla, ampliarla y ampliarla al tamaño de la imagen original.
El resultado final son 1000 mapas de calor que se han muestreado al tamaño original. Para clasificar y predecir cada píxel en la imagen final que se ha segmentado semánticamente, aquí hay un pequeño truco, que es el. final Al encontrar la descripción numérica máxima (probabilidad) de la posición del píxel en 1000 imágenes píxel por píxel como clasificación del píxel. Como resultado, se genera una imagen clasificada, como la siguiente imagen con perros y gatos en el lado derecho.
muestreo ascendente
En comparación con el uso de la red neuronal convolucional original antes de transformarse para calcular iterativamente las 36 posiciones, el uso de la red neuronal convolucional transformada para realizar una propagación hacia adelante El cálculo es mucho más eficiente porque todos los 36 cálculos comparten los recursos informáticos. Esta técnica se utiliza a menudo en la práctica, una a la vez para obtener mejores resultados. Por ejemplo, una imagen generalmente aumenta su tamaño y luego la red neuronal convolucional transformada se usa para evaluar muchas ubicaciones diferentes en el espacio para obtener una puntuación de clasificación, y luego se calcula el promedio de estas puntuaciones.
Finalmente, ¿qué pasa si queremos utilizar una ventana flotante con un tamaño de paso inferior a 32? Esto se puede solucionar con múltiples propagaciones hacia adelante. Por ejemplo, queremos utilizar una ventana flotante con un tamaño de paso de 16. Luego, primero use la imagen original para realizar la propagación hacia adelante en la red convolucional convertida, y luego traduzca la imagen original en 16 píxeles a lo largo del ancho, a lo largo de la altura y finalmente a lo largo del ancho y la altura simultáneamente, y luego traduzca estas imágenes traducidas a una red convolucional.
Como se muestra en la figura siguiente, cuando la imagen se procesa en la red y se convierte en una imagen más pequeña, sus características se vuelven más obvias, como lo muestra el color de la imagen, por supuesto, la última capa. la imagen no es Entonces hay una imagen de 1 píxel, sino una imagen de la imagen original en tamaño H/32xW/32. Aquí se dibuja como un píxel para simplificar.
Como se muestra en la figura siguiente, la imagen original se reduce a 1/2 después de convolucionar conv1 y pool1; luego, la imagen se reduce a 1/4 después de realizar la segunda conv2 y pool2 en la imagen; luego continúe Realice la tercera operación de convolución conv3 y pool3 en la imagen para reducirla a 1/8 de la imagen original. En este momento, se conserva el mapa de características de pool3 y luego continúe realizando la cuarta operación de convolución conv4 y pool4 en la imagen. para reducirlo a 1/8 de la imagen original 16. Mantenga el mapa de características de pool4, finalmente realice las quintas operaciones de convolución conv5 y pool5 en la imagen, reduciéndola a 1/32 de la imagen original, y luego cambie la conexión completa. en la operación CNN original en las operaciones de convolución conv6 y conv7, y la imagen El número de featureMap cambia pero el tamaño de la imagen sigue siendo 1/32 de la imagen original. En este momento, la imagen ya no se llama featureMap sino heatMap.
Ahora tenemos un mapa de calor de tamaño 1/32, un mapa de características de tamaño 1/16 y un mapa de características de tamaño 1/8. Después de aumentar la muestra del mapa de calor de tamaño 1/32, la imagen restaurada mediante dicha operación es solo eso. es una característica en el núcleo de convolución en conv5. Debido al problema de precisión, no puede restaurar bien las características en la imagen, por lo que se repite aquí. Utilice el núcleo de convolución en conv4 para desconvolucionar la imagen después del último muestreo superior para agregar detalles (equivalente a un proceso de diferencia). Finalmente, use el núcleo de convolución en conv3 para desconvolucionar la imagen después del último muestreo adicional para agregar detalles. Finalmente, esto completa la restauración. de toda la imagen.
Desventajas
A lo que debemos prestar atención aquí son las deficiencias de FCN:
Los resultados obtenidos no son lo suficientemente precisos. Aunque el muestreo mejorado de 8x es mucho mejor que el de 32x, los resultados del muestreo aún son borrosos y fluidos, y no son sensibles a los detalles de la imagen.
Consiste en clasificar cada píxel sin considerar del todo la relación entre píxeles. El paso de regularización espacial utilizado en los métodos de segmentación basados en clasificación de píxeles comunes se ignora y carece de coherencia espacial.