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

?方案方塊圖

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