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

Arm RAN加速庫(kù)資料
Arm RAN加速庫(kù)的參考文檔
ARM性能庫(kù)入門(單機(jī)版)
為性能加速的空間圖像處理開(kāi)發(fā)FPGA協(xié)處理器
淺談Vitis 加速庫(kù) 可擴(kuò)展,靈活度高
CV-CUDA 高性能圖像處理加速庫(kù)
CV-CUDA 高性能圖像處理加速庫(kù)發(fā)布 Alpha 版本,正式向全球開(kāi)發(fā)者開(kāi)源
Arm RAN 加速庫(kù)(RAN Acceleration Library, RAL)通過(guò)采用 BSD 開(kāi)源許可證將代碼庫(kù)正式開(kāi)源
Nvidia 通過(guò)開(kāi)源庫(kù)提升 LLM 推理性能
Vitis加速庫(kù):廣泛且性能優(yōu)化的開(kāi)源庫(kù)

用ARMxy ARM工業(yè)控制器自帶的1Tops算力實(shí)現(xiàn)高性能圖像處理

Arm KleidiCV與OpenCV集成助力移動(dòng)端計(jì)算機(jī)視覺(jué)性能優(yōu)化
Arm KleidiCV 0.2.0和0.3.0的新增功能

評(píng)論