Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS

源代码链接:https://pan.baidu.com/s/1ntnd2oyp8yCPQ0KQRscyqg 提取码:8ayb

在本教程中,将学习如何将OpenVINO工具包与OpenCV一起使用,以便在Raspberry Pi上进行更快速的深度学习推理。

对于深度学习,当前的Raspberry Pi硬件本质上是资源受限的,很幸运能从大多数最先进的模型中获得超过几个FPS(仅使用RPi CPU)(尤其是对象检测和实例/语义分割)。自2017年以来,Movidius团队一直在努力研发他们的Myriad处理器和消费级USB深度学习棒。随着棒子附带的API的第一个版本运行良好,并展示了Myriad的强大功能,但还有很多不足之处。然后,Movidius APIv2发布并受到Movidius + Raspberry Pi社区的欢迎。它比APIv1更容易/更可靠,但也有相当多的问题。但是现在使用Movidius NCS 变得比以往任何时候都容易,特别是使用OpenCV。

与OpenVINO会面,这是一个用于硬件优化计算机视觉的英特尔库,旨在取代V1和V2 API。

英特尔转向使用OpenVINO软件支持Movidius硬件,使得Movidius闪耀着所有金属蓝色的光彩。OpenVINO使用起来非常简单 - 只需设置目标处理器(单个函数调用),让OpenVINO优化的OpenCV处理其余部分。

但问题仍然存在:

如何在Raspberry Pi上安装OpenVINO?

今天将学习这一点,以及一个实用的物体检测演示(扰流警报:现在使用Movidius协处理器很简单)。

要了解如何在Raspberry Pi上安装OpenVINO(并使用Movidius Neural Compute Stick执行对象检测),请按照本教程进行操作!

Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS

在这篇博文中,将介绍三个主要主题。

  1. 将了解OpenVINO是什么以及它如何成为Raspberry Pi非常受欢迎的范例转换。
  2. 将介绍如何在Raspberry Pi上安装OpenCV和OpenVINO。
  3. 将使用OpenVINO,OpenCV和Movidius NCS开发实时对象检测脚本。

注意:博客上有很多Raspberry Pi安装指南,大多数与Movidius无关。在开始之前,请务必查看OpenCV安装指南页面上的可用安装教程,并选择最适合需求的安装教程。

https://www.pyimagesearch.com/opencv-tutorials-resources-guides/

什么是OpenVINO?

图1:英特尔OpenVINO工具包可针对英特尔硬件(如Movidius Neural Compute Stick)优化您的计算机视觉应用程序。使用Raspberry Pi和Movidius NCS使用OpenVINO和OpenCV进行实时对象检测可以获得显着的加速。

英特尔的OpenVINO是一个加速库,可通过英特尔的硬件产品组合优化计算。

OpenVINO支持Intel CPU,GPU,FPGA和VPU。

OpenVINO支持您依赖的深度学习库,如TensorFlow,Caffe和mxnet。

图2:Intel OpenVINO Toolkit支持intel CPU,GPU,FPGA和VPU。TensorFlow,Caffe,mxnet和OpenCV的DNN模块均针对英特尔硬件进行了优化和加速。MovidO支持Movidius视觉处理单元(VPU),并与Raspberry Pi配合使用。(来源:OpenVINO产品简介)

英特尔甚至优化了OpenCV的DNN模块,以支持其硬件深度学习。

事实上,许多较新的智能相机使用英特尔的硬件和OpenVINO工具包。OpenVINO是最优秀的边缘计算和物联网 - 它使像Raspberry Pi这样的资源受限设备能够与Movidius协处理器协同工作,以对实际应用程序有用的速度执行深度学习。

将在Raspberry Pi上安装OpenVINO,以便在下一节中与Movidius VPU(视觉处理单元)一起使用。

请务必阅读OpenVINO产品简介PDF以获取更多信息。

https://www.intel.in/content/www/in/en/internet-of-things/solution-briefs/openvino-toolkit-product-brief.html

在Raspberry Pi上安装OpenVINO优化的OpenCV

