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

?方案方塊圖

?核心技術(shù)優(yōu)勢(shì)
1. Intel RealSense D435 camera a. 低成本的3D雙目深度相機(jī) b. 提供完整SDK 可以快速與系統(tǒng)整合 c. 可快速掃瞄,提供點(diǎn)云資訊 d. 可透過(guò)ROS整合開(kāi)發(fā)自主創(chuàng)新功能 e. 智能化3D物件辨識(shí) 2. Intel OpenVino Toolkit a. 可最佳化訓(xùn)練好的模型 b. 支援業(yè)界、學(xué)界常用的訓(xùn)練框架 c. 可快速部屬到intel 的硬體平臺(tái)如CPU、GPU、VPU、FPGA d. 提供常用的預(yù)訓(xùn)練模型如SSD、YOLO 等 e. 提供C++ 與Python 的應(yīng)用范例,縮短程式開(kāi)發(fā)周期 3. Intel? Neural Compute Stick 2 (Intel? NCS2) a. 在英特爾?Movidius?Myriad?X視覺(jué)處理單元(VPU)上提供卓越的每瓦每美元效能進(jìn)行構(gòu)建和擴(kuò)展 b. 支援Windows?10,Ubuntu *或macOS *上快速開(kāi)發(fā) c. 在通用框架和開(kāi)箱即用的范例應(yīng)用程式上進(jìn)行開(kāi)發(fā) d. 在不需連云情況下進(jìn)行操作 e. 在低成本的邊緣設(shè)備(例如Raspberry Pi * 3和其他ARM *主機(jī)設(shè)備)端開(kāi)發(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)
評(píng)論