README.md 3.51 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
26

拉取镜像:

```plaintext
docker pull image.sourcefind.cn:5000/dcu/admin/base/migraphx:4.0.0-centos7.6-dtk23.04.1-py38-latest
liucong's avatar
liucong committed
27
28
```

liucong's avatar
liucong committed
29
30
31
32
33
34
35
36
37
创建并启动容器:

```plaintext
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 -it <Your Image ID> /bin/bash

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

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

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

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 -it <Your Image ID> /bin/bash
```

liucong's avatar
liucong committed
47
48
49
50
51
52
53
54
55
56
57
## 数据集

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

## 推理

### Python版本推理

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

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

liucong's avatar
liucong committed
59
60
61
```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```
liucong's avatar
liucong committed
62

liucong's avatar
liucong committed
63
#### 运行示例
liucong's avatar
liucong committed
64
65

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

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

# 安装依赖
liucong's avatar
liucong committed
73
74
75
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
# 运行示例
liucong's avatar
liucong committed
76
77
78
python Classifier.py
```

liucong's avatar
liucong committed
79
### C++版本推理
liucong's avatar
liucong committed
80

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

liucong's avatar
liucong committed
83
#### 安装Opencv依赖
liucong's avatar
liucong committed
84
85

```python
liucong's avatar
liucong committed
86
cd <path_to_resnet50_migraphx>
liucong's avatar
liucong committed
87
88
89
90
sh ./3rdParty/InstallOpenCVDependences.sh
```


liucong's avatar
liucong committed
91
#### 安装OpenCV并构建工程
liucong's avatar
liucong committed
92
93
94
95
96

```
rbuild build -d depend
```

liucong's avatar
liucong committed
97
#### 设置环境变量
liucong's avatar
liucong committed
98
99
100
101

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

```
liucong's avatar
liucong committed
102
export LD_LIBRARY_PATH=<path_to_resnet50_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
liucong's avatar
liucong committed
103
104
105
106
107
108
109
110
```

然后执行:

```
source ~/.bashrc
```

liucong's avatar
liucong committed
111
#### 运行示例
liucong's avatar
liucong committed
112
113

```python
liucong's avatar
liucong committed
114
# 进入resnet50 migraphx工程根目录
liucong's avatar
liucong committed
115
cd <path_to_resnet50_migraphx> 
liucong's avatar
liucong committed
116
117

# 进入build目录
liucong's avatar
liucong committed
118
cd build/
liucong's avatar
liucong committed
119
120
121
122
123

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

liucong's avatar
liucong committed
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
## 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
152
153
154
155
### 精度



liucong's avatar
liucong committed
156
157
158
159
160
161
162
163
164
165
## 应用场景

### 算法类别

图像分类

### 热点应用行业

制造,政府,医疗,科研

liucong's avatar
liucong committed
166
## 源码仓库及问题反馈
liucong's avatar
liucong committed
167

liucong's avatar
liucong committed
168
https://developer.hpccube.com/codes/modelzoo/resnet50_migraphx
liucong's avatar
liucong committed
169

liucong's avatar
liucong committed
170
## 参考资料
liucong's avatar
liucong committed
171

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