Il s'agit de l'implémentation PyTorch de notre article « Convolution pyramidale : repenser les réseaux de neurones convolutifs pour la reconnaissance visuelle ». (Notez qu'il s'agit du code pour la reconnaissance d'images sur ImageNet. Pour la segmentation/analyse sémantique d'images, reportez-vous à ce référentiel : https://github.com/iduta/pyconvsegnet)
Les modèles formés sur ImageNet peuvent être trouvés ici.
PyConv est capable de fournir des capacités de reconnaissance améliorées par rapport à la ligne de base (voir l'article pour plus de détails).
La précision sur ImageNet (en utilisant les paramètres de formation par défaut) :
Réseau | 50 couches | 101 couches | 152 couches |
---|---|---|---|
ResNet | 76,12% (modèle) | 78,00% (modèle) | 78,45% (modèle) |
PyConvHGResNet | 78,48 % (modèle) | 79,22 % (modèle) | 79,36 % (modèle) |
PyConvResNet | 77,88 % (modèle) | 79,01 % (modèle) | 79,52 % (modèle) |
La précision sur ImageNet peut être considérablement améliorée en utilisant des paramètres de formation plus complexes (par exemple, en utilisant une augmentation de données supplémentaire (CutMix), en augmentant la taille de Bach à 1024, un taux d'apprentissage de 0,4, un planificateur de cosinus sur 300 époques et en utilisant une précision mixte pour accélérer la formation. ) :
Réseau | culture d'essai : 224×224 | culture d'essai : 320×320 | |
---|---|---|---|
PyConvResNet-50 (+ augmentation) | 79.44 | 80,59 | (modèle) |
PyConvResNet-101 (+ augmentation) | 80,58 | 81.49 | (modèle) |
Installez l'ensemble de données PyTorch et ImageNet en suivant le code de formation officiel PyTorch ImageNet.
Une alternative rapide (sans avoir besoin d'installer PyTorch et d'autres bibliothèques d'apprentissage en profondeur) consiste à utiliser NVIDIA-Docker, nous avons utilisé cette image de conteneur.
Pour entraîner un modèle (par exemple, PyConvResNet avec 50 couches) à l'aide de DataParallel, exécutez main.py
; vous devez également fournir result_path
(le chemin du répertoire où enregistrer les résultats et les journaux) et --data
(le chemin d'accès à l'ensemble de données ImageNet) :
result_path=/your/path/to/save/results/and/logs/
mkdir -p ${result_path}
python main.py
--data /your/path/to/ImageNet/dataset/
--result_path ${result_path}
--arch pyconvresnet
--model_depth 50
Pour vous entraîner à l’aide de la formation parallèle de données distribuées multitraitements, suivez les instructions du code de formation officiel PyTorch ImageNet.
Si vous trouvez notre travail utile, pensez à citer :
@article{duta2020pyramidal,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition},
journal = {arXiv preprint arXiv:2006.11538},
year = {2020},
}