README.md 4.04 KB
Newer Older
dcuai's avatar
dcuai committed
1
# Swin-Transformer 
dcuai's avatar
dcuai committed
2
3
## 论文
[Swin Transformer: Hierarchical Vision Transformer using Shifted Windows](https://arxiv.org/abs/2103.14030)
unknown's avatar
unknown committed
4
5

## 模型结构
dcuai's avatar
dcuai committed
6
Swin Transformer体系结构的概述如下图所示,其中说明了 tiny version ( Swin-T )。它首先通过 patch 分割模块(如ViT )将输入的RGB图像分割成不重叠的 patch 。每个 patch 被当作一个 "token" ( 相当于NLP中的词源 )处理,它的特征被设置为原始像素RGB值的 concatenation。在我们的实现中,我们使用了 4 × 4 的 patch 大小,因此每个 patch 的特征维度为 4 × 4 × 3 = 48。在这个原始值特征上应用一个线性嵌入层,将其投影到任意维度( 记为C )。
unknown's avatar
unknown committed
7

unknown's avatar
unknown committed
8
![img](./docs/cc163380115640d4a5d88ffb246bde44.png)
unknown's avatar
unknown committed
9
10
11
12

- ( a )Swin Transformer ( Swin-T )的结构;
- ( b )连续 2 个Swin Transformer 块。

dcuai's avatar
dcuai committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## 算法原理
Swin Transformer 相比于 Transformer block (例如 ViT),将 标准多头自注意力模块 (MSA) 替换为 基于移位窗口的多头自注意力模块 (W-MSA / SW-MSA) 且保持其他部分不变。如图所示,一个 Swin Transformer block 由一个 基于移位窗口的 MSA 模块 构成,且后接一个夹有 GeLU 非线性在中间的 2 层 MLP。LayerNorm (LN) 层被应用于每个 MSA 模块和每个 MLP 前,且一个 残差连接 被应用于每个模块后。
<div align=center>
    <img src="figures/pic.png"/>
</div>

## 环境配置
### Docker(方法一)
提供[光源](https://sourcefind.cn/#/service-list)拉取的docker镜像:
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.2-py3.10
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/
pip install -r requirements.txt
```
Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。

### Dockerfile(方法二)
```bash
docker build -t swin_transformer:latest .
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/
pip install -r requirements.txt
```
### Anaconda(方法三)
chenzk's avatar
chenzk committed
40
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
dcuai's avatar
dcuai committed
41
42
43
44
45
46
47
48
49
50
51
```
DTK驱动: dtk24.04.2
python: 3.10
torch: 2.1.0
```
`Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应`

其它非深度学习库安装方式如下:
```bash
pip install -r requirements.txt
```
zwq330205812's avatar
zwq330205812 committed
52

unknown's avatar
unknown committed
53
54
55
## 数据集

在本测试中可以使用tiny-imagenet-200数据集。
chenzk's avatar
chenzk committed
56
[tiny-imagenet-200](http://cs231n.stanford.edu/tiny-imagenet-200.zip)
unknown's avatar
unknown committed
57

dcuai's avatar
dcuai committed
58
59
## 训练
### 单机单卡
unknown's avatar
unknown committed
60

dcuai's avatar
dcuai committed
61
62
63
```bash
HIP_VISIBLE_DEVICES=0 python3 -m torch.distributed.launch --nproc_per_node 1 --master_port 12345  main.py --cfg configs/swin/swin_tiny_patch4_window7_224.yaml --data-path /code/Datasets/tiny-imagenet-200/ --batch-size 128 --disable_amp 
```
unknown's avatar
unknown committed
64

dcuai's avatar
dcuai committed
65
66
67
68
69
### 单机多卡
```bash
HIP_VISIBLE_DEVICES=0,1,2,3 python3 -m torch.distributed.launch --nproc_per_node 4 --master_port 12345  main.py --cfg configs/swin/swin_tiny_patch4_window7_224.yaml --data-path /code/Datasets/tiny-imagenet-200/ --batch-size 128 --disable_amp 
```
具体参数设置可参考main.py和config.py
unknown's avatar
unknown committed
70

dcuai's avatar
dcuai committed
71
72
73
## 推理

## result
unknown's avatar
unknown committed
74

dcuai's avatar
dcuai committed
75
76
77
<div align=center>
    <img src="figures/result.png"/>
</div>
unknown's avatar
unknown committed
78

dcuai's avatar
dcuai committed
79
### 精度
unknown's avatar
unknown committed
80
81
测试数据使用的是tiny-imagenet-200,使用的加速卡是DCU Z100L。

sunxx1's avatar
sunxx1 committed
82
83
84
85
| 卡数 | 精度 |
| :------: | :------: |
| 1 | Acc@1:63.416  Acc:@5 85.666 |

dcuai's avatar
dcuai committed
86
87
88
89
90
91
92
93
## 应用场景
### 算法类别
`图像分类`

### 热点应用行业
`科研,教育,政府,金融`

## 源码仓库及问题反馈
sunxx1's avatar
sunxx1 committed
94

chenzk's avatar
chenzk committed
95
- https://developer.sourcefind.cn/codes/modelzoo/swin-transformer-pytorch
unknown's avatar
unknown committed
96

dcuai's avatar
dcuai committed
97
98
99
100
101
102
103
104
105
106
### 参考资料

- https://github.com/microsoft/Swin-Transformer


<!--
## 模型

[快速下载地址](http://113.200.138.88:18080/aimodels/swin_tiny_patch4_window7_224.ms_in1k)
-->