张小白带你玩转Atlas 200DK+CANN 5.0.4+MindStudio 3.0.4(五)OpenCV的安装

举报
张辉 发表于 2022/04/13 07:03:28 2022/04/13
【摘要】 Atlas 200DK+CANN 5.0.4+MindStudio 3.0.4

五、OpenCV的安装


8、使用MindStudio运行YoLoV3样例工程

我们记得上次说到OpenCV的安装比较麻烦。是因为OpenCV需要实现交叉编译,即需要在开发环境x86上编译aarch64的包,然后编译好的可执行程序需要在运行环境aarch64上运行。

另外,由于mksd制卡方式和dd镜像制卡方式有点区别。dd镜像方式中很多包昇腾团队已经给我们准备好了。所以在下列的一些(shao)操作里面,张小白会特意提到,如果是mksd制卡方式,需要做哪些操作(言下之意就是,如果是dd方式,那些在200dk ubuntu 18.04 aarch环境上的一些操作就可以省略了。

(1)打开YoLoV3样例工程

打开一个新的YoLoV3工程,可参考:https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture

会提示:

此时点击OK:

在弹出的菜单中再点击OK即可打开这个YoLoV3工程。

此时,还是需要再配置一个deployment的:

add一个server:

像前面描述一样的增加 connection和mapping即可:

当然,编译YoLoV3的工程代码同样也会报找不到OpenCV的问题:

我们来看看怎么解决这个问题。

CANN训练营的龙哥  @海中之龙  是个爱学习的好童鞋。他给张小白提供了一个解决方案:

https://gitee.com/ascend/samples/blob/master/cplusplus/environment/separate_environmental_guidance_CN.md#%E5%AE%89%E8%A3%85opencv

跟着好学生做应该能成功,不妨试一下吧!

(2)安装OpenCV

方式1:dd镜像制卡的运行环境

如果是dd镜像制卡的运行环境,按以下操作进行:

cd /usr/lib/aarch64-linux-gnu

sudo scp -r HwHiAiUser@192.168.1.2:/lib/aarch64-linux-gnu/* ./

sudo scp -r HwHiAiUser@192.168.1.2:/usr/lib/aarch64-linux-gnu/* ./

。。。

sudo scp -r HwHiAiUser@192.168.1.2:/usr/lib/*.so.* ./

# 拷贝opencv相关头文件。
sudo scp -r HwHiAiUser@192.168.1.2:/usr/include/opencv /usr/include/


sudo scp -r HwHiAiUser@192.168.1.2:/usr/include/opencv2 /usr/include/

。。。

方式2:mksd制卡的运行环境

这种环境下,运行环境基本上没有开发包。所以需要在200DK上安装OpenCV:

.。。

x86环境copy回对应的so:

cd /usr/lib/aarch64-linux-gnu

sudo scp -r HwHiAiUser@192.168.1.2:/lib/aarch64-linux-gnu/* ./


sudo scp -r HwHiAiUser@192.168.1.2:/usr/lib/aarch64-linux-gnu/* ./


sudo scp -r HwHiAiUser@192.168.1.2:/usr/lib/*.so.* ./

sudo scp -r HwHiAiUser@192.168.1.2:/usr/include/opencv* /usr/include

(其实仔细看看,除了需要在运行环境200DK上安装OpenCV之外,后续的拷贝动作跟mksd都是一样的。)

(3)执行编译

build:

这里比较奇怪,前面OpenCV没报错了,但是后面又去找了 runtime的目录,这个CMakeLists.txt文件确实写得有问题,至少是不适合交叉编译使用。

张小白检查了下上图中的link_librarys, 原来这个runtime目录跟实际的目录不对应:

张小白做了以下的修改:(在原来的runtime目录前增加了 一层arm64-linux目录

再重新编译,成功了!

(4)YoLoV3的模型转换

打开 https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture

A、下载caffe模型

需要先到200DK上执行以下命令:

cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/model

wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.caffemodel
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.prototxt
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/aipp_nv12.cfg


B、在运行环境(200DK)的命令行中完成模型转换:

atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310 --insert_op_conf=aipp_nv12.cfg

C、将转换好的离线模型拷贝到开发环境

在X86上执行:

cd ~/tag/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/model

scp HwHiAiUser@192.168.1.2:/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/model/yolov3.om .

D、准备待推理的图片

cd ../data

wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/dog1_1024_683.jpg --no-check-certificate

(4)代码运行

在MindStudio的菜单中选择Run:

等了一会儿,运行结果如下:

查看本地out/output目录下生成的结果图片:

确实 dog 99%已在结果图中标识出来了。

9、再次使用MindStudio打开venc样例工程

回过头来打开dvpp的venc的项目,这个时候应该也能编译和运行了:

这里面的细节就不细说了,跟前面处理的方式几乎一样。

(未完待续)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。