帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
Intel OpenVINO 2023.0初體驗—如何快速在Google Colab運行人臉偵測
【vMaker Edge AI專欄#06】

【作者: Jack OmniXRI】   2023年06月30日 星期五

瀏覽人次:【3066】

話說二十多年前第一次到教練場學開車,當時是手排車,常常因換檔時離合器、排擋、油門控制不當就導致車子瞬間熄火,不然就是猛烈振動甚至暴衝,好在教練細心指導,才能讓車子平順前進。後來改開自排車後,突然覺得以前那些換擋技巧根本用不到,車子自己就會處理好這些換檔工作,我們只要會轉方向盤,會踩油門、剎車加上專心路況就能順利把車開上路到達目的地。


如今在學習AI這台大車時也遇到類似問題,需要一個好的教練指導開發AI的每個步驟和細節,不然就得換一套方便的工具,讓我們能專心在開發應用程式而不需要了解太多AI的數學和原理,而其中 Intel OpenVINO Toolkit(以下簡稱OpenVINO) [1] 就是一套不錯的AI推論(Infernece)優化工具。


一般常見的AI應用有「電腦視覺」、「自然語言處理」、「資料分析」等,通常多半需要收集大量的資料,經過訓練特定的模型(或機器學習算法、神經網路等)才能應付各式AI應用的需求。訓練過程非常繁瑣且須依靠極高算力才能完成模型巨量權重(參數)的訓練。不過好在當完成模型訓練後,只需運行一次推論就能得到結果。


如果還覺得模型太大或推論速度不夠快,此時可透過一些複雜程序來進行參數量化(如FP32變成INT8)或模型優化(如減枝、壓縮、蒸餾等),以達到又快又準的結果。而以上介紹的 OpenVINO 正是這樣的工具,它已幫大家把常用AI應用的模型都預訓練好了,如影像分類、物件偵測、人臉辨識、影像分割、姿態估測等,甚至現在流行的大型語言模型(LLM)及AI生成影像模型(AIGC),這樣大家就可輕鬆上手AI應用。


以下就以最常見的 「人臉辨識」 (只作人臉位置偵測,不作身份辨識)作為起手式,使用網頁版Python開發環境Google Colab(Jupyter Notebook環境)直接安裝最新2023.0版的OpenVINO運行其Notebooks範例,來讓大家快速體驗一下AI應用帶來的好處。


1.人臉辨識技術的演進

以電腦視覺進行「人臉辨識」已發展有數十年,如圖1所示,從最早的統計式(特徵臉)再演進到模板式(VJ聯級法)、特徵式(主動形狀模型ASM)、外觀式(主動外觀模型AAM)。但這些方式通常只能辨識較正面且大小、位置差不多,光照均勻的人臉影像,若遇到各種拍攝角度、尺寸、光照、背景、表情、化妝、眼鏡、口罩等干擾因素時,辨識率就會急速下降,變得不夠實用。更多人臉辨識相關介紹可參考[2],這裡就不多作說明。


近年來深度學習(神經網路)技術及電腦硬體算力突飛猛進,所以透過巨量的人臉資料集進行模型訓練,就能得到較穩定實用的模型。不論是人臉偵測、身份辨識、表情、性別、年齡等都有單獨對應或整合式的模型可供使用。所以在人臉辨識上,除了可設計專用模型外,亦可當成普通物件來進行偵測。



圖1 : 人臉辨識技術發展圖。[2]
圖1 : 人臉辨識技術發展圖。[2]

2.如何在Colab上安裝OpenVINO

OpenVINO可支援多種作業系統(如Windows, Linux, macOS),多種安裝模式(如執行檔、APK、PyPl(pip install)、自行編譯、Docker等),甚至有提供雲端免安裝的DevCloud版本。


在本文中,為了讓大家能更輕鬆的試用,只要找一台能上網的電腦,開啟文末提供的Colab範例(*.ipynb)點擊連結就能馬上安裝OpenVINO並運行人臉辨識範例。


如範例中所示,安裝OpenVINO非常簡單,只要下列指令就完成。由於預設只會安裝必要套件,所以只需40到60秒就能完成,不像以前透過APK方式安裝需要4到5分鐘。



#更新 pip


!python -m pip install –upgrade pip


# 開始安裝 OpenVINO開發者版最新版本,本文發佈時為2023.0版


!pip install openvino-dev



註:安裝後會出部份紅字錯誤訊息,如下所示


ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. google-colab 1.0.0 requires pandas~=1.5.3, but you have pandas 1.3.5 which is incompatible.


主要是因Colab要求的套件版本和OpenVINO安裝的不同,本範例沒有使用到這些模組,可暫時忽略這項錯誤,繼續執行下面範例。


3.使用OpenVINO進行人臉辨識

在OpenVINO中已有許多預訓練好的模型和範例程式,其中以Notebooks 最為方便,只要在電腦上安裝好Python並架好一個虛擬環境,再下載 Notebooks安裝Jupyter Lab就能玩到數十種範例,完整安裝方式及範例內容可參考[3]。


不過這些範例雖然也是*.ipynb但由於很多相對路徑及設定不同,所以無法直接在Colab上運行。這裡為了方便大家快速上手,不用在本機端安裝就可測試,所以參考了Notebooks中的Hello Object Detectio [4]進行修改,使其可在Colab上運行。


