README.md 2.87 KB
Newer Older
yangql's avatar
yangql committed
1
# ResNet50
yangql's avatar
yangql committed
2
3
## 论文
`Deep Residual Learning for Image Recognition`
yangql's avatar
yangql committed
4

yangql's avatar
yangql committed
5
- https://arxiv.org/abs/1512.03385
yangql's avatar
yangql committed
6
7
8
9

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

yangql's avatar
yangql committed
10
![ResNet50模型结构](./Doc/images/1.png)
yangql's avatar
yangql committed
11

yangql's avatar
yangql committed
12
13
## 算法原理
ResNet50使用了多个具有残差连接的残差块来解决梯度消失或梯度爆炸问题,并使得网络可以向更深层发展。
yangql's avatar
yangql committed
14

yangql's avatar
yangql committed
15
![算法原理](./Doc/images/2.png)
yangql's avatar
yangql committed
16

yangql's avatar
yangql committed
17
## 环境配置
yangql's avatar
yangql committed
18
### Docker(方法一)
yangql's avatar
yangql committed
19
拉取镜像:
yangql's avatar
yangql committed
20
```python
liucong's avatar
liucong committed
21

yangql's avatar
yangql committed
22
23
```

yangql's avatar
yangql committed
24
创建并启动容器:
yangql's avatar
yangql committed
25
```
yangql's avatar
yangql committed
26

yangql's avatar
yangql committed
27
```
yangql's avatar
yangql committed
28
29
30
31
### Dockerfile(方法二)
```

```
yangql's avatar
yangql committed
32

yangql's avatar
yangql committed
33
## 数据集
dcuai's avatar
dcuai committed
34
35
36
37


<!--
下载ImageNet数据集:[ImageNet (image-net.org)](https://image-net.org/)  数据集快速下载通道[ImageNet](http://113.200.138.88:18080/aidatasets/project-dependency/imagenet-2012)
yangql's avatar
yangql committed
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

```
data
    |
    train
        |
        n01440764
        n01443537
        ...
    val
        |
        n01440764
        n01443537
        ...
```
dcuai's avatar
dcuai committed
53
-->
yangql's avatar
yangql committed
54
55
## 推理
### Python版本推理
liucong's avatar
liucong committed
56
采用ONNXRuntime框架使用DCU进行migraphx后端推理。
yangql's avatar
yangql committed
57
#### 配置环境
yangql's avatar
yangql committed
58
```python
yangql's avatar
yangql committed
59
# 进入resnet50 onnxruntime工程根目录
liucong's avatar
liucong committed
60
cd <path_to_resnet50_onnxruntime_migraphx> 
yangql's avatar
yangql committed
61
62

# 安装依赖
yangql's avatar
yangql committed
63
pip install -r ./Python/requirements.txt
yangql's avatar
yangql committed
64
65
```
#### 运行示例
liucong's avatar
liucong committed
66
67
68

本示例程序中一共给出了三种推理方式:

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

# 进入示例程序目录
cd Python/
yangql's avatar
yangql committed
75

liucong's avatar
liucong committed
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 静态推理,输入输出为cpu数据
python Classifier.py --staticInfer

# 动态推理,输入输出为cpu数据
python Classifier.py --dynamicInfer

# 静态推理,输入为gpu数据,输出为cpu数据
python Classifier_run_with_ort.py --staticInfer

# 动态推理,输入为gpu数据,输出为cpu数据
python Classifier_run_with_ort.py --dynamicInfer

# 静态推理,输入输出为gpu数据
python Classifier_io_binding.py
yangql's avatar
yangql committed
90
91
```

yangql's avatar
yangql committed
92
### C++版本推理
liucong's avatar
liucong committed
93
采用ONNXRuntime框架使用DCU进行推理,下面介绍如何运行C++代码示例。
yangql's avatar
yangql committed
94
#### 构建工程
yangql's avatar
yangql committed
95
```c++
liucong's avatar
liucong committed
96
cd <path_to_resnet50_onnxruntime_migraphx>
yangql's avatar
yangql committed
97

yangql's avatar
yangql committed
98
99
rbuild build -d depend
```
yangql's avatar
yangql committed
100
#### 设置环境变量
yangql's avatar
yangql committed
101
将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:
yangql's avatar
yangql committed
102
```c++
liucong's avatar
liucong committed
103
export LD_LIBRARY_PATH=<path_to_resnet50_onnxruntime_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
yangql's avatar
yangql committed
104
105
106
107
108
```
然后执行:
```
source ~/.bashrc
```
yangql's avatar
yangql committed
109

yangql's avatar
yangql committed
110
#### 运行示例
yangql's avatar
yangql committed
111
```c++
yangql's avatar
yangql committed
112
# 进入resnet50_onnxruntime工程根目录
yangql's avatar
yangql committed
113
cd <path_to_resnet50_onnxruntime> 
yangql's avatar
yangql committed
114
115
116
117
118
119
120

# 进入build目录
cd build/

# 执行示例程序
./ResNet50
```
yangql's avatar
yangql committed
121
## result
yangql's avatar
yangql committed
122
### python版本
yangql's avatar
yangql committed
123
124

![result](./Doc/images/output_image.jpg)
yangql's avatar
yangql committed
125
### C++版本
yangql's avatar
yangql committed
126
127

![result](./Doc/images/output_image.jpg)
yangql's avatar
yangql committed
128
129
### 精度

yangql's avatar
yangql committed
130

yangql's avatar
yangql committed
131
132
133
## 应用场景
### 算法类别
`图像分类`
yangql's avatar
yangql committed
134

yangql's avatar
yangql committed
135
136
137
138
139
### 热点应用行业
`制造,政府,医疗,科研`

## 源码仓库及问题反馈
https://developer.hpccube.com/codes/modelzoo/resnet50_onnxruntime
yangql's avatar
yangql committed
140

yangql's avatar
yangql committed
141
## 参考资料
yangql's avatar
yangql committed
142
143
https://github.com/onnx/models/tree/main/vision/classification/resnet