Линсяо Янг, Ру-Юань Чжан, Лида Ли, Сяохуа Се
В этой статье мы предлагаем концептуально простой, но очень эффективный модуль внимания для свёрточных нейронных сетей (ConvNets). В отличие от существующих модулей внимания по каналам и пространственным областям, наш модуль вместо этого выводит 3D-веса внимания для карты признаков на уровне, не добавляя параметров в исходные сети. В частности, мы основываемся на некоторых известных теориях нейробиологии и предлагаем оптимизировать функцию энергии, чтобы найти важность каждого нейрона. Далее мы выводим быстрое решение в замкнутой форме для функции энергии и показываем, что решение может быть реализовано менее чем в десяти строках кода. Ещё одним преимуществом модуля является то, что большинство операторов выбираются на основе решения определённой энергетической функции, что позволяет избежать слишком больших усилий по настройке структуры. Количественные оценки по различным визуальным задачам демонстрируют, что предложенный модуль является гибким и эффективным для улучшения способности представления многих ConvNets. Наш код доступен по адресу Pytorch-SimAM.
Наша цель — вывести 3D-веса внимания (рисунок (c)) с заданной картой признаков, которая сильно отличается от предыдущих работ, как показано на рисунках (a) и (b).
<p align="center">
<img src="figures/attentions.png">
</p>
SimAM (Реализация, подобная pytorch). Подробности реализаций, включая модуль и сеть, можно найти в разделе networks в этом репозитории.
class SimAM(nn.Module):
# X: входной признак [N, C, H, W]
# lambda: коэффициент λ в уравнении (5)
def forward (X, lambda):
# пространственный размер
n = X.shape[2] * X.shape[3] - 1
# квадрат (t - u)
d = (X - X.mean(dim=[2,3])).pow(2)
# d.sum() / n — это отклонение канала
v = d.sum(dim=[2,3]) / n
# E_inv объединяет всю важность X
E_inv = d / (4 * (v + lambda)) + 0.5
# вернуть выделенные признаки
return X * sigmoid(E_inv)
<p align="center">
<img src="figures/training_curves.png">
</p>
Следующие команды обучают модели на ImageNet с нуля на 4 графических процессорах.
# Обучение с нуля
python main_imagenet.py {путь к ImageNet} --gpu 0,1,2,3 --epochs 100 -j 20 -a resnet18
python main_imagenet.py {путь к ImageNet} --gpu 0,1,2,3 --epochs 100 -j 20 -a resnet18
--attention_type simam --attention_param 0.1
python main_imagenet.py {путь к ImageNet} --gpu 0,1,2,3 --epochs 150 -j 20 -a mobilenet_v2
--attention_type simam --attention_param 0.1 --lr .05 --cos_lr --wd 4e-5
# Оценка обученной модели
python main_imagenet.py {путь к ImageNet} --gpu 0,1,2,3 -j 20 -a resnet18 -e
--resume {путь к предварительно обученному .pth}
Все следующие модели можно скачать с BaiduYunPan (извлечь код: 25tp) и Google Drive.
Модель | Параметры | FLOPs | Top-1 (%) | Top-5 (%) |
---|---|---|---|---|
SimAM-R18 | 11,69 M | 1,82 G | 71,31 | 89,88 |
SimAM-R34 | 21,80 M | 3,67 G | 74,49 | 92,02 |
SimAM-R50 | 25,56 M | 4,11 G | 77,45 | 93,66 |
SimAM-R101 | 44,55 M | 7,83 G | 78,65 | 94,11 |
SimAM-RX50 (32x4d) | 25,03 M | 4,26 G | 78,00 | 93,93 |
SimAM-MV2 | 3,50 M | 0,31 G | 72,36 | 90,74 |
Мы используем mmdetection для обучения Faster RCNN и Mask RCNN для обнаружения объектов и сегментации экземпляров. Если вы хотите запустить следующие модели, пожалуйста, сначала установите mmdetection с помощью их руководства. А затем поместите все файлы .py
в mmdetection этого репозитория в соответствующие папки. Все следующие модели можно скачать с BaiduYunPan (код извлечения: ysrz) и Google Drive.
Модель | AP | AP_50 | AP_75 | AP_S | AP_M | AP_L |
---|---|---|---|---|---|---|
FR-SimAM-R50 | 39,2 | 60,7 | 40,8 | 22,8 | 43,0 | 50,6 |
FR-SimAM-R101 | 41,2 | 62,4 | 45,0 | 24,0 | 45,6 | 52,8 |
MR-SimAM-R50 | 39,8 | 61,0 | 43,4 | 23,1 | 43,7 | 51,4 |
MR-SimAM-R101 | 41,8 | 62,8 | 46,0 | 24,8 | 46,2 | 53,9 |
Модель | AP | AP_50 | AP_75 | AP_S | AP_M | AP_L |
---|---|---|---|---|---|---|
MR-SimAM-R50 | 36,0 | 57,9 | 38,2 | 19,1 | 39,7 | 48,6 |
MR-SimAM-R101 | 37,6 | 59,5 | 40,1 | 20,5 | 41,5 | 50,8 |
Если вы считаете SimAM полезным в своём исследовании, рассмотрите возможность цитирования:
@InProceedings{pmlr-v139-yang21o,
title = {SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks},
author = {Yang, Lingxiao and Zhang, Ru-Yuan and Li, Lida and Xie, Xiaohua},
booktitle = {Proceedings of the 38th International Conference on Machine Learning},
pages = {11863--11874},
year = {2021},
editor = {Meila, Marina and Zhang, Tong},
volume = {139},
series = {Proceedings of Machine Learning Research},
month = {18--24 Jul},
publisher = {PMLR},
pdf = {http://proceedings.mlr.press/v139/yang21o/yang21o.pdf},
url = {http://proceedings.mlr.press/v139/yang21o.html}
}
Если у вас есть какие-либо предложения или вопросы, вы можете связаться с нами по адресу: lingxiao.yang717@gmail.com. Спасибо за ваше внимание!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )