これは、論文「ピラミッド畳み込み: 視覚認識のための畳み込みニューラル ネットワークの再考」の PyTorch 実装です。 (これは ImageNet 上の画像認識用のコードであることに注意してください。セマンティックな画像のセグメンテーション/解析については、このリポジトリを参照してください: https://github.com/iduta/pyconvsegnet)
ImageNet でトレーニングされたモデルはここにあります。
PyConv は、ベースラインよりも向上した認識機能を提供できます (詳細については論文を参照してください)。
ImageNet での精度 (デフォルトのトレーニング設定を使用):
ネットワーク | 50層 | 101層 | 152層 |
---|---|---|---|
レスネット | 76.12% (モデル) | 78.00%(モデル) | 78.45% (モデル) |
PyConvHGResNet | 78.48 %(モデル) | 79.22 %(モデル) | 79.36 %(モデル) |
PyConvResNet | 77.88 %(モデル) | 79.01 %(モデル) | 79.52 %(モデル) |
ImageNet の精度は、より複雑なトレーニング設定 (たとえば、追加のデータ拡張 (CutMix) の使用、バッチ サイズを 1024 に増加、学習率 0.4、300 エポック以上のコサイン スケジューラ、混合精度を使用してトレーニングを高速化するなど) を使用して大幅に改善できます。 ):
ネットワーク | テスト作物:224×224 | テスト作物:320×320 | |
---|---|---|---|
PyConvResNet-50 (+拡張) | 79.44 | 80.59 | (モデル) |
PyConvResNet-101 (+拡張) | 80.58 | 81.49 | (モデル) |
公式の PyTorch ImageNet トレーニング コードに従って、PyTorch と ImageNet データセットをインストールします。
迅速な代替方法 (PyTorch やその他のディープ ラーニング ライブラリをインストールする必要がない) は、NVIDIA-Docker を使用することです。このコンテナ イメージを使用しました。
DataParallel を使用してモデル (たとえば、50 層の PyConvResNet) をトレーニングするには、 main.py
を実行します。 result_path
(結果とログを保存するディレクトリ パス) と--data
(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
マルチプロセス分散データ並列トレーニングを使用してトレーニングするには、公式の PyTorch ImageNet トレーニング コードの指示に従ってください。
私たちの取り組みが役立つと思われる場合は、以下を引用することを検討してください。
@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},
}