基于Intel神經(jīng)計(jì)算棒NCS2的智能機(jī)器手臂之視覺系統(tǒng)方案
英特爾NCS 2由最新一代的英特爾VPU(視覺處理單元)支持–英特爾Movidius Myriad X VPU。這是第一個(gè)具有神經(jīng)計(jì)算引擎的VPU,可提供額外的性能。諸如Caffe,Tensor Flow或MXNet之類的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)可以與NCS2上的OpenVINO工具包集成。這些機(jī)器學(xué)習(xí)框架針對全新的深度神經(jīng)網(wǎng)絡(luò)(DNN)推理引擎進(jìn)行了優(yōu)化,該引擎提供的性能是前一代的八倍。
借助電腦和Intel NCS2,開發(fā)人員可以啟動其AI和計(jì)算機(jī)視覺應(yīng)用的開發(fā),并在幾分鐘內(nèi)執(zhí)行。英特爾NCS2在標(biāo)準(zhǔn)USB 3.0上運(yùn)行,不需要其他硬體,從而使用戶能夠無縫轉(zhuǎn)換由電腦訓(xùn)練好的模型,然后將其部署到各種邊緣設(shè)備而不需連網(wǎng)或連云。無論是開發(fā)智能相機(jī),具有手勢識別功能的無人機(jī),工業(yè)機(jī)器人,還是下一代智能家居設(shè)備,英特爾神經(jīng)計(jì)算棒2都能為開發(fā)人員提供更快原型所需的功能。
智能機(jī)器手臂之視覺系統(tǒng)方案
接下來介紹這有趣的智能機(jī)器手臂之視覺系統(tǒng)方案,本方案是由許哲豪 Jack 開發(fā)的。Jack 是幫忙Intel 與Sertek 推廣Intel OpenVINO 與Intel NCS2 的專家。如果大大通的好朋友們,對AI 的應(yīng)用與開發(fā)有興趣可以到Jack 的網(wǎng)站http://omnixri.blogspot.com/ 在這里可以挖到很多寶喔。
方案目標(biāo)
本方案希望透過對象(小蕃茄)標(biāo)注、訓(xùn)練、推論(偵測)及深度資訊整合的框架及工作流程來讓讀者了解AI 應(yīng)用開發(fā)的流程,解決自動計(jì)算小蕃茄(水果)空間位置(XYZ),利用深度感測器Intel RealSense D435(以下簡稱D435)及神經(jīng)運(yùn)算棒二代Intel Neural Compute Stick 2(以下簡稱NCS2)加上開源視覺推論及神經(jīng)網(wǎng)路優(yōu)化工具包Intel OpenVINO (自帶簡化版OpenCV 3.4.1)來說明與實(shí)作一下“智能機(jī)器手臂的視覺系統(tǒng)”。
本方案主要是利用D435擷取到的彩色影像結(jié)合深度學(xué)習(xí)的對象定位算法YOLOv3找到水果位置(X,Y),當(dāng)CPU算力不足時(shí)還可使用Intel GPU或VPU(NCS2)加速計(jì)算,最后再加上D435擷取到的深度影像所對應(yīng)位置的深度(Z)資訊,未來就可以讓機(jī)器手臂正確地伸到正確空間位置(XYZ)夾取及摘取(剪切)水果了。
YOLOv3訓(xùn)練小蕃茄影像
本方案主要是以小蕃茄做為機(jī)械手臂視覺系統(tǒng)的模擬采收對象,但是一般常見開放資料集(如ImageNet, MS COCO)都沒有合適的,所以只好自己收集、標(biāo)注資料集。由于撰寫本文時(shí)非生產(chǎn)季節(jié)加上沒有合作的伙伴可以提供實(shí)際農(nóng)場取像,于是只好上網(wǎng)買了一串塑膠制的小蕃茄,外觀看起來非常逼真,作為本次實(shí)驗(yàn)的對象。
本次實(shí)驗(yàn)取像及測試的環(huán)境如圖1所示。筆電上預(yù)先裝好RealSense SDK及OpenVINO SDK,并插入神經(jīng)運(yùn)算棒(Intel NCS 2)作為加速計(jì)算用。RealSense D435插入筆電的USB 3.0埠(不支援USB 2.0),小蕃茄距離D435約30公分,分別對小蕃茄正面和背面取像作為樣本。為了快速取得大量樣本,令攝影機(jī)每隔10個(gè)影格(0.33秒)拍一張照,拍攝期間以手移動小蕃茄位置及角度,以獲得更多樣性的樣本。
圖1 取像及測試工作環(huán)境示意圖(OmniXRI整理制作)
為了節(jié)省后續(xù)標(biāo)注及訓(xùn)練時(shí)間,所以只取得正面92張,背面79張,合計(jì)171張樣本影像。當(dāng)然這樣的數(shù)量對深度學(xué)習(xí)的訓(xùn)練是非常不夠的,這里只是為了說明工作流程,所以暫時(shí)忽略后續(xù)訓(xùn)練及偵測正確性的高低。由于如何標(biāo)注、訓(xùn)練資料集的工作步驟頗多,所以請直接參考【AI_Column】如何以YOLOv3訓(xùn)練自己的資料集─以小蕃茄為例[10]。
經(jīng)初步測試后,正確率實(shí)在有點(diǎn)糟糕,可能是小蕃茄(待偵測對象)重疊的太嚴(yán)重且訓(xùn)練及驗(yàn)證集的數(shù)量太少,同時(shí)又沒有利用資料擴(kuò)增手段改善。因此只能先用訓(xùn)練集來充當(dāng)測試集,當(dāng)然這只是為了方便解釋后面的工作流程,一般正常情況下是絕不允許拿訓(xùn)練集或驗(yàn)證集來測試的,因?yàn)檫@樣很容易落入過擬合區(qū)間造成正確率會異常飆高的問題。
若先排除上述過擬合問題,測試集被框到的小蕃茄數(shù)量明顯比實(shí)際少很多,且很容易出現(xiàn)過大或過小的框,所以就在程序中加入長寬尺寸及比例來限制不正常的對象被偵測到。經(jīng)過限制后被框到的小蕃茄位置及尺寸大致都還算正確,可是置信度高低差很多,有些甚至低到0.1(10%)以下,所以只好將置信度的門檻值設(shè)低一些,才不致于找不到任何對象,但缺點(diǎn)就是誤判的機(jī)率就增高了。
至于正面及反面何者偵測較為正確,正面會辨識率略高于反面,猜想可能是綠色的蒂頭沒有很確實(shí)被訓(xùn)練到吧?另外雖然標(biāo)注時(shí)已針對遮蔽小于1/2的小蕃茄都有加以標(biāo)注,但實(shí)際上辨識出來的結(jié)果仍以形狀較完整的被偵測到的機(jī)率較高。如圖2即是小蕃茄在正面及反面以O(shè)penVINO?執(zhí)行YOLOv3的偵測結(jié)果。而圖3及圖4分別是原始影像及對象偵測結(jié)果影像動畫GIF檔示意檔,完整171張版動畫GIF檔請參考[11]。
圖2 小蕃茄偵測結(jié)果影像,左:正面,右:反面。(OmniXRI整理制作)
圖3 小蕃茄原始影像檔(OmniXRI整理制作)
圖4 小蕃茄偵測結(jié)果影像檔(OmniXRI整理制作)
對象偵測加深度影像整合測試
經(jīng)過前面的努力后終于可以進(jìn)到最后的整合階段了,透過OpenVINO?執(zhí)行YOLOv3對象偵測功能并正確找出數(shù)個(gè)小蕃茄位置后,接下來就要開始判定那個(gè)小蕃茄優(yōu)先采收。一般農(nóng)民會從最靠近自己或最外層的開始采收,換一個(gè)說法就是距離最近的,此時(shí)RealSense D435的深度影像功能就派上用場了。不過事情有這么簡單嗎?
“李組長眉頭一皺,發(fā)覺案情并不單純”,從圖5中可看出有幾個(gè)問題:
深度攝影機(jī)的視野略大于彩色攝影機(jī)一些,導(dǎo)致小蕃茄在二組影像中的位置及尺寸也略有不同。
深度影像并不是很完整,有些破碎,尤其在對象邊緣更是嚴(yán)重,甚至有陰影區(qū)(深度呈現(xiàn)黑色區(qū)域)無法計(jì)算出深度問題。
小蕃茄被框到的區(qū)域像素很多,就算對應(yīng)到正確的位置,深度資料不只一筆要以何者為主。
小蕃茄本身直徑約10~20mm,而D435能穩(wěn)定表達(dá)的深度差大約5~10mm(視外在光源及攝像品質(zhì)而定),所以不同深度或相鄰小蕃茄可能存在極接近甚至相同深度值,導(dǎo)致同時(shí)有數(shù)個(gè)小蕃茄產(chǎn)生相同采收順序。
圖5 RealSense D435深度影像與原始彩色影像比對。(OmniXRI整理制作)
從上述問題大概可知要讓機(jī)器手臂視覺系統(tǒng)穩(wěn)定辨識出待抓取物件的距離真的不簡單,這里并不給出唯一解法,只是提供一些可能的做法,其它的留待有興趣的朋友繼續(xù)研究改善,以下就提供一些個(gè)人解題思考方向。
1.首先是視野問題,若被檢出物件較大(是指占畫面比例而非實(shí)際外觀尺寸)則可忽略此一問題,但待檢物像小蕃茄尺寸時(shí),則可能需要作簡單視野校正工作,令深度影像放大、平移一些以符合彩色影像位置,如此就可取得較正確深度資訊。
2.再來深度分辨率不足問題可能不易克服,這屬于硬體限制,但對于更穩(wěn)定檢出部分則可以依實(shí)際現(xiàn)場狀況微調(diào)RealSense D435的Laser發(fā)射功率。當(dāng)攝影機(jī)太靠近待測物時(shí),若Laser發(fā)射功率太強(qiáng)則會造成紅外線影像不是有一堆細(xì)小光點(diǎn),而是會變成一片慘白,那會造成不易計(jì)算正確視差(深度)。
3.關(guān)于要以何點(diǎn)的深度(距離)做為機(jī)械臂向前伸的距離,最簡單的想法就是以框的中心點(diǎn)作為基準(zhǔn)即可,但不幸的是這個(gè)點(diǎn)可能沒有值或者值受到干擾而和實(shí)際有很大差距。如果容許較長的計(jì)算時(shí)間,則可考慮把框內(nèi)所有深度值排序后取中位數(shù)或者以高斯分布(中間優(yōu)先權(quán)越重,越往外側(cè)權(quán)重越低)計(jì)算深度值均值。當(dāng)然若考慮計(jì)算時(shí)間,則可在框中心取一小塊(如10×10點(diǎn))直接取平均值亦可。
4.最后是遇到深度相同問題時(shí),則建議從對象框中心較靠外側(cè)、上方的小蕃茄開始采收,如此較不會發(fā)生,下方小蕃茄被其它擋住,機(jī)械爪不易進(jìn)入剪切問題。
本方案引用作者:“歐尼克斯實(shí)境互動工作室 作者:Jack Hsu”
場景應(yīng)用圖
?展示板照片
?方案方塊圖
?核心技術(shù)優(yōu)勢
1. Intel RealSense D435 camera a. 低成本的3D雙目深度相機(jī) b. 提供完整SDK 可以快速與系統(tǒng)整合 c. 可快速掃瞄,提供點(diǎn)云資訊 d. 可透過ROS整合開發(fā)自主創(chuàng)新功能 e. 智能化3D物件辨識 2. Intel OpenVino Toolkit a. 可最佳化訓(xùn)練好的模型 b. 支援業(yè)界、學(xué)界常用的訓(xùn)練框架 c. 可快速部屬到intel 的硬體平臺如CPU、GPU、VPU、FPGA d. 提供常用的預(yù)訓(xùn)練模型如SSD、YOLO 等 e. 提供C++ 與Python 的應(yīng)用范例,縮短程式開發(fā)周期 3. Intel? Neural Compute Stick 2 (Intel? NCS2) a. 在英特爾?Movidius?Myriad?X視覺處理單元(VPU)上提供卓越的每瓦每美元效能進(jìn)行構(gòu)建和擴(kuò)展 b. 支援Windows?10,Ubuntu *或macOS *上快速開發(fā) c. 在通用框架和開箱即用的范例應(yīng)用程式上進(jìn)行開發(fā) d. 在不需連云情況下進(jìn)行操作 e. 在低成本的邊緣設(shè)備(例如Raspberry Pi * 3和其他ARM *主機(jī)設(shè)備)端開發(fā)原型
?方案規(guī)格
1. 3D相機(jī): Intel RealSense D435 Camera 2. 作業(yè)系統(tǒng): Windows 10 3. Intel NUC Rugged Board with Core i3/i5 Processor 4. AI 推論套件: Intel OpenVino Toolkit 2020.03 5. 記憶體: 4GB 以上 6. 傳輸界面: USB 3.0 7. 神經(jīng)計(jì)算棒: Intel? Neural Compute Stick 2 (Intel? NCS2)
評論