作者:Arm 工程部主任軟件工程師Michael Platings
對于在云端及邊緣等環(huán)境中運行的數(shù)百萬個人工智能 (AI) 工作負載,以及各類需要理解攝像頭和視頻數(shù)據(jù)的 AI 應(yīng)用來說,計算機視覺 (CV) 都在其中起著關(guān)鍵作用。Arm KleidiCV 是一個針對 Arm CPU 優(yōu)化的性能關(guān)鍵型例程的開源庫。該軟件庫專為集成到各種計算機視覺框架而設(shè)計,能夠為 Arm 平臺上的計算機視覺工作負載提供最佳性能,并且無需應(yīng)用開發(fā)者進行額外編程或開發(fā)。
計算機視覺的重要性
在消費電子設(shè)備中,攝像頭質(zhì)量是消費者選擇手機時的一大關(guān)鍵因素。但是,攝像頭的質(zhì)量不僅與鏡頭或傳感器有關(guān)。從光子擊中攝像頭傳感器到圖像顯示在屏幕的過程中,圖像數(shù)據(jù)須經(jīng)過多次轉(zhuǎn)換,其中通常包括但不限于:熱像素校正、白平衡、去馬賽克、降噪、陰影校正、幾何校正、色彩校正、色調(diào)曲線調(diào)整、邊緣增強、縮放和裁剪等。
上述部分轉(zhuǎn)換應(yīng)由專用硬件完成,然而許多轉(zhuǎn)換在軟件中執(zhí)行時表現(xiàn)更佳。在軟件中執(zhí)行可以帶來出色的靈活性,使攝像頭管線設(shè)計者能夠快速迭代其構(gòu)想,打造優(yōu)異的攝像體驗,進而使產(chǎn)品在市場中脫穎而出。
性能因素
攝像頭管線不僅要生成高品質(zhì)圖像,還要能夠快速運行。既要讓消費者能夠以 60fps 幀率錄制 4K 視頻,又可以快速拍攝優(yōu)質(zhì)的靜態(tài)圖像。用戶想要記錄下的一些美好瞬間稍縱即逝,如果攝像頭喚醒時間過長,那即使具備拍出漂亮照片的攝像功能,也只是勞而無功。因此,要拍出令人驚艷的好照片,就最好在軟件中運行攝像頭管線,而且相關(guān)軟件需要能夠快速運行。
Arm 對構(gòu)成圖像處理基本要素的許多運算進行了高度優(yōu)化,充分善用現(xiàn)有和未來 Arm CPU 的功耗和效率。我們是如何做到的?KleidiCV 不使用普通的 C 函數(shù),而是使用 Arm C 語言擴展 (Arm C Language Extensions, ACLE) intrinsics 編寫而成,可直接映射到功能強大的 Arm 單指令多數(shù)據(jù) (SIMD) 指令。每個 KleidiCV 函數(shù)都有三種不同的實現(xiàn)方式,分別針對 Neon、SVE2 或 Streaming SVE 和 SME2。KleidiCV 會自動檢測其所運行的硬件,并據(jù)此選擇合適的實現(xiàn)方式。
KleidiCV 是一個小型,但不斷增長的簡單卻快速的圖像底層運算集合。其中包括:
RGB 和 BGR(含和不含 alpha 通道)、灰度和 YUV 之間的色彩轉(zhuǎn)換
高斯模糊
膨脹和腐蝕
索貝爾算子
調(diào)整圖像大小
KleidiCV 可用作輕量級獨立圖像處理庫,此外還可作為非常熱門的 OpenCV 庫的一部分無縫使用。如果你已經(jīng)在使用 OpenCV,那么可以輕松啟用 KleidiCV 來加速圖像處理。
KleidiCV 的速度
通過 OpenCV 的基準測試,我們可以了解 KleidiCV 如何能夠加速 OpenCV。代碼使用 Android NDK 26d 構(gòu)建而成。以下基準測試顯示了 KleidiCV 在三星 Galaxy S22 手機上搭載的 Arm Cortex-X2 核心上的性能提升情況,其中圖像尺寸為 1920*1080。
目前,KleidiCV 不提供內(nèi)置的多線程支持。圖像處理是一個“易并行”問題,因此原則上,可以輕松地為 KleidiCV 添加多線程,但我們?nèi)栽诓粩嗤晟?API,致力于為開發(fā)者提供在多任務(wù)環(huán)境中使用異構(gòu) CPU 時所需的控制功能。為了使比較更有意義,我們的基準測試在 OpenCV 中禁用了多線程?;鶞蕼y試顯示的是單核性能。
各個運算的基準測試得分各有不同。在某些情況中,性能取得了小幅提升,而在更好的情況下,KleidiCV 的運行時間比標準 OpenCV 要短得多。不同運算的平均提升率超過 75%。
若想詳細了解我們?nèi)绾芜\行基準測試,可以在 KleidiCV 資源庫中查看我們使用的腳本。
獲取方式
在 Java 項目中,要想獲取啟用 KleidiCV 的 OpenCV,最簡單的方法是使用 OpenCV 4.10 Maven 包,開發(fā)者可訪問以下鏈接,獲取相關(guān)資源。
或者,在使用 CMake 構(gòu)建 OpenCV 4.10 時,添加參數(shù) -DWITH_KLEIDICV=ON,即可啟用 KleidiCV 0.1。
你也可以將 KleidiCV 構(gòu)建為獨立的庫。
安全和測試
Arm 非常重視安全問題。安全開發(fā)生命周期已融入到我們工作的方方面面。在可能的情況下,KleidiCV 函數(shù)將驗證其參數(shù),例如參數(shù)超出有效范圍時,將返回錯誤。該項目包含大量自動測試。核心庫代碼的分支覆蓋率非常高,遠遠超過 99%,且行覆蓋率達到 100%。
開源
KleidiCV 以符合 Apache 許可證 2.0 版的源代碼形式提供。
初期階段
KleidiCV 庫會不斷增加更多功能。歡迎開發(fā)者在我們的 GitLab 資源庫中提出反饋意見或問題。
-
ARM
+關(guān)注
關(guān)注
134文章
9029瀏覽量
366535 -
圖像處理
+關(guān)注
關(guān)注
27文章
1279瀏覽量
56585 -
計算機視覺
+關(guān)注
關(guān)注
8文章
1694瀏覽量
45905
原文標題:Arm KleidiCV 0.1 助力開發(fā)者釋放圖像處理能力
文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論