ILSVRC 2017分類コンペティションの受賞者であるJie Hu、Li Shen、Gang Sunによって、スクイーズアンドエクスケーションネットワークで提案されたSenetの実装。
現在、Se-Resnet(18、34、50、101、152/20、32)およびSE Inception-V3が実装されています。
python cifar.py 、cifar10データセットでse-resnet20を実行します。
python imagenet.py and python -m torch.distributed.launch --nproc_per_node=${NUM_GPUS} imagenet.py run se -resnet50 with imagenet(2012)データセット、
~/.torch/dataでデータセットを自分で準備するか、環境変数IMAGENET_ROOT=${PATH_TO_YOUR_IMAGENET}を設定する必要があります。CUDA_VISIBLE_DEVICES変数を使用します。 (例: CUDA_VISIBLE_DEVICES=1,2 gpu 1および2を使用する)SE-Inception-V3の場合、入力サイズは元の開始として299x299である必要があります。
コードベースは、次の設定でテストされています。
cifar.pyまたはimagenet.pyを実行するには、必要です
pip install git+https://github.com/moskomule/[email protected] torch.hub経由で、Se-Resnet( se_resnet{20, 56, 50, 101} )を使用できます。
import torch . hub
hub_model = torch . hub . load (
'moskomule/senet.pytorch' ,
'se_resnet20' ,
num_classes = 10 )また、前提条件のSE-RESNET50モデルが利用可能です。
import torch . hub
hub_model = torch . hub . load (
'moskomule/senet.pytorch' ,
'se_resnet50' ,
pretrained = True ,) python cifar.py [--baseline]
CIFAR-10データセットは~/.torch/dataの下にあると予想されることに注意してください。
| Resnet20 | Se-Resnet20(削減4または8) | |
|---|---|---|
| マックス。テスト精度 | 92% | 93% |
python [-m torch.distributed.launch --nproc_per_node=${NUM_GPUS}] imagenet.py
オプション[-M ...]は分散トレーニング用です。 ImagENETデータセットは~/.torch/data下にあるか、 IMAGENET_ROOT=${PATH_TO_IMAGENET}として指定されると予想されることに注意してください。
初期学習率とミニバッチサイズは、私の計算リソースのため、元のバージョンとは異なります。
| resnet | se-resnet | |
|---|---|---|
| マックス。テスト精度(TOP1) | 76.15%(*) | 77.06%(**) |
(*):TorchvisionのResnet-50
(**):8 GPUで--distributed設定を使用してimagenet.pyを使用する場合。重量が利用可能です。
# !wget https://github.com/moskomule/senet.pytorch/releases/download/archive/seresnet50-60a8950a85b2b.pkl
senet = se_resnet50 ( num_classes = 1000 )
senet . load_state_dict ( torch . load ( "seresnet50-60a8950a85b2b.pkl" ))このリポジトリを積極的に維持することはできませんが、貢献は大歓迎です。 PRや問題をお気軽に送信してください。
紙
著者のカフェ実装