"src/targets/gpu/vscode:/vscode.git/clone" did not exist on "7c4dc99a8aa7332ec4e73fc9c6cd75724eee6e40"
Commit 3e7e503b authored by liucong's avatar liucong
Browse files

修改readme及部分示例代码

parent e7035bdf
......@@ -67,20 +67,19 @@ def Preprocessing(pathOfImage):
```
def ort_seg_dcu(model_path,image):
#创建sess_options
sess_options = ort.SessionOptions()
# 选择migraphx后端推理
provider_options=[]
if staticInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'false'}]
#设置图优化
sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_BASIC
if dynamicInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'true', 'migraphx_profile_max_shapes':'data:1x3x224x224'}]
#是否开启profiling
sess_options.enable_profiling = False
dcu_session = ort.InferenceSession(model_path,sess_options,providers=['ROCMExecutionProvider'],)
dcu_session = ort.InferenceSession(model_path, providers=['MIGraphXExecutionProvider'], provider_options=provider_options)
input_name=dcu_session.get_inputs()[0].name
results = dcu_session.run(None, input_feed={input_name:image })
results = dcu_session.run(None, input_feed={input_name:image})
scores=np.array(results[0])
# print("ort result.shape:",scores.shape)
return scores
```
......
......@@ -62,7 +62,7 @@ def ort_seg_dcu(model_path,image,staticInfer,dynamicInfer):
provider_options=[]
if staticInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'false'}]
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true'}]
if dynamicInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'true', 'migraphx_profile_max_shapes':'data:1x3x224x224'}]
......
......@@ -60,7 +60,7 @@ def postprocess(scores,pathOfImage):
def ort_seg_dcu(model_path,image):
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'false'}]
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true'}]
dcu_session = ort.InferenceSession(model_path, providers=['MIGraphXExecutionProvider'], provider_options=provider_options)
output_data = np.empty(dcu_session.get_outputs()[0].shape).astype(np.float32)
......
......@@ -62,7 +62,7 @@ def ort_seg_dcu(model_path,image,staticInfer,dynamicInfer):
provider_options=[]
if staticInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'false'}]
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true'}]
if dynamicInfer:
provider_options=[{'device_id':'0','migraphx_fp16_enable':'true','dynamic_model':'true', 'migraphx_profile_max_shapes':'data:1x3x224x224'}]
......
......@@ -18,22 +18,16 @@ ResNet50使用了多个具有残差连接的残差块来解决梯度消失或梯
### Docker(方法一)
拉取镜像:
```python
docker pull image.sourcefind.cn:5000/dcu/admin/base/migraphx:4.3.0-ubuntu20.04-dtk24.04.1-py3.10
```
创建并启动容器:
```
docker run --shm-size 16g --network=host --name=resnet50_onnxruntime -v /opt/hyhal:/opt/hyhal:ro --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/resnet50_onnxruntime:/home/resnet50_onnxruntime -it <Your Image ID> /bin/bash
# 激活dtk
source /opt/dtk/env.sh
```
### Dockerfile(方法二)
```
cd ./docker
docker build --no-cache -t resnet50_onnxruntime:2.0 .
docker run --shm-size 16g --network=host --name=resnet50_onnxruntime -v /opt/hyhal:/opt/hyhal:ro --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/resnet50_onnxruntime:/home/resnet50_onnxruntime -it <Your Image ID> /bin/bash
```
## 数据集
......@@ -59,39 +53,54 @@ data
-->
## 推理
### Python版本推理
采用ONNXRuntime框架使用DCU进行推理,下面介绍如何运行python代码示例,Python示例的详细说明见Doc目录下的Tutorial_Python.md
采用ONNXRuntime框架使用DCU进行migraphx后端推理
#### 配置环境
```python
# 进入resnet50 onnxruntime工程根目录
cd <path_to_resnet50_onnxruntime>
cd <path_to_resnet50_onnxruntime_migraphx>
# 安装依赖
pip install -r ./Python/requirements.txt
```
#### 运行示例
本示例程序中一共给出了三种推理方式:
```python
# 进入resnet50 onnxruntime工程根目录
cd <path_to_resnet50_onnxruntime>
cd <path_to_resnet50_onnxruntime_migraphx>
# 进入示例程序目录
cd Python/
# 运行示例
python Classifier.py
# 静态推理,输入输出为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
```
### C++版本推理
采用ONNXRuntime框架使用DCU进行推理,下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md
采用ONNXRuntime框架使用DCU进行推理,下面介绍如何运行C++代码示例。
#### 构建工程
```c++
cd <path_to_resnet50_onnxruntime>
cd <path_to_resnet50_onnxruntime_migraphx>
rbuild build -d depend
```
#### 设置环境变量
将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:
```c++
export LD_LIBRARY_PATH=<path_to_resnet50_onnxruntime>/depend/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=<path_to_resnet50_onnxruntime_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
```
然后执行:
```
......
......@@ -3,7 +3,7 @@
<!--分类器-->
<Classifier>
<ModelPath>"../Resource/Models/resnet50-v2-7.onnx"</ModelPath>
<ModelPath>"../Resource/Models/resnet50_static.onnx"</ModelPath>
<UseInt8>0</UseInt8><!--是否使用int8,不支持-->
<UseFP16>0</UseFP16><!--是否使用FP16-->
</Classifier>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment