
이 repo입니다
(1) 주류 CV 벤치 마크에서 고전적인 지식 증류 알고리즘을 제공하는 Pytorch 라이브러리,
(2) CVPR-2022 논문의 공식 구현 : 지식 증류가 해체된다.
(3) ICCV-2023 논문의 공식 구현 : DOT : 증류 지향 트레이너.

CIFAR-100 :
| 선생님 학생 | RESNET32X4 RESNET8X4 | vgg13 vgg8 | RESNET32X4 셔플 레넷 -V2 |
|---|---|---|---|
| KD | 73.33 | 72.98 | 74.45 |
| KD+DOT | 75.12 | 73.77 | 75.55 |
작은 이미지넷에서 :
| 선생님 학생 | RESNET18 Mobilenet-V2 | RESNET18 셔플 레넷 -V2 |
|---|---|---|
| KD | 58.35 | 62.26 |
| KD+DOT | 64.01 | 65.75 |
imagenet :
| 선생님 학생 | RESNET34 RESNET18 | RESNET50 Mobilenet-V1 |
|---|---|---|
| KD | 71.03 | 70.50 |
| KD+DOT | 71.72 | 73.09 |

CIFAR-100 :
| 선생님 학생 | 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 |
| 선생님 학생 | RESNET32X4 셔플 레넷 -V1 | WRN-40-2 셔플 레넷 -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 |
imagenet :
| 선생님 학생 | RESNET34 RESNET18 | RESNET50 Mobilenet-V1 |
|---|---|---|
| KD | 71.03 | 70.50 |
| DKD | 71.70 | 72.05 |
Mdistiller는 CIFAR-100, Imagenet 및 MS-Coco에서 다음과 같은 증류 방법을 지원합니다.
| 방법 | 종이 링크 | CIFAR-100 | imagenet | MS-Coco |
|---|---|---|---|---|
| KD | https://arxiv.org/abs/1503.02531 | ✓ | ✓ | |
| fitnet | https://arxiv.org/abs/1412.6550 | ✓ | ||
| 에 | 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 | ✓ | ✓ | |
| 리뷰크 | https://arxiv.org/abs/2104.09044 | ✓ | ✓ | ✓ |
| DKD | https://arxiv.org/abs/2203.08679 | ✓ | ✓ | ✓ |
환경 :
패키지 설치 :
sudo pip3 install -r requirements.txt
sudo python3 setup.py develop
CFG.LOG.WANDB mdistiller/engine/cfg.py 에서 False 로 설정하십시오.직접 훈련 된 모델 또는 모델의 성능을 평가할 수 있습니다.
우리의 모델은 https://github.com/mdistiller/releases/tag/checkpoints에 있습니다. 검사 점을 ./download_ckpts 로 다운로드하십시오.
Imagenet에서 모델을 테스트하면 https://image-net.org/에서 데이터 세트를 다운로드하여 ./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 https://github.com/megvii-research/mdistiller/releases/tag/checkpoints에서 cifar_teachers.tar 다운로드하고 tar xvf cifar_teachers.tar 를 통해 ./download_ckpts 로 다운로드하십시오.
# 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 https://image-net.org/에서 데이터 세트를 다운로드하고 ./data/imagenet 에 넣으십시오.
# for instance, our DKD method.
python3 tools/train.py --cfg configs/imagenet/r34_r18/dkd.yamlmdistiller/distillers/ 에서 Python 파일 생성/ 증류기 정의 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.
... mdistiller/distillers/__init__.py 에서 distiller_dict 에서 증류기를 등록하십시오
mdistiller/engines/cfg.py 에서 해당 하이퍼 파라미터를 등록하십시오
새 구성 파일을 만들고 테스트하십시오.
이 repo가 귀하의 연구에 도움이되면 논문을 인용하는 것을 고려하십시오.
@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는 MIT 라이센스에 따라 릴리스됩니다. 자세한 내용은 라이센스를 참조하십시오.
CRD와 ReviewKD에 감사드립니다. 우리는 CRD의 코드베이스와 ReviaceKD의 코드베이스를 기반 으로이 라이브러리를 만듭니다.
Megvii 기술에서 인턴쉽을하는 동안 코드 기여에 대해 Yiyu Qiu와 Yi Shi에게 감사드립니다.
DKD에 대한 토론에 대해 Xin Jin에게 감사드립니다.