Dies ist die PyTorch-Implementierung unseres Artikels „Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition“. (Beachten Sie, dass dies der Code für die Bilderkennung auf ImageNet ist. Informationen zur semantischen Bildsegmentierung/-analyse finden Sie in diesem Repository: https://github.com/iduta/pyconvsegnet)
Die auf ImageNet trainierten Modelle finden Sie hier.
PyConv ist in der Lage, im Vergleich zur Basislinie verbesserte Erkennungsfunktionen bereitzustellen (Einzelheiten finden Sie im Dokument).
Die Genauigkeit auf ImageNet (unter Verwendung der Standard-Trainingseinstellungen):
Netzwerk | 50 Schichten | 101 Schichten | 152 Schichten |
---|---|---|---|
ResNet | 76,12 % (Modell) | 78,00 % (Modell) | 78,45 % (Modell) |
PyConvHGResNet | 78,48 % (Modell) | 79,22 % (Modell) | 79,36 % (Modell) |
PyConvResNet | 77,88 % (Modell) | 79,01 % (Modell) | 79,52 % (Modell) |
Die Genauigkeit von ImageNet kann durch komplexere Trainingseinstellungen erheblich verbessert werden (z. B. durch zusätzliche Datenerweiterung (CutMix), Erhöhung der Bach-Größe auf 1024, Lernrate von 0,4, Cosinus-Scheduler über 300 Epochen und Verwendung gemischter Präzision zur Beschleunigung des Trainings ):
Netzwerk | Testausschnitt: 224×224 | Testausschnitt: 320×320 | |
---|---|---|---|
PyConvResNet-50 (+Erweiterung) | 79,44 | 80,59 | (Modell) |
PyConvResNet-101 (+Erweiterung) | 80,58 | 81,49 | (Modell) |
Installieren Sie den PyTorch- und ImageNet-Datensatz gemäß dem offiziellen PyTorch ImageNet-Trainingscode.
Eine schnelle Alternative (ohne dass PyTorch und andere Deep-Learning-Bibliotheken installiert werden müssen) ist die Verwendung von NVIDIA-Docker. Wir haben dieses Container-Image verwendet.
Um ein Modell (z. B. PyConvResNet mit 50 Schichten) mit DataParallel zu trainieren, führen Sie main.py
aus. Sie müssen außerdem result_path
(den Verzeichnispfad, in dem die Ergebnisse und Protokolle gespeichert werden sollen) und --data
(den Pfad zum ImageNet-Datensatz) angeben:
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
Um mit Multi-Processing Distributed Data Parallel Training zu trainieren, befolgen Sie die Anweisungen im offiziellen PyTorch ImageNet-Trainingscode.
Wenn Sie unsere Arbeit nützlich finden, denken Sie bitte darüber nach, Folgendes zu zitieren:
@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},
}