源代码链接: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上显着优于对象检测速度。

推荐阅读

OpenCV和Tensorflow 实现机器人沿着人行道移动

关于图书

《深度学习之TensorFlow:入门、原理与进阶实战》和《Python带我起飞——入门、进阶、商业实战》两本图书是代码医生团队精心编著的 AI入门与提高的精品图书。配套资源丰富:配套视频、QQ读者群、实例源码、 配套论坛:http://bbs.aianaconda.com 。更多请见:https://www.aianaconda.com

opencv 通过网络连接工业相机_Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS相关推荐

  1. c++ opencv 通过网络连接工业相机_OpenCV项目实战之零件缺陷检测(上)

    导 语 在流水线上,上位机软件以一定的频率通过工业摄像机拍摄图片,然后检查图片中的零件质量,然后把零件质量用特定编码以串口通信方式发送给硬件,硬件收到信号后将有缺陷的零件过滤,以实现零件质量把控的目的 ...

  2. opencv 通过网络连接工业相机_单目摄像机测距(python+opencv)

    点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 我的论文方向目前是使用单目摄像头实现机器人对人的跟随,首先单目摄像 ...

  3. c++ opencv 通过网络连接工业相机_摄像头和机器人视觉开发中的「相机标定」,你了解多少?...

    目前我们团队在做一个项目,通过采集到的人脸图像测量人脸上两个瞳孔间的实际距离.注意是实际距离,不是两个瞳孔之间隔多少个像素点.找了很久资料,好像"相机标定"可以解决我的问题,看了不 ...

  4. c++ opencv 通过网络连接工业相机_使用OpenCV进行手势控制游戏+源码分享

    前期文章链接: 霍夫变换--形状特征提取算法:车道线检测 开源自动驾驶汽车数据集 基于深度学习和神经网络的重要基础及方法概要 深度学习背后的数学思想 正文: 在本文中,您将了解使用OpenCV在Pyt ...

  5. 计算机连接就是网络吗,电脑网络连接显示正常但上不了网怎么办 电脑网络连接显示正常但上不了网 - 云骑士一键重装系统...

    电脑网络连接正常但上不了网怎么办?一起来看看吧. 输入cmd命令 按住键盘上的windows键+R的组合键,调出运行窗口的命令,在运行的窗口中输入cmd,然后点击确定. 查看dns和dhcp的ip地址 ...

  6. 笔记本连上无线网但是无法上网络连接服务器,笔记本电脑连上无线网却不能上网怎么处理...

    相信不止一个人遇到过这样的问题,自己的电脑无线显示已连接,且信号非常好,连上无线网却无法上网,也开不了qq,总之就是无法上网,更诡异的是,手机却可以连接WiFi也可以正常上网,这样看来应该不是网络的问 ...

  7. 禁用计算机的网络连接无线网络连接不上,笔记本电脑无线网络连接不上是什么原因...

    笔记本电脑无线网络连接不上是什么原因?笔记本电脑连接不上无线网络的原因,有以下几种可能:1.无线网络密码不正确:2.无线网络缓存问题:3.路由器上进行了限制. 笔记本电脑无线网络连接不上 一.无线网络 ...

  8. 电脑连上网线但是不能用linux,为什么无线网络连接上却不能上网,详细教您电脑连上无线网却不能上网怎么办...

    最近,遇到不少网友电脑WIFI能连接上,但就是不能上网,眼巴巴的看着那已连网的图标,欲罢不能,满脑袋想着"怎么办,怎么办,怎么办",关于联想笔记本电脑很多无线网络连接上但上不了网的 ...

  9. 计算机可用网络连接不上,电脑网络连接不可用?学会这招,轻松解决

    原标题:电脑网络连接不可用?学会这招,轻松解决 上面 电脑用久了总是会出现各种各样的问题,最常见的要数网络问题了,有不少用户反映说网络连接不可用,上不了网很烦 躁,那么如果用户遇到Win10网络连接不 ...

最新文章

  1. 快速区域积分直方图实现
  2. 未来十年 智慧交通仍将持续引领城市建设高潮
  3. iOS开发--使用OpenSSL生成私钥和公钥的方法
  4. 双时隙的工作原理_智能天线工作原理是什么 智能天线技术发展介绍【图文】...
  5. VS2010中的sln,suo分别是什么文件
  6. android中的add方法,Android中Fragment怎么addView?
  7. linux查看空间使用情况并且清除,科技常识:Linux 查看空间使用情况的实例详解...
  8. 余承东:华为P50系列无5G版本,但依然流畅
  9. ios授权登录过程中一直提示“没有安装qq”
  10. 【GNN】一文轻松了解Graph Neural Networks
  11. (译)如何使用NSCoding和NSFileManager来保存你的应用程序数据
  12. 个人设置随身携带口袋操作系统手到擒来
  13. web of science /pubmed主要可检索字段
  14. DOS 之for循环
  15. 混合式学习,以学习者为中心的新型教学形式
  16. H264码流的 ps封装
  17. STM32HAL库驱动DHT11和BH1750
  18. DCL 对话框 多级窗口开发示例
  19. python二进制转中文_python3 二进制转中文
  20. C++程序设计课程主页-2013级

热门文章

  1. how to find all element type with type table of content
  2. where is document CURRENCY field stored
  3. when is One Order gt_plan_exets filled
  4. NO_CHANGE_ALLOWED error code
  5. 如何在AWS亚马逊云上运行Angular应用
  6. SAP CRM Survey调查问卷的模型设计原理解析
  7. jmeter(二)录制脚本
  8. linux 使用nginx 权限不够,对于nginx和Linux,有一些关于权限的问题。
  9. 技术选型方案怎么写_活动运营方案怎么写?
  10. git add 文件夹_软件测试学习资源—Git 基础使用