在本节中,将介绍在Raspberry Pi上安装OpenCV和OpenVINO所需的先决条件和所有步骤。

硬件,假设和先决条件

在本教程中,将假设拥有以下硬件:

  • Raspberry Pi 3B +(或Raspberry Pi 3B)
  • Movidius NCS 2(或Movidius NCS 1)
  • PiCamera V2(或USB网络摄像头)
  • 带有 Raspbian Stretch的32GB microSD卡刷新(16GB可能也可以使用)
  • HDMI屏幕+键盘/鼠标(至少用于初始WiFi配置)
  • 5V电源(我建议使用2.5A电源,因为Movidius NCS是电源)

如果没有带有Raspbian Stretch新烧伤的microSD,可以在这里下载。建议完整安装:

https://www.raspberrypi.org/downloads/raspbian/

图3:OpenBuop和Raspberry Pi上的Movidius需要Raspbian Stretch操作系统。

从那里,使用Etcher(或合适的替代品)来刷卡。

准备好后,将microSD卡插入Raspberry Pi并启动它。

输入WiFi凭据并启用SSH,VNC和相机界面。

从这里需要以下之一:

  • 物理访问您的Raspberry Pi,以便您可以打开终端并执行命令
  • 通过SSH或VNC进行远程访问

通过SSH完成本教程的大部分内容,但只要可以访问终端,就可以轻松跟进。

不能SSH?如果您在网络上看到了Pi,但无法使用它,则可能需要启用SSH。这可以通过Raspberry Pi桌面首选项菜单或使用raspi - config 命令轻松完成 。

更改设置并重新启动后,可以使用localhost地址直接在Pi上测试SSH。

打开终端并键入 ssh pi @ 127.0.0.1 以查看它是否正常工作。要从另一台计算机进行SSH,需要Pi的IP地址 - 可以通过查看路由器的客户端页面或运行ifconfig 来确定IP地址,以确定Pi本身的IP。

Raspberry Pi键盘布局是否会给您带来问题?转到Raspberry Pi桌面首选项菜单,更改键盘布局。使用标准的美式键盘布局,但需要选择适合您的布局。

步骤#0:在Raspberry Pi上扩展文件系统

要启动OpenVINO派对,请启动Raspberry Pi并打开SSH连接(或者使用带键盘+鼠标的Raspbian桌面并启动终端)。

如果刚刚刷过Raspbian Stretch,建议首先检查以确保文件系统使用microSD卡上的所有可用空间。

要检查您的磁盘空间使用情况执行 DF - ^ h 在终端命令并检查输出:

$ df -hFilesystem      Size  Used Avail Use% Mounted on/dev/root        30G  4.2G   24G  15% /devtmpfs        434M     0  434M   0% /devtmpfs           438M     0  438M   0% /dev/shmtmpfs           438M   12M  427M   3% /runtmpfs           5.0M  4.0K  5.0M   1% /run/locktmpfs           438M     0  438M   0% /sys/fs/cgroup/dev/mmcblk0p1   42M   21M   21M  51% /boottmpfs            88M     0   88M   0% /run/user/1000

Raspbian文件系统已自动扩展为包含所有32GB的micro-SD卡。这表示大小为30GB(接近32GB),有24GB可用(15%使用率)。

如果发现自己没有使用整个存储卡容量,可以在下面找到有关如何扩展文件系统的说明。

在终端中打开Raspberry Pi配置:

$ sudo raspi-config

然后选择“高级选项”菜单项:

图4:raspi-config在安装OpenVINO和OpenCV之前,从菜单中选择“高级选项” 以扩展Raspberry Pi上的Raspbian文件系统非常重要。接下来实际上将扩展文件系统。

然后选择“扩展文件系统”:

图5:Raspberry Pi“扩展文件系统”菜单允许利用整个闪存卡。这将提供安装OpenVINO,OpenCV和其他软件包所需的空间。

提示后,应该选择第一个选项“A1。“展开文件系统”,按键盘上的Enter键,向下箭头按下“<完成>”按钮,然后重新启动Pi - 系统将提示您重新启动。或者可以从终端重新启动:

