0 前言

本文主要讲解如何基于PC端模拟器仿真推理,下面以最新发布的XJ3的v1.12.7版本包里00-quickstart示例(ddk/samples/ai_toolchain/horizon_runtime_sample/code/00_quick_start)作一个简要说明。主要包括示例包结构说明、环境准备、编译、运行、结果展示五个部分。

1 示例包结构说明

x86仿真示例是在horizon_runtime_sample目录下,该目录的目录结构如下所示:

├── code                  # 示例源码 
│ ├── 00_quick_start      # 快速入门示例,用mobilenetv1读取单张图片推理的示例 
│ ├── 01_api_tutorial     # dnn API使用示例代码 
│ ├── 02_advanced_samples # 特殊功能示例 
│ ├── 03_misc             # 杂项示例 
│ ├── build_xj3.sh        # xj3 ARM端编译脚本 
│ ├── build_x86.sh        # PC端编译脚本 
│ ├── CMakeLists.txt 
│ ├── CMakeLists_x86.txt 
│ └── deps                # 编译依赖库 
├── xj3 
│ ├── data                # 预置数据文件 
│ ├── model               # 模型文件 
│ ├── script              # ARM端示例运行脚本 
│ └── script_x86          # PC端示例运行脚本 
└── README.md

当前x86仿真示例只提供了基于00_quick_start示例的一个使用方式,主要包括两部分:code/00_quick_startscript_x86

2 环境准备

由于是PC端推理,不需要开发板环境准备工作,仅包含开发机部署部分。对于开发机的环境部署,地平线支持使用Docker手动安装两种方式,您只需要选择其中一种即可。具体两种方式的使用可参考《Horizon AI Toolchain User Guide》手册中的《环境部署》这一小节内容。

Note:地平线强烈建议您使用Docker方式,避免在安装过程中出现问题。

3 编译

编译主要操作步骤可参照如下几步:

  1. 确保当前PC端下的GCC版本号是否符合编译要求;
  2. 执行horizon_runtime_sample/code目录下的build_x86.sh脚本即可一键编译PC端环境下的可执行程序,可执行程序和对应依赖库生成并分别存放在xj3/script_x86/x86目录下的binlib子目录;
  3. 正确完成编译后,xj3/script_x86/x86的目录结构为:
├── 00_quick_start 
│ ├── README.md 
│ └── run_mobilenetV1.sh       # 示例快速运行脚本 
├── README.md 
└── x86 
 ├── bin 
 │ └── run_mobileNetV1_224x224 # 编译产生的可执行文件 
 └── lib                       # 编译执行依赖相关库 
 ├── libdnn.so 
 ├── libhbdk_sim_x86.so 
 └── libopencv_world.so.3.4

4 运行

正确完成编译后,进入xj3/script_x86/00_quick_start目录下,执行run_mobilenetV1.sh脚本即可运行。

sh run_mobilenetV1.sh    # 运行mobilenetV1示例推理脚本

5 结果展示

运行成功结果如下图所示:

至此,在x86端成功完成模型推理和结果输出的全过程。