SENET的實施,由Jie Hu,Li Shen和Gang Sun在擠壓和激烈網絡中提議,他們是ILSVRC 2017年分類競賽的獲獎者。
現在實施了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 -resnet 50 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} 。
由於我的計算資源,初始學習率和迷你批量大小與原始版本不同。
| 重新連接 | Se-Resnet | |
|---|---|---|
| 最大限度。測試準確性(TOP1) | 76.15%(*) | 77.06%(**) |
(*):Resnet-50 in torchvision
(**):在8 GPU上使用imagenet.py與--distributed設置時。重量可用。
# !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和問題。
紙
作者的CAFFE實施