CVPR 2022 | HorNet: Interacciones espaciales eficientes de orden superior con circunvoluciones cerradas recursivas


Documento:
https://arxiv.org/abs/2207.14284
Código fuente:
https://github.com/raoyongming/HorNet

Este artículo propone una convolución cerrada recursiva gn C onv g_{n}ConvgramonC o n v ,gn C onv g_{n}ConvgramonC o n v realiza interacciones espaciales de alto orden eficientes, escalables y equivalentes a la traducción a través de convolución cerrada y diseño recursivo.
Sobre esta base, el autor construyó una nueva red esquelética visual de propósito general HorNet y utilizó una gran cantidad de experimentos para demostrar quegn Conv gnConvLa eficacia de g n C o n v y HorNet en las líneas de base de reconocimiento visual de uso común.

1 Motivación

En el campo del aprendizaje profundo, la introducción de CNN ha promovido en gran medida el desarrollo de la visión artificial. Debido a algunas características inherentes de la propia CNN, se puede aplicar naturalmente a una amplia gama de tareas visuales. Por ejemplo, la equivalencia de traducción introduce sesgos inductivos efectivos para tareas visuales y realiza la reproducibilidad entre mapas de características de diferentes resoluciones. Transferibilidad; por ejemplo , varias redes troncales desde VGG hasta ResNet y más allá han promovido aún más la popularidad de CNN en tareas visuales.

Sin embargo, Vision Transformer ha mostrado un buen desempeño en varias tareas visuales al combinar algunas experiencias exitosas de CNN, lo que desafía en gran medida la posición dominante de CNN en el campo visual. Así que no pudimos evitar pensar: ¿qué hace que Vision Transformer sea tan poderoso? ¿Podemos aprender de la experiencia exitosa en Vision Transformer y rediseñar una nueva arquitectura de CNN?

ConvNeXt propone utilizar 7 ∗ 7 7*7 a través del análisis de la metaarquitectura de ViT.77 núcleos de convolución para fortalecer el aprendizaje de relaciones de largo alcance (long-range), y algunos documentos usan directamente hasta31 ∗ 31 31*313131 núcleos de convolución para aprender dependencias de larga distancia;[1]muestra que los pesos adaptativos de entrada también juegan un papel importante en Vision Transformer, como SwinTransformer, que usa convolución dinámica en una serie de tareas posteriores logrando mejores resultados. Los dos puntos anteriores son en realidad las razones del éxito de Transformer, pero el autor señaló que, debido a razones no lineales, a menudo hay interacciones complejas de alto orden entre dos posiciones espaciales en el modelo profundo, y el éxito de las redes dinámicas como la autodeterminación. La atención muestra que, la interacción espacial explícita de alto orden introducida en el diseño de la arquitectura del modelo conduce a mejorar la capacidad de modelado del modelo visual, por lo que el autor señaló una tercera característica igualmente importante: la interacción espacial de alto orden.

2 Introducción

La llamada interacción espacial generalmente significa que en el proceso de muestreo del mapa de características, a través de algún tipo de cálculo adicional o propio, la interacción espacial se agrega a las características generadas. Por ejemplo, en Transformer, se utilizan diferentes transformaciones para generar Q y K y luego realizar el cálculo de la correlación de posición espacial. Entonces, ¿cómo entender la interacción espacial de alto orden aquí? Echemos un vistazo al diagrama esquemático en el texto original.

Como se muestra en la figura anterior, la convolución ordinaria representada por (a) no muestra la consideración de la interacción espacial entre la posición espacial (área característica roja) y su área adyacente (área gris); (b) representa la convolución dinámica o SE El método de atención visual representativa genera ponderaciones dinámicas a través de cálculos de características adicionales para introducir una interacción espacial explícita; (c) representa el proceso del mecanismo de autoatención en Transformer, que ejecuta la matriz entre Q, K y V Multiplicación, el proceso general es una interacción espacial de segundo orden (Q interactúa con K y luego interactúa con V); (d) es el gn C onv g_{n}Conv propuesto en este documentogramonEl módulo C o n v , a través del diseño de un ancho de canal creciente, realiza una interacción espacial de alto orden con una complejidad limitada.

