Modelos de redes neuronales profundas que se ejecutan en teléfonos móviles - MobileNet
¿Prólogo?
Este artículo presenta principalmente el desarrollo de la red neuronal profunda de MobileNet.
Con el vigoroso desarrollo del aprendizaje profundo, los modelos de redes neuronales convolucionales están surgiendo sin cesar en el campo de la visión por computadora. Desde LeNet en 1998 hasta AlexNet, que desencadenó la moda del aprendizaje profundo en 2012, y más tarde hasta VGG en 2014 y ResNet en 2015, la aplicación de modelos de redes de aprendizaje profundo en el procesamiento de imágenes se ha vuelto cada vez más efectiva. Las redes neuronales son cada vez más grandes, sus estructuras se vuelven más complejas y los recursos de hardware necesarios para la predicción y el entrenamiento también aumentan gradualmente. Los modelos de redes neuronales de aprendizaje profundo a menudo solo pueden ejecutarse en servidores con alta potencia informática. Debido a las limitaciones en los recursos de hardware y la potencia informática, es difícil para los dispositivos móviles ejecutar modelos de red complejos de aprendizaje profundo.
El campo del aprendizaje profundo también está trabajando intensamente para promover la miniaturización de las redes neuronales. Más pequeño y más rápido manteniendo la precisión del modelo. Desde 2016, la industria ha propuesto modelos de redes ligeras como SqueezeNet, ShuffleNet, NasNet, MnasNet y MobileNet. Estos modelos permiten ejecutar modelos de redes neuronales en terminales móviles y dispositivos integrados. MobileNet es más representativo entre las redes neuronales ligeras.
Google lanzó el último MobileNetV3 en mayo de 2019. La nueva versión de MobileNet utiliza más funciones nuevas, lo que hace que MobileNet sea muy significativo en términos de investigación y análisis. Este artículo realizará un análisis detallado de MobileNet.
Ventajas de MobileNet
La red MobileNet tiene las características de tamaño pequeño, cantidad de cálculo baja y alta precisión. Tiene grandes ventajas en redes neuronales ligeras.
1
Tamaño pequeño
MobileNet tiene significativamente menos parámetros que las redes grandes tradicionales. Cuantos menos parámetros, menor es el tamaño del modelo.
2
Menos cálculos
MobileNet optimiza la estructura de la red, por lo que los cálculos del modelo disminuyen exponencialmente.
3
Mayor precisión
La estructura de red optimizada de MobileNet le permite superar algunas redes neuronales grandes con menos parámetros y esfuerzo computacional. En el último MobileNetV3-Large, logra una precisión Top1 de 75,2 en el conjunto de datos ImageNet.
4
Más rápido
Cuando se probaron en un teléfono móvil Google Pixel-1, todas las versiones de MobileNet funcionaron en menos de 120 ms, siendo la última versión el tiempo de ejecución. de MobileNetV3-Large es de 66 ms, mientras que el tiempo de ejecución de MobileNetV3-Small con menos parámetros y cálculos es de 22 ms. La última versión de MobileNetV3-Large tiene un tiempo de ejecución de 66 ms, MobileNetV3-Small tiene una menor cantidad de parámetros y cálculos y GoogleNet tiene un tiempo de ejecución de aproximadamente 250 ms, mientras que VGG-16 requiere más de 500 MB de espacio único para funcionar; cargar en la memoria. El sistema del teléfono móvil informa un error de desbordamiento de memoria y no puede ejecutarse.
5
Múltiples escenarios de aplicación
MobileNet se puede utilizar en terminales móviles para lograr la detección de objetivos, la clasificación de objetivos, el reconocimiento de atributos faciales y el reconocimiento facial, etc. .
Introducción a la versión MobileNet
1
Estructura de red MobileNetV1
La red completa no incluye la capa de agrupación promedio ni la capa softmax, una total de ** * 28 capas;
En toda la estructura de la red, la convolución con un tamaño de paso de 2 es más distintiva y la convolución desempeña el papel de reducción de resolución;
Después En la primera capa, hay 2 capas de convolución.
Las 26 capas después de la primera capa son operaciones de convolución repetidas, utilizando convolución separable en profundidad
Cada capa de convolución (incluida la convolución regular, la convolución de profundidad y la convolución puntual) van seguidas de un lote; normalización y función de activación ReLU;
La última capa completamente conectada no utiliza una función de activación.
2
Estructura de red MobileNetV2
Las estructuras principales introducidas por MobileNetV2 son la estructura de cuello de botella lineal y la estructura residual inversa.
El modelo de red MobileNetV2 tiene **** capas de cuello de botella (cada capa de cuello de botella contiene dos capas de convolución puntuales y una capa de convolución de profundidad), una capa de convolución estándar (conv), dos capas convolucionales puntuales (pw conv) y 54 capas de parámetros entrenables. MobileNetV2 utiliza cuellos de botella lineales y estructuras residuales invertidas para optimizar la red, haciendo que la red sea más profunda pero el modelo más pequeño y más rápido.
3
Arquitectura de red MobileNetV3
MobileNetV3 tiene dos versiones: grande y pequeña. La versión grande es adecuada para plataformas con mayor rendimiento informático y de almacenamiento, y la versión grande. versión pequeña Adecuado para plataformas con menor rendimiento de hardware.
La versión grande*** tiene 15 capas de cuello de botella, una capa convolucional estándar y tres capas convolucionales puntuales.
La versión pequeña*** tiene 12 capas de cuello de botella, una capa convolucional estándar y dos capas convolucionales puntuales.
MobileNetV3 introduce convoluciones de profundidad de 5 × 5 en lugar de convoluciones de profundidad parciales de 3 × 3. Para mejorar la precisión del modelo, se introducen el módulo de excitación por compresión (SE) y la función de activación h-swish (HS). La convolución puntual final de dos capas no utiliza la normalización por lotes (Batch Norm) y el logotipo de NBN se utiliza en el diagrama de estructura de MobileNetV3.
(Fuente de la imagen: https://arxiv.org/pdf/1905.02244.pdf)
Como se muestra en la figura anterior, al eliminar las tres capas superiores, la estructura de la red es en comparación con El final de MobileNetV2 ha sido optimizado. Después de la eliminación, la cantidad de cálculo y el número de parámetros se reducen, pero no se reduce la precisión del modelo.
Cabe señalar que tanto la versión grande como la pequeña utilizan tecnología de búsqueda de arquitectura neuronal (NAS) para generar estructuras de red.
4
Características de cada versión de MobileNet
MobileNet logra una alta precisión al tiempo que reduce la cantidad de cálculos y parámetros, gracias a las siguientes características:
Funciones propuestas por MobileNetV1
Funciones propuestas por MobileNetV2
Funciones introducidas por MobileNetV3
Resumen de funciones de cada versión de MobileNet
La siguiente sección presentará cada característica de la tabla anterior.
Detalles de la función MobileNet
1
Convolución separable en profundidad
A partir de MobileNetV1, la estructura de cuello de botella lineal de V2 y V3 se usa ampliamente Convolución separable en profundidad.
La convolución separable en profundidad es una estructura de convolución. Consiste en una capa de convolución profunda y una capa de convolución dirigida, cada capa de convolución va seguida de una normalización por lotes y una función de activación ReLU.
A diferencia de la convolución estándar, los parámetros y la cantidad de cálculo se reducen considerablemente, mientras que la precisión es básicamente la misma.
Convolución de profundidad
La convolución de profundidad (DW) es diferente de la convolución tradicional. En la convolución tradicional, un núcleo de convolución tiene solo una dimensión y es responsable de un canal convolucionado por un núcleo de convolución. ; en la convolución tradicional, cada núcleo de convolución tiene la misma dimensión que la entrada, cada canal se convoluciona por separado y luego se suma.
Tome una imagen en color de 5x5x3 (el largo y el ancho son 5 cada uno, canales RGB3) como ejemplo. El número de núcleos de convolución en cada capa de convolución profunda es el mismo que el número de canales en la capa anterior (los canales y los núcleos de convolución se corresponden entre sí). Establezca padding = 1, stride = 1, una imagen de tres canales genera tres mapas de características después de la operación, como se muestra en la siguiente figura:
Una vez completada la convolución profunda, el número de canales de la característica de salida mapa y la capa de entrada El número de canales es el mismo y el número de canales no se puede ampliar. Además, esta operación se realiza de forma independiente para cada canal de la capa de entrada y no puede utilizar eficazmente la información de características de diferentes canales en la misma posición espacial. Por lo tanto, se necesita convolución puntual para combinar los mapas de características generados para generar nuevos mapas de características.
Convolución puntual
La operación de convolución puntual (PW) es muy similar a la operación de convolución estándar.
El tamaño del núcleo de convolución de la convolución puntual es 1 × 1xM (M es la dimensión de los datos de entrada) y cada píxel de un área está convolucionada. La operación de convolución puntual combina los mapas de características de la capa anterior ponderados en la dirección de profundidad para generar un nuevo mapa de características con el mismo tamaño que los datos de entrada y luego se combinan para producir un nuevo mapa de características con; menos cálculos Realizar reducción o aumento de dimensionalidad (cambiar las dimensiones de los datos de salida).
Por ejemplo, utilice cuatro núcleos de convolución puntuales de 1x1x3 para convolucionar una imagen en color de 5x5x3 (el largo y el ancho son 5, RGB 3 canales) y genere cuatro mapas de características. Este ejemplo es una operación de convolución punto por punto y el mapa de características se actualiza de 5x5x3 a 5x5x4. Como se muestra en la siguiente figura:
Análisis de la estructura de convolución separable en profundidad
El diagrama principal de convolución en profundidad y convolución puntual para formar una convolución separable en profundidad, como se muestra en la siguiente figura :
Primero, realice una operación de convolución profunda y los mapas de características obtenidos de cada canal son irrelevantes. Luego se realiza una convolución puntual para asociar los canales de la salida de convolución de profundidad.
Las convoluciones separables en profundidad logran los mismos resultados (extracción de características) que las capas convolucionales estándar en menos espacio (menos parámetros) y tiempo (menos cálculos).
En términos generales, se supone que Df es la longitud lateral del mapa de características de entrada, Dk es la longitud lateral del núcleo de convolución, la longitud y el ancho del mapa de características y el núcleo de convolución son los mismos. , el número de canales de entrada es M y el número de canales de salida es N. El método de cálculo de la convolución estándar es:
El método de cálculo de la convolución profunda es:
El método de cálculo de la convolución puntual es:
Punto por -convolución puntual El método de cálculo es:
La fórmula de cálculo de la convolución puntual es Df×Df×M×N
La figura anterior muestra que el tamaño del mapa de características de entrada es 5 × 5 × 3. El tamaño de la imagen de salida es 5 × 5 × 4, establezca el relleno = 1, zancada = 1, el tamaño del núcleo de convolución de la convolución de profundidad es 3 × 3 y la convolución estándar también utiliza un núcleo de convolución de 3 × 3. Para lograr el mismo efecto de convolución, la comparación del número de parámetros (excluyendo el sesgo) y la cantidad de cálculo se muestra en la siguiente tabla:
La evolución de la convolución separada en profundidad
En De hecho, el producto de convolución separada en profundidad no se propuso por primera vez en MobileNetV1, sino que fue propuesto por la arquitectura de red Xception de Google en 2016. En MobileNetV1 de Xception, se ha mejorado la convolución separable en profundidad, logrando reducciones en cálculos y parámetros:
Supongamos que M es el número de canales en la capa de entrada y N es el número de canales en la capa de salida.
La convolución separable en profundidad de Xcenption comienza desde los parámetros de entrada, usa una convolución 1x1xMxN para convertir el número de canales de la capa de entrada en el número de canales de destino y luego usa un núcleo de convolución 3x3x1 para convolucionar cada canal, y ReLU se utiliza para activarlo después de cada convolución.
La convolución de separación profunda de MobileNetV1 utiliza 3x3x1xM para convolucionar cada canal de la capa de entrada por separado, y luego convierte el número de canales de la capa de entrada al número de canales de la capa de salida a través de 1x1xMxN, y realiza la convolución en cada convolución Luego realice la operación de normalización por lotes y luego use la activación ReLU.
Aquí tomamos como ejemplo la primera capa convolucional de separación profunda de la estructura de red MobileNetV1. Su tamaño de capa de entrada es 112x112x32 y el tamaño de la capa de salida es 112x112x64. La cantidad de cálculo y el número de parámetros de la convolución separable en profundidad de Xception y MobileNet se muestran en la siguiente tabla:
Se puede ver que ajustar el orden de la convolución PW y la convolución DW puede optimizar la complejidad del espacio y la complejidad del tiempo. del gasto de la red.
2
Multiplicador de ancho
La propia estructura de red de MobileNet ya es relativamente pequeña y la latencia de ejecución es baja, pero para adaptarse a escenarios más personalizados, MobileNet proporciona un hiperparámetro llamado "multiplicador de ancho" para que lo ajustemos. Los multiplicadores de ancho están disponibles en MobileNetV1, V2 y V3.
El multiplicador de ancho le permite ajustar el tamaño de las características producidas en el medio de la red neuronal ajustando el tamaño de los canales de datos de las características y, por lo tanto, el tamaño del cálculo.
El coeficiente de ancho es simplemente la relación entre el número de núcleos de convolución utilizados por cada módulo en la nueva red y la relación estándar de MobileNet. Para el método de convolución de profundidad 1x1 combinado con el núcleo de convolución, la cantidad de cálculo es:
α en la fórmula es el factor de ancho, α generalmente se configura como 1, 0,75, 0,5, 0,25; a 1, es MobileNet estándar.
La siguiente figura muestra la relación entre la precisión, el cálculo y la cantidad de parámetros en ImageNet cuando MobileNetV1 usa diferentes coeficientes α para ajustar los parámetros de la red (el primer número en cada término representa el valor α).
(Fuente: https://arxiv.org/pdf/1704.04861.pdf)
Se puede observar que cuando la resolución de entrada se fija en 224x224, a medida que el coeficiente de ancho disminuye Pequeño, la cantidad de cálculo y los parámetros del modelo son cada vez más pequeños. Como se puede ver en la tabla anterior, la precisión de 0.25 MobileNet es 20 veces menor que la de la versión estándar 1.0 MobileNet, pero la cantidad de cálculo y la cantidad de parámetros son casi 10 veces mayores que la de la versión estándar 1.0 MobileNet. Para plataformas móviles donde los recursos informáticos y de almacenamiento son muy limitados, es muy práctico ajustar la cantidad de comidas en la red a través del factor de ancho alfa. Podemos ajustar el factor de ancho alfa según sea necesario para lograr un equilibrio entre precisión y rendimiento cuando realmente. utilizado.
3
Multiplicador de resolución
MobileNet también proporciona otro hiperparámetro, el multiplicador de resolución, para personalizar la estructura de la red MobileNetV1. Este parámetro también está disponible en V2 y. V3.
El multiplicador de resolución generalmente se denomina β.
El valor de β está entre (0, 1), que es el coeficiente de reducción aproximado del tamaño de entrada de cada módulo. En pocas palabras, es para reducir los datos de entrada y el mapa de características generado en cada módulo, combinado con el coeficiente de ancho. α, profundidad La cantidad de cálculo del núcleo de convolución de la convolución combinada con el método 1x1 es:
La siguiente figura muestra el impacto del uso de MobileNetV1 con diferentes coeficientes β en el MobileNet estándar en la precisión y la cantidad de cálculo. de ImageNet (α se fija en 1,0)
(Fuente: https://arxiv.org/pdf/1704.04861.pdf)
En la figura anterior, 224, 192, 160 , y 128 corresponden a la resolución de la imagen. 160 y 128 corresponden a los factores de resolución 1, 6/7, 5/7 y 4/7 respectivamente.
Cuando β=1, la resolución de la imagen de entrada es 224x224 y el tamaño de la imagen convolucional se convierte en: 224x224, 112x224, 112x224, 112x224:
Cuando β= 6/ 7 Cuando , la resolución de la imagen de entrada es 192x192 y el tamaño de la imagen convolucional pasa a ser: 224x224, 112x112, 56x56, 28x28, 14x14, 7x7: 224x224, 112x112, 56x56, 28x28, 14x14, 7x7. Cuando β = 6/7, la resolución de la imagen de entrada es 192x192 y el tamaño de la imagen característica de cada capa después de la convolución es: 192x192, 96x96, 48x48, 24x24, 12x12, 6x6.
Los cambios en el tamaño de la imagen de la característica de convolución no provocarán cambios en el número de parámetros, solo cambiarán la cantidad de cálculo de las M-Adds del modelo. En la imagen de arriba, la precisión del conjunto de datos ImageNet de prueba del modelo de resolución 224 es 70,6 y la precisión del modelo de resolución 192 es 69,1, pero la cantidad de cálculo de M-Adds se reduce en 151M. recursos informáticos en la plataforma móvil, se puede hacer lo mismo. Al ajustar el coeficiente de resolución β de la resolución de la imagen de la característica de entrada de la red, se logra un equilibrio entre la precisión del modelo y la cantidad de cálculo.
4
Normalización
La normalización en el aprendizaje profundo ayuda a acelerar la convergencia de modelos basados en descenso de gradiente o descenso de gradiente estocástico, y mejora la precisión de la modelo. La precisión y los parámetros normalizados pueden mejorar la capacidad de generalización del modelo y mejorar la compresibilidad del modelo.
Según los diferentes objetos involucrados en la operación de normalización, la operación de normalización se puede dividir en dos categorías. Una es la operación de normalización del valor de entrada, como la normalización por lotes y los métodos de capa. como normalización (normalización de capa), normalización de instancia (normalización de instancia) y normalización de grupo (normalización de grupo) son todas operaciones de normalización. Los métodos de normalización de grupo) entran todos en esta categoría. El otro tipo es la normalización de parámetros en redes neuronales, como el uso de paradigmas L0, L1.
Normalización por lotes
La normalización por lotes existe detrás de casi todas las capas convolucionales en MobileNetV1, V2 y V3 para acelerar la convergencia del entrenamiento y mejorar la precisión.
La normalización por lotes es un método de conversión de función especial para valores numéricos, es decir, supone que el valor original es x y aplica una función como normalizador para convertir el valor x antes de la normalización en El valor normalizado es x . Diferentes objetivos de normalización conducen a diferentes formas de funciones en métodos específicos. El método de reparametrización adaptativa supera el problema de la dificultad en el entrenamiento del modelo causada por la profundización del número de capas de la red neuronal.
Normalización de peso
La normalización de peso (WN) es un tipo de normalización que dispersa los parámetros del modelo estableciendo un algoritmo disperso, eliminando así el parámetro de redundancia (establezca el parámetro en 0) , esto se puede lograr utilizando el paradigma L1.
La normalización de parámetros tiene como objetivo evitar que el modelo sobreajuste los datos de entrenamiento. Al entrenar un lote de muestras, a medida que avanza el entrenamiento, será cada vez más probable que el modelo se ajuste a los datos de la muestra. Esto se debe a que demasiados parámetros aumentarán la complejidad del modelo y fácilmente conducirán a un sobreajuste.
Sobre la base de garantizar la "simpleza" del modelo, es necesario minimizar el error de entrenamiento para que los parámetros tengan un buen rendimiento de generalización (es decir, el error de prueba también sea pequeño) y el La "simpledad" del modelo se logra mediante la función de regla.
Como se muestra en la figura anterior, la clasificación del lado izquierdo obviamente no está ajustada y el modelo no se ajusta a los datos. La ilustración del medio muestra un ajuste adecuado y la ilustración de la derecha muestra un sobreajuste, es decir, el modelo encaja bien en las muestras de entrenamiento, pero viola las reglas de clasificación de características y tiene un rendimiento deficiente en nuevas muestras de prueba, lo que afecta el rendimiento del modelo. Capacidad de generalización. Obviamente, el modelo de la derecha se ve interferido por parámetros adicionales durante el entrenamiento. La regularización de parámetros puede hacer que los parámetros sean escasos, reducir la interferencia de parámetros adicionales y mejorar la capacidad de generalización.
La escasez de parámetros (una gran cantidad de parámetros en el modelo son 0) también ayuda a los algoritmos de compresión a reducir el tamaño del modelo.
5
Cuello de botella lineal
El nombre en inglés de cuello de botella lineal es Linear Bottleneck, que evolucionó a partir de la estructura de cuello de botella y se utiliza en MobileNetV2 y V3. La primera capa de esta estructura usa convolución puntual, la segunda capa usa un núcleo de convolución de tamaño 3 × 3 para la convolución profunda y la tercera capa usa convolución puntual. La última capa de la estructura de cuello de botella en MobileNet utiliza una función de activación lineal para la convolución puntual, por lo que se denomina cuello de botella lineal. Hay dos tipos de estructuras de cuello de botella lineales, la primera usa una estructura residual cuando el tamaño del paso es 1 y la segunda no usa una estructura residual cuando el tamaño del paso es 2.
Entre ellos, el número de canales de entrada es M, el factor de expansión es T y el valor de T es un número positivo mayor que 0. Cuando 1lt;T, la primera capa de convolución puntual desempeña el papel de aumentar la dimensionalidad.
La segunda capa es convolución profunda, el número de canales de entrada = el número de canales de salida = M × T.
La tercera capa es convolución puntual, que se utiliza para asociar los mapas de características después de la convolución de profundidad y generar el número especificado de canales N.
En comparación con la convolución estándar, la estructura de cuello de botella lineal puede reducir la cantidad de parámetros y la cantidad de cálculos de convolución. La red está optimizada tanto en el espacio como en el tiempo.
6
Residual invertido
El concepto de residual invertido se propuso en MobileNetV2 basándose en la optimización de la estructura residual de ResNet y luego se adoptó en MobileNetV3. .
La estructura residual propuesta en ResNet resuelve el problema de la desaparición del gradiente a medida que aumenta la profundidad de la red durante el proceso de entrenamiento, de modo que el gradiente se puede obtener de la capa poco profunda de la red profunda durante el proceso de retropropagación y entrenarse. Parámetros de red poco profunda para mejorar la capacidad de expresión de características.
La estructura residual de ResNet en realidad agrega propagación residual basada en la estructura de cuello de botella lineal. Como se muestra en la siguiente figura:
La estructura residual de ResNet utiliza la primera capa de convolución puntual para reducir la dimensión, luego realiza una convolución profunda y luego usa convolución punto por punto para aumentar la dimensión.
La estructura residual en la versión MobileNetV2 usa la primera capa de convolución puntual para aumentar la dimensión y usa la función de activación Relu6 en lugar de Relu, y luego usa convolución profunda y también usa la función de activación Relu6. , Y luego usa la convolución punto por punto. La convolución se usa para reducir la dimensión, y luego se usa una función de activación lineal después de reducir la dimensión.
Dichas operaciones de convolución son más propicias para el uso móvil (lo que ayuda a reducir la cantidad de parámetros y M-Adds calculados), porque los métodos de aumento y reducción de dimensionalidad son exactamente lo opuesto a la estructura residual en ResNet, que MobileNetV2 llamará residuos invertidos.
7
Convolución de profundidad 5x5
En MobileNetV3, la convolución de profundidad utiliza en gran medida núcleos de convolución de tamaño 5x5. Esto se debe a que durante el cálculo de la estructura de la red MobileNetV3 utilizando la tecnología de búsqueda de arquitectura neuronal (NAS), se descubrió que usar un núcleo de convolución de tamaño 5x5 en la convolución profunda es mejor y más preciso que usar un núcleo de convolución de tamaño 3x3. La tecnología NAS se presentará por separado a continuación.
8
Módulo de Excitación y Excitación
El Módulo de Excitación y Excitación (módulo SE para abreviar) se desarrolló originalmente en la Red de Excitación y Excitación (SENet) en 2017. ), arquitectura de red, se mejoró en MNasNet y luego se utilizó ampliamente en MobileNetV3. Los investigadores esperan mejorar la expresividad de los modelos de red modelando con precisión las interacciones entre canales individuales de características convolucionales. Para hacer realidad esta expectativa, los investigadores propusieron un mecanismo que permite que el modelo de red calibre características para que los pesos efectivos sean grandes y los pesos no válidos o menos efectivos sean pequeños. Este es el módulo SE.
(Fuente de la imagen: https://arxiv.org/pdf/1905.02244.pdf)
Como se muestra en la figura anterior, el módulo SE de MobileNetV3 se utiliza para la última capa. de la estructura de cuello de botella lineal, y la operación SE se realiza antes de la convolución puntual en lugar de la última convolución puntual en V2. Esto mantiene la entrada y salida de cada capa de la estructura de la red y solo la procesa en el medio, similar a los ganchos en el desarrollo de software.
Explicación detallada de la estructura del módulo SE
La siguiente figura representa un módulo SE. Incluye principalmente dos partes: extrusión y excitación. W y H representan el ancho y alto del mapa de características, C representa el número de canales y el tamaño del mapa de características de entrada es W × H × C.
Compresión (Squeeze)
El primer paso es la operación Squeeze, como se muestra en la figura siguiente.
Esta operación es una agrupación promedio global. Esta operación es una agrupación promedio global. Una vez completada la operación de compresión, el mapa de características se comprimirá en un vector de 1 × 1 × C.
Excitación
La siguiente operación es la operación de excitación, como se muestra en la siguiente figura.
Consta de dos capas completamente conectadas, donde SERatio es un parámetro de escala , con el objetivo de Reducir el número de canales, reduciendo así la cantidad de cálculo.
La primera capa completamente conectada tiene neuronas C*SERatio, la entrada es 1×1×C y la salida es 1×1×C×SERadio.
La segunda capa completamente conectada tiene neuronas C, la entrada es 1×1×C×SERadio y la salida es 1×1×C.
Operación de escala
El último paso es la operación de escala. Después de obtener el vector 1 × 1 × C, se puede escalar el mapa de características original. Es muy simple, es decir, los pesos del canal se multiplican. El vector de características original es W × H × C. El módulo SE calcula el valor de cada peso del canal y lo multiplica por la matriz bidimensional del canal correspondiente. mapa de características original para obtener el resultado.
Aquí podemos obtener las características del módulo SE:
Número de parámetros = 2×C×C×SERatio
Cantidad de cálculo = 2×C× C× SERatio
En general, el módulo SE aumenta el número total de parámetros y la cantidad total de cálculo de la red, porque la cantidad de cálculo del uso de una capa completamente conectada no es mayor que la de una capa convolucional, pero el número de parámetros aumentará significativamente.
El módulo SE en MobileNetV3-Large aumenta el número total de parámetros en 2 millones en comparación con MobileNetV2.
Módulos SE en MobileNetV3
Los módulos SE son flexibles y se pueden agregar a redes existentes sin alterar la estructura principal de la red.
Agregue el módulo SE a ResNet para formar la red SE-ResNet, que se agrega después de la estructura del cuello de botella, como se muestra en el lado izquierdo de la figura siguiente.
En MobileNetV3, el módulo SE se agrega dentro de la estructura del cuello de botella, el bloque SE se agrega después de la convolución profunda y la convolución puntual se completa después de la operación de escala, como se muestra en el lado derecho de la figura anterior. El coeficiente SERadio de MobileNetV3 es 0,25. MobileNetV3 con módulo SE tiene más parámetros que MobileNetV2 y también tiene más parámetros que MobileNetV2. En comparación con MobileNetV2, la cantidad de parámetros de MobileNetV3 después de usar el módulo SE aumentó en aproximadamente 2 millones, alcanzando 5,4 millones, pero la precisión de MobileNetV3 mejoró enormemente y la precisión de la clasificación de imágenes y la detección de objetivos mejoró significativamente.
9
función de activación h-swish
MobileNetV3 descubrió que la función de activación swish puede mejorar efectivamente la precisión de la red, pero para redes neuronales livianas, swish es computacionalmente costoso. La función de activación alternativa h-swish (la versión dura de swish) es la siguiente:
Comparación de las funciones de activación sigmoidea, h-sigmoidea, swish y h-swish:
(Imagen de https://arxiv.org/pdf/1905.02244.pdf)
Esta no linealidad aporta muchas ventajas al tiempo que mantiene la precisión. En primer lugar, ReLU6 se puede utilizar en muchos marcos de hardware y software. En segundo lugar, la cuantificación puede evitar la pérdida. de precisión numérica y corre muy rápido. Este cambio no lineal aumenta la latencia del modelo en 15. Sin embargo, los efectos de red que aporta contribuyen positivamente a la precisión y la latencia, y la sobrecarga restante se puede eliminar fusionando la no linealidad con las capas anteriores.