README.md 3.13 KB
Newer Older
dcuai's avatar
dcuai committed
1
# MobileNetV2
Sugon_ldc's avatar
Sugon_ldc committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 论文
- https://arxiv.org/abs/1801.04381
## 模型结构
MobileNetV2 是一种轻量级卷积神经网络,采用倒置残差结构和深度可分离卷积来高效地进行特征提取,适用于资源受限的移动设备和嵌入式系统

![model1](model1.png)


## 算法原理
MobileNetV2 通过使用倒置残差结构和深度可分离卷积,有效减少了计算量和参数数量,同时提高了模型的效率和准确性

![model2](model2.png)


## 环境配置
### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-py3.10-dtk24.04.3-ubuntu20.04

docker run -it --name docker_name -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal:ro --network=host --shm-size=32G --privileged=true --device=/dev/kfd --ipc=host --device=/dev/dri/ --group-add video image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-py3.10-dtk24.04.3-ubuntu20.04 /bin/bash
Sugon_ldc's avatar
Sugon_ldc committed
23
24

pip install -r requirements.txt
Sugon_ldc's avatar
Sugon_ldc committed
25
26
27
28
29
30
31
```
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
cd ./docker
docker build --no-cache -t mobilenetv2:1.0 .
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID /bin/bash
Sugon_ldc's avatar
Sugon_ldc committed
32
33

pip install -r requirements.txt
Sugon_ldc's avatar
Sugon_ldc committed
34
35
36
37
```
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:

chenzk's avatar
chenzk committed
38
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
Sugon_ldc's avatar
Sugon_ldc committed
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
```
DTK驱动:dtk24.04.3
python:python3.10
torch:2.1.0
torchvision:0.16.0
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`

其它非深度学习库参考如下安装:
```
pip install scikit-learn
```
## 数据集
`fer2013`

工程文件中包含删减了部分内容的fer2013数据集

- https://www.kaggle.com/datasets/deadskull7/fer2013。

数据集为单个的csv文件

## 训练
一般情况下,ModelZoo上的项目提供单机训练的启动方法即可,单机多卡、单机单卡至少提供其一训练方法。
### 单机多卡
```
Sugon_ldc's avatar
Sugon_ldc committed
64
mkdir logs #若已经创建不需要重新创建
Sugon_ldc's avatar
Sugon_ldc committed
65
export HIP_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
Sugon_ldc's avatar
Sugon_ldc committed
66
67
68
69
70
python -m torch.distributed.launch --nproc_per_node=8 driver.py 
```

### 单机单卡
```
Sugon_ldc's avatar
Sugon_ldc committed
71
export HIP_VISIBLE_DEVICES=0
Sugon_ldc's avatar
Sugon_ldc committed
72
mkdir logs #若已经创建不需要重新创建
Sugon_ldc's avatar
Sugon_ldc committed
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
python driver.py
```


## result

![result](result.png)



### 精度
测试数据:fer2013,使用的加速卡:K100_AI。

根据测试结果情况填写表格:
| 卡数 | 精度 |
| :------: | :------: |
Sugon_ldc's avatar
Sugon_ldc committed
89
| 8 | 0.668 |
Sugon_ldc's avatar
Sugon_ldc committed
90
91
92
93
94
95
96
97
98
99
100
101
102
103
## 应用场景
### 算法类别
`目标检测`

### 热点应用行业

`交通,政府,金融`

## 预训练权重
- 该工程为通用训练模型,不需要预训练权重文件
## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/mobilenet_v2_pytorch
## 参考资料
- [vision/torchvision/models/mobilenetv2.py at main · pytorch/vision](https://github.com/pytorch/vision/blob/main/torchvision/models/mobilenetv2.py)