本篇文章中,我們將與您分享如何採用ARM 架構(如:Jetson、Qualcomm、MediaTek和NXP)的AIoT(人工智慧物聯網)邊緣運算裝置,打造高效的人臉辨識AIOT裝置。 我們將詳細探討應考量的因素,並透過詳盡的案例解說,協助您打造出各種具備人臉辨識功能的 AIoT裝置。
首先,我們先來定義 ARM 架構的 AIoT 裝置。AIoT 裝置是連線到網際網路,並透過 AI 演算法執行工作的裝置。ARM架構的裝置,代表裝置內部採用ARM架構的 SOC(單晶片系統)或 SOM(系統模組),通常包含了一般性用途的 CPU 和用於加速運算的 GPU 或 DSP。許多 AIoT 廠商也在 SOC 或 SOM 中導入了 APU(人工智慧處理器)或 NPU(神經網路處理器),讓 AI 應用程式可以提升在邊緣裝置端(而非在雲端伺服器)的執行效率。
ARM 架構裝置具備功耗優勢,與 x64架構的裝置相比,可耗費較少能源。ARM 處理器常用於輕量化的邊緣 AIoT 裝置,如:資訊服務站(KIOSK)、工業用平板、電子看板、穿戴式和行動裝置。
導入人臉辨識技術於AIoT裝置時,依據應用的場景與設備,我們須考量四大要素:運算效能、建置成本、外型規格、功率消耗。以下將針對四大要素做更詳盡的分析。
在決定運算效能的需求前,您需要先思考欲執行的任務目的與其複雜程度。例如,您只需要裝置一次辨識一張人臉還是同時辨識多張人臉?
讓我們舉智慧門鎖與門禁管制的範例來做說明。當您只需要裝置在每次有人接近時辨識一張臉,那麼運算效能較低的小型 AI 模型即可符合您的需求。不過,如果想要在繁忙的賣場出入口執行人臉辨識,用以阻擋黑名單的例子,除了要同時辨識多張人臉外,通常會因為攝影機擺放位置過高、角度較大,且因動態行進中的人物導致視訊畫面模糊,整體的辨識運算效能會受影響,這時候,您便要考慮具有更精準強大運算能力的 AI 模型。
另一個要考慮的因素是,關掉不必要的其他人臉辨識引擎的功能,以達到最佳效率。通常一個功能完整的人臉辨識引擎,會涵蓋所有的功能,以滿足客戶需求。然而,您也必需決定真實應用情境中是否會用到這些功能。以智慧零售的應用來說,若只需要統計訪客資訊如年齡和性別等,無須辨識每一位訪客,那麼關掉人臉辨識的比對功能,採用運算效能較低的裝置就能滿足您的需求。
AIoT 裝置的運算效能越高,所需的成本也越高。各家晶片廠商(例如 NVIDIA、Intel、Qualcomm 等)各有其定價策略,並根據不同的連接或擴充介面(如:Wi-Fi、HDMI 或 USB)推出不同等級的產品線和價格。因此,必須根據實際應用需求,選擇最適合成本效益的硬體組合,而非一昧地追求最高效能的運算裝置。
外形規格即是裝置的尺寸。若 AIoT 裝置需要符合特定大小(例如安裝在門上的智慧門鎖),那尺寸因素很有可能會限制您的選擇。但若裝置配有大型電子螢幕,在選擇上便有較多彈性。
運算效能和功率密切相關。運算裝置的效能越高,功率消耗也就越高。不過,隨著人工智慧邊緣運算的崛起,有越來越多的晶片大廠推出專用的AI 加速運算晶片,給軟體廠商用來加速各種 AI 演算法。選擇一個好的人臉辨識引擎軟體,它能夠善加利用各家晶片的運算加速優勢,不僅能提高運算效能,也能降低整體功率消耗。
以下是四個採用ARM架構,最常用於人臉辨識的 AIoT 邊緣運算裝置使用平台,我們將從自己的開發及客戶導入的使用經驗,為您介紹各平台的優勢。
NVIDIA Jetson 嵌入式系統的首次登場是在 2014 年推出的 Jetson TX。從那以後,NVIDIA 相繼推出多代版本以快速改進這項產品。其系列的最新版本為Jetson Orin,總共包含 Jetson Orin Nano、Jetson Orin NX、Jetson AGX Orin 等系列。 Jetson 在 AI 推理效能、耗電量和成本之間取得很好的平衡,該平台一次可以處理一個以上的視訊影像輸入,並且可以同時執行其他應用程式。若您的裝置需要同時執行多項工作,那麼 Jetson 會是一個合適的選擇。
NVIDIA 提供多種開發工具和 SDK,包括 CUDA、TensorRT、DeepStream 等,是市面上最完善的選擇之一。這些開發工具讓 AI 演算法的執行更流暢,進而讓 Jetson 在部署人臉辨識上更加輕鬆。NVIDIA 提供了 JetPack SDK 開發者工具,其中包含了修改版的 Ubuntu 和所需的全部開發工具包 (SDK)、工具鏈(toolchain) 與函式庫(library)。
根據我們的測試,Jetson Orin Developer kit 可運行 FaceMe VH 模型達每秒 129 幀 (fps),其中每幀畫面解析度為 1080p,內含一張人臉影像。此外在最新的 Orin 世代中,Jetson Orin 更可以支援 FaceMe 最複雜的 UH 模型,並可運行達到每秒 96 幀 (fps)。
Jetson 裝置的尺寸也很小。Jetson Orin NX (SoM) 的大小僅 69.6 mm x 45 mm。不過,其價格也稍微昂貴。
NVIDIA 的 Jetson 系列
來源: NVIDIA
從用於智慧型手機和平板的 Snapdragon 產品線,到用於 AIoT 邊緣裝置產品的 QCS410、QCS610 或 QCS6125,Qualcomm 高通提供了廣泛的 System-on-Chip (SoC) 選擇。Qualcomm 的 Snapdragon Neural Processing Engine (SNPE) 能讓 AI 演算法使用 SoC 中所包含的 GPU 或 DSP 晶片上加速執行,是提升人臉辨識 AI 演算速度的最佳平台之一。
在我們使用FaceMe® 測試的結果中,我們使用了搭載 Snapdragon QCS6125 與 Android 系統的工業平板電腦進行效能量測。當 FaceMe 將其 VH 模型使用 SNPE 在 GPU 上運行時,運算效能與只使用 CPU 相比,效能提升四倍,來到每秒 12 幀 (12 fps),並且 CPU 使用量降低了 62.5%。當我們進一步使用 SNPE-DSP 運行時,效能更可進一步提升至 33 fps。
聯發科 MediaTek Genio 系列在具有競爭力的價格下提供了 AIoT 裝置的合理效能,適用於配有觸控螢幕的裝置,例如 POS 零售終端機、智慧門鎖、工業用平板電腦、嵌入式智慧家電或健身器材的顯示面板等。聯發科是以提供智慧型手機行動裝置出色的一站式解決方案而聞名。他們提供了完整的SDK、範例程式碼和各種開發工具,讓AIoT開發商都能輕鬆建構專屬應用程式。其中Genio 350 還同時支援 Android 和 Ubuntu 作業系統,給開發商更多彈性的選擇。
在我們使用 FaceMe® 測試的結果中,MediaTek Genio 350 執行 FaceMe VH 模型時,可達每秒 16 幀 (fps);而使用新一代的 Genio 700 時,更高達 163 幀 (影像解析度為 720p)。其優異的執行效能,賦予了這個AIoT 裝置平台,除人臉辨識外,也可以加入其他的 AI 視覺運算的可能性。
最後,我們使用聯發科更高規格的 Genio 1200 測試,其人臉辨識速度更可高達 200 幀。Genio 1200 是一款高階的AIOT邊緣運算平台,整合八核的 CPU,包含四個 Cortex-A78 與四個 Cortex-A55 核心,一個 Mali G57 顯示處理單元 (GPU),多媒體視訊與音訊處理單元,以及一個雙核心的聯發科 AI 處理器單元 (APU),是適合需要強大運算效能的邊緣運算裝置。在如此高執行效能下,意味著 Genio 1200 平台除了可以支援人臉辨識以外,也可以同時執行更多其他 AI 應用。 Genio 1200 作為這一系列最強大的 AIOT 平台,適合用來當作AI 影像分析工作站的邊緣運算裝置。
MediaTek 的 Genio 系列
來源: MediaTek
恩智浦半導體 (NXP) 為保全、辨識、汽車、網路功能、無線電、類比和電源管理提供了多樣性的混合訊號和標準產品。NXP i.MX8M Plus 是 NXP 首次在他們的 SOC 中導入 NPU 的 SoC 產品。 這可以在執行 AI 應用程式時,有效提高 AI 的演算效能,並減少 CPU 的工作量。
為了在 NXP 上支援 NPU,使用了 TensorFlow Lite 架構和推理引擎。TensorFlow Lite 是一種開放原始碼計劃,主要由 Google 開發並用於 Google 的多款 AI 應用程式中。它是一款功能豐富、穩定且成熟的平台。i.MX8M Plus 適合用來將許多 AI 應用程式移植到平台上。若您有其他的 AI 應用程式想要用於此平台,移植程序也非常簡單。
在我們使用 FaceMe® 測試的結果中,i.MX8M Plus 可運行 VH 模型達每秒 14 幀 (14 fps) 的效能,可於各種刷臉差勤打卡等情境中使用。
在選擇適合的作業系統時,需要先考慮在特定使用案例上的需求。FaceMe 是市面上功能最齊全的人臉辨識引擎之一,其 FaceMe® SDK 支援多達十種以上的作業系統,包括 Linux、Ubuntu、Redhat、CentOS、Android、iOS 或 Windows 等。
根據我們的經驗,目前最常被應用於人臉辨識AIoT裝置的兩個作業系統是Linux和Android。這兩個作業系統在使用上有一些關鍵差異需要留意:
Linux 作業系統的自訂性和靈活度高。透過自訂Linux作業系統的元件,您可以根據具體需求精確控制系統的功能和組件,從而最小化作業系統的體積,進而降低硬體要求和節省能源。這對於在資源有限的AIOT邊緣裝置上實現高效的人臉辨識功能尤其重要。
Ubuntu作為最受歡迎的Linux發行版之一,具有廣泛的應用範圍, 從邊緣裝置到雲端伺服器都得到廣泛的使用。Ubuntu 每兩年會推出長期支援版本(Long-term support, LTS)來幫助維持基礎技術的更新,並提供長達五年的支援。開放原始碼的特性也讓Ubuntu擁有龐大的程式庫,使用者可以輕鬆地獲得各種程式碼和工具,大幅加快專案的開發速度,並充分發揮Linux作業系統在人臉辨識AIoT裝置中的潛力。
總體而言,Linux的自訂性、靈活度和Ubuntu作為最熱門的Linux發行版之一,使其成為許多人臉辨識AIoT裝置項目的首選平台之一。
Android 是由 Google 開發,其核心是建立在 Linux 的修改版本上。其最常用於智慧型手機和平板電腦。Android 是更適合開發人員的解決方案,且通常是 AIoT 裝置偏好的作業系統。
首先,Android 工具鏈、整合式開發環境(Android Studio)和 SDK 都已開發成熟,讓開發人員可以輕鬆開發。
其次, Android是一個免費的開源平台,開發人員不但可以免費使用專業工具,並且不需要支付任何使用費用,降低了開發的門檻。
另外, Android 應用程式通常是以 Java 程式語言開發,其和 C++ 程式語言相比更容易編碼和管理資源與記憶體。Android 應用程式也支援將 C++ 的元件整合到 Java 程式,讓開發人員可以充分發揮兩個語言的優點,並在一個平台上進行開發,提供更多彈性和選擇。
總而言之,Android 作為一個成熟、開源且廣泛應用的作業系統,對於AIoT邊緣裝置的開發人員來說,確實是一個理想的解決方案之一。
在建構執行人臉辨識的系統時,有許多熱門的 AIoT 裝置硬體和軟體可供開發人員採用。在評估時,首先一定要了解您的使用案例情境,然後再考慮對效能、外形規格、擴展性和預算上的需求。
一旦您決定好所需的建置環境和軟硬體設計,我們建議在正式佈署應用程式之前先進行概念驗證(Proof-Of-Concept),以及早發現需要改進和調整的地方。
如欲了解更多關於人臉辨識的原理,及如何在各式應用場景中進行優化,請參考人臉辨識的原理及邊緣運算應用。
若要了解人臉辨識最新應用情況,請參閱人臉辨識應用最新趨勢