【8-14】树莓派3B+ Ubuntu Mate 18.04使用Intel NCS2做人脸识别

想要在无人机平台部署CV,但是无人机的机载电脑需要安装ROS,而ROS需要在Ubuntu的平台才能方便使用,所以树莓派3B+上安装的是Ubuntu Mate18.04。
Intel Ncs2(英特尔神经计算棒)官方的文档写的是部署在树莓派官方系统上,而对于其他平台甚至树莓派平台其他版本的系统都不提供支持。
我在安装Intel Nc2到树莓派上时也遇到了很多坑,初始化setupvar.sh的时候,报错

64 bitness python is required

然后执行demo的时候,自动退出,没法使用。

后来想要在树莓派上直接编译官方的github,也是国外的一篇文章上推荐的。在编译的时候因为被墙,一直疯狂报错,后来连接手机热点,成功编译,但是这时根本找不到如何使用的方法,官方也没有相关文档。最后通过修改setupvar.sh,成功安装。

1.Intel Ncs2安装

下载固件:https://download.01.org/opencv/2020/openvinotoolkit/2020.4/ 并上传到树莓派

1.1下载解压

cd ~
mkdir intel 
tar -zxvf l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz #解压缩
mv  l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz openvino  # 重命名

1.2修改setupvar.sh

1.
INSTALLDIR=/home/pi/intel/openvino  # 修改开头的安装目录 为你自己的安装目录

2.
if [ "$python_bitness" != "" ] && [ "$python_bitness" != "64" ] && [ "$OS_NAME" != "Raspian" ]; then
    echo "[setupvars.sh] 64 bitness for Python" $python_version "is requred"

修改为
if [ "$python_bitness" != "" ] && [ "$python_bitness" != "64" ] && [ "$OS_NAME" != "Ubuntu" ]; then
    echo "[setupvars.sh] 64 bitness for Python" $python_version "is requred"

修改之后,添加到bashrc

echo "source ~/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

仅仅出现下面的提示,就成功了
[setupvars.sh] OpenVINO environment initialized

1.3 更新USB规则

sudo usermod -a -G users "$(whoami)"
sh ~/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

2.运行样例

 mkdir build && cd build
 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" \ 
  ~/intel/openvino/deployment_tools/inference_engine/samples/c
  make -j2 object_detection_sample_ssd_c
# 切换到生成的目录
cd ~/intel/openvino/build/armv7l/Release
# 下载训练好的权重
 wget --no-check-certificate https://download.01.org/opencv/2020/  \   openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/   \ FP16/face-detection-adas-0001.bin

 wget --no-check-certificate https://download.01.org/opencv/2020/  \   openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/  \ FP16/face-detection-adas-0001.xml

# 执行测试
./object_detection_sample_ssd_c -m face-detection-adas-0001.xml -d MYRIAD -i /home/pi/face.jpg

3.运行视频的人脸检测

效果:https://www.bilibili.com/video/BV17p4y1v7bx/

import cv2 as cv
import numpy as np
# 载入模型
net = cv.dnn.readNet('face-detection-adas-0001.xml','face-detection-adas-0001.bin')

# 选择目标设备
net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)

# 读取图片
print('读取视频')
frame = cv.VideoCapture('/home/pi/face.mp4')
fps = frame.get(cv.CAP_PROP_FPS)
size = (int(frame.get(cv.CAP_PROP_FRAME_WIDTH)), int(frame.get(cv.CAP_PROP_FRAME_HEIGHT)))
output = cv.VideoWriter('/home/pi/face_out.avi',cv.VideoWriter_fourcc(*'XVID'), fps, size)

while(frame.isOpened()):
    ret, fra = frame.read()
    if ret==True:
        blob = cv.dnn.blobFromImage(fra, size=(672,384), ddepth=cv.CV_8U) 
        net.setInput(blob)         
        out = net.forward()
        print('开始处理第一帧')
        # Draw detected faces on the frame 
        for detection in out.reshape(-1, 7): 
            confidence = float(detection[2]) 
            xmin = int(detection[3] * fra.shape[1]) 
            ymin = int(detection[4] * fra.shape[0]) 
            xmax = int(detection[5] * fra.shape[1]) 
            ymax = int(detection[6] * fra.shape[0])
            if confidence > 0.5:
                cv.rectangle(fra, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))
        output.write(fra)
    else:
        break


frame.release()
output.release()
print("ALL DONE SUCCESSFULLY")

已标记关键词 清除标记
手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8NCS和GOMFCTEMPLATE 9、课程小结,资源分享
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页