ConvNeXt-te enseña cómo cambiar el modelo

1. Resumen

En 2020, Transformer se convirtió en un éxito en el campo de CV, y la propuesta de Google Vision Transformer (ViT)(Una imagen vale 16x16 palabras, imitando "Una imagen vale más que mil palabras"), simplemente cortaba la imagen en un parche de 16X16 y lo tiraba espalda intacta. En el Transformador de la PNL dinámica, el resultado resultó ser el mejor, y el rendimiento superó al CNN que se ha establecido durante muchos años. Lo más sorprendente es que no considera las características de la imagen en todo. ¿Cuál es la invariancia de traducción (Invarianza de traducción) de CNN y Localidad (Localidad) no se considera en absoluto. Simplemente coloque la imagen en un parche y tírela al Transformador. Es exactamente lo mismo que el método de procesamiento de Secuencia NLP, que una vez más interpreta "¡Todo lo que necesitas es atención!". Después de eso, apareció una gran cantidad de documentos basados ​​​​en Transformer en el campo CV. Por ejemplo, a mediados de 2021, Microsoft publicó un documento basado en Shift Window. El movimiento de la ventana es un poco como CNN, y el movimiento de la ventana puede promover adyacentes parches Swin TransformerLa interacción entre ellos también es una existencia de nivel Tubang. De esta manera, ¿la red neuronal convolucional realmente se desvanecerá del centro del escenario? Recién en enero de 2022, CNN lanzó un contraataque Jedi. A ConvNet for the 2020sEl artículo proponía ConvNeXt, que se basó en la exitosa experiencia de Vision Transformer y CNN para construir una red convolucional pura, cuyo rendimiento superó al alto (complejo) modelo avanzado basado en Transformer. ¡Redes convolucionales! Pero si observa detenidamente, parece que no hay una gran idea innovadora, solo un montón de trucos, utilizando la estructura y los métodos existentes para lograr la precisión de ImageNet Top-1.

Nombre del artículo: Una ConvNet para la década de 2020
Enlace de descarga del artículo: https://arxiv.org/abs/2201.03545

2. El proceso de evolución de ConvNext

La aparición de ConvNeXt demuestra que la estructura compleja de Transformer no es necesariamente necesaria. Solo la tecnología CNN original y la optimización de parámetros pueden lograr SOTA. ConvNeXt primero usa la red neuronal estándar ResNet-50 y moderniza su estrategia de capacitación basada en Vit. , y uso esto como línea de base. La siguiente figura muestra todos los puntos de optimización de ConvNeXt. Comienza con ResNet-50[4] o ResNet-200, seguido del diseño macro, convolución separable en profundidad (ResNeXt[5]), capa de cuello de botella inversa (MobileNet v2[6]) , gran núcleo de convolución y diseño detallado Estos cinco ángulos se basan en las ideas de Swin Transformer a su vez, y luego se entrenan y evalúan en ImageNet-1K, y finalmente obtienen la estructura central de ConvNeXt.

inserte la descripción de la imagen aquí

2.1 Técnica de entrenamiento

En ConvNeXt, su estrategia de optimización toma prestada de Swin-Transformer. Las estrategias de optimización específicas incluyen

  • El número de épocas de entrenamiento cambió de 90 a 300
  • Usando el optimizador AdamW
  • Tecnología de aumento de datos
  • esquema de regularización

Los parámetros detallados son los siguientes: inserte la descripción de la imagen aquíinserte la descripción de la imagen aquí

2.2 Diseño macro (macro diseño)

2.2.1 Relación de cómputo de etapa cambiante

