Implementação oficial de um operador neural, conforme descrito em involução: invertendo a inereência da convolução para o reconhecimento visual (CVPR'21)
Por dupla Li, Jie Hu, Changhu Wang, Xiangtai Li, Qi She, Lei Zhu, Tong Zhang e Qifeng Chen

Tl; Dr. involution é um primitivo neural de uso geral que é versátil para um espectro de modelos de aprendizado profundo em diferentes tarefas de visão. involution preenche convolution e self-attention no design, embora seja mais eficiente e eficaz que convolution , mais simples que self-attention na forma.


Se você achar nosso trabalho útil em sua pesquisa, cite:
@InProceedings{Li_2021_CVPR,
author = {Li, Duo and Hu, Jie and Wang, Changhu and Li, Xiangtai and She, Qi and Zhu, Lei and Zhang, Tong and Chen, Qifeng},
title = {Involution: Inverting the Inherence of Convolution for Visual Recognition},
booktitle = {IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2021}
}
Este repositório está totalmente construído nos kits de ferramentas OpenMmlab. Para cada tarefa individual, os arquivos de configuração e modelo seguem a mesma organização de diretório que MMCLs, MMDET e MMSEG, respectivamente, portanto, basta copiar e colá-los para os locais correspondentes para começar.
Por exemplo, em termos de avaliação de detectores
git clone https://github.com/open-mmlab/mmdetection # and install
# copy model files
cp det/mmdet/models/backbones/ * mmdetection/mmdet/models/backbones
cp det/mmdet/models/necks/ * mmdetection/mmdet/models/necks
cp det/mmdet/models/dense_heads/ * mmdetection/mmdet/models/dense_heads
cp det/mmdet/models/roi_heads/ * mmdetection/mmdet/models/roi_heads
cp det/mmdet/models/roi_heads/mask_heads/ * mmdetection/mmdet/models/roi_heads/mask_heads
cp det/mmdet/models/utils/ * mmdetection/mmdet/models/utils
cp det/mmdet/datasets/ * mmdetection/mmdet/datasets
# copy config files
cp det/configs/_base_/models/ * mmdetection/configs/_base_/models
cp det/configs/_base_/schedules/ * mmdetection/configs/_base_/schedules
cp det/configs/involution mmdetection/configs -r
# evaluate checkpoints
cd mmdetection
bash tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--out ${RESULT_FILE} ] [--eval ${EVAL_METRICS} ]Para obter orientações mais detalhadas, consulte os tutoriais originais de MMCLs, MMDET e MMSEG.
Atualmente, fornecemos uma implementação com eficiência de memória do operador involoton com base no Cupy. Instale esta biblioteca com antecedência. Um kernel CUDA personalizado traria uma aceleração adicional no hardware. Qualquer contribuição da comunidade sobre isso é bem -vinda!
Os parâmetros/flops ↓ e o desempenho ↑ em comparação com as linhas de base da convolução são marcados nos parênteses. Parte desses pontos de verificação é obtida em nossas execuções de reimplementação, cujo desempenho pode mostrar pequenas diferenças com as relatadas em nosso artigo. Os modelos são treinados com 64 GPUs no Imagenet, 8 GPUs em Coco e 4 GPUs em paisagens da cidade.
| Modelo | Params (m) | Flops (g) | Top-1 (%) | Top 5 (%) | Config | Download |
|---|---|---|---|---|---|---|
| Rednet-26 | 9.23 (32,8%↓) | 1,73 (29,2%↓) | 75.96 | 93.19 | Config | modelo | registro |
| Rednet-38 | 12,39 (36,7%↓) | 2,22 (31,3%↓) | 77.48 | 93.57 | Config | modelo | registro |
| Rednet-50 | 15,54 (39,5%↓) | 2,71 (34,1%↓) | 78.35 | 94.13 | Config | modelo | registro |
| Rednet-101 | 25,65 (42,6%↓) | 4,74 (40,5%↓) | 78.92 | 94.35 | Config | modelo | registro |
| Rednet-152 | 33,99 (43,5%↓) | 6,79 (41,4%↓) | 79.12 | 94.38 | Config | modelo | registro |
Antes da Finetuning nas seguintes tarefas a jusante, faça o download dos pesos RedNet-50 pré-treinado ImageNet e defina o argumento pretrained em det/configs/_base_/models/*.py ou seg/configs/_base_/models/*.py
| Espinha dorsal | Pescoço | Cabeça | Estilo | LR Schd | Params (m) | Flops (g) | caixa ap | Config | Download |
|---|---|---|---|---|---|---|---|---|---|
| Rednet-50-Fpn | convolução | convolução | Pytorch | 1x | 31,6 (23,9%↓) | 177,9 (14,1%↓) | 39,5 (1,8 ↑) | Config | modelo | registro |
| Rednet-50-Fpn | involução | convolução | Pytorch | 1x | 29,5 (28,9%↓) | 135,0 (34,8%↓) | 40,2 (2,5 ↑) | Config | modelo | registro |
| Rednet-50-Fpn | involução | involução | Pytorch | 1x | 29,0 (30,1%↓) | 91,5 (55,8%↓) | 39,2 (1,5 ↑) | Config | modelo | registro |
| Espinha dorsal | Pescoço | Cabeça | Estilo | LR Schd | Params (m) | Flops (g) | caixa ap | máscara ap | Config | Download |
|---|---|---|---|---|---|---|---|---|---|---|
| Rednet-50-Fpn | convolução | convolução | Pytorch | 1x | 34,2 (22,6%↓) | 224,2 (11,5%↓) | 39,9 (1,5 ↑) | 35,7 (0,6 ↑) | Config | modelo | registro |
| Rednet-50-Fpn | involução | convolução | Pytorch | 1x | 32,2 (27,1%↓) | 181,3 (28,5%↓) | 40,8 (2,4 ↑) | 36.4 (1,3 ↑) | Config | modelo | registro |
| Rednet-50-Fpn | involução | involução | Pytorch | 1x | 29,5 (33,3%↓) | 104,6 (58,7%↓) | 39,6 (1,2 ↑) | 35.1 (0,0 ↑) | Config | modelo | registro |
| Espinha dorsal | Pescoço | Estilo | LR Schd | Params (m) | Flops (g) | caixa ap | Config | Download |
|---|---|---|---|---|---|---|---|---|
| Rednet-50-Fpn | convolução | Pytorch | 1x | 27,8 (26,3%↓) | 210.1 (12,2%↓) | 38.2 (1,6 ↑) | Config | modelo | registro |
| Rednet-50-Fpn | involução | Pytorch | 1x | 26,3 (30,2%↓) | 199,9 (16,5%↓) | 38.2 (1,6 ↑) | Config | modelo | registro |
| Método | Espinha dorsal | Pescoço | Tamanho da colheita | LR Schd | Params (m) | Flops (g) | miou | Config | download |
|---|---|---|---|---|---|---|---|---|---|
| FPN | Rednet-50 | convolução | 512x1024 | 80000 | 18,5 (35,1%↓) | 293.9 (19,0%↓) | 78,0 (3,6 ↑) | Config | modelo | registro |
| FPN | Rednet-50 | involução | 512x1024 | 80000 | 16,4 (42,5%↓) | 205,2 (43,4%↓) | 79.1 (4,7 ↑) | Config | modelo | registro |
| UPERNET | Rednet-50 | convolução | 512x1024 | 80000 | 56,4 (15,1%↓) | 1825.6 (3,6%↓) | 80,6 (2,4 ↑) | Config | modelo | registro |