README.md 4.41 KB
Newer Older
dcuai's avatar
dcuai committed
1
# mobilenet_prune
chenxj's avatar
chenxj committed
2
## 论文
dcuai's avatar
dcuai committed
3
4
5
* EfficientNet https://arxiv.org/pdf/1905.11946.pdf 
* mobilenetv2 https://arxiv.org/pdf/1801.04381.pdf 
* mobilenetv3 https://arxiv.org/pdf/1905.02244.pdf 
sugon_cxj's avatar
sugon_cxj committed
6
## 模型结构
chenxj's avatar
chenxj committed
7
8
mobilenetv2:

chenzk's avatar
chenzk committed
9
![image](https://developer.sourcefind.cn/codes/modelzoo/mobilenet_prune/-/raw/main/mobilenetv2.png)
chenxj's avatar
chenxj committed
10
11

详细模型结构见官方论文:
dcuai's avatar
dcuai committed
12
13
14
* EfficientNet https://arxiv.org/pdf/1905.11946.pdf 
* mobilenetv2 https://arxiv.org/pdf/1801.04381.pdf 
* mobilenetv3 https://arxiv.org/pdf/1905.02244.pdf 
chenxj's avatar
chenxj committed
15
## 算法原理
dcuai's avatar
dcuai committed
16
mobilenetv2:
dcuai's avatar
dcuai committed
17

dcuai's avatar
dcuai committed
18
具有线性瓶颈的反转残差(inverted residual ):该模块将低维压缩表示作为输入,首先将其扩展为高维度并使用轻量级沿深度卷积(depthwiseconvolution)进行滤波。随后通过线性卷积将特征投射回低维表示。中间层使用轻量级的沿深度卷积来对特征进行滤波作为非线性的来源。
chenzk's avatar
chenzk committed
19
![image](https://developer.sourcefind.cn/codes/modelzoo/mobilenet_prune/-/raw/main/mobilenetV2.png)
dcuai's avatar
dcuai committed
20

sugon_cxj's avatar
sugon_cxj committed
21
## 数据集
dcuai's avatar
dcuai committed
22
`CIFAR-10`
dengjb's avatar
update  
dengjb committed
23
24
- 官方下载通道
  - [https://www.cs.toronto.edu/~kriz/cifar.html](https://www.cs.toronto.edu/~kriz/cifar.html)
dcuai's avatar
dcuai committed
25
26
27
28
29
30
31
32
33
34
35
36
37
38

训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备:
```
├── cifar-10-batches-py
│   ├── batches.meta
│   ├── data_batch_1
│   ├── data_batch_2
│   ├── data_batch_3
│   ├── data_batch_4
│   ├── data_batch_5
│   ├── readme.html
│   └── test_batch
```
**tips:本模型也会自动下载数据集
chenxj's avatar
chenxj committed
39
## 环境配置
chenxj's avatar
chenxj committed
40
[光源](https://sourcefind.cn/#/main-page)可拉取剪枝及微调的docker镜像,在[光合开发者社区](https://cancon.hpccube.com:65024/4/main/)可下载torch安装包。mobilenet_prune推荐的镜像如下:
sugon_cxj's avatar
sugon_cxj committed
41
```
dcuai's avatar
dcuai committed
42
43
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
docker run -d -t --privileged --device=/dev/kfd --device=/dev/dri/ -v /opt/hyhal:/opt/hyhal:ro --network=host --group-add video --name prune-test image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
chenxj's avatar
chenxj committed
44
docker exec -it prune-test bash
sugon_cxj's avatar
sugon_cxj committed
45
```
chenxj's avatar
chenxj committed
46
安装依赖
sugon_cxj's avatar
sugon_cxj committed
47
48
49
50
```
cd mobilenet_prune
pip3 install -r requirements.txt
```
dcuai's avatar
dcuai committed
51
52
## 训练
### 剪枝
sugon_cxj's avatar
sugon_cxj committed
53
54
55
56
57
58
59
60
61
62
63
64
efficientnet
```
python3 main.py --mode prune --model efficientnet --batch-size 128 --restore ./checkpoints/efficientnet.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
mobilenetv2
```
python3 main.py --mode prune --model mobilenetv2 --batch-size 128 --restore ./checkpoints/mobilenetv2.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
mobilenetv3
```
python3 main.py --mode prune --model mobilenetv3 --batch-size 128 --restore ./checkpoints/mobilenetv3.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
dcuai's avatar
dcuai committed
65
### 测试
sugon_cxj's avatar
sugon_cxj committed
66
67
68
69
70
71
72
73
74
75
76
77
efficientnet
```
python3 main.py --mode test --model efficientnet --batch-size 128 --restore ./run/cifar10/prune/cifar10-global-l1-efficientnet/cifar10_efficientnet_l1.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
mobilenetv2
```
python3 main.py --mode test --model mobilenetv2 --batch-size 128 --restore ./run/cifar10/prune/cifar10-global-l1-mobilenetv2/cifar10_mobilenetv2_l1.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
mobilenetv3
```
python3 main.py --mode test --model mobilenetv3 --batch-size 128 --restore ./run/cifar10/prune/cifar10-global-l1-mobilenetv3/cifar10_mobilenetv3_l1.pt --dataset cifar10  --method l1 --speed-up 2.11 --global-pruning
```
chenxj's avatar
chenxj committed
78
## result
chenzk's avatar
chenzk committed
79
![image](https://developer.sourcefind.cn/codes/modelzoo/mobilenet_prune/-/raw/main/result.png)
chenxj's avatar
chenxj committed
80
### 精度
sugon_cxj's avatar
sugon_cxj committed
81
method l1
chenxj's avatar
chenxj committed
82
83
84
85
86
| model | Base Acc | Pruned Acc | 
| :------: | :------: |:------: |
| efficientnet | 0.9300 | 0.9248 | 
| mobilenetv2 | 0.9222 | 0.9205 | 
| mobilenetv3 | 0.9034 | 0.8963 | 
sugon_cxj's avatar
sugon_cxj committed
87
88

method lamp
chenxj's avatar
chenxj committed
89
90
91
92
93
| model | Base Acc | Pruned Acc | 
| :------: | :------: |:------: |
| efficientnet | 0.9300 | 0.9256 | 
| mobilenetv2 | 0.9222 | 0.9225 | 
| mobilenetv3 | 0.9034 | 0.9044 | 
sugon_cxj's avatar
sugon_cxj committed
94
95

method group_norm
chenxj's avatar
chenxj committed
96
97
98
99
100
| model | Base Acc | Pruned Acc | 
| :------: | :------: |:------: |
| efficientnet | 0.9300 | 0.8977 | 
| mobilenetv2 | 0.9222 | 0.8953 | 
| mobilenetv3 | 0.9034 | 0.8852 | 
sugon_cxj's avatar
sugon_cxj committed
101

chenxj's avatar
chenxj committed
102
103
104
105
106
## 应用场景
### 算法类别
图像分类
### 热点应用行业
交通,金融,医疗,教育,家居
sugon_cxj's avatar
sugon_cxj committed
107
## 源码仓库及问题反馈
chenzk's avatar
chenzk committed
108
https://developer.sourcefind.cn/codes/modelzoo/mobilenet_prune
chenxj's avatar
chenxj committed
109
## 参考资料
sugon_cxj's avatar
sugon_cxj committed
110
* [Torch-Pruning](https://github.com/VainF/Torch-Pruning)
sugon_cxj's avatar
sugon_cxj committed
111