张小白带你玩转Atlas 200DK+CANN 5.0.4+MindStudio 3.0.4(五)OpenCV的安装
五、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训练营的龙哥 @海中之龙 是个爱学习的好童鞋。他给张小白提供了一个解决方案:
跟着好学生做应该能成功,不妨试一下吧!
(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的模型转换
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的项目,这个时候应该也能编译和运行了:
这里面的细节就不细说了,跟前面处理的方式几乎一样。
(未完待续)
- 点赞
- 收藏
- 关注作者
评论(0)