README.md 2.99 KB
Newer Older
liucong's avatar
liucong committed
1
2
3
4
5
6
7
8
9
10
# ResNet50

## 模型介绍
使用MIGraphX推理框架对ResNet50模型进行推理。

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

## Python版本推理

liucong's avatar
liucong committed
11
下面介绍如何运行python代码示例,具体推理代码解析,在Doc/Tutorial_Python.md中有详细说明。
liucong's avatar
liucong committed
12

liucong's avatar
liucong committed
13
### 拉取镜像
liucong's avatar
liucong committed
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

在光源可拉取推理的docker镜像,ResNet50模型推理的镜像如下: 

```python
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:ort1.14.0_migraphx3.0.0-dtk22.10.1
```

### 推理示例

1.参考《MIGraphX教程》设置好PYTHONPATH

2.安装依赖:

```python
# 进入migraphx samples工程根目录
cd <path_to_migraphx_samples> 

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

# 安装依赖
pip install -r requirements.txt
```

3.在Python目录下执行如下命令运行该示例程序:

```python
python Classifier.py
```

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

```
[ 1.25075293e+00  1.78420877e+00 -2.56109548e+00 -3.44433069e+00
 -2.66113567e+00  1.52841401e+00  7.93735325e-01 -1.26759931e-02
 ...
  4.39746976e-02  3.43239784e-01  2.75328755e+00  1.70684290e+00
  8.54880095e-01  2.12219620e+00  2.35758686e+00 -1.06204104e+00]
```

## C++版本推理

liucong's avatar
liucong committed
56
下面介绍如何运行C++代码示例,具体推理代码解析,在Doc/Tutorial_Cpp.md目录中有详细说明。
liucong's avatar
liucong committed
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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

参考Python版本推理中的构建安装,在光源中拉取推理的docker镜像。

### 安装Opencv依赖

```python
cd <path_to_migraphx_samples>
sh ./3rdParty/InstallOpenCVDependences.sh
```

### 修改CMakeLists.txt

- 如果使用ubuntu系统,需要修改CMakeLists.txt中依赖库路径:
  将"${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/"修改为"${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/"

- **MIGraphX2.3.0及以上版本需要c++17**


### 安装OpenCV并构建工程

```
rbuild build -d depend
```

### 设置环境变量

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

**Centos**:

```
export LD_LIBRARY_PATH=<path_to_migraphx_samples>/depend/lib64/:$LD_LIBRARY_PATH
```

**Ubuntu**:

```
export LD_LIBRARY_PATH=<path_to_migraphx_samples>/depend/lib/:$LD_LIBRARY_PATH
```

然后执行:

```
source ~/.bashrc
```

### 推理示例

运行ResNet50示例程序,具体执行如下命令:

```python
# 进入migraphx samples工程根目录
cd <path_to_migraphx_samples> 

# 进入build目录
cd ./build/

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

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

```
label:0,confidence:1.250770
label:1,confidence:1.784038
label:2,confidence:-2.561039
label:3,confidence:-3.444281
label:4,confidence:-2.661026
label:5,confidence:1.528260
...
label:995,confidence:1.706820
label:996,confidence:0.854793
label:997,confidence:2.121985
label:998,confidence:2.357481
label:999,confidence:-1.062007
```

## 历史版本

https://developer.hpccube.com/codes/modelzoo/classifier_migraphx

## 参考资料

https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/tree/develop/examples/vision/python_resnet50