README.md 3.37 KB
Newer Older
Sugon_ldc's avatar
Sugon_ldc committed
1
2
3
4
# Vision-Transformers-cifar10_pyTorch
## 论文
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale`
- https://arxiv.org/abs/2010.11929
Rayyyyy's avatar
Rayyyyy committed
5

Sugon_ldc's avatar
Sugon_ldc committed
6
## 模型结构
Sugon_ldc's avatar
Sugon_ldc committed
7
Vision Transformer先将图像用卷积进行分块以降低计算量,再对每一块进行展平处理变成序列,然后将序列添加位置编码和cls token,再输入多层Transformer结构提取特征,最后将cls tooken取出来通过一个MLP(多层感知机)用于分类。
Sugon_ldc's avatar
Sugon_ldc committed
8

Sugon_ldc's avatar
Sugon_ldc committed
9
10
![img](./img/vit.png)
## 算法原理
Rayyyyy's avatar
Rayyyyy committed
11

Sugon_ldc's avatar
Sugon_ldc committed
12
图像领域借鉴《Transformer is all you need!》算法论文中的Encoder结构提取特征,Transformer的核心思想是利用注意力模块attention提取特征:
Sugon_ldc's avatar
Sugon_ldc committed
13

Sugon_ldc's avatar
Sugon_ldc committed
14
![img](./img/attention.png)
Rayyyyy's avatar
Rayyyyy committed
15

Sugon_ldc's avatar
Sugon_ldc committed
16
17
18
19
20
## 环境配置
### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
Sugon_ldc's avatar
Sugon_ldc committed
21

Sugon_ldc's avatar
Sugon_ldc committed
22
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 bash
Sugon_ldc's avatar
Sugon_ldc committed
23

Sugon_ldc's avatar
Sugon_ldc committed
24
25
cd /path/workspace/
pip install pandas==1.5.3
Sugon_ldc's avatar
Sugon_ldc committed
26
```
Rayyyyy's avatar
Rayyyyy committed
27

Sugon_ldc's avatar
Sugon_ldc committed
28
29
### Dockerfile(方法二)
此处提供dockerfile的使用方法
Sugon_ldc's avatar
Sugon_ldc committed
30
```
Sugon_ldc's avatar
Sugon_ldc committed
31
32
33
34
cd ./docker
docker build --no-cache -t yolov5:6.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 bash
```
Rayyyyy's avatar
Rayyyyy committed
35

Sugon_ldc's avatar
Sugon_ldc committed
36
37
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:
Sugon_ldc's avatar
Sugon_ldc committed
38

Sugon_ldc's avatar
Sugon_ldc committed
39
40
41
42
43
44
45
46
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
DTK驱动:dtk22.10
python:python3.8
torch:1.10
torchvision:0.10.0
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
Sugon_ldc's avatar
Sugon_ldc committed
47

Sugon_ldc's avatar
Sugon_ldc committed
48
其它非深度学习库参照requirements.txt安装:
Sugon_ldc's avatar
Sugon_ldc committed
49
```
Sugon_ldc's avatar
Sugon_ldc committed
50
pip install -r requirements.txt
Sugon_ldc's avatar
Sugon_ldc committed
51
52
pip install pandas==1.5.3
```
Rayyyyy's avatar
Rayyyyy committed
53

Sugon_ldc's avatar
Sugon_ldc committed
54
55
## 数据集
`CIFAR-10`
Rayyyyy's avatar
Rayyyyy committed
56
- http://113.200.138.88:18080/aidatasets/project-dependency/cifar
Sugon_ldc's avatar
Sugon_ldc committed
57

Sugon_ldc's avatar
Sugon_ldc committed
58
训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备:
Sugon_ldc's avatar
Sugon_ldc committed
59
```
Sugon_ldc's avatar
Sugon_ldc committed
60
61
62
63
64
65
66
67
68
├── 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
Sugon_ldc's avatar
Sugon_ldc committed
69
```
Sugon_ldc's avatar
Sugon_ldc committed
70
**tips:请注意在程序中设置数据集路径时,应该设置cifar-10-batches-py的上一级目录,否则会报错找不到文件**
Sugon_ldc's avatar
Sugon_ldc committed
71

Sugon_ldc's avatar
Sugon_ldc committed
72
73
## 训练
### 单机多卡
Sugon_ldc's avatar
Sugon_ldc committed
74
75
76
77
78
```
bash train.sh
#默认使用四卡训练,可在train.sh脚本中修改
```

Sugon_ldc's avatar
Sugon_ldc committed
79
80
## result
![accuracy](./img/accuracy.png)
Sugon_ldc's avatar
Sugon_ldc committed
81

Sugon_ldc's avatar
Sugon_ldc committed
82
83
### 精度
测试数据:[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html),使用的加速卡:DCU Z100L。
Sugon_ldc's avatar
Sugon_ldc committed
84

Sugon_ldc's avatar
Sugon_ldc committed
85
86
87
88
根据测试结果情况填写表格:
| 卡数 | 数据精度 | 准确率 |
| :------: | :------: | :------: |
| 4 | fp32 | 84.91% |
Rayyyyy's avatar
Rayyyyy committed
89

Sugon_ldc's avatar
Sugon_ldc committed
90
91
## 应用场景
### 算法类别
Rayyyyy's avatar
Rayyyyy committed
92
图像分类
Sugon_ldc's avatar
Sugon_ldc committed
93

Sugon_ldc's avatar
Sugon_ldc committed
94
### 热点应用行业
Rayyyyy's avatar
Rayyyyy committed
95
制造,环保,医疗,气象
Sugon_ldc's avatar
Sugon_ldc committed
96

Sugon_ldc's avatar
Sugon_ldc committed
97
98
## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/vision-transformers-cifar10_pytorch
Rayyyyy's avatar
Rayyyyy committed
99

Sugon_ldc's avatar
Sugon_ldc committed
100
101
## 参考资料
- https://github.com/kentaroy47/vision-transformers-cifar10