network slimming
1.0.0
该存储库包含以下论文的官方Pytorch实施
通过网络减少学习有效的卷积网络(ICCV 2017)。
Zhuang Liu,Jianguo Li,Zhiqiang Shen,Gao Huang,Shoumeng Yan,Changshui Zhang。
原始实施:在火炬中减肥。
该代码基于Pytorch-Smlimming。我们增加了对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,Torchvision V0.2.0
我们引入了channel selection层,以帮助修剪Resnet和Densenet。该层易于实现。它存储一个参数indexes该参数索引初始化为All-1向量。在修剪过程中,它将设置一些与修剪通道相对应的位置。
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结果非常接近原始论文,其结果是由火炬产生的。请注意,根据我们的经验,由于不同的随机种子,CIFAR-10/100数据集的波动可能高达约0.5%/1.5%。
| CIFAR10-VGG | 基线 | 稀疏(1E-4) | 修剪(70%) | 微调160(70%) |
|---|---|---|---|---|
| TOP1精度(%) | 93.77 | 93.30 | 32.54 | 93.78 |
| 参数 | 20.04m | 20.04m | 225万 | 225万 |
| CIFAR10-RESNET-164 | 基线 | 稀疏(1E-5) | 修剪(40%) | 微调160(40%) | 修剪(60%) | 微调160(60%) |
|---|---|---|---|---|---|---|
| TOP1精度(%) | 94.75 | 94.76 | 94.58 | 95.05 | 47.73 | 93.81 |
| 参数 | 171m | 173万 | 145m | 145m | 11.12m | 11.12m |
| CIFAR10-DENSENET-40 | 基线 | 稀疏(1E-5) | 修剪(40%) | 微调160(40%) | 修剪(60%) | 微调160(60%) |
|---|---|---|---|---|---|---|
| TOP1精度(%) | 94.11 | 94.17 | 94.16 | 94.32 | 89.46 | 94.22 |
| 参数 | 1.07m | 1.07m | 0.69m | 0.69m | 4.49m | 4.49m |
| cifar100-vgg | 基线 | 稀疏(1E-4) | 修剪(50%) | 微调160(50%) |
|---|---|---|---|---|
| TOP1精度(%) | 72.12 | 72.05 | 5.31 | 73.32 |
| 参数 | 20.04m | 20.04m | 4.93m | 4.93m |
| CIFAR100-RESNET-164 | 基线 | 稀疏(1E-5) | 修剪(40%) | 微调160(40%) | 修剪(60%) | 微调160(60%) |
|---|---|---|---|---|---|---|
| TOP1精度(%) | 76.79 | 76.87 | 48.0 | 77.36 | --- | --- |
| 参数 | 173万 | 173万 | 149m | 149m | --- | --- |
注意:对于将60%的RESNET164-CIFAR100通道修剪的结果,在此实现中,有时有些层都被修剪,并且会出现错误。但是,我们还提供了掩模实现,在其中将掩码应用于BN层中的缩放系数。对于Mask enimallaion,在Resnet164-Cifar100中修剪60%的频道时,我们还可以训练修剪的网络。
| CIFAR100-DENSENET-40 | 基线 | 稀疏(1E-5) | 修剪(40%) | 微调160(40%) | 修剪(60%) | 微调160(60%) |
|---|---|---|---|---|---|---|
| TOP1精度(%) | 73.27 | 73.29 | 67.67 | 73.76 | 19.18 | 73.19 |
| 参数 | 1.10m | 1.10m | 0.71m | 0.71m | 0.50m | 0.50m |
sunmj15在gmail.com上liuzhuangthu at gmail.com