本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前,需要按照此章节获取源码包:(注:以下步骤在开发环境进行)
cd $HOME/AscendProjects
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/code_Ascend/objectdetection_video.zip
unzip objectdetection_video.zip
下载原始网络模型及权重文件至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
该步骤将原始网络模型转换为适配昇腾AI处理器的模型。
设置环境变量
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
模型转换
将原始网络模型转换为适配昇腾AI处理器的模型:
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310 --insert_op_conf=aipp_bgr.cfg
将转换好的模型文件(.om文件)上传到源码所在路径下的“objectdetection_video/model”目录下:
cp ./yolov3.om $HOME/AscendProjects/objectdetection_video/model/
注:服务器上已安装OpenCV、PresentAgent、交叉编译工具可跳过此步骤。
基本官网教程所有的坑都集中在这一步,尤其是在安装PresentAgent时需要安装的Protobuf,这是暗坑的重灾区,建议在后续编译和运行有报错的朋友可以重点看下笔者这一步的教程。
sudo apt-get install -y g++-aarch64-linux-gnu g++-5-aarch64-linux-gnu
参考教程:https://gitee.com/ascend/samples/tree/47ca9bc97b3d28de4169f620c9610380d7166de2/common/install_opencv/for_atlas200dk
参考文章:https://blog.csdn.net/qq_44527435/article/details/114793324?spm=1001.2014.3001.5501
上一步所有的依赖安装完成之后,便可以开始编译。
首先在MindStudio中打开objectdetection_video工程。
将script/object_detection.conf中的presenter_server_ip、presenter_view_ip、presenter_agent_ip修改为虚拟网卡的ip地址:
将src/object_detect.cpp中的 param.host_ip 修改为Mind Studio所在Ubuntu服务器的虚拟网卡的ip地址:
在工具栏中点击Build>Edit Build Configuration,选择如图所示的配置后进行编译:
打开Mind Studio工具的Terminal,执行如下命令:
bash script/run_presenter_server.sh &
如图所示,表示presenter_server的服务启动成功:
在Terminal中启动Presenter Server服务时提示的URL登录 Presenter Server 网站
等待Presenter Agent传输数据给服务端,单击“Refresh“刷新,当有数据时相应的Channel 的Status变成绿色,如下图所示。
参考:
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