赞
踩
基于MxBase 的yolov3视频流推理样例
1 介绍
本开发样例是基于mxBase开发的端到端推理的C++应用程序,可在昇腾芯片上实现视频流的目标检测,并把可视化结果保存到本地。代码网址:mindxsdk-referenceapps: MindX SDK Reference Apps - Gitee.com。
2 准备工作
2.1 模型转换
step1: 在ModelZoo上下载YOLOv3模型。[下载地址](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/ActionRecognition/ATC%20YOLOv3%28FP16%29%20from%20TensorFlow%20-%20Ascend310.zip)
step2: 将获取到的YOLOv3模型pb文件存放至:"./model/"。
step3: 进行模型转换
①. 设置环境变量(请确认install_path路径是否正确)
bash . /usr/local/Ascend/ascend-toolkit/set_env.sh # Ascend-cann-toolkit开发套件包默认安装路径,请根据实际安装路径修改。
②. 执行以下命令转换YOLOv3模型
atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310 --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"
执行完模型转换脚本后,会生成相应的.om模型文件。
2.2 相关参数修改
①. main.cpp文件中,添加模型路径与 rtsp 流源地址(需要自行准备可用的视频流,视频流格式为H264)
initParam.modelPath = "{yolov3模型路径}";
std::string streamName = "rtsp_Url";
VideoProcess.cpp文件中,设置视频的宽高值
const uint32_t VIDEO_WIDTH = {视频宽度};
const uint32_t VIDEO_HEIGHT = {视频高度};
2.3 配置CMakeLists
set(MX_SDK_HOME {SDK实际安装路径})
set(FFMPEG_PATH {ffmpeg安装路径})
3. 编译与运行
3.1编译
新建sample_build.sh文件,写入如下命令:
path_cur=$(dirname $0)
cd $path_cur
rm -rf build
mkdir -p build
cd build
cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/g++
make -j4 || {
ret=$?
echo "Failed to build"
exit ${ret}
}
然后运行 bash sample_build.sh
3.2 运行
bash run.sh
4. 查看结果
执行run.sh完毕后,可视化结果会被保存在工程目录下result文件夹中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。