C++运行步骤
运行推理业务
当运行环境为Atlas 500 智能小站时,需注意以下情况:
- 由于缺少g++编译器,请参考Python运行步骤运行样例。
- 仅支持作为运行环境,出厂预安装EulerOS、驱动&固件。如若用户无ARM环境的设备,可支持在Ubuntu 18.04 x86_64系统的设备交叉编译SDK的应用,编译后的应用再部署到Atlas 500 智能小站中运行,详情请参见交叉编译操作说明。
运行该程序之前需要用户手动下载一张包含动物的图片,并将该图片命名为test.jpg,然后放到样例工程“C++”目录下。
- 获取模型。
- 参见表1,前往昇腾开发者社区下载YOLOv3和ResNet50模型pb文件。
- 模型pb文件存放。
- 模型转换(其它模型转换请参考模型转换)。
- 进入YOLOv3模型pb文件存放路径后执行如下命令,转换YOLOv3模型。
cd SDK安装根目录/samples/mxVision/models/yolov3 atc --model=./yolov3_tf.pb \ --framework=3 \ --output=./yolov3_tf_bs1_fp16 \ --soc_version=Ascend310 \ --output_type=FP32 \ --insert_op_conf=./aipp_yolov3_416_416.aippconfig \ --input_shape="input:1,416,416,3" \ --out_nodes="yolov3/yolov3_head/Conv_6/BiasAdd:0;yolov3/yolov3_head/Conv_14/BiasAdd:0;yolov3/yolov3_head/Conv_22/BiasAdd:0"
“out_nodes”制定了输出节点的顺序,需要与模型后处理适配。
- 进入ResNet50模型pb文件存放路径后执行,转换ResNet50模型。
cd SDK安装根目录/samples/mxVision/models/resnet50 atc --model=./resnet50_tensorflow_1.7.pb \ --framework=3 \ --output=resnet50_aipp_tf \ --output_type=FP32 \ --soc_version=Ascend310 \ --input_format=NHWC \ --input_shape="Placeholder:1,224,224,3" \ --insert_op_conf=./aipp_resnet50_224_224.aippconfig
- 进入YOLOv3模型pb文件存放路径后执行如下命令,转换YOLOv3模型。
- 修改pipeline配置文件。
执行如下命令,进入配置文件所在路径。请用户自行将{sdk_install_path}替换为SDK开发套件安装目录。
cd SDK安装根目录/samples/mxVision/pipeline
当用户需要修改配置文件中业务流的元件的属性,或创建一个全新的业务流时,可参考当前路径下的配置文件样例“Sample.pipeline”和流程编排介绍。
- 日志配置管理。
- 程序的日志打印会优先从当前目录下获取并使用“config/logging.conf”文件(详细请参考样例日志配置文件)。
- 如果当前目录下不存在“config/logging.conf”,则程序会根据设置的“MX_SDK_HOME”环境变量所指向的目录下获取并使用“config/logging.conf”文件。
- 如果程序运行的当前目录和“MX_SDK_HOME”目录下都没有“config/logging.conf”文件,则程序使用默认值进行日志打印并将所产生的日志存放在默认路径“/tmp/log/mindx-sdk”目录下。
- 推理。
跳转到“{sdk_install_path}/samples/mxVision/C++”目录下。请按照“C++”目录的readme文件运行,该目录下包含了样例代码。(“run.sh”为实际实现编译和运行的脚本。)
查看推理结果
通过打印信息查看结果,返回示例如下。
图1 返回结果
父主题: 样例介绍