En la red VGG, se propone dividir la red en múltiples estructuras de bloques de red. Cada bloque de red reduce la muestra del mapa de características a diferentes tamaños a través de una operación de agrupación. En la red VGG, el número de estructuras de capa de red de cada bloque de red es el mismo. Sin embargo, en la estructura de red ResNet-50 posterior, hay cuatro bloques de red en total, y cada bloque de red tiene una cantidad diferente de capas de red. En la red ResNet-50 original, la cantidad de bloques apilados por conv4_x (que es, etapa3) es el más grande. En ResNet50, como se muestra en la siguiente figura, la proporción del número de bloques apilados de la etapa 1 a la etapa 4 es (3, 4, 6, 3)aproximadamente 1:1:2:1, pero en Swin Transformer, por ejemplo, la proporción de Swin-T es 1:1:3:1y la proporción de Swin-L es 1:1:9:1. Obviamente, en Swin Transformer, la proporción de bloques de apilamiento de etapa 3 es mayor. (3, 4, 6, 3)Entonces, el autor ajustó la cantidad de pilas en ResNet50 (3, 3, 9, 3)para tener FLOP similares a Swin-T. Después de los ajustes, la tasa de precisión 78.8%aumentó de 79.4%. La siguiente figura es el diagrama de estructura de la red ResNet-50:inserte la descripción de la imagen aquí

2.2.2 Cambiando la raíz a “Patchify”

Para el conjunto de datos de ImageNet, generalmente usamos un tamaño de entrada de 224 × 224. Este tamaño es muy grande para los modelos basados ​​en transformadores como ViT. Por lo general, usan una convolución con un paso de 4 y un tamaño de 4. Remuestreado a 56 × 56. Debido a que el tamaño de paso y el tamaño de esta convolución son exactamente iguales, es otra convolución sin cobertura, o una convolución llamada Patchify. Esta parte se denomina capa en Swin-Transformer stem, que es una capa de reducción de resolución después de la entrada. En ConvNeXt, la capa Stem también es una operación de convolución con un tamaño de paso de 4 y un tamaño de 4. Esta operación aumenta la precisión del 79,4 % al 79,5 % y los GFLOP disminuyen del 4,5 al 4,4 %. También se ha señalado que el uso de convoluciones cubiertas (como convoluciones con un paso de 4 y un tamaño de kernel de 7) puede lograr un mejor rendimiento.

2.3 ResNeXt-ify (ResNeXt化)

Dado que la compensación FLOP/precisión de ResNeXt es mejor que la de ResNet, se hicieron algunas referencias, principalmente utilizando la convolución de grupo, que reemplazó la convolución de 3 × 3 con la convolución de grupo de 3 × 3. Esta operación cambió los GFLOP de 4.4 a 2.4, pero también disminuyó la precisión del 79,5% al ​​78,3%.
El principio rector de ResNeXt es "dividir más grupos y ampliar el ancho", por lo que este artículo usa directamente conv en profundidad, es decir, la cantidad de grupos es igual a la cantidad de canales de entrada. Esta tecnología se utilizó principalmente en redes ligeras como MobileNet para reducir la cantidad de cálculo. Pero aquí, el autor descubrió que debido a que cada núcleo de convolución procesa un canal por separado, esta forma es muy similar al mecanismo de autoatención, que es una ponderación mixta de información espacial en un solo canal. Reemplace la convolución 3x3 en el cuello de botella con dw conv. Para compensar la caída en la precisión, aumenta la cantidad de canales básicos de ResNet-50 de 64 a 96. Esta operación aumentó los GFLOP a 5,3, pero la precisión aumentó al 80,5%

2.4 Cuello de botella invertido (anti-cuello de botella)

El cuello de botella utilizado en ResNet estándar tiene la forma de (dimensión grande - dimensión pequeña - dimensión grande) para reducir la cantidad de cálculo. Posteriormente, se propuso la estructura de cuello de botella invertida en MobileNetV2, utilizando la forma de (dimensión pequeña - dimensión grande - dimensión pequeña), que se cree que permite que la información evite la pérdida de información causada por las dimensiones comprimidas al convertir entre diferentes espacios de características dimensionales. Más tarde en Transformador También se usa una estructura similar en MLP, es decir, el medio es grueso y los dos extremos son delgados, y la dimensión de la capa completamente conectada en la capa intermedia es 4 veces mayor que la de los dos extremos.

inserte la descripción de la imagen aquí

  • a es el módulo de cuello de botella utilizado en ResNet
  • b es el módulo cuello de botella invertido utilizado por MobileNetV2 (la última capa convolucional 1x1 en la figura b está mal dibujada, debería ser 384->96 y el autor la corregirá más adelante si la encuentra)
  • c es que ConvNeXt utiliza el módulo Cuello de botella invertido.

2.5 Tamaños de núcleo grandes (núcleo de convolución más grande)

En Swin-T se usa un kernel de convolución de tamaño 7✖️7, que también se usó antes en ConvNet, pero está apilado con 3✖️3, lo cual es bueno para la aceleración de GPU, por lo que el autor usa un kernel de convolución grande, aquí Usando 7*7, por supuesto, también probé otros tamaños, pero descubrí que estaba saturado cuando se llevó a 7, y debido a que la estructura Inverted BottleNeck se usó para agrandar la capa de convolución media, el reemplazo directo conduciría a un aumento en el número de parámetros, por lo que el autor ajustó la posición de la convolución DW y la colocó al comienzo del anti-cuello de botella. Los resultados finales son similares, lo que indica que el efecto es consistente bajo la misma cantidad de parámetro en 7x7.

2.6 Micro Diseño (micro diseño)

  • Replacing ReLU with GELU, la función de activación en Transformer básicamente usa GELU, y la más utilizada en la red neuronal convolucional es ReLU, por lo que el autor reemplazó la función de activación con GELU y descubrió que la tasa de precisión no ha cambiado después del reemplazo, principalmente para la comparación de alineación, porque Transformer tiene.
  • Fewer activation functions, utilizando menos funciones de activación. En una red neuronal convolucional, generalmente se conecta una función de activación después de cada capa convolucional o conexión completa. Sin embargo, no todos los módulos en Transformer van seguidos de una función de activación. Por ejemplo, en MLP, solo la primera capa totalmente conectada va seguida de una función de activación de GELU. Luego, el autor también redujo el uso de la función de activación en el Bloque ConvNeXt, como se muestra en la figura a continuación, luego de la reducción, se encontró que la tasa de precisión aumentó de 80.6% a 81.3%.
    inserte la descripción de la imagen aquí
  • Fewer normalization layers, use menos Normalización. También en Transformer, la Normalización se usa menos, y luego el autor también redujo la capa de Normalización en ConvNeXt Block, y solo mantuvo la capa de Normalización después de la conversión en profundidad. En este momento, la tasa de precisión ha alcanzado el 81,4 %, superando a Swin-T.
  • Substituting BN with LN, reemplace BN con LN. La normalización por lotes (BN) es una operación muy común en las redes neuronales convolucionales que puede acelerar la convergencia de la red y reducir el sobreajuste (pero también es un gran problema si no se usa bien). Pero la normalización de capas (LN) se usa básicamente en Transformer, porque Transformer se aplicó originalmente en el campo NLP y BN no es adecuado para tareas relacionadas con NLP. Luego, el autor reemplazó todos los BN con LN y descubrió que la tasa de precisión mejoró ligeramente al 81,5%.
  • Separate downsampling layers, una capa de reducción de resolución separada. En la red ResNet, la reducción de muestreo de etapa 2-etapa 4 se realiza configurando el tamaño de paso de capa convolucional 3x3 en la rama principal en 2 y configurando el tamaño de paso de capa convolucional 1x1 en la rama de acceso directo en 2 para reducción de resolución. Pero en Swin Transformer, se realiza a través de una fusión de parches por separado. Luego, el autor usó una capa de reducción de muestreo separada para la red ConvNext, que se compone de una normalización de Laryer más una capa convolucional con un tamaño de kernel de convolución de 2 y un tamaño de paso de 2. Después del cambio, la tasa de precisión aumentó al 82,0%.

2.7 Diagrama de estructura de ConvNeXt-T

inserte la descripción de la imagen aquí

3. Resumen

La aparición de ConvNeXt demuestra que la estructura compleja de Transformer no es necesariamente necesaria. Solo la tecnología CNN original y la optimización de parámetros pueden lograr SOTA. En el futuro campo CV, ¿quién dominará los altibajos de CNN y Transformer?

Referencia: Frijol mungo pequeño de Sunflower

おすすめ

転載: blog.csdn.net/m0_47005029/article/details/129529217