2018年2月8日 星期四

技術筆記 微型影像模組


我的左眼

以往提到影像模組,浮上的印象就是WebCam搭配PC執行OpenCV,提供防盜監視或停車場車牌辨識。這些年,硬體技術進步,設備上除了CMOS影像外,還加入如LIDAR和紅外線雷射,軟體上更有強大CPU和GPU、大量訓練資料庫、日益普及的類神經網路模組幫助。讓自駕車在複雜天候和路況中自動行駛,萬千人海中的人臉辨識也成為可行。可以預見的是,這進程將會越來越快,影響層面也會更廣。

但也因為設備和軟體平台專門化,這領域也將成為大公司才能進入的領域。以價格便宜、體積小、功耗低取勝的微型影像模組,必須更專精於自己領域,才能在像白堊紀時,地表上都是大恐龍橫行狀況下,找到個陰暗角落,努力爭取生存空間。

光源與影像


微型影像模組第一種特色就是,輸入光源和影像數量的多樣化。

紅外LED。Leap Motion。C# SDK HACK。最近類似產品是DepthEye 3D visual TOF Depth Camera。價格200美元(好貴啊)
Provide Pointcloud  and RAW depth data
FOV(D* H*V ) :90 * 75 * 59
2 850nm band infrared LED
TI OPT8320 sensor

紅外邊射型雷射LD,例如自己曾經參考過CSK的鍵盤專案就是利用這種直線性雷射光,用亮點形狀偵測位置和距離。常聽的商業工具是LIDAR。CSK的陳士凱有個陽春版本RoboPeak,後來延伸為恩嵐,算是窮人版本LIDAR。

掃描出來的空間地圖

紅外面射型雷射VCSEL。從KINECT開始,就以此種雷射發射結構式紅外雷射,分析拍攝畫面後,就可以取得各點的距離深度。最近的APPLE FaceID也是運用相同原理。

結構光是上述技術的延伸,除紅外雷射外也可採用DLP技術的3D投影出來,Opto有量產品。原理是將數位光圖形 (digital light pattern) 投射在物件上,再利用相機從已知的位置角度拍攝光圖形,以三角量測的方法取得3D數據。投射的光圖形通常是黑白相間的光條。


程式上,最基本範例可以參考這裡

最後是模擬兩眼立體視覺的方案,這也是我現在公司主力產品。兩張圖片依照相同方式找出特徵點,接著計算這兩組點的偏移位置,就可以建構距離模型。參考 項目 範例 YOUTUBE位置 。中文 介紹1 介紹2 介紹3


辨識能力


MCU能達到的辨識能力。

1)規則式比對,如OptRec(STM32)的OCR辨識。

2)統計式(數學式)比對,如HAAR辨識。這篇文章對OpenCV能達到的程度有完整介紹。OpenMV範例。

Eigenfaces

OpenMV

3) 類神經網路比對,如Google AIY的TensorFlow架構,連結
使用INTEL的圖像處理晶片 Movidius MA2450,或是 Orange Pi(文章介紹),完整DIY步驟如下。有了 Google 提供的 3 個基於 TensorFlow 的神經網路模型,用 Vision Kit 進行 DIY 的裝置能夠識別上千種常見物品、識別面部表情或探測拍攝到的人、貓和狗。Google 還提供了 Vision Kit 的模型編譯工具,這樣您就可以在工作站或任何雲服務上用 TensorFlow 對模型進行的訓練和再訓練。

Google AIY

類神經網路其他範例,例如movidius。若嘗試以STM32來運作,最有可能是移植計算的部分,讓複雜的Train交給大型電腦運作,資料存入MCU,MCU只負責算分。

1) STM:複雜運算、奇怪的平台機制  這兩個都不太可行

2) TENSORFLOW:google給手機用的、正在尋找範例,或是這裡
最近更是看到一個介紹,Google提供的TensorFlow Lite for Microcontrollers(連結),直接在Cortex M3就能執行TensorFlow啦,就連OpenMV都有可能可以使用(連結),實在太特別。

3) CAFFE移植CAFFE

其他


幾個可能應用例子工廠案例。

沒有留言:

張貼留言