晟腾A200移植Yolov3模型

本文详细介绍了如何使用MXBase在昇腾芯片上实现YOLOv3的视频流目标检测,包括模型转换步骤、参数修改、CMakeLists配置以及编译和运行过程。最终结果会保存为本地可视化文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于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文件夹中。


 

### 腾A200DK设备后台启动程序与开发 #### 设备网络配置 对于腾A200DK开发板,在开始任何复杂的操作之前,确保基本设置已经完成。例如,通过编辑`/etc/netplan/01-netcfg.yaml`来配置IP地址可以使得后续的操作更加顺利[^1]。 #### 编译驱动程序 为了使硬件能够正常工作,可能需要编译特定版本的驱动程序。这可以通过执行命令`make -C /home/<路径>/Ascend310B-sdk/Ascend310B-source/driver/kernel/linux-4.19 ARCH=arm64`实现,其中`<路径>`应替换为实际存储SDK的位置[^2]。 #### 使用MindStudio工具简化流程 当涉及到更高级别的应用部署时,比如YOLOv8这样的深度学习模型,可以利用MindStudio工具来进行转换和其他必要的准备工作。这种方法不仅限于YOLO系列模型,也适用于其他类型的神经网络迁移至腾平台上的场景[^4]。 #### 导出ONNX格式模型 如果目标是在腾平台上运行YOLOv8或其他兼容框架,则通常会先将原始训练好的PyTorch (.pt) 文件导出成ONNX格式。此过程可通过Python脚本完成,如下所示: ```python from ultralytics import YOLO model = YOLO(&#39;./weights/yolov8n.pt&#39;) # 替换为你自己的权重文件位置 path = model.export(format="onnx", opset=12) ``` 这段代码片段展示了如何创建一个新的`.py`文件并调用相应的方法以保存转换后的模型到指定目录下[^5]。 #### 主应用程序集成 最后一步涉及修改主应用程序逻辑,以便加载新生成的ONNX模型以及处理输入数据流(如RTSP)。这部分工作主要集中在调整源码中的参数设定部分,例如在`main.cpp`里指明模型的具体存放地点及其关联的数据来源[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值