$ sudo reboot

一定要运行 DF - ^ h 再次命令来检查文件系统扩展。

步骤1:回收Raspberry Pi上的空间

在Raspberry Pi上获得更多空间的一个简单方法是删除LibreOffice和Wolfram引擎以释放Pi上的一些空间:

$ sudo apt-get purge wolfram-engine$ sudo apt-get purge libreoffice*$ sudo apt-get clean$ sudo apt-get autoremove

删除Wolfram Engine和LibreOffice后,可以回收近1GB!

步骤3:在Raspberry Pi上安装OpenVINO + OpenCV依赖项

此步骤显示了在每个OpenCV系统上安装的一些依赖项。虽然很快就会看到OpenVINO已经编译完毕,但建议继续安装这些软件包,以防最终在任何时候从头开始编译OpenCV。

更新系统:

$ sudo apt-get update && sudo apt-get upgrade

然后安装包括CMake在内的开发人员工具:

$ sudo apt-get install build-essential cmake unzip pkg-config

接下来是时候安装一个选择图像和视频库的-这是关键,以能够与图像和视频文件的工作:

$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev$ sudo apt-get install libxvidcore-dev libx264-dev

从那里安装GTK,GUI后端:

$ sudo apt-get install libgtk-3-dev

现在安装一个可能有助于减少GTK警告的软件包:

$ sudo apt-get install libcanberra-gtk*

星号确保将获取特定于ARM的GTK。这是必需的。

现在需要两个包含OpenCV数值优化的包:

$ sudo apt-get install libatlas-base-dev gfortran

最后安装Python 3开发头文件:

$ sudo apt-get install python3-dev

安装完所有这些先决条件后,可以继续执行下一步。

步骤#4:为您的Raspberry Pi下载并解压缩OpenVINO

图6:下载并安装用于Raspberry Pi和Movidius计算机视觉应用程序的OpenVINO工具包(来源:英特尔的OpenVINO产品简介)。

从此处开始,安装说明主要基于英特尔的Raspberry Pi OpenVINO指南。有一些“陷阱”,这就是为什么决定写一个指南。还将使用PyImageSearch读者所期望的虚拟环境。

下一步是下载OpenVINO。

导航到主文件夹并创建一个新目录

$ cd ~$ mkdir openvino$ cd openvino

从那里开始,获取用于Raspberry Pi下载的OpenVINO工具包。可以尝试wget,只要注意后续代码块中提到的问题:

$ wget http://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz

此时,通过反复试验,发现 wget 实际上只抓取了一个HTML文件,这似乎是英特尔下载站点上一个非常奇怪的服务器错误。

使用此命令确保实际拥有tar文件:

$ file l_openvino_toolkit_ie_p_2018.5.445.tgz # bad outputl_openvino_toolkit_ie_p_2018.5.445.tgz: HTML document text, UTF-8 Unicode text, with very long lines # good outputl_openvino_toolkit_ie_p_2018.5.445.tgz: gzip compressed data, was "l_openvino_toolkit_ie_p_2018.5.445.tar", last modified: Wed Dec 19 12:49:53 2018, max compression, from FAT filesystem (MS-DOS, OS/2, NT)

如果输出与突出显示的“良好输出”匹配,则可以安全地继续提取存档。否则,请删除该文件,然后重试。

成功下载OpenVINO工具包后,可以使用以下命令取消归档:

$ tar -xf l_openvino_toolkit_ie_p_2018.5.445.tgz

解压缩归档的结果是一个名为inference_engine_vpu_arm的文件夹 。

步骤#5:在Raspberry Pi上配置OpenVINO

用OpenVINO目录的绝对路径修改setupvars .sh脚本 。

为此将使用nano终端文本文件编辑器:

$ nano openvino/inference_engine_vpu_arm/bin/setupvars.sh

该文件将如下所示:

图5:Intel OpenVINO setupvars.sh文件要求在Raspberry Pi上插入OpenVINO安装目录的路径。

需要使用以下内容替换 < INSTALLDIR >:

/ home / pi / openvino / inference_engine_vpu_arm

它现在看起来应该是这样的:

图8:setupvars.sh Raspberry Pi上的OpenVINO的安装目录已经更新。

要保存文件,请按“ctrl + o,输入”,然后按 “ctrl + x ”退出。

从那里开始,再次使用 nano来编辑 〜/ .bashrc 。每次调用Pi终端时,都会添加一行来加载OpenVINO的setupvars .sh。继续打开文件:

$ nano ~/.bashrc

滚动到底部并添加以下行:

# OpenVINOsource ~/openvino/inference_engine_vpu_arm/bin/setupvars.sh

现在像之前一样保存并退出nano。

然后继续采购 〜/ .bashrc中的文件:

$ source ~/.bashrc

步骤#6:在Raspberry Pi上为Movidius NCS和OpenVINO配置USB规则

OpenVINO要求设置自定义USB规则。

首先,输入以下命令将当前用户添加到Raspbian“users”组:

$ sudo usermod -a -G users "$(whoami)"

然后注销并重新登录。如果您使用的是SSH,则可以键入exit ,然后重新建立SSH连接。现在通过sudo reboot重新启动也是一个选项。

返回终端后,运行以下脚本来设置USB规则:

$ cd ~$ sh openvino/inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh

步骤#7:在Raspberry Pi上创建一个OpenVINO虚拟环境

抓住并安装一个Python包管理器pip。

要安装pip,只需在终端中输入以下内容:

$ wget https://bootstrap.pypa.io/get-pip.py$ sudo python3 get-pip.py

将利用OpenCV和OpenVINO利用虚拟环境进行Python开发。

虚拟环境允许在系统上独立运行独立的隔离Python环境。今天将只设置一个环境,可以轻松地为每个项目创建一个环境。

继续安装 virtualenv 和virtualenvwrapper吧 - 它们允许Python虚拟环境:

$ sudo pip install virtualenv virtualenvwrapper$ sudo rm -rf ~/get-pip.py ~/.cache/pip

要完成这些工具的安装,需要再次更新 〜/ .bashrc :

$ nano ~/.bashrc

然后添加以下行:

# virtualenv and virtualenvwrapperexport WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/bin/virtualenvwrapper.sh

图9:Raspberry Pi ~/.bashrc配置文件已更新,以适应OpenVINO和virtualenvwrapper。现在将能够为Python包创建一个虚拟环境。

或者可以通过bash命令直接追加行:

$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

接下来,获取〜/ .bashrc 配置文件:

$ source ~/.bashrc

现在创建一个虚拟环境来保存OpenVINO,OpenCV和相关的包:

$ mkvirtualenv openvino -p python3

此命令只是创建一个名为openvino的Python 3虚拟环境。

可以为喜欢的环境命名。

通过查看bash提示来验证我们是否处于openvino环境中。它应该在提示的开头显示 (openvino ),如图所示:

如果虚拟环境不活动,只需使用 workon 命令:

$ workon openvino

图10:该workon openvino命令激活我们的OpenVINO Python 3虚拟环境。现在准备安装Python软件包并使用Movidius和Raspberry Pi运行计算机视觉代码。

步骤#8:将软件包安装到OpenVINO环境中

安装今天演示脚本所需的一些软件包

$ workon openvino$ pip install numpy$ pip install "picamera[array]"$ pip install imutils

现在已经在openvino虚拟环境中安装了这些软件包,它们只能在openvino环境中使用。这是在OpenVINO项目上工作的隔离区域。

可以使用pip通过requirements.txt文件安装Caffe,TensorFlow和mxnet的附加软件包。

步骤#6:将OpenVINO的OpenCV链接到Python 3虚拟环境

OpenCV已准备好进入虚拟环境之外。但这是使用系统环境的不良做法。将OpenVIN的OpenVIN版本链接到Python虚拟环境中,这样就可以轻松获得今天的演示。

在这里将创建一个“符号链接”。符号链接在系统上的两个位置之间创建一个特殊的链接(在例子中,它是一个.so 文件 - 将sym-link视为指向另一个文件的“快捷方式”。

运行命令时会注意到导航到链接的目标,并创建sym-link回到文件实际存在的位置。

很难找到OpenVINO的OpenCV .so文件,所以使用了find 命令:

$ find / -name "cv2*.so".../home/pi/openvino/inference_engine_vpu_arm/python/python3.5/cv2.cpython-35m-arm-linux-gnueabihf.so

不得不滚动一堆输出来查找OpenCV二进制文件路径。因此省略了上面不需要的输出。

由于使用的是Python 3,因此请确保复制Python 3.5路径而不是Python 2.7路径。

通过剪贴板中的路径,创建sym-link到openvino虚拟环境 站点- packages :

$ cd ~/.virtualenvs/openvino/lib/python3.5/site-packages/$ ln -s /home/pi/openvino/inference_engine_vpu_arm/python/python3.5/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so$ cd ~

注意第二行包裹特别长。不能不强调这一步 - 这一步至关重要。如果不创建符号链接,则无法在OpenVINO Python脚本中导入OpenCV。另外请确保上述命令中的路径和文件名对于Raspberry Pi是正确的。建议制表完成。

步骤#7:在Raspberry Pi上测试OpenVINO安装

在尝试OpenVINO示例之前,做一个快速的健全性测试,看看OpenCV是否准备就绪。

打开终端并执行以下操作:

$ workon openvino$ python>>> import cv2>>> cv2.__version__'4.0.1-openvino'>>> exit()

第一个命令激活OpenVINO虚拟环境。从那里在环境中启动Python 3二进制文件并导入OpenCV。

OpenCV的版本表明它是OpenVINO优化安装!

使用Raspberry Pi和OpenVINO进行实时对象检测

安装OpenVINO非常简单,甚至不需要编译OpenCV。英特尔团队做得很好!

现在使用OpenVINO让Movidius神经计算棒工作。

为了比较将运行带有和不带 Movidius 的MobileNet SSD物体探测器来测试FPS。将这些值与之前使用Movidius NCS APIv1的结果进行比较。

项目结构

继续抓住博客文章的“源代码下载”。

解压缩zip后,可以使用tree 命令检查项目目录:

$ tree.├── MobileNetSSD_deploy.caffemodel├── MobileNetSSD_deploy.prototxt├── openvino_real_time_object_detection.py└── real_time_object_detection.py 0 directories, 3 files

MobileNet SSD对象检测器文件包括.caffemodel和.prototxt.txt文件。这些是预训练的。

使用OpenVINO,Movidius NCS和Raspberry Pi进行实时对象检测

为了展示OpenVINO在带有Movidius的Raspberry Pi上的强大功能,将进行实时深度学习对象检测。

Movidius / Myriad协处理器将执行实际的深度学习推理,减少Pi的CPU负载。

仍然会使用Raspberry Pi CPU来处理结果并告诉Movidius该做什么,正在为Myriad保留深度学习推理,因为它的硬件已经过优化并专为深度学习推理而设计。

今天只添加一行执行计算的代码(以及注释+空白行)。这使得新的总数达到103行代码, 而不使用以前的复杂Movidius APIv1(215行代码)。

https://www.pyimagesearch.com/2018/02/19/real-time-object-detection-on-the-raspberry-pi-with-the-movidius-ncs/

通过OpenCV和Movidius了解OpenVINO API所需的变化。

继续打开一个名为openvino_real_time_object_detection.py的文件并插入以下行,密切关注33-35行:

# import the necessary packagesfrom imutils.video import VideoStreamfrom imutils.video import FPSimport numpy as npimport argparseimport imutilsimport timeimport cv2 # construct the argument parse and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-p", "--prototxt", required=True,help="path to Caffe 'deploy' prototxt file")ap.add_argument("-m", "--model", required=True,help="path to Caffe pre-trained model")ap.add_argument("-c", "--confidence", type=float, default=0.2,help="minimum probability to filter weak detections")ap.add_argument("-u", "--movidius", type=bool, default=0,help="boolean indicating if the Movidius should be used")args = vars(ap.parse_args()) # initialize the list of class labels MobileNet SSD was trained to# detect, then generate a set of bounding box colors for each classCLASSES = ["background", "aeroplane", "bicycle", "bird", "boat","bottle", "bus", "car", "cat", "chair", "cow", "diningtable","dog", "horse", "motorbike", "person", "pottedplant", "sheep","sofa", "train", "tvmonitor"]COLORS = np.random.uniform(0, 255, size=(len(CLASSES), 3)) # load our serialized model from diskprint("[INFO] loading model...")net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"]) # specify the target device as the Myriad processor on the NCSnet.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD) # initialize the video stream, allow the cammera sensor to warmup,# and initialize the FPS counterprint("[INFO] starting video stream...")vs = VideoStream(usePiCamera=True).start()time.sleep(2.0)fps = FPS().start() # loop over the frames from the video streamwhile True:# grab the frame from the threaded video stream and resize it# to have a maximum width of 400 pixelsframe = vs.read()frame = imutils.resize(frame, width=400) # grab the frame dimensions and convert it to a blob(h, w) = frame.shape[:2]blob = cv2.dnn.blobFromImage(frame, 0.007843, (300, 300), 127.5) # pass the blob through the network and obtain the detections and# predictionsnet.setInput(blob)detections = net.forward() # loop over the detectionsfor i in np.arange(0, detections.shape[2]):# extract the confidence (i.e., probability) associated with# the predictionconfidence = detections[0, 0, i, 2] # filter out weak detections by ensuring the `confidence` is# greater than the minimum confidenceif confidence > args["confidence"]:# extract the index of the class label from the# `detections`, then compute the (x, y)-coordinates of# the bounding box for the objectidx = int(detections[0, 0, i, 1])box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])(startX, startY, endX, endY) = box.astype("int") # draw the prediction on the framelabel = "{}: {:.2f}%".format(CLASSES[idx],confidence * 100)cv2.rectangle(frame, (startX, startY), (endX, endY),COLORS[idx], 2)y = startY - 15 if startY - 15 > 15 else startY + 15cv2.putText(frame, label, (startX, y),cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLORS[idx], 2) # show the output framecv2.imshow("Frame", frame)key = cv2.waitKey(1) & 0xFF # if the `q` key was pressed, break from the loopif key == ord("q"):break # update the FPS counterfps.update() # stop the timer and display FPS informationfps.stop()print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))print("[INFO] approx. FPS: {:.2f}".format(fps.fps())) # do a bit of cleanupcv2.destroyAllWindows()vs.stop()

第33-35行是新的。

在第35行,告诉OpenCV的DNN模块使用net来使用Myriad协处理器。setPreferableTarget (CV2 。DNN 。DNN_TARGET_MYRIAD )。

Myriad处理器内置于Movidius神经计算棒中。如果在具有嵌入式Myriad芯片的设备上运行OpenVINO + OpenCV(即没有庞大的USB记忆棒),则可以使用相同的方法。

OpenVINO对象检测结果

图11:使用OpenVINO,OpenCV和Raspberry Pi进行对象检测。

要运行今天的脚本,首您需要获取与此帖相关的“源代码下载”。

解压缩zip并导航到目录。

要使用OpenVINO执行对象检测,只需执行以下命令:

$ python openvino_real_time_object_detection.py--prototxt MobileNetSSD_deploy.prototxt \--model MobileNetSSD_deploy.caffemodel[INFO] loading model...[INFO] starting video stream...[INFO] elasped time: 55.35[INFO] approx. FPS: 8.31

在大约一分钟内达到8.31FPS

使用MobileNet SSD收集了其他结果,如下表所示:

图12:使用OpenVINO的MobileNet SSD深度学习对象检测器与Movidius神经计算棒的基准比较。

OpenVINO和Movidius NCS 2是非常快的,一个巨大的以前版本的加速。

令人惊讶的是,与仅使用RPi 3B + CPU(没有Movidius协处理器)相比,结果大于8倍。

最右边的两列(浅蓝色列3和4)显示了NCS1和NCS2之间的OpenVINO比较。

请注意,第二列统计信息是使用RPi 3B(而不是3B +)。它是在2018年2月使用之前的API和以前的RPi硬件拍摄的。

故障排除和常见问题(FAQ)

问:如何将操作系统闪存到我的Raspberry Pi存储卡上?

答:我建议你:

  • 拿一张16GB或32GB的存储卡。
  • Flash Raspbian拉伸与蚀刻卡到卡。Etcher受大多数主要操作系统的支持。
  • 将卡插入Raspberry Pi,然后从本博文中的 “假设”和 “步骤1”部分开始。

问:我可以使用Python 2.7吗?

答:我不建议使用Python 2.7,因为它快速接近其使用寿命。Python 3现在是标准。我还没有用Python 2.7测试过OpenVINO。但如果你坚持......

以下是如何使用Python 2.7启动和运行:

$ sudo apt-get install python2.7 python2.7-dev

然后,在步骤#4中创建虚拟环境之前 ,首先安装Python 2.7的pip:

$ sudo python2.7 get-pip.py

同样在步骤#4中:当您创建虚拟环境时,只需使用相关的Python版本标志:

$ mkvirtualenv openvino_py27 -p python2.7

从那里一切都应该是一样的。

问:为什么我不能只是apt-get安装OpenCV并且支持OpenVINO?

A. 避免这种“解决方案”不惜一切代价,即使它可能工作。首先,这种方法可能不会安装OpenVINO,直到它更受欢迎。其次,apt-get对虚拟环境不起作用,你无法控制你的编译和构建。

问:mkvirtualenv 和workon 命令产生“命令未找到错误”。我不知道下一步该做什么。

答:有很多原因导致您看到此错误消息,所有这些都来自第4步:

首先,确保使用pip包管理器正确安装了virtualenv 和virtualenvwrapper。通过运行pip 冻结验证并确保您看到virtualenv和virtualenvwrapper都在已安装的软件包列表中。你的 〜/ .bashrc 文件可能有错误。检查〜/的内容 .bashrc中文件以查看适当的 \出口和源命令是本(检查步骤#4 为应被附加到命令 〜/ .bashrc中 )。

您可能忘记源的 〜/ .bashrc中 。确保你运行source ~ / 。编辑后的bashrc以确保您可以访问 mkvirtualenv 和 workon 命令。

问:当我打开新终端,注销或重新启动我的Raspberry Pi时,我无法执行 mkvirtualenv 或 workon 命令。

答:如果你在Raspbian桌面上,可能会发生这种情况。由于某种原因,启动终端时加载的默认配置文件不会提供 〜/ 。bashrc 文件。请参阅上 一个问题中的#2。通过SSH,您可能不会遇到这种情况。

问:当我尝试导入OpenCV时,遇到以下消息:导入错误:没有名为cv2的模块 。

答:有 几个原因可能会发生,不幸的是,很难诊断出来。我建议以下建议来帮助诊断和解决错误:

  • 使用workon openvino 命令确保您的openvino虚拟环境处于活动状态 。如果此命令出现错误,请验证 virtualenv 和 virtualenvwrapper 是否已正确安装。
  • 尝试调查openvino虚拟环境中site - packages 目录 的内容 。你可以在〜/找到 site - packages目录 。virtualenvs / openvino / lib / python3 。5 / site - packages / 。确保(1)site - packages 目录中有一个 cv2 sym-link 目录,(2)它是sym-linked正确的。
  • 请务必找到步骤#6中演示的 cv2 * .so文件。

结论

今天了解了英特尔的OpenVINO工具包,以及它如何用于提高Raspberry Pi的深度学习推理速度。还学习了如何安装OpenVINO工具包,包括Raspberry Pi上OpenVINO优化版本的OpenCV。然后运行了一个简单的MobileNet SSD深度学习对象检测模型。它只需要一行代码就可以将目标设备设置为Movidius棒上的Myriad处理器。还证明了Movidius NCS + OpenVINO非常快,在Raspberry Pi的CPU上显着优于对象检测速度。

原文发布于微信公众号 - 相约机器人(xiangyuejiqiren)

原文发表时间:2019-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券