另外由於不同模型輸出格式略有不同,而本範例僅適用輸出格式為[image_id, label, conf, x_min, y_min, x_max, y_max],所以目前可支援模型名稱如下所示。


.face-detection-0200


.face-detection-0202


.face-detection-adas-0001


.face-detection-retail-0004


.face-detection-retail-0005


.face-detection-retail-0044


接下來就開始說明完整執行步驟。首先要先下載及轉換模型及測試用的圖檔。模型名稱(–name)可替換成上述任一名稱。測試用的圖檔來源及名稱可自訂,但記得後續推論時輸入影像名稱要記得更換。



!omz_downloader –name face-detection-adas-0001


!omz_converter –name face-detection-adas-0001


!wget -N https://raw.githubusercontent.com/OmniXRI/OpenVINO2022_on_Colab_Samples/main/data/face_ring.jpg



接下來準備好必要的函式庫,載入及編譯模型,載入原始圖檔並轉成指定格式(尺寸、矩陣順序、色彩格式),就能進行推論。完成後會得到物件框(即人臉)的外框資訊,包含人臉數量、影像編號、標籤名稱、置信度、物件框左上角座標[image_id, label, conf, x_min, y_min, x_max, y_max]。最後再把這些資訊畫回影像上就完成。如下範例程式所示。


如果不想了解程式運作方式的朋友可直接跳過,直接享受找到人臉的結果就可以了。



圖2 : 程式碼4-1
圖2 : 程式碼4-1

圖3 : 程式碼4-2
圖3 : 程式碼4-2

圖4 : 程式碼4-3
圖4 : 程式碼4-3

圖5 : 程式碼4-4
圖5 : 程式碼4-4

人臉偵測結果如圖 2所示,可看出即使是人臉旋轉很大角度、有不同表情甚至戴墨鏡也能順利被檢出,相較傳統的 OpenCV Haar 聯級法(Cascase)只能接受小幅度的旋轉有很大改善。如果想了解OpenCV作法的朋友可以參考[5]。


本文完整範例如下連結,直接點擊就能啟動。進入Colab後,點擊選單<執行階段>中的<全部執行>就能執行範例。


https://colab.research.google.com/github/OmniXRI/OpenVINO2022_on_Colab_Samples/blob/main/OpenVINO_Face_Detection_on_Colab_2.ipynb


註:如果執行完出現結果影像一直閃爍情況,將游標移至影像上點擊一下即解決。另外如果想要備份這份範例,方便自己進行修改測試,要先登入自己的Google帳號,再點擊選單<檔案>中的<在雲端硬碟中儲存複本>,即完成備份。


小結

以上人臉辨識(物件偵測)只是AI應用的一個簡單起手式,透過本文大家可了解到如何透過簡單的Python程式加上OpenVINO的助力,就可輕鬆完成AI應用程式的開發。如果還想要測試更多的Colab + OpenVINO範例,可參考延伸閱讀[A]。相信有了這些基礎,後續學習上會更加順手。


(本文由VMAKER授權轉載;連結原文網址


參考文獻

[1] Intel, “OpenVINO Document”


https://docs.openvino.ai/2023.0/home.html


[2] 許哲豪, “【課程簡報】Edge AI社聚#1 身份辨識防疫技術交流 ─ Edge AI人臉辨識技術剖析 “


https://omnixri.blogspot.com/2021/02/edge-ai1-edge-ai.html


[3] Intel, “Learn OpenVINO – Interactive Tutorials (Python) – OpenVINO notebooks documentation”


https://docs.openvino.ai/2023.0/notebooks/notebooks.html


[4] Intel, “OpenVINO Notebooks – Hello Object Detection”


https://docs.openvino.ai/2022.3/notebooks/004-hello-detection-with-output.html


[5] 許哲豪, “OpenCV Haar 聯級法(Cascase)人臉辨識Colab範例”


https://colab.research.google.com/github/OmniXRI/NTUST_EdgeAI_2022/blob/main/Ch7_Implementations/Ch7-3_Face_Recognition/Ch7-3-1_OpenCV_Face_Detection/OpenCV_Haar_Face_Dtection.ipynb


延伸閱讀

[A]許哲豪, “Intel OpenVINO 2022.x運行於Google Colab之範例分享”


https://omnixri.blogspot.com/2023/05/intel-openvino-2022xgoogle-colab.html


相關文章
Sony強力加持!樹莓派發表專屬AI攝影機
創新更容易!2024年受矚目的Arduino創新產品簡介
Raspberry Pi Pico 2主控晶片資安懸賞加時加碼
Arduino Cloud:運用圖像小工具 使 IoT專案更吸睛
Arduino 攝影串流:DIY 簡易操作步驟
comments powered by Disqus
相關討論
  相關新聞
» 2024國家藥科獎揭曉 醫材軟體研發見碩果
» Molex莫仕使用SAP解決方案推動智慧供應鏈合作
» 拜耳與微軟合作推出針對農業的生成式AI模型,進軍智慧農業市場
» 企業永續資訊揭露為接軌國際市場的準則
» UL Solutions針對AI技術裝置提供標準化評級


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.18.191.192.109
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw