Capa de agrupación de CNN de red neuronal

Breve introducción

  La capa de agrupación es una operación común en CNN. La capa de agrupación generalmente se denomina submuestreo o submuestreo. Cuando se construye una red CNN, a menudo se usa después de la capa convolucional. La capa de agrupación reduce la dimensión característica de la salida de la capa convolucional, lo que puede reducir eficazmente los parámetros de la red y evitar el sobreajuste.
  Hablando de operaciones de agrupación, pensaremos en las operaciones de agrupación que usamos a menudo, a saber, agrupación máxima y agrupación promedio. En realidad, existen muchos tipos de operaciones de agrupación (para obtener más detalles, consulte lo siguiente) . Suponga que el tamaño de entrada es iiyo , el tamaño de salida esooo , tamaño del kernel 为kkk , zancada essss , se cumple la siguiente fórmula:o = i - ks + 1 o = \ frac {ik} {s} + 1los=si - k+1 ; Si hay una almohadilla, se cumple la siguiente fórmula:o = i + 2 × p - ks + 1 o = \ frac {i + 2 \ times p -k} {s} + 1los=si + 2 × p - k+1 .
Las
  funciones principales de lacapa de agrupación son lassiguientes:
    1. Suprimir el ruido y reducir la redundancia de información
    2. Mejorar la invariancia de escala y la invariancia
    derotacióndel modelo 3. Reducir la cantidad de cálculo del modelo
    4. Evitar el sobreajuste

Clasificación de la capa de agrupación

Combinación máxima / media

  La agrupación máxima es seleccionar el valor máximo en el área de la imagen como el valor después de agrupar el área. Cuando la dirección se propaga, el gradiente se propaga a través del valor máximo del proceso de propagación hacia adelante y los otros gradientes de posición son 0.
  Cuando se usa, la agrupación máxima es especialmente la agrupación superpuesta y la agrupación no superpuesta, como el común stride = kernel _ size stride = kernel \ _sizes t r i d e=k e r n e l _ s i z e pertenece a la agrupación superpuesta. En comparación con la agrupación no superpuesta, la agrupación superpuesta no solo puede mejorar la precisión de la predicción, sino que los colegas pueden aliviar el sobreajuste en ciertas áreas.
  Un ejemplo de aplicación de agrupación no superpuesta es que la última capa de la red troncal yolov3-tiny usa una agrupación máxima con stride = 1 y tamaño de kernel = 2 para la extracción de características.

import torch
import torch.nn.functional as F

input = torch.Tensor(1, 3, 32, 32)
output = F.max_pool2d(input, kernel_size=2, stride=2)
print(output.shape)

output = F.max_pool2d(input, kernel_size=2, stride=2, padding=1)
print(output.shape)

'''
output:
   torch.Size([1, 3, 16, 16])
   torch.Size([1, 3, 17, 17])
'''

  La agrupación media es utilizar el valor medio de todos los valores en el área de imagen seleccionada como el valor agrupado del área.

import torch
import torch.nn.functional as F

input = torch.Tensor(1, 3, 32, 32)
output = F.avg_pool2d(input, kernel_size=2, stride=2)
print(output.shape)

'''
output:
   torch.Size([1, 3, 16, 16])
'''

Combinación mediana

  Es similar al filtro mediano, pero tiene menos posibilidades de ser utilizado. La agrupación media tiene las características de estructura de textura y borde de aprendizaje, y tiene una fuerte capacidad anti-ruido.

Agrupación combinada

  La agrupación combinada es una estrategia de agrupación que utiliza las ventajas de la agrupación máxima y la agrupación promedio al mismo tiempo. Hay dos estrategias de combinación comunes: Agregar y Concat. Usado a menudo como un truco para las tareas de clasificación, su función es enriquecer la capa de entidades. Max Pooling presta más atención a las entidades locales, mientras que la agrupación media presta más atención a las entidades globales.

import torch
import torch.nn.functional as F

def add_avg_max_pool2d(input):
    max_output = F.max_pool2d(input, kernel_size=2, stride=2)
    avg_output = F.avg_pool2d(input, kernel_size=2, stride=2)
    return 0.5 * (max_output + avg_output)

def concat_avg_max_pool2d(input):
    max_output = F.max_pool2d(input, kernel_size=2, stride=2)
    avg_output = F.avg_pool2d(input, kernel_size=2, stride=2)
    return torch.cat([max_output, avg_output], 1)

if __name__ == '__main__':
    input = torch.Tensor(1, 3, 32, 32)
    output = add_avg_max_pool2d(input)
    print("add: " + str(output.shape))
    output = concat_avg_max_pool2d(input)
    print("concat: " + str(output.shape))
'''
output:
   add: torch.Size([1, 3, 16, 16])
   concat: torch.Size([1, 6, 16, 16])
'''

Combinación de pirámides espaciales

Dirección del artículo : Spatial Pyramid Pooling in Deep Convolutional-1406.4729
  Spatial Pyramid Pooling se abrevia como SPP. SPP se propuso en SPPNet, y se propuso anteriormente. Hay un enlace al documento sobre SPP anterior; originalmente se propuso para resolver CNN La limitación del tamaño de la imagen de entrada son los cálculos de convolución repetidos y la salida fija. La estructura de red de SPP es la siguiente:
Inserte la descripción de la imagen aquí

Estructura de la red SPP
  En resumen, el mapa de características se agrupa por separado con capas piramidales de tres escalas, y los resultados agrupados se empalman para obtener un vector de características de longitud fija, y luego se ingresan en CNN para su clasificación.

  Hay una estructura de red en yolov3 llamada yolov3-spp.cfg. Esta red alcanza una tasa de precisión más alta que yolov.cfg. La URL de git de yolov3-spp.cfg es la siguiente:

### SPP ###
[maxpool]
stride=1
size=5

[route]
layers=-2

[maxpool]
stride=1
size=9

[route]
layers=-4

[maxpool]
stride=1
size=13

[route]
layers=-1,-3,-5,-6

### End SPP ###

  El SPP aquí es equivalente a una variante del SPPNetworks original.A través del uso de Max Pooling de múltiples tamaños de kernel, todos los mapas de características finalmente se empalman para obtener una nueva combinación de características.
Ventajas de SPP:

  • Resuelva el problema del tamaño de imagen inconsistente
  • Extracción de características desde diferentes ángulos, en agregación
  • Refleja las características robustas del algoritmo para mejorar la precisión

Agrupación global promedio / máxima

  La diferencia entre la agrupación media global y la agrupación media reside en la palabra "global". Tanto global como local se utilizan literalmente para describir el área de la ventana de agrupación. Local es tomar una subregión del mapa de características para promediar y luego deslizar esta subregión; global obviamente promedia todo el mapa de características.
  Lo mismo ocurre con la agrupación máxima global.

referencias

https://www.jianshu.com/p/884c2828cd8e
Combinación de pirámides espaciales en convolución profunda-1406.4729
https://www.plob.org/article/22160.html

Supongo que te gusta

Origin blog.csdn.net/CFH1021/article/details/105989297
Recomendado
Clasificación