Intel又出了新招!先前Intel推出的產品,有些叫好不叫座,不過,這次Intel似乎搞對方向了。從前OpenCV 這library我在Banana Pi M1上去安裝,搞得人仰馬翻、東倒西歪,這回試玩OpenVINO這個新的AI加速工具,在開發工具的入手上,比起我之前那土法煉鋼的方法要有效、實際!
由於這是針對影像進行智慧分析與應用的加速工具,我馬上想到如果把它用在KIOSK或數位看板(Digital Signage)這樣的應用情境中,比方說當有客人走到數位看板前,即透過鏡頭及OpenVINO分析他(或她)的性別、年齡、身高、穿著等特徵資料,再依此資料顯示他(或她)可能有興趣的商品訊息,嗯,這不就真正做到了精準行銷!
如何達到這樣的應用呢?這可能還要靠相關產業自行開發,但其背後的核心技術,且容我一步步道來。
實測裝備:
1. Aaeon UPS-GWs01一套以及5V/6A的電源供應器
2. Logitech C922 WebCam
3. Intel Movidius USB Neural Computing Stick(NCS)
4. Edimax wireless Wi-Fi USB adapter
5. 其他請自備USB Hub、USB keyboard/Mouse
先看看OpenVINO的範例
在Aaeon UPS-GWs01上安裝OpenVINO所需軟體套件的方法,請見OpenVINO無痛安裝指引;主要的開發工具,對於我們Maker來說可方便了!直接在Windows 10下面,跑Microsoft Visual Studio就可以。不過,目前OpenVino主要支援Visual Studio 2015與2017,所以要是你的電腦上用的Visual Studio還是之前的版本,那就得先升級或重新安裝囉~
一開始,如果你電腦上各個執行檔案*.exe還沒有編譯出來,當然是不能用來跑範例的;這台Aaeon UPS-GWs01上安裝的是Visual Studio 2017,所以接下來我都用Visual Studio 2017來說明。
1. 先執行Microsoft Visual Studio 2017,開啟內附的範例總解決方案Samples.sln,應該會在deployment_tools\inference_engine\samples\build_2017這個子目錄下,如下圖:
2. 打開後,在Visual Studio 2017下應該會出現類似這樣的畫面,目前已經有20多個範例專案可以讓使用者參考,如下圖:
對於ALL_BUILD這個專案進行重建,範例就會產生出執行檔案*.exe。
3. 輸出會在inference_engine\bin\intel64這個子目錄下,看當時你選擇是Release或者Debug模式,就會在對應的子目錄下看到結果,原則上用Aaeon UPS-GWs01去編譯的話,我自己計時過大約5分鐘左右。
4. 為了滿足好奇心,就打開個簡單的範例專案看看,比如hello_classification;目前Intel提供的這些範例專案,都是用C++開發的。
OpenVINO架構的基本原理
從圖中可以得知,原則上Intel規劃是透過資料科學家去把資料收集並且標記特性後,組成訓練過後的模型(Trained Model),再透過模型最佳化也就是Model Optimizer處理過後,就會形成Intel可以佈署的模型Depoly-ready Model。
軟體設計人員可以直接透過Inference Run-time這一組API,針對所需要的軟體操作效果與功能,就是UI、UX,直接開發軟體。這也就是說,軟體設計人員能夠把Depoly-ready Model只當成是程式執行所需要的資料檔案這樣的簡化概念。如此一來,可以避免以往深度學習(Deep Learning)應用開發的時候,資料科學家與軟體設計人員的專業並未完全配合,導致專案開發時程上的延宕,或者提高了軟體開發的失敗率。
OpenVINO能利用架構規劃上的優勢,使得資料科學家與軟體設計人員可以分工合作,讓應用開發的成功率跟效率提升
目前Intel支援的Trained Model可以透過像是TensorFlow、Caffe、MXNet提供給Model Optimizer,而輸出的Depoly-ready Model會以*.xml與*.bin的方式存在硬碟;下圖為Inference Engine的基本架構圖:
跑看看已有的人臉辨識範例
這裡有個批次檔案,內容如下;記得要插上Intel USB NCS(神經運算棒)喔。也可參考官方說明資料。
<< face_detection_myriad.bat >>
(批次檔下載)
這個批次檔案中呼叫的interactive_face_detection_sample.exe就是我們剛剛建立起來的可執行檔案其中一個,後面的參數MYRIAD代表我們用上了Intel USB NCS;真正關鍵在後面,這次範例我們用上了三個Intel OpenVINO提供已經替我們訓練好的模型(行話叫Pre-trained):
· Age & Gender Recognition(性別與年齡):age-gender-recognition-retail-0013.xml
· Face Detection Enhanced Model(人臉鎖定加強版,可以針對不同光亮進行推算):face-detection-retail-0004.xml
· Head Position(頭部鎖定):head-pose-estimation-adas-0001.xml
一個可執行檔案是可以同時引入多個模型一起執行的,隨著Intel OpenVino安裝好後,訓練好可以用的模型也同時已經複製到安裝目錄中。看到批次檔案中的第五列:
SET “INTEL_MODELS=C:
\Intel\computer_vision_sdk_2018.3.343\deployment_tools\intel_models”
就是設定Intel幫我們先訓練好的模型存放的目錄位置,你一進入INTEL_MODELS這個變數指定的目錄後,會看到有很多的子目錄,瞧瞧是不是能找到face-detection-retail-0004、age-gender-recognition-retail-0013、head-pose-estimation-adas-0001這三個目錄,進入這三個以後,應該都會看見各自有FP16,裡面存的xml以及bin檔案,就是稍早講的Model Optimizer產出的模型。
也就是說,這個批次檔案會透過interactive_face_detection_sample.exe先鎖定影像中可以辨認為頭部的部分,若有,那就試著透過人臉鎖定,鎖定人臉成功後就推估性別跟年齡。
打開「適用於VS 2017的開發人員命令提示字元」這個Visual Studio 2017附贈的命令提示視窗,把這個批次檔案儲存到範例專案產生出來執行檔案的那個目錄(Debug或者Release),像我就是Debug。
以下是實作的影片連結,最後圖中紅字的部分,M表男生,逗號旁邊的數字代表推算的年齡(我發現好像少算很多耶!),如下圖:
偵測時,最好能採光充足的空間進行,並且取得全景,才會比較容易進行,同時也儘量避免多人同時偵測,一次一個人讓程式去判斷,結果才會比較準確。
數位看板應用情境
再回到文章一開始想做的數位看板精準行銷,雖然沒法直接拿一台數位看板來做做看,但聰明的看倌讀完上述的實例後,應該很清楚如何將OpenVINO用在相關的應用開發上了。舉個設想的情境,如果你經營的是一家有各種名牌的服飾店,當客戶一走進你的店,可能不知道哪一個品牌最適合自己,這時就可以靠一台有影像辨識功能及具備深度學習能力的智慧數位看板來提供服務。
當然,這台數位看板可以提供視覺化的搜尋功能,透過觸控更直覺的找到自己需要的衣服、褲子或帽子,也可以如上述的實例,先分析鏡頭前觀眾的性別、年齡,甚至是穿著口味,再從店裏的商品中進行速配分析,為客戶挑選適合他/她的服飾,還可以直接完成買單動作。
當然,除了服飾店,各行各業都有機會運用智慧數位看板來提升用戶滿意度和業績,比方說走進漢堡店,有台數位看板除了可達成自主點餐的目的,分擔掉店員的工作量,同樣也可以分析用戶的特徵資料,給予適合的餐點推薦,如下圖。
我要聯絡