ILSVRC 2017 Classification Competition의 우승자 인 Jie Hu, Li Shen 및 Gang Sun이 Squeeze and Excitation Networks 에서 제안한 Senet의 구현.
이제 Se-Resnet (18, 34, 50, 101, 152/20, 32) 및 SE- 인식 -V3가 구현됩니다.
python cifar.py CIFAR10 데이터 세트로 SE-RESNET20을 실행합니다.
python imagenet.py 및 python -m torch.distributed.launch --nproc_per_node=${NUM_GPUS} imagenet.py imageNet (2012) DataSet, DataSet,
~/.torch/data 에서 직접 데이터 세트를 준비하거나 Enviroment 변수 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 및 문제를 자유롭게 보내십시오.
종이
저자의 카페 구현