Dies ist eine PyTorch-Implementierung des Papiers „Improved Residual Networks for Image and Video Recognition“:
@article{duta2020improved,
author = {Ionut Cosmin Duta and Li Liu and Fan Zhu and Ling Shao},
title = {Improved Residual Networks for Image and Video Recognition},
journal = {arXiv preprint arXiv:2004.04989},
year = {2020},
}
Die auf ImageNet trainierten Modelle finden Sie hier.
Das iResNet (verbessertes Restnetzwerk) ist in der Lage, die Basislinie (ResNet) hinsichtlich der Erkennungsleistung zu verbessern, ohne die Anzahl der Parameter und den Rechenaufwand zu erhöhen. Das iResNet ist sehr effektiv beim Training sehr tiefer Modelle (Einzelheiten finden Sie im Dokument).
Die Genauigkeit auf ImageNet (unter Verwendung der Standard-Trainingseinstellungen):
Netzwerk | 50 Schichten | 101 Schichten | 152 Schichten | 200 Schichten |
---|---|---|---|---|
ResNet | 76,12 % (Modell) | 78,00 % (Modell) | 78,45 % (Modell) | 77,55 % (Modell) |
iResnet | 77,31 % (Modell) | 78,64 % (Modell) | 79,34 % (Modell) | 79,48 % (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. iResNet 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 iresnet
--model_depth 50
Um mit Multi-Processing Distributed Data Parallel Training zu trainieren, befolgen Sie die Anweisungen im offiziellen PyTorch ImageNet-Trainingscode.