Этот репозиторий содержит официальную реализацию Pytorch для следующей статьи
Обучение эффективным сверточным сетям посредством похудения сети (ICCV 2017).
Чжуан Лю, Цзянгу Ли, Чжицан Шен, Гао Хуанг, Шуменг Ян, Чаншуй Чжан.
Оригинальная реализация: похудение в факеле.
Код основан на Pytorch-промежутке. Мы добавляем поддержку Resnet и Densenet.
Цитата:
@InProceedings{Liu_2017_ICCV,
author = {Liu, Zhuang and Li, Jianguo and Shen, Zhiqiang and Huang, Gao and Yan, Shoumeng and Zhang, Changshui},
title = {Learning Efficient Convolutional Networks Through Network Slimming},
booktitle = {The IEEE International Conference on Computer Vision (ICCV)},
month = {Oct},
year = {2017}
}
Torch v0.3.1, TOCKVISION v0.2.0
Мы вводим слой channel selection , чтобы помочь обрезке Resnet и Densenet. Этот слой легко реализовать. Он хранит indexes параметра, которые инициализируются до вектора All-1. Во время обрезки он установит некоторые места на 0, которые соответствуют обрезкам каналов.
Аргумент dataset указывает, какой набор данных использовать: cifar10 или cifar100 . Аргумент arch указывает архитектуру для использования: vgg , resnet или densenet . Глубина выбрана, чтобы быть такими же, как и сети, используемые в бумаге.
python main.py --dataset cifar10 --arch vgg --depth 19
python main.py --dataset cifar10 --arch resnet --depth 164
python main.py --dataset cifar10 --arch densenet --depth 40python main.py -sr --s 0.0001 --dataset cifar10 --arch vgg --depth 19
python main.py -sr --s 0.00001 --dataset cifar10 --arch resnet --depth 164
python main.py -sr --s 0.00001 --dataset cifar10 --arch densenet --depth 40python vggprune.py --dataset cifar10 --depth 19 --percent 0.7 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT]
python resprune.py --dataset cifar10 --depth 164 --percent 0.4 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT]
python denseprune.py --dataset cifar10 --depth 40 --percent 0.4 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT] Обрезка модель будет названа pruned.pth.tar .
python main.py --refine [PATH TO THE PRUNED MODEL] --dataset cifar10 --arch vgg --depth 19 --epochs 160Результаты довольно близки к оригинальной статье, результаты которых производятся факелом. Обратите внимание, что из-за различных случайных семян может быть добыча до 0,5%/1,5% колебания на наборах данных CIFAR-10/100 в разных пробегах, согласно нашему опыту.
| Cifar10-VGG | Базовый уровень | Редкость (1E-4) | Черносли (70%) | Fine-Tune-160 (70%) |
|---|---|---|---|---|
| Точность TOP1 (%) | 93,77 | 93.30 | 32,54 | 93,78 |
| Параметры | 20.04M | 20.04M | 2,25 м | 2,25 м |
| CIFAR10-RESNET-164 | Базовый уровень | Редкость (1E-5) | Черносли (40%) | Fine-Tune-160 (40%) | Чернослив (60%) | Fine-Tune-160 (60%) |
|---|---|---|---|---|---|---|
| Точность TOP1 (%) | 94,75 | 94,76 | 94,58 | 95,05 | 47.73 | 93,81 |
| Параметры | 1,71 м | 1,73 м | 1,45 м | 1,45 м | 1,12 м | 1,12 м |
| CIFAR10-DENSENET-40 | Базовый уровень | Редкость (1E-5) | Черносли (40%) | Fine-Tune-160 (40%) | Чернослив (60%) | Fine-Tune-160 (60%) |
|---|---|---|---|---|---|---|
| Точность TOP1 (%) | 94.11 | 94.17 | 94.16 | 94,32 | 89,46 | 94.22 |
| Параметры | 1,07 м | 1,07 м | 0,69 м | 0,69 м | 0,49 м | 0,49 м |
| CIFAR100-VGG | Базовый уровень | Редкость (1E-4) | Чернослив (50%) | Fine-Tune-160 (50%) |
|---|---|---|---|---|
| Точность TOP1 (%) | 72.12 | 72,05 | 5.31 | 73,32 |
| Параметры | 20.04M | 20.04M | 4,93 м | 4,93 м |
| CIFAR100-RESNET-164 | Базовый уровень | Редкость (1E-5) | Черносли (40%) | Fine-Tune-160 (40%) | Чернослив (60%) | Fine-Tune-160 (60%) |
|---|---|---|---|---|---|---|
| Точность TOP1 (%) | 76.79 | 76.87 | 48.0 | 77.36 | --- | --- |
| Параметры | 1,73 м | 1,73 м | 1,49 м | 1,49 м | --- | --- |
Примечание. Для результатов обрезки 60% каналов для RESNET164-CIFAR100 в этой реализации иногда все слои обрезаны, и возникнут ошибки. Тем не менее, мы также предоставляем реализацию маски, в которой мы применяем маску к коэффициенту масштабирования в уровне BN. Для Mask Revivationaion, при обрезке 60% каналов в RESNET164-CIFAR100, мы также можем обучить обрезку сети.
| CIFAR100-DENSENET-40 | Базовый уровень | Редкость (1E-5) | Черносли (40%) | Fine-Tune-160 (40%) | Чернослив (60%) | Fine-Tune-160 (60%) |
|---|---|---|---|---|---|---|
| Точность TOP1 (%) | 73,27 | 73,29 | 67.67 | 73,76 | 19.18 | 73.19 |
| Параметры | 1,10 м | 1,10 м | 0,71 м | 0,71 м | 0,50 м | 0,50 м |
sunmj15 на gmail.com liuzhuangthu на gmail.com