En este artículo, el autor resume que las tres armas mágicas para el éxito de Vision Transformer son el espacio para la interacción espacial adaptativa de entrada, de largo alcance y de alto orden Si bien el trabajo anterior migró con éxito la metaarquitectura, la estrategia de generación de peso adaptable a la entrada y las capacidades de modelado a gran escala de Vision Transformer a los modelos CNN, no se han investigado los mecanismos de interacción espacial de alto orden.

Los autores señalan que los tres factores clave se pueden implementar de manera eficiente utilizando un marco basado en convolución y proponen una convolución cerrada recursiva ( gn Conv ) (g_{n }Conv)( gramonConv ) gn Conv g_{ n } ConvgramonEl módulo C o n v no imita simplemente diseños exitosos en autoatención, y tiene sus propias ventajas:
1) Eficiente. La implementación basada en convolución evita la complejidad cuadrática de la autoatención, y el diseño de aumentar gradualmente el ancho del canal en el proceso de realizar la interacción espacial también le permite lograr interacciones de alto orden con complejidad limitada; 2) Escalabilidad
. Extender las interacciones de segundo orden en la autoatención a órdenes arbitrarios mejora aún más las capacidades de modelado ygn C onv g_{n}ConvgramonC o n v es compatible con varios tamaños de kernel y estrategias de mezcla de espacio;
3)) Equivariante de traducción. gn Conv g_{n}ConvgramonC o n v hereda completamente la propiedad de equivalencia de traducción de la convolución estándar, introduce un sesgo inductivo beneficioso para la tarea de visión principal y evita la asimetría causada por la atención local.

3 Método

gn Conv g_{n}ConvgramonC o n v está construido conestándar, proyección lineal y multiplicación de elementos (producto de Hadamard)En términos de describir mign C onv g_{n}ConvgramonC o n v comprensión.

3.1 gn Conv g_{n}ConvgramonC o n v:Convoluciones cerradas recursivas

Interacción espacial de primer orden: en CNN, la red utiliza principalmente núcleos de convolución estáticos para agregar entidades adyacentes, mientras que Vision Transformer utiliza la autoatención de varios cabezales (MSA) para agregar dinámicamente los pesos de los tokens en el espacio, pero el cuadrado en el proceso es complicado El tamaño de entrada del grado y la autoatención limita en gran medida la aplicación de Vision Transformer. El autor logra la misma interacción espacial efectiva mediante el uso de operaciones simples como la capa totalmente conectada del kernel de convolución. El módulo básico de este método es Producto de volumen cerrado ( gn Conv g_{n}ConvgramonC o n v)。设x ∈ RHW × C x\in\mathbb{R}^{HW\times C}XRH W × C es la característica de entrada de la convolución cerrada, luego su saliday = gn C onv ( x ) y=g_{n}Conv(x)y=gramonC o n v ( x )可表示为: [ pag 0 HW × C , q 0 HW × C ] = ϕ ( x ) ∈ RHW × 2 C , pag 1 = f ( q 0 ) ⊙ pag 0 ∈ RHW × C , y = ϕ ( pag 1 ) ∈ RHW × C (3.1) \begin{split}[p_{0}^{HW\times C},q_{0}^{HW×C}]=\phi(x) \in\mathbb{R}^{HW\times 2C},\\ p_{1}=f(q_{0})\odot p_{0}\in\mathbb{R}^{HW\times C}, \\y=\phi(p_{1})\in\mathbb{R}^{HW\times C}\end{split}\tag{3.1}[ pag0alto ancho × profundidad,q0alto ancho × profundidad]=ϕ ( x )RALTO ANCHO × 2 C ,pag1=f ( q0)pag0Ralto ancho × profundidad ,y=ϕ ( pag1)Ralto ancho × profundidad( 3.1 ) Fórmula(3.1) (3.1)( 3.1 ) es ingresarxxDespués de proyectar x linealmente, se segmenta según el canal para obtener p 0 p_{0}pag0y q 0 q_{0}q0, y luego q 0 q_{0} después del cálculo de convolución de profundidadq0Entonces con p 0 p_{0}pag0Haz el producto escalar para obtener p 1 p_{1}pag1pag 1 pag_{1}pag1Pasará por otra proyección lineal para obtener la salida yyy , el proceso anterior demuestra la interacción espacial de primer orden, y la función adyacentep se introduce explícitamente a través de la multiplicación de elementos 0 p_{0}pag0y q 0 q_{0}q0interacción entre.

Interacción espacial de orden superior: el proceso anterior demuestra la interacción espacial de primer orden. De hecho, lo mismo es cierto para la interacción espacial de orden superior: primero use la función de proyección lineal ϕ \phiϕ obtiene un conjunto de características de proyecciónp 0 p_{0}pag0{ qk } k = 0 norte − 1 \{q_{k}\}_{k=0}^{n-1}{ qk}k = 0n 1[ p 0 HW × C 0 , q 0 HW × C 0 , . . . , qn − 1 HW × C norte − 1 ] = ϕ en ( x ) ∈ RHW × ( C 0 + ∑ 0 ≤ k ≤ norte − 1 C k ) (3.2) \begin{dividir} [p_{0}^{ HW\veces C_{0}},q_{0}^{HW\veces C_{0}},...,q_{n-1}^{HW\veces C_{n-1}}]=\phi_ {en}(x)\en \mathbb{R}^{HW\times (C_{0}+\sum_{0\leq k\leq n-1}C_{k})}\end{split}\tag {3.2}[ pag0alto ancho × profundidad0,q0alto ancho × profundidad0,... ,qnorte - 1alto ancho × profundidadn 1]=ϕen( X )RAL ANCHO × ( C0+ 0 k norte - 1Ck)( 3.2 ) Esta fórmula es principalmente para dividir las funciones de entrada según el canal, y la explicación es realmente abstracta. Aquí, presionemos primero la tabla y luego hablemos de ella en detalle cuando hablemos del código más adelante. Usando la fórmula(3.2) (3.2)( 3.2 ) Después de obtener las características segmentadas, podemos ingresarlas en la convolución cerrada a su vez para la operación recursiva: pk + 1 = fk ( qk ) ⊙ gk ( pk ) / α k = 0 , 1 , . . . , n − 1 (3.3) p_{k+1}=f_{k}(q_{k})\odot g_{k}(p_{k})/\alpha \qquad k=0,1,.. .,n- 1\etiqueta{3.3}pagk + 1=Fk( qk)gramok( pagk) / unk=0 ,1 ,... ,norte1( 3.3 ) Fórmula(3.3) (3.3)( 3.3 ) Las características de salida en cada operación se calculan según1 / α 1/\alpha1/ α se escala para que el entrenamiento sea más estable, ya que las dos dimensiones deben ser iguales en el proceso de interacción espacial,gk g_{k}gramokes la función de mapeo de dimensiones durante la operación: gk = { I dentity , k = 0 , Lineal ( C k − 1 , C k ) 1 ≤ k ≤ n − 1. (3.4) g_{k}=\begin{cases } Identity ,\qquad \qquad \qquad \qquad k=0,\\ Lineal(C_{k-1},C_{k}) \qquad 1\leq k\leq n-1.\end{casos}\tag {3.4 }gramok={ identidad , _ _ _ _ _ _ _k=0 ,L in e a r ( Ck - 1,Ck)1knorte1 .( 3.4 ) Finalmente, la red generará la recursión finalqn q_{n}qnEntrada a la capa de proyección ϕ (salida) \phi(salida)ϕ ( o u t ) , obtenergn Conv g_{n}ConvgramonResultado final c o n v . Por la fórmula recursiva(3.3) (3.3)( 3.3 ) Se puede ver que cada pasopk p_{k}pagkEl orden de interacción de aumentará en 1, que en realidad es gn C onv g_{n}ConvgramonC o n v es la forma principal de realizar una interacción espacial de orden n. Vale la pena señalar que aquí solo se necesita unfff +qk } k = 0 norte − 1 \{q_{k}\}_{k=0}^{n-1}{ qk}k = 0n 1Las características se unen para la convolución de profundidad, en lugar de (3.3) (3.3)Las convoluciones se calculan en cada paso recursivo como en ( 3.3 ) , y esto puede simplificar aún más la implementación y mejorar la eficiencia en las GPU. Además, para garantizar que las operaciones interactivas de alto nivel no introduzcan demasiado consumo computacional, el autor también restringe el número de canales en cada nivel: C k = C 2 n − k − 1 0 ≤ k ≤ n − 1 (3.5) C_{k}=\frac{C}{2^{nk-1}}\qquad 0\leq k \leq n-1 \tag{3.5}Ck=2norte - k - 1c0knorte1( 3.5 ) Este diseño hace que la red realice una interacción de grueso a fino, donde las características de orden inferior se calculan con menos canales, y las características de orden superior deben asignarse a características de dimensiones altas para aprender patrones más ricos. Y, aquí, el canal de la función de entrada se asigna a2 C 2C2 C , incluso sinnA medida que aumenta n (el orden, el orden de los parámetros en el código fuente a continuación), la cantidad total de cálculo también está limitada (consulte el Apéndice A para conocer los detalles de prueba relevantes), a saber: FLOP s ( gn Conv ) < HWC ( 2 K 2 + 11 / 3 × C + 2 ) (3.6) FLOPs(g_{n}Conv)<HWC(2K^{2}+11/3\times C +2)\tag{3.6}F L OP s ( gnC o n v )<H W C ( 2 K2+11/3×C+2 )( 3.6 ) Lo anterior es aproximadamente la deducción de la fórmula principal del módulo de convolución cerrada, y el modelo y el código fuente se presentan a continuación.

3.2 Código y arquitectura para gn C onv g_{n}ConvgramonConv _ _ _


El módulo representado en la figura anterior es una ilustración de la interacción espacial de tercer orden, a saber, g 3 C onvg^{3}Convgramo3 Conv, de hecho, tomegn C onv g_{n}ConvgramonLos detalles del módulo y el código fuente de C o n v se muestran completamente, y luego lo presentaré en detalle. Primero, veamos varios parámetros y módulos importantes definidos dentro del constructor init():

Para Significado
o El orden máximo de interacción espacial, es decir, n
oscuro Dimensiones después de dividir 2C en espacios de diferentes órdenes, correspondientes a la fórmula 3.2
proj_en Ingrese la capa de mapeo lineal de x, correspondiente a ϕ ( in ) \phi(in)ϕ ( en )
duconv Módulo de convolución separable en profundidad para extracción de características
desaparecido El módulo de convolución utilizado en el proceso de interacción espacial de alto orden, correspondiente a la fórmula 3.4
proyecto_fuera La capa de mapeo lineal que genera y, correspondiente a ϕ (out) \phi(out)ϕ ( fuera ) _ _

Aquí está el código fuente publicado por el autor en Github. He anotado los detalles internos y he depurado gn C onv g_{n}ConvgramonLa demostración del módulo C o n v , los lectores pueden ejecutarla por sí mismos para explorar el significado de parámetros específicos.

import torch
import torch.nn as nn

def get_dwconv(dim, kernel, bias):
    return nn.Conv2d(dim, dim, kernel_size=kernel, padding=(kernel-1)//2 ,bias=bias, groups=dim)


class gnconv(nn.Module):
    def __init__(self, dim, order=3, gflayer=None, h=14, w=8, s=1.0):
        super().__init__()
        self.order = order# 空间交互的阶数,即n
        self.dims = [dim // 2 ** i for i in range(order)]# 将2C在不同阶的空间上进行切分,对应公式3.2
        self.dims.reverse()# 反序,使低层通道少,高层通道多
        self.proj_in = nn.Conv2d(dim, 2* dim, 1)# 输入x的线性映射层,对应$\phi(in)$

        if gflayer is None:# 是否使用Global Filter
            self.dwconv = get_dwconv(sum(self.dims), 7, True)
        else:# 在全特征上进行卷积,多在后期使用
            self.dwconv = gflayer(sum(self.dims), h=h, w=w)

        self.proj_out = nn.Conv2d(dim, dim, 1)# 输出y的线性映射层,对应$\phi(out)$

        self.pws = nn.ModuleList(# 高阶空间交互过程中使用的卷积模块,对应公式3.4
            [nn.Conv2d(self.dims[i], self.dims[i + 1], 1) for i in range(order - 1)]
        )

        self.scale = s# 缩放系数,对应公式3.3中的$\alpha$
        print('[gnconv]', order, 'order with dims=', self.dims, 'scale=%.4f' % self.scale)

    def forward(self, x, mask=None, dummy=False):
        print(self.dims)

        fused_x = self.proj_in(x)# channel double
        print("fused_x:",fused_x.shape)
        pwa, abc = torch.split(fused_x, (self.dims[0], sum(self.dims)), dim=1)# split channel to c/2**order and c(1-2**oder)
        print("pwa:{}  abc:{}".format(pwa.shape,abc.shape))

        dw_abc = self.dwconv(abc) * self.scale
        print('dw_abc:{}'.format(dw_abc.shape))

        dw_list = torch.split(dw_abc, self.dims, dim=1)

        # 两个相同尺寸的张量相乘,对应元素的相乘就是这个哈达玛积(mul)
        x = pwa * dw_list[0]
        print("x:{}".format(x.shape))

        for i in range(self.order - 1):
            x = self.pws[i](x) * dw_list[i + 1]
            print('conv[{}]:{} * dw_list[{}]:{} = x:{}'.format(i,self.pws[i],
                                                               i+1,dw_list[i+1].shape,
                                                               x.shape))

        x = self.proj_out(x)

        return x

if __name__ == '__main__':
    x=torch.randn((2,64,20,20))
    gn=gnconv(64)
    out=gn(x)
    print(out.shape)

Producción:

[gnconv] 3 order with dims= [16, 32, 64] scale=1.0000
[16, 32, 64]
fused_x: torch.Size([2, 128, 20, 20])
pwa:torch.Size([2, 16, 20, 20])  abc:torch.Size([2, 112, 20, 20])
dw_abc:torch.Size([2, 112, 20, 20])
x:torch.Size([2, 16, 20, 20])
conv[0]:Conv2d(16, 32, kernel_size=(1, 1), stride=(1, 1)) * dw_list[1]:torch.Size([2, 32, 20, 20]) = x:torch.Size([2, 32, 20, 20])
conv[1]:Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1)) * dw_list[2]:torch.Size([2, 64, 20, 20]) = x:torch.Size([2, 64, 20, 20])
torch.Size([2, 64, 20, 20])

4 Experimento

Aunque el artículo de HorNet tiene solo 14 páginas, la mayor parte del contenido en realidad presenta los experimentos comparativos de las tareas principales. A continuación, se presenta una breve introducción a los dos resultados experimentales: clasificación y detección.
Los resultados de los experimentos de clasificación de ImageNet se muestran en la Tabla 1. Se puede ver que el modelo HorNet todavía tiene un rendimiento muy competitivo en comparación con Vision Transformer y CNN de SOTA, y HorNet supera a Swin transformer y ConvNeXt.
El autor también evaluó el modelo en COCO, utilizando el marco Cascade Mask R-CNN, utilizando la red troncal HorNet-T/S/B/L para la detección de objetos y la segmentación de instancias. De manera similar, el modelo HorNet es muy superior a Swin/ConvNeXt tanto en AP de caja como en AP de máscara.

Conclusión

En general, el equipo del autor propone la convolución cerrada recursiva ( gn C onv g_{n}ConvgramonC o n v ), que realiza interacciones espaciales de alto orden eficientes, escalables y equivalentes a la traducción a través de convolución cerrada y diseño recursivo.

En varios modelos de Vision Transformer y basados ​​en convolución, gn C onv g_{n}ConvgramonC o n v puede reemplazar la capa de mezcla espacial. Sobre esta base, el autor construyó una nueva red de esqueleto visual de propósito general HorNet y demostró a través de una gran cantidad de experimentos quegn C onv g_{n}ConvgramonEficacia de C o n v y HorNet en puntos de referencia de reconocimiento visual de uso común. Los autores esperan que su intento pueda inspirar trabajos futuros para explorar más a fondo las interacciones espaciales de orden superior en modelos visuales.

A FLOP de gn C onv g_{n}ConvgramonConv _ _ _

[1] Sobre la conexión entre la atención local y la convolución dinámica en profundidad

Supongo que te gusta

Origin blog.csdn.net/weixin_43427721/article/details/127159469
Recomendado
Clasificación