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实施