Ce code est une démo de CVPR 2020 Paper Addernet: Avons-nous vraiment besoin de multiplications en Deep Learning?
Nous présentons des réseaux additionnels (addernets) pour échanger des multiplications massives dans des réseaux de neurones profonds, en particulier les réseaux de neurones convolutionnels (CNN), pour des ajouts beaucoup moins chers pour réduire les coûts de calcul. Dans les addernets, nous prenons la distance de la norme L1 entre les filtres et la fonction d'entrée comme réponse de sortie. En conséquence, les addernets proposés peuvent atteindre une précision de la précision de 74,9% de 91,7% de la précision top-5 en utilisant RESNET-50 sur l'ensemble de données ImageNet sans aucune multiplication dans la couche de convolution.
Exécutez python main.py pour s'entraîner sur CIFAR-10.

Résultats de la classification sur les ensembles de données CIFAR-10 et CIFAR-100.
| Modèle | Méthode | Cifar-10 | CIFAR-100 |
|---|---|---|---|
| VGG | Ann | 93,72% | 72,64% |
| PKKD Ann | 95,03% | 76,94% | |
| Slac Ann | 93,96% | 73,63% | |
| Resnet-20 | Ann | 92,02% | 67,60% |
| PKKD Ann | 92,96% | 69,93% | |
| Slac Ann | 92,29% | 68,31% | |
| Shiftaddnet * | 89,32% (160poch) | - | |
| Resnet-32 | Ann | 93,01% | 69,17% |
| PKKD Ann | 93,62% | 72,41% | |
| Slac Ann | 93,24% | 69,83% |
Résultats de classification sur l'ensemble de données ImageNet.
| Modèle | Méthode | Top-1 ACC | Top-5 ACC |
|---|---|---|---|
| RESNET-18 | CNN | 69,8% | 89,1% |
| Ann | 67,0% | 87,6% | |
| PKKD Ann | 68,8% | 88,6% | |
| Slac Ann | 67,7% | 87,9% | |
| Resnet-50 | CNN | 76,2% | 92,9% |
| Ann | 74,9% | 91,7% | |
| PKKD Ann | 76,8% | 93,3% | |
| Slac Ann | 75,3% | 92,6% |
* ShiftAdddnet a utilisé un cadre de formation différent.
Résultats de super-résolution sur plusieurs ensembles de données SR.
| Échelle | Modèle | Méthode | 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 |
| Ann | 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 | |
| Ann | 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 |
| Ann | 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 | |
| Ann | 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 |
| Ann | 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 | |
| Ann | 32.13 / 0.8864 | 28,57 / 0,7800 | 27,58 / 0,7368 | 26,33 / 0,7874 |
Robustesse adversaire sur CIFAR-10 sous des attaques de boîte blanche sans formation contradictoire.
| Modèle | Méthode | Faire le ménage | FGSM | Bim7 | Pgd7 | Mim5 | RFGSM5 |
|---|---|---|---|---|---|---|---|
| Resnet-20 | CNN | 92.68 | 16.33 | 0,00 | 0,00 | 0,01 | 0,00 |
| Ann | 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 | |
| Ann-R | 90,95 | 29.93 | 29.30 | 29.72 | 32.25 | 3.38 | |
| Ann-r-awl | 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 |
| Ann | 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 | |
| Ann-R | 91.68 | 19.74 | 15.96 | 16.08 | 17.48 | 0,07 | |
| Ann-r-awl | 91.25 | 61.30 | 59.41 | 59,74 | 61,54 | 39.79 |
Comparaisons de la carte sur Pascal COV.
| Modèle | Colonne vertébrale | Cou | carte |
|---|---|---|---|
| R-CNN plus rapide | Conv R50 | Convocation | 79.5 |
| FCOS | Conv R50 | Convocation | 79.1 |
| Rétinanet | Conv R50 | Convocation | 77.3 |
| Foveabox | Conv R50 | Convocation | 76.6 |
| Adder-fcos | Adder R50 | Additionneur | 76.5 |
Vous pouvez suivre Pytorch / Exemples pour préparer les données ImageNet.
Les modèles pré-entraînés sont disponibles dans Google Drive ou Baidu Cloud (code d'accès: 126B)
Exécutez python main.py pour s'entraîner sur CIFAR-10.
Exécutez python test.py --data_dir 'path/to/imagenet_root/' pour évaluer sur ImageNet val Set. Vous obtiendrez une précision supérieure de 74,9% et une précision top 5 de 91,7% sur l'ensemble de données ImageNet à l'aide de RESNET-50.
Exécutez python test.py --dataset cifar10 --model_dir models/ResNet20-AdderNet.pth --data_dir 'path/to/cifar10_root/' pour évaluer sur cifar-10. Vous obtiendrez une précision de 91,8% sur l'ensemble de données CIFAR-10 à l'aide de RESNET-20.
L'inférence et la formation des addernets sont lents car les filtres additionnels sont mis en œuvre sans accélération CUDA. Vous pouvez écrire CUDA pour atteindre une vitesse d'inférence plus élevée.
@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}
}
Nous apprécions toutes les contributions. Si vous prévoyez de contribuer aux fixations de bogues, veuillez le faire sans aucune discussion.
Si vous prévoyez de contribuer de nouvelles fonctionnalités, des fonctions utilitaires ou des extensions au cœur, veuillez d'abord ouvrir un problème et discuter de la fonctionnalité avec nous. L'envoi d'un PR sans discussion pourrait finir par résulter d'un RP rejeté, car nous pourrions prendre le cœur dans une direction différente de celle que vous pourriez être conscient.