README.md 4.33 KB
Newer Older
liucong's avatar
liucong committed
1
2
# ResNet50

liucong's avatar
liucong committed
3
4
5
6
## 论文
Deep Residual Learning for Image Recognition

- https://arxiv.org/abs/1512.03385
liucong's avatar
liucong committed
7
8
9
10

## 模型结构
ResNet50模型包含了49个卷积层、一个全连接层。

liucong's avatar
liucong committed
11
<img src="./Doc/Images/ResNet50.png" style="zoom:80%;" align=middle>
liucong's avatar
liucong committed
12

liucong's avatar
liucong committed
13
## 算法原理
liucong's avatar
liucong committed
14

liucong's avatar
liucong committed
15
ResNet50使用了多个具有残差连接的残差块来解决梯度消失或梯度爆炸问题,并使得网络可以向更深层发展。
liucong's avatar
liucong committed
16

liucong's avatar
liucong committed
17
<img src="./Doc/Images/Residual_Block.png" style="zoom:100%;" align=middle>
liucong's avatar
liucong committed
18

liucong's avatar
liucong committed
19
20
## 环境配置

liucong's avatar
liucong committed
21
### Docker(方法一)
liucong's avatar
liucong committed
22
23
24
25

拉取镜像:

```plaintext
liucong's avatar
liucong committed
26
docker pull image.sourcefind.cn:5000/dcu/admin/base/migraphx:4.3.0-ubuntu20.04-dtk24.04.1-py3.10
liucong's avatar
liucong committed
27
28
```

liucong's avatar
liucong committed
29
30
31
创建并启动容器:

```plaintext
liucong's avatar
liucong committed
32
docker run --shm-size 16g --network=host --name=resnet50_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/resnet50_migraphx:/home/resnet50_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash
liucong's avatar
liucong committed
33
34
35
36
37

# 激活dtk
source /opt/dtk/env.sh
```

liucong's avatar
liucong committed
38
39
40
41
42
43
### Dockerfile(方法二)

```plaintext
cd ./docker
docker build --no-cache -t resnet50_migraphx:2.0 .

liucong's avatar
liucong committed
44
docker run --shm-size 16g --network=host --name=resnet50_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/resnet50_migraphx:/home/resnet50_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash
liucong's avatar
liucong committed
45
46
47

# 激活dtk
source /opt/dtk/env.sh
liucong's avatar
liucong committed
48
49
```

liucong's avatar
liucong committed
50
51
52
53
54
55
56
57
58
59
60
## 数据集

根据需求上传所需图像,可以对相应图像进行分类。

## 推理

### Python版本推理

下面介绍如何运行Python代码示例,Python示例的详细说明见Doc目录下的Tutorial_Python.md。

#### 设置环境变量
liucong's avatar
liucong committed
61

liucong's avatar
liucong committed
62
63
64
```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```
liucong's avatar
liucong committed
65

liucong's avatar
liucong committed
66
#### 运行示例
liucong's avatar
liucong committed
67
68

```python
liucong's avatar
liucong committed
69
# 进入resnet50 migraphx工程根目录
liucong's avatar
liucong committed
70
cd <path_to_resnet50_migraphx> 
liucong's avatar
liucong committed
71
72
73
74
75

# 进入示例程序目录
cd Python/

# 安装依赖
liucong's avatar
liucong committed
76
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
liucong's avatar
liucong committed
77
78
79
80
81
```

​	1.offload为true的模型推理

```
liucong's avatar
liucong committed
82
python Classifier.py
liucong's avatar
liucong committed
83
84
85
86
87
88
```

 	2.offload为false的模型推理

```
python Classifier_OffloadFalse.py
liucong's avatar
liucong committed
89
90
```

liucong's avatar
liucong committed
91
### C++版本推理
liucong's avatar
liucong committed
92

liucong's avatar
liucong committed
93
注意:当使用操作系统不一样时,CMakeList需要做相应的修改:
liucong's avatar
liucong committed
94
95
96
97
98
99
100
101
102

```
# ubuntu操作系统
${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/ 修改为 ${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/

# centos操作系统
${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/ 修改为 ${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/
```

liucong's avatar
liucong committed
103
104
下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md。

liucong's avatar
liucong committed
105
#### 安装Opencv依赖
liucong's avatar
liucong committed
106
107

```python
liucong's avatar
liucong committed
108
cd <path_to_resnet50_migraphx>
liucong's avatar
liucong committed
109
110
111
112
sh ./3rdParty/InstallOpenCVDependences.sh
```


liucong's avatar
liucong committed
113
#### 安装OpenCV并构建工程
liucong's avatar
liucong committed
114
115
116
117
118

```
rbuild build -d depend
```

liucong's avatar
liucong committed
119
#### 设置环境变量
liucong's avatar
liucong committed
120
121
122

将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:

liucong's avatar
liucong committed
123
124
125
当操作系统是ubuntu系统时:

```
liucong's avatar
liucong committed
126
export LD_LIBRARY_PATH=<path_to_resnet50_migraphx>/depend/lib/:$LD_LIBRARY_PATH
liucong's avatar
liucong committed
127
128
129
130
```

当操作系统是centos系统时:

liucong's avatar
liucong committed
131
```
liucong's avatar
liucong committed
132
export LD_LIBRARY_PATH=<path_to_resnet50_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
liucong's avatar
liucong committed
133
134
135
136
137
138
139
140
```

然后执行:

```
source ~/.bashrc
```

liucong's avatar
liucong committed
141
#### 运行示例
liucong's avatar
liucong committed
142
143

```python
liucong's avatar
liucong committed
144
# 进入resnet50 migraphx工程根目录
liucong's avatar
liucong committed
145
cd <path_to_resnet50_migraphx> 
liucong's avatar
liucong committed
146
147

# 进入build目录
liucong's avatar
liucong committed
148
cd build/
liucong's avatar
liucong committed
149
150
151
152
153

# 执行示例程序
./ResNet50
```

liucong's avatar
liucong committed
154
155
默认offload为true,如果想要offload为false,可以在./Resource/Configuration.xmlwen文件中修改Useoffloadcopy为1,再执行示例程序。

liucong's avatar
liucong committed
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
## result

### Python版本

输出结果中,每个值分别对应每个label的实际概率。

```
[[-2.07131356e-02  2.25237340e-01 -1.98313904e+00 -2.97360039e+00
  ...
  -1.08657278e-01  3.15954179e-01  1.94901395e+00 -5.70572257e-01]]
```

### C++版本

输出结果中,每个值分别对应每个label的实际概率。

```
label:0,confidence:-0.020714
label:1,confidence:0.225237
label:2,confidence:-1.983139
label:3,confidence:-2.973600
...
label:996,confidence:-0.108657
label:997,confidence:0.315954
label:998,confidence:1.949014
label:999,confidence:-0.570572
```

liucong's avatar
liucong committed
184
185
186
187
### 精度



liucong's avatar
liucong committed
188
189
190
191
192
193
194
195
196
197
## 应用场景

### 算法类别

图像分类

### 热点应用行业

制造,政府,医疗,科研

liucong's avatar
liucong committed
198
## 源码仓库及问题反馈
liucong's avatar
liucong committed
199

chenzk's avatar
chenzk committed
200
https://developer.sourcefind.cn/codes/modelzoo/resnet50_migraphx
liucong's avatar
liucong committed
201

liucong's avatar
liucong committed
202
## 参考资料
liucong's avatar
liucong committed
203

liucong's avatar
liucong committed
204
https://github.com/onnx/models/tree/main/vision/classification/resnet
liucong's avatar
liucong committed
205