作者:陸向陽
船在船塢內打造好後,就會在塢內注水讓船航向海洋;程式也雷同,程式工程師運用開發工具撰寫完成後,就會安裝在電子設備上執行運作;人工智慧(以下簡稱AI)也一樣,AI模型經過學習/訓練(learn/train)並驗證完成後,後續就是投入推論/推算/推理(inference)的實際應用中。
不過,幾年前AI是在雲端大機房內進行訓練,完成後也在機房內進行推論,如此不僅不經濟、不節能也不夠即時,因而近幾年來開始把訓練好的模型佈建到需求的第一線,用更高價格效能比(cost/performance ratio)、更高每瓦效能(per watt performance)表現的系統來執行AI推論工作,且能即時回應推論結果,此稱為邊緣人工智慧(Edge AI)。與雲端機房的集中式架構不同的是,Edge AI系統廣泛佈建在各需求現場,屬分散式架構,兩者的差異請參考下圖。
Edge AI人臉辨識技術
Edge AI的應用非常廣泛,其中的一種典型應用即為本文探討的人臉辨識。人臉辨識分成幾個技術層面,包含影像預處理、人臉偵測、特徵提取,以及比對與辨識,許多人將重點放在偵測、特徵、比對等方面,反而忽略影像預處理,事實上初期若能妥善處理影像,後期的程度反而更順利、預測更精準。
最早期的人臉辨識技術是靠數學統計的方法來產生特徵臉,限制很大。後來出現模板式的辨識技術,代表技術為Viola-Jones,它可以最快運算完成的辨識,需要的運算力很少,但此辨識不太準,通常被視為初步研判用、輔助用。進一步作法是取特徵點及找外觀特色(如膚色)的方式來進行辨識。這幾年則轉到深度學習神經網路的模型方式上,因為它能有效解決過去常見的辨識問題,例如背景太亂、光照太亮或不足、人臉的角度、有遮蔽(如戴口罩)等困難。
目前多數是以2D人臉照片上取特徵點方式來訓練模型,訓練完後再以推論執行方式實現辨識。那到底需要取幾點才夠?這跟要求的辨識速度、採用的技術及後製的需求都有關,特徵點最少可以5點,包含兩個眼睛、鼻頭、嘴角兩邊;今日的主流為68點,因為它最接近比較完整的一張臉,但更高甚至達192點。較2D特徵點更前瞻的作法是在3D照片上取特徵點,但這是目前各業者的商業價值所在,不輕易透露。
人臉辨識測試基準
人臉辨識技術各業者均宣稱自己技術卓越,但是否有客觀的高下衡量法?答案為肯定的,美國國家標準暨技術研究院(NIST)提出的人臉辨識供應商測試(FRVT)由於是相對獨立的第三方測試,受商業因素影響較小,因此相對比較公平公正,已是各方公認的衡量標準。
該計畫獲美國聯邦調查局及國防部等國安部門贊助及協辦,為全球規模最大且最具權威的臉部辨識演算法評比,結果亦受全球高度矚目及信賴,吸引美、日、中、俄、歐等全球臉部辨識頂尖團隊投入此測試。此計畫也有業者排名,我國軟體業者訊連(CyberLink)成績就很不錯。
FRVT包含多種測試項目,如單張對單張的辨識(1:1)、單張與資料庫中多張的對應辨識(1:N)、偽造變形辨識(Morph)、品質評估(Quality)等;衡量指標也參照誤識率(FMR)、拒識率(FNMR)構成公式:
誤識率(FMR)=(本應FALSE的判錯 / 所有FALSE )
拒識率(FNMR)=(本應TRUE的判錯 / 所有TRUE )
前者是錯的被當成對的,就是兩個不同的人不小心判成同一個人;後者則相反,是把兩個同一個人不小心判成不同人。在實際的應用上,誤識的情況可能是讓有心人成功假裝成其他人來進行不當取款或辦假帳戶,影響相當嚴重;相比之下,拒識結果只是辨不出來,造成不便,影響較小。最好的辨識是完全無誤識、拒識,但幾乎不可能,尤其當需辨識的人臉數量愈大時就愈困難,因此兩者經常要權衡取捨,請參考下圖。
開源人臉辨識工具
目前常見的開源人臉辨識工具包括OpenCV、OpenVINO等,兩者都是由Intel發起並參與開發的開源專案。其中OpenCV用於開發即時的圖像處理、電腦視覺以及圖型識別程式,針對人臉辨識硬需求已備有物件偵測模組,前述的Viola-Jones辨識也在裡頭,並且有多種演算法可用,如Eigenfaces、Fisherfaces等。它採BSD授權條款授權發行,可以在商業和研究領域中免費使用。
OpenVINO則是專注於Edge AI應用上的推論加速工具,它提供了很多預先訓練好的模型,以人臉辨識來說,包括人臉的姿態、仰角、視線、年齡、情緒等的預訓練模型都有,都是開源軟體,可直接用不花錢,找來就可以用,若要架個門禁系統,幾分鐘就可以上線了。同時它也支援外部AI軟體訓練好的模型,可編譯過來再優化,就可在Edge端進行推論使用。
特別值得一提的是,你也可以在一個應用中同時使用多個模型,例如在這支「10分鐘打造出自己的ADAS自駕系統」教學影片中,即在車上架設了多個相機,對內辨識駕駛的視線、頭的姿勢,以分析駕駛員的精神狀態及是否分心,有狀況時立即做出警告;對外則辨識街景狀況,提供駕駛員即時路況資訊與分析。
人臉辨識防疫應用
了解Edge AI、人臉辨識、以及OpenVINO這個好用的開源工具後,再來談一下人臉辨識的應用與建置。事實上,人臉辨識的應用非常廣泛,包括人員進出的門禁系統、學生上課的學習情緒辨識、開車時駕駛的精神狀態,甚至可用來分析一個的面相、行運或氣色,用途多多,請參考下圖。
近來最熱門的Edge AI應用無疑是在公共安全的防疫工作上,以門禁系統而言,如今進入公司或公共場所的人員都被要求戴上口罩,如何在臉部被大面積遮蔽的情況下仍能正確認辨識出身份,對既有的系統來說是不小的挑戰。此外,辨識系統不僅需偵測出人員是否有戴口罩,也需偵測出是否正確配戴口罩。
不僅如此,門禁系統除了要做到戴口罩下的人臉辨識,還需整合溫感偵測,不讓發燒的人進入室內空間。更進一步的作法則是在建築物各個區域安裝人臉辨識+溫感偵測設備,對往來的人進行監控,一旦發現有體溫異常的人,立即對管理人員發出提醒,盡快採取因應措施。
除了門禁系統外,人臉辨識在防疫應用還有更多「創新」的用途,例如在電梯中辨識出進入者上班的樓層並自動停靠,實現零接觸的電梯控制。也能將人臉辨識與捷運、公車等大眾運輸工具的進出系統整合,除了可取代車票外,也能連動疾管局資料庫,第一時間偵測到是否有應隔離的高風險乘客進入車站或搭上車,立即發動因應措施。
Edge AI人臉辨識系統建置策略
看完上述的介紹,如果你已決定投入人臉辨識應用的開發,最終會遇到的挑戰就是Edge端的系統佈建,因為Edge端的軟硬體環境複雜,其中作業系統平台包括Windows、Linux,甚至Embedded Linux都有;AI開發平台也有許多選擇,包括OpenVINO、TensorFlow、NNIE、PyTorch…等;Edge AI的神經網路處理器(NPU)則有CPU、GPU、VPU等,如何快速、有效的把訓練好的模型佈建到Edge端的應用場域,已是讓AI工程師很頭痛的問題。
如前文所述,將AI推論系統佈建於現場,分散式Edge架構能達到更經濟、節能、即時的效益,但如何進行佈建呢?先談一下Edge AI核心,其中CPU的強項在浮點運算,適合用於邊緣智能邏輯;VPU/GPU則強在影像辨識,適合用於推論引擎。兩類運算核心其實是互補的,但想做到最佳化並不容易,Intel由於各類晶片都有,所以其OpenVINO即提供了針對自家CPU、GPU、VPU(如Intel NCS2神經棒 和Intel Arria 10等 FPGA)等硬體的整合優化功能。
開發者可用Intel提供的DevCloud for The Edge雲服務來模擬不同CPU、GPU 和 VPU等硬體組合的AI模型運作性能,測試出結果後再來添購硬體,這種虛擬化的測試功能,對開發者無疑是一大福音。
再回到防疫的Edge AI人臉辨識應用,其系統多會運用現場既有的視訊監控系統,監控系統本有的工作為視訊串流與視訊錄影,Edge AI所需的影像辨識為新附搭進來的新工作任務,如此也使監控系統變得吃重。Intel新推出的Tiger Lake處理器及其架構平台,因內建H.264、H.265編解碼硬體加速器,有效減輕現場視訊運作的負荷,從而有更多運算力可投入於AI推論工作。
根據實測,Tiger Lake晶片為Edge系統帶來比過去快4倍的視訊處理能力,這讓過去要用GPU來加速執行,或使用很高階的CPU來執行的情況帶來了轉變,而今使用初階的CPU(如Celeron)即可達到相同效果,此後或許就不再有人想以加裝加速卡的方式來實現Edge AI系統了。
結論
從本文的探討中可以理解到,不論是成本、功耗或佈建時間,Edge AI分散式架構都能為人臉辨識應用帶來更佳的效益。但如何達到最佳化的軟硬體規劃,與Edge現場的情境息息相關,因應不同的應用,只要推論系統適當的配置便能達到預期效果,不盡然都要高規高價才好,有時只要典型CPU搭配VPU加速晶片,反而擁有較佳的效能功耗比。
如果您想更進一步學習本文的內容,可連到《【Edge AI教學】身份辨識防疫技術探討》數位學習課程,收聽兩位專家的分享喔。
延伸閱讀
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28
- 【Qualcomm Inside】12TOPS Edge AI單板RUBIK Pi規格剖析 - 2024/10/20
- TinyML潛力股!MicroFlow挑戰TensorFlow Lite for Microcontrollers - 2024/10/15