Eine Umsetzung von Senet, vorgeschlagen in Squeeze-and-Recitation-Netzwerken von Jie Hu, Li Shen und Gang Sun, die Gewinner des ILSVRC 2017-Klassifizierungswettbewerbs sind.
Jetzt werden SE-Resnet (18, 34, 50, 101, 152/20, 32) und Se-Inception-V3 implementiert.
python cifar.py führt SE-RESNET20 mit CIFAR10-Datensatz aus.
python imagenet.py und python -m torch.distributed.launch --nproc_per_node=${NUM_GPUS} imagenet.py Run SE -RESNET50 mit ImageNet (2012) Dataset, Dataset, Run SE -RESNET50 Run
~/.torch/data vorbereiten oder eine Umgebung variable IMAGENET_ROOT=${PATH_TO_YOUR_IMAGENET} festlegenCUDA_VISIBLE_DEVICES . (EG CUDA_VISIBLE_DEVICES=1,2 um GPU 1 und 2 zu verwenden)Für SE-Inception-V3 muss die Eingangsgröße 299x299 als ursprüngliche Inception betragen.
Die Codebasis wird in der folgenden Einstellung getestet.
Um cifar.py oder imagenet.py auszuführen, brauchen Sie
pip install git+https://github.com/moskomule/[email protected] Sie können SE-RESNET ( se_resnet{20, 56, 50, 101} ) über torch.hub verwenden.
import torch . hub
hub_model = torch . hub . load (
'moskomule/senet.pytorch' ,
'se_resnet20' ,
num_classes = 10 )Außerdem ist ein vorgezogenes SE-RESNET50-Modell verfügbar.
import torch . hub
hub_model = torch . hub . load (
'moskomule/senet.pytorch' ,
'se_resnet50' ,
pretrained = True ,) python cifar.py [--baseline]
Beachten Sie, dass der CIFAR-10-Datensatz voraussichtlich unter ~/.torch/data liegen wird.
| Resnet20 | SE-RESNET20 (Reduktion 4 oder 8) | |
|---|---|---|
| Max. Testgenauigkeit | 92% | 93% |
python [-m torch.distributed.launch --nproc_per_node=${NUM_GPUS}] imagenet.py
Die Option [-m ...] ist für verteiltes Training. Beachten Sie, dass der ImageNet -Datensatz voraussichtlich unter ~/.torch/data oder als IMAGENET_ROOT=${PATH_TO_IMAGENET} angegeben ist.
Die anfängliche Lernrate und die Mini-Batch-Größe unterscheiden sich aufgrund meiner Rechenressource von der Originalversion .
| Resnet | Se-resnet | |
|---|---|---|
| Max. Testgenauigkeit (Top1) | 76,15 %(*) | 77,06% (**) |
(*): Resnet-50 in Torchvision
(**): Bei Verwendung von imagenet.py mit der --distributed Einstellung auf 8 GPUs. Das Gewicht ist verfügbar.
# !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" ))Ich kann dieses Repository nicht aktiv aufrechterhalten, aber alle Beiträge sind willkommen. Fühlen Sie sich frei, PRs und Probleme zu senden.
Papier
Caffe -Implementierung der Autoren