Atlas 200DK跑通华为官方例程objectdetection_video(C++)

本Application支持运行在Atlas 200 DK,实现了对yolov3目标检测网络的推理功能。

最近两天都在尝试跑通objectdetection_video,无奈官方gitee上的教程要么不完整,要么网页链接过期,要么暗坑一大堆,因此在查阅大量资料并修复了各种bug之后,决定自己整理一份完整通用的教程。

本人开发环境 (PC) 和运行环境 (Atlas 200) 都为Ubuntu 18.04,toolkit版本为20.0.RC1

下面正式开始教程:

一、 环境搭建

该步骤主要目的是搭建好开发环境与运行环境,实现互通并跑通一个简单的官方例程。

已经搭建好可以跳过。还未搭建的朋友可以参考:

https://blog.csdn.net/Hello_yes112/article/details/107546041?spm=1001.2014.3001.5501 (五讲四美好壮年)

二、 软件准备

运行此Sample前,需要按照此章节获取源码包:(注:以下步骤在开发环境进行)

1. 获取源码包
cd $HOME/AscendProjects

wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/code_Ascend/objectdetection_video.zip

unzip objectdetection_video.zip
2. 获取原始网络模型

下载原始网络模型及权重文件至ubuntu服务器任意目录,如:$HOME/yolov3

mkdir -p $HOME/yolov3

wget -P $HOME/yolov3 https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/yolov3/yolov3.caffemodel

wget -P $HOME/yolov3 https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/yolov3/yolov3.prototxt

wget -P $HOME/yolov3 https://c7xcode.obs.myhuaweicloud.com/models/yolov3/aipp_bgr.cfg
3. 模型转换

该步骤将原始网络模型转换为适配昇腾AI处理器的模型。

  1. 设置环境变量

    cd $HOME/yolov3
    
    export install_path=$HOME/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0
    
    export PATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH
    
    export PYTHONPATH=${install_path}/atc/python/site-packages/te:${install_path}/atc/python/site-packages/topi:$PYTHONPATH
    
    export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH
    
    export ASCEND_OPP_PATH=${install_path}/opp
    
  2. 模型转换

    将原始网络模型转换为适配昇腾AI处理器的模型:

    atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310 --insert_op_conf=aipp_bgr.cfg
    
4. 添加模型

将转换好的模型文件(.om文件)上传到源码所在路径下的“objectdetection_video/model”目录下:

cp ./yolov3.om $HOME/AscendProjects/objectdetection_video/model/

三、环境准备

注:服务器上已安装OpenCV、PresentAgent、交叉编译工具可跳过此步骤。

基本官网教程所有的坑都集中在这一步,尤其是在安装PresentAgent时需要安装的Protobuf,这是暗坑的重灾区,建议在后续编译和运行有报错的朋友可以重点看下笔者这一步的教程。

1. 交叉编译工具
sudo apt-get install -y g++-aarch64-linux-gnu g++-5-aarch64-linux-gnu
2. OpenCV + ffmpeg

参考教程:https://gitee.com/ascend/samples/tree/47ca9bc97b3d28de4169f620c9610380d7166de2/common/install_opencv/for_atlas200dk

3. Presenter Agent

参考文章:https://blog.csdn.net/qq_44527435/article/details/114793324?spm=1001.2014.3001.5501

四、编译

上一步所有的依赖安装完成之后,便可以开始编译。

1. 修改Presenter Server的ip

首先在MindStudio中打开objectdetection_video工程。

  1. 执行命令 ifconfig 查看开发环境PC的虚拟网卡 (USB) 的ip地址:
    Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第1张图片

  2. script/object_detection.conf中的presenter_server_ip、presenter_view_ip、presenter_agent_ip修改为虚拟网卡的ip地址:
    Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第2张图片

  3. src/object_detect.cpp中的 param.host_ip 修改为Mind Studio所在Ubuntu服务器的虚拟网卡的ip地址:

Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第3张图片

2. 开始编译

在工具栏中点击Build>Edit Build Configuration,选择如图所示的配置后进行编译:

Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第4张图片

编译完成后目录下生成buildout文件夹:
Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第5张图片

3. 启动Presenter Server

打开Mind Studio工具的Terminal,执行如下命令:

bash script/run_presenter_server.sh &

如图所示,表示presenter_server的服务启动成功:

Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第6张图片

五、运行

  1. 在工具栏中点击 Run > Edit Configurations,在Command Arguments 中添加运行参数 …/data/detection.mp4(输入视频的路径)

Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第7张图片

  1. 点击 Run > Run ‘objectdetection_video’,运行成功后如下图所示:
    Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第8张图片

  2. 在Terminal中启动Presenter Server服务时提示的URL登录 Presenter Server 网站
    在这里插入图片描述

    等待Presenter Agent传输数据给服务端,单击“Refresh“刷新,当有数据时相应的Channel 的Status变成绿色,如下图所示。
    Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第9张图片

  3. 单击上图右侧video链接查看结果
    Atlas 200DK跑通华为官方例程objectdetection_video(C++)_第10张图片

参考:
https://gitee.com/ascend/samples/tree/8bc36c38508bdfb31533bf630d9a3e48c3cecdee/objectdetection_video/for_atlas200dk_1.7x.0.0_c++

https://blog.csdn.net/Hello_yes112/article/details/107757336?spm=1001.2014.3001.5501

你可能感兴趣的:(华为,ai,linux)