README.md 3.1 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
21
22
23
24
25
26
## 环境配置

### Docker

拉取镜像:

```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
38
39
40
41
42
43
44
45
46
47
48
创建并启动容器:

```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
```

## 数据集

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

## 推理

### Python版本推理

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

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

liucong's avatar
liucong committed
50
51
52
```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```
liucong's avatar
liucong committed
53

liucong's avatar
liucong committed
54
#### 运行示例
liucong's avatar
liucong committed
55
56

```python
liucong's avatar
liucong committed
57
# 进入resnet50 migraphx工程根目录
liucong's avatar
liucong committed
58
cd <path_to_resnet50_migraphx> 
liucong's avatar
liucong committed
59
60
61
62
63

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

# 安装依赖
liucong's avatar
liucong committed
64
65
66
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
# 运行示例
liucong's avatar
liucong committed
67
68
69
python Classifier.py
```

liucong's avatar
liucong committed
70
### C++版本推理
liucong's avatar
liucong committed
71

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

liucong's avatar
liucong committed
74
#### 安装Opencv依赖
liucong's avatar
liucong committed
75
76

```python
liucong's avatar
liucong committed
77
cd <path_to_resnet50_migraphx>
liucong's avatar
liucong committed
78
79
80
81
sh ./3rdParty/InstallOpenCVDependences.sh
```


liucong's avatar
liucong committed
82
#### 安装OpenCV并构建工程
liucong's avatar
liucong committed
83
84
85
86
87

```
rbuild build -d depend
```

liucong's avatar
liucong committed
88
#### 设置环境变量
liucong's avatar
liucong committed
89
90
91
92

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

```
liucong's avatar
liucong committed
93
export LD_LIBRARY_PATH=<path_to_resnet50_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
liucong's avatar
liucong committed
94
95
96
97
98
99
100
101
```

然后执行:

```
source ~/.bashrc
```

liucong's avatar
liucong committed
102
#### 运行示例
liucong's avatar
liucong committed
103
104

```python
liucong's avatar
liucong committed
105
# 进入resnet50 migraphx工程根目录
liucong's avatar
liucong committed
106
cd <path_to_resnet50_migraphx> 
liucong's avatar
liucong committed
107
108

# 进入build目录
liucong's avatar
liucong committed
109
cd build/
liucong's avatar
liucong committed
110
111
112
113
114

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

liucong's avatar
liucong committed
115
116
117
118
119
120
121
122
123
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
152
## 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
153
## 源码仓库及问题反馈
liucong's avatar
liucong committed
154

liucong's avatar
liucong committed
155
https://developer.hpccube.com/codes/modelzoo/resnet50_migraphx
liucong's avatar
liucong committed
156

liucong's avatar
liucong committed
157
## 参考
liucong's avatar
liucong committed
158

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