opencv 通过网络连接工业相机_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
在這篇博文中,將介紹三個主要主題。
將了解OpenVINO是什么以及它如何成為Raspberry Pi非常受歡迎的范例轉換。
將介紹如何在Raspberry Pi上安裝OpenCV和OpenVINO。
將使用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/1000Raspbian文件系統已自動擴展為包含所有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 filesMobileNet 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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis强一致性_分布式架构一定要有R
- 下一篇: CentOS远程监控