
Dieses Repo ist
(1) Eine Pytorch -Bibliothek, die Destillationsalgorithmen für klassische Kenntnisse an Mainstream -CV -Benchmarks vermittelt,
(2) Die offizielle Implementierung des CVPR-2022-Papiers: Entkoppelte Wissensdestillation.
(3) Die offizielle Implementierung des ICCV-2023-Papiers: Punkt: Ein destillationsorientierter Trainer.

Auf cifar-100:
| Lehrer Student | Resnet32x4 Resnet8x4 | VGG13 VGG8 | Resnet32x4 SHUFFLENET-V2 |
|---|---|---|---|
| Kd | 73,33 | 72,98 | 74,45 |
| KD+Punkt | 75.12 | 73.77 | 75,55 |
Auf Tiny-Imagenet:
| Lehrer Student | Resnet18 Mobilenet-V2 | Resnet18 SHUFFLENET-V2 |
|---|---|---|
| Kd | 58.35 | 62.26 |
| KD+Punkt | 64.01 | 65,75 |
Auf ImageNet:
| Lehrer Student | Resnet34 Resnet18 | Resnet50 Mobilenet-V1 |
|---|---|---|
| Kd | 71.03 | 70,50 |
| KD+Punkt | 71.72 | 73.09 |

Auf cifar-100:
| Lehrer Student | Resnet56 Resnet20 | Resnet110 Resnet32 | Resnet32x4 Resnet8x4 | WRN-40-2 WRN-16-2 | WRN-40-2 WRN-40-1 | VGG13 VGG8 |
|---|---|---|---|---|---|---|
| Kd | 70,66 | 73.08 | 73,33 | 74,92 | 73,54 | 72,98 |
| DKD | 71.97 | 74.11 | 76,32 | 76,23 | 74,81 | 74,68 |
| Lehrer Student | Resnet32x4 SHUFFLENET-V1 | WRN-40-2 SHUFFLENET-V1 | VGG13 Mobilenet-V2 | Resnet50 Mobilenet-V2 | Resnet32x4 Mobilenet-V2 |
|---|---|---|---|---|---|
| Kd | 74.07 | 74,83 | 67.37 | 67.35 | 74,45 |
| DKD | 76,45 | 76,70 | 69.71 | 70.35 | 77.07 |
Auf ImageNet:
| Lehrer Student | Resnet34 Resnet18 | Resnet50 Mobilenet-V1 |
|---|---|---|
| Kd | 71.03 | 70,50 |
| DKD | 71.70 | 72.05 |
Mdistiller unterstützt die folgenden Destillationsmethoden zu CIFAR-100, ImagEnet und MS-CoCO:
| Verfahren | Papierverbindung | Cifar-100 | Bildnische | MS-Coco |
|---|---|---|---|---|
| Kd | https://arxiv.org/abs/1503.02531 | ✓ | ✓ | |
| Fitnet | https://arxiv.org/abs/1412.6550 | ✓ | ||
| BEI | https://arxiv.org/abs/1612.03928 | ✓ | ✓ | |
| Nst | https://arxiv.org/abs/1707.01219 | ✓ | ||
| Pkt | https://arxiv.org/abs/1803.10837 | ✓ | ||
| Kdsvd | https://arxiv.org/abs/1807.06819 | ✓ | ||
| OFD | https://arxiv.org/abs/1904.01866 | ✓ | ✓ | |
| RKD | https://arxiv.org/abs/1904.05068 | ✓ | ||
| Vid | https://arxiv.org/abs/1904.05835 | ✓ | ||
| Sp | https://arxiv.org/abs/1907.09682 | ✓ | ||
| CRD | https://arxiv.org/abs/1910.10699 | ✓ | ✓ | |
| ReviewKD | https://arxiv.org/abs/2104.09044 | ✓ | ✓ | ✓ |
| DKD | https://arxiv.org/abs/2203.08679 | ✓ | ✓ | ✓ |
Umgebungen:
Installieren Sie das Paket:
sudo pip3 install -r requirements.txt
sudo python3 setup.py develop
CFG.LOG.WANDB als False bei mdistiller/engine/cfg.py .Sie können die Leistung unserer Modelle oder Modelle bewerten, die selbst geschult wurden.
./download_ckpts Modelle finden
Wenn Sie die Modelle auf ImageNet testen, laden Sie den Datensatz unter https://image-net.org/ herunter und geben Sie sie auf ./data/imagenet
# evaluate teachers
python3 tools/eval.py -m resnet32x4 # resnet32x4 on cifar100
python3 tools/eval.py -m ResNet34 -d imagenet # ResNet34 on imagenet
# evaluate students
python3 tools/eval.p -m resnet8x4 -c download_ckpts/dkd_resnet8x4 # dkd-resnet8x4 on cifar100
python3 tools/eval.p -m MobileNetV1 -c download_ckpts/imgnet_dkd_mv1 -d imagenet # dkd-mv1 on imagenet
python3 tools/eval.p -m model_name -c output/your_exp/student_best # your checkpoints Laden Sie die cifar_teachers.tar unter https://github.com/megvii-research/mdistiller/releases/checkpoints herunter und ungar auf ./download_ckpts über tar xvf cifar_teachers.tar .
# for instance, our DKD method.
python3 tools/train.py --cfg configs/cifar100/dkd/res32x4_res8x4.yaml
# you can also change settings at command line
python3 tools/train.py --cfg configs/cifar100/dkd/res32x4_res8x4.yaml SOLVER.BATCH_SIZE 128 SOLVER.LR 0.1 Laden Sie den Datensatz unter https://image-net.org/ herunter und setzen Sie sie auf ./data/imagenet
# for instance, our DKD method.
python3 tools/train.py --cfg configs/imagenet/r34_r18/dkd.yamlmdistiller/distillers/ und definieren Sie den Brenner from . _base import Distiller
class MyDistiller ( Distiller ):
def __init__ ( self , student , teacher , cfg ):
super ( MyDistiller , self ). __init__ ( student , teacher )
self . hyper1 = cfg . MyDistiller . hyper1
...
def forward_train ( self , image , target , ** kwargs ):
# return the output logits and a Dict of losses
...
# rewrite the get_learnable_parameters function if there are more nn modules for distillation.
# rewrite the get_extra_parameters if you want to obtain the extra cost.
... Registrieren Sie den Distiller in distiller_dict bei mdistiller/distillers/__init__.py
Registrieren Sie die entsprechenden Hyperparameter bei mdistiller/engines/cfg.py
Erstellen Sie eine neue Konfigurationsdatei und testen Sie sie.
Wenn dieses Repo für Ihre Forschung hilfreich ist, sollten Sie das Papier zitieren:
@article { zhao2022dkd ,
title = { Decoupled Knowledge Distillation } ,
author = { Zhao, Borui and Cui, Quan and Song, Renjie and Qiu, Yiyu and Liang, Jiajun } ,
journal = { arXiv preprint arXiv:2203.08679 } ,
year = { 2022 }
}
@article { zhao2023dot ,
title = { DOT: A Distillation-Oriented Trainer } ,
author = { Zhao, Borui and Cui, Quan and Song, Renjie and Liang, Jiajun } ,
journal = { arXiv preprint arXiv:2307.08436 } ,
year = { 2023 }
}Mdistiller wird unter der MIT -Lizenz veröffentlicht. Weitere Informationen finden Sie in Lizenz.
Danke für CRD und ReviewKD. Wir erstellen diese Bibliothek basierend auf der CRD -Codebasis und der Codebasis von ReviewKD.
Vielen Dank an Yiyu Qiu und Yi Shi für den Codebeitrag während ihres Praktikums in Megvii -Technologie.
Danke Xin Jin für die Diskussion über DKD.