Этот код является демонстрацией бумаги CVPR 2020 Paper Addernet: действительно ли нам нужны умножения в глубоком обучении?
Мы представляем сети Adder (Addernets) для обмена массовыми умножениями в глубоких нейронных сетях, особенно в сверточных нейронных сетях (CNNS), за гораздо более дешевые дополнения для снижения затрат на вычисление. В Addernets мы принимаем расстояние L1-норм между фильтрами и входной функцией в качестве выходного отклика. В результате предлагаемые Addernets могут достичь точности TOP-1 74,9% 91,7% топора 5 TOP-5 с использованием RESNET-50 в наборе данных ImageNet без какого-либо умножения в слое свертки.
Запустите python main.py , чтобы тренироваться на Cifar-10.

Результаты классификации на наборах данных CIFAR-10 и CIFAR-100.
| Модель | Метод | CIFAR-10 | CIFAR-100 |
|---|---|---|---|
| VGG-SMALL | Энн | 93,72% | 72,64% |
| PKKD ANN | 95,03% | 76,94% | |
| Слак Энн | 93,96% | 73,63% | |
| Resnet-20 | Энн | 92,02% | 67,60% |
| PKKD ANN | 92,96% | 69,93% | |
| Слак Энн | 92,29% | 68,31% | |
| ShiftAddnet* | 89,32%(160EPOCH) | - | |
| Resnet-32 | Энн | 93,01% | 69,17% |
| PKKD ANN | 93,62% | 72,41% | |
| Слак Энн | 93,24% | 69,83% |
Результаты классификации в наборе данных ImageNet.
| Модель | Метод | Top-1 Acc | Top 5 Acc |
|---|---|---|---|
| Resnet-18 | CNN | 69,8% | 89,1% |
| Энн | 67,0% | 87,6% | |
| PKKD ANN | 68,8% | 88,6% | |
| Слак Энн | 67,7% | 87,9% | |
| Resnet-50 | CNN | 76,2% | 92,9% |
| Энн | 74,9% | 91,7% | |
| PKKD ANN | 76,8% | 93,3% | |
| Слак Энн | 75,3% | 92,6% |
*ShiftAddnet использовал разные настройки обучения.
Результаты супер-разрешения на нескольких наборах данных SR.
| Шкала | Модель | Метод | SET5 (PSNR/SSIM) | SET14 (PSNR/SSIM) | B100 (PSNR/SSIM) | Urban100 (PSNR/SSIM) |
|---|---|---|---|---|---|---|
| × 2 | VDSR | CNN | 37,53/0,9587 | 33,03/0,9124 | 31,90/0,8960 | 30,76/0,9140 |
| Энн | 37,37/0,9575 | 32,91/0,9112 | 31,82/0,8947 | 30,48/0,9099 | ||
| Edsr | CNN | 38,11/0,9601 | 33,92/0,9195 | 32,32/0,9013 | 32,93/0,9351 | |
| Энн | 37,92/0,9589 | 33,82/0,9183 | 32,23/0,9000 | 32,63/0,9309 | ||
| × 3 | VDSR | CNN | 33,66/0,9213 | 29,77/0,8314 | 28,82/0,7976 | 27,14/0,8279 |
| Энн | 33,47/0,9151 | 29,62/0,8276 | 28,72/0,7953 | 26,95/0,8189 | ||
| Edsr | CNN | 34,65/0,9282 | 30,52/0,8462 | 29,25/0,8093 | 28,80/0,8653 | |
| Энн | 34,35/0,9212 | 30,33/0,8420 | 29,13/0,8068 | 28,54/0,8555 | ||
| × 4 | VDSR | CNN | 31,35/0,8838 | 28,01/0,7674 | 27,29/0,7251 | 25,18/0,7524 |
| Энн | 31,27/0,8762 | 27,93/0,7630 | 27,25/0,7229 | 25,09/0,7445 | ||
| Edsr | CNN | 32,46/0,8968 | 28,80/0,7876 | 27,71/0,7420 | 26,64/0,8033 | |
| Энн | 32,13/0,8864 | 28,57/0,7800 | 27,58/0,7368 | 26,33/0,7874 |
Адверскую надежность на CIFAR-10 при атаках белой коробки без состязательного обучения.
| Модель | Метод | Чистый | FGSM | Bim7 | PGD7 | MIM5 | RFGSM5 |
|---|---|---|---|---|---|---|---|
| Resnet-20 | CNN | 92,68 | 16.33 | 0,00 | 0,00 | 0,01 | 0,00 |
| Энн | 91.72 | 18.42 | 0,00 | 0,00 | 0,04 | 0,00 | |
| CNN-R | 90.62 | 17.23 | 3.46 | 3.67 | 4.23 | 0,06 | |
| Анн-Р. | 90,95 | 29,93 | 29.30 | 29,72 | 32,25 | 3.38 | |
| Ann-R-Nawn | 90.55 | 45,93 | 42,62 | 43,39 | 46.52 | 18.36 | |
| Resnet-32 | CNN | 92,78 | 23.55 | 0,00 | 0,01 | 0,10 | 0,00 |
| Энн | 92.48 | 35,85 | 0,03 | 0,11 | 1.04 | 0,02 | |
| CNN-R | 91.32 | 20.41 | 5.15 | 5.27 | 6.09 | 0,07 | |
| Анн-Р. | 91.68 | 19.74 | 15.96 | 16.08 | 17.48 | 0,07 | |
| Ann-R-Nawn | 91.25 | 61.30 | 59,41 | 59,74 | 61.54 | 39,79 |
Сравнения карты на Pascal Voc.
| Модель | Магистраль | Шея | карта |
|---|---|---|---|
| Быстрее r-cnn | Conv R50 | Конв | 79,5 |
| FCOS | Conv R50 | Конв | 79,1 |
| Сетчатка | Conv R50 | Конв | 77.3 |
| Foveabox | Conv R50 | Конв | 76.6 |
| Adder-fcos | Adder R50 | Сумматор | 76.5 |
Вы можете следовать Pytorch/примеры, чтобы подготовить данные ImageNet.
Предварительные модели доступны в Google Drive или Baidu Cloud (код доступа: 126b)
Запустите python main.py , чтобы тренироваться на Cifar-10.
Запустите python test.py --data_dir 'path/to/imagenet_root/' Чтобы оценить набор ImageNet val . Вы достигнете 74,9% точной точности и 91,7% топ-5 топ-5 в наборе данных ImageNet с использованием RESNET-50.
Запустить python test.py --dataset cifar10 --model_dir models/ResNet20-AdderNet.pth --data_dir 'path/to/cifar10_root/' Оценка на Cifar-10. Вы достигнете 91,8% точности в наборе данных CIFAR-10 с использованием RESNET-20.
Вывод и обучение Addernets является медленным, поскольку фильтры Adder реализуются без ускорения CUDA. Вы можете написать CUDA для достижения более высокой скорости вывода.
@article{AdderNet,
title={AdderNet: Do We Really Need Multiplications in Deep Learning?},
author={Chen, Hanting and Wang, Yunhe and Xu, Chunjing and Shi, Boxin and Xu, Chao and Tian, Qi and Xu, Chang},
journal={CVPR},
year={2020}
}
Мы ценим все вклад. Если вы планируете внести обратный вклад в фиксам ошибок, пожалуйста, сделайте это без дальнейшего обсуждения.
Если вы планируете внести новые функции, функции утилиты или расширения в ядро, сначала откройте проблему и обсудите эту функцию с нами. Отправка PR без обсуждения может в конечном итоге привести к отклоненному PR, потому что мы могли бы взять ядро в другом направлении, о котором вы могли бы знать.