公司新聞,軟件行業(yè)資訊,通知公告
GitHub開源:飛槳移動端部署工具LiteKit發(fā)布
來源:未知 時間:2021-16-16 瀏覽次數(shù):278次
目前,越來越多的AI場景將AI能力直接部署在移動端,其優(yōu)勢主要在于實時、省流、以及安全性等方面。這些AI能力給移動端產品帶來巨大的想象空間,促進了移動互聯(lián)網(wǎng)下半場的繁榮。
在移動端智能化的背后,離不開移動開發(fā)者以及人工智能應用算法工程師。在實際業(yè)務開發(fā)中,算法工程師開發(fā)出來的AI算法,最終都要交付給移動開發(fā)者進行工程落地。這個落地的鏈條其實難度相當大,總結來說涉及以下兩方面:
-一款沒有任何AI實踐的產品,不僅要進行模型的訓練、預測引擎的集成,還需要根據(jù)不同模型進行數(shù)據(jù)的前后處理,圖像的各種顏色空間、存儲格式的轉換,過程中可能會使用到Python、C/C++、iOS、Android等多種語言,接入門檻高。
-同時,接入AI能力的過程非常復雜,涉及引擎調用相關開發(fā)、前后處理相關開發(fā)、甚至并發(fā)相關處理,考慮到移植和復用情況,更需要兼容多種業(yè)務場景、進行模塊化拆分,導致工作量成倍增加。
如果您也面臨以上問題,那么LiteKit將是您最好的選擇!話不多說,我們先看效果!
視頻超分
視頻超分

這個圖片來自百度百家號推出壯美極境公益項目的視頻。左邊的圖片為480p原始視頻截圖,右邊的圖片為360p視頻通過超分能力重建的480p視頻截圖。通過左右視頻截圖對比,可以看到超分后的視頻(右側)在手機上可以達到與原始視頻(左側)幾乎一致的視覺體驗。

左圖是360p原始視頻的單幀畫面,右邊將360p視頻超分到480p的畫面,對比來看畫面放大后,畫面不僅沒有損失清晰度,而且變得更清楚。
所謂視頻超分,通俗來說,就是將低像素的視頻轉成高像素,而且視頻還能變得更清楚!
而對于手機場景來說,視頻超分本身最重要的不僅僅是追求極致的超分效果,而是速度和效果的均衡。手機視頻超分主要目標是在手機端上達到25FPS(手機端的視頻通常是25FPS,通常來說24FPS+視覺上才不會感覺到卡頓)的前提下,對畫面進行優(yōu)化重建。
LiteKit提供的視頻超分是業(yè)內首次開放的能夠達到25FPS的視頻超分解決方案。在手機移動應用項目中最常見的是360p視頻。LiteKit支持從360p到480p場景下進行25FPS的超分。除此以外,LiteKit的視頻超分能夠對播放器解碼后的YUV420視頻幀數(shù)據(jù)直接進行處理,并獲得相同格式的輸出數(shù)據(jù),消除了將視頻幀數(shù)據(jù)進行數(shù)據(jù)格式轉換的過程,大大方便了用戶的使用,并降低使用耗時。
性能優(yōu)化
LiteKit的視頻超分能力模型,經(jīng)過反復的性能調優(yōu),可以支持360p->480p的超分場景下播放器25FPS的持續(xù)超分。

從上面的測試結果可以看到,在18年iPhoneXsMax上,視頻超分也能夠達到32.15ms的預測速度,支持播放器25FPS的超分。在最新的iPhone12上,相比iPhoneXsMax,預測速度進一步提升30%。
手勢識別

這是LiteKit提供的手勢識別AI能力。它可以準確的檢測手勢所在位置的矩形坐標、手勢類型和置信度,支持識別六種類型的手勢,包括手、五指手勢、V手勢、握拳、1手勢、OK手勢。
人像分割
人像分割

(人像分割前)(人像分割后)
這是LiteKit提供的人像分割AI能力,能夠提供實時的人像分割,準確地分割人像和背景,可用于去除背景、人像摳圖、照片合成、背景替換等業(yè)務之中。
快速體驗
以上就是LiteKit目前開放出來的AI能力,這些AI能力可以直接點擊以下鏈接快速安裝Android Demo體驗(只需一部安卓手機即可):
可以一秒接入的AI能力
對于APP開發(fā)者來說,是不是很想知道這些能力能否接入到自己的移動應用之中呢?
答案當然是肯定的!不僅能接入,而且可以說是一秒就能接入你的APP工程!
LiteKit提供視頻超分、人像分割、手勢識別一系列AI能力,這些AI能力均來自于百度各個業(yè)務線AI場景多年的技術沉淀,并以SDK的形式提供,做到了開箱即用。
即使是沒有任何AI實踐的APP開發(fā)者,只需通過調用兩三個簡單API連接LiteKit提供的SDK軟件包,就可以順利接入AI能力。就像拆開快遞箱一樣簡單,打開箱子就可以直接用。
你可以把SDK想象成一個虛擬的程序包,在這個程序包中有一份做好的軟件功能,這份程序包幾乎是全封閉的,只有一個小小接口可以連通外界,而這個接口就是API。
如何接入
LiteKit的接入只需要創(chuàng)建、推理、釋放三步即可完成AI能力的開發(fā)。雖然對于視頻超分、人像分割、手勢識別,甚至包括未來將要開源的新AI能力,輸入輸出會各有不同,但是整體流程和API的樣式都被抽象成類似的步驟,甚至API的命名都會保持高度一致,讓學習成本降到最低。下面的代碼就是視頻超分能力的接入過程:
(內容持續(xù)更新中,最新內容可以訪問此鏈接獲取。

LiteKit的設計

LiteKit把接入過程整體抽象為:創(chuàng)建、推理、釋放三步:
-創(chuàng)建后,可以反復使用執(zhí)行推理
-推理的過程整體只有一類API:對輸入數(shù)據(jù)(input)執(zhí)行推理,同步返回輸出數(shù)據(jù)(output)。圖中和模型直接相關的前后處理的流程,都被封裝在了AI能力推理接口內部,用戶既不需要關心,也不需要任何處理。為了方便不同業(yè)務不同的輸入,每個能力的推理接口可能有幾個,這幾個接口能力完全相同,唯一不同的只是輸入和輸出類型,用戶通常只需要根據(jù)自己的輸入輸出類型關心最便捷使用的一個即可。
-釋放與創(chuàng)建一一對應,當AI業(yè)務退出的時候,執(zhí)行即可。
關于輸入數(shù)據(jù)的獲取和輸出數(shù)據(jù)的使用,在真實的業(yè)務落地中,是需要開發(fā)者進行考慮的問題。例如在推理前,需要拿到相機幀,考慮到手機的自動旋轉及前后鏡頭的問題,需要開發(fā)者對圖像進行旋轉。在獲得推理結果后,需要開發(fā)者把推理的結果用適當?shù)姆桨高M行渲染。
LiteKit的架構
LiteKit從下至上主要分為三層:

1.最底層的Paddle Lite:是百度飛槳深度學習平臺提供的開源推理引擎,能夠提供CPU、GPU等多種環(huán)境下進行推理。
2. 中間的LiteKitCore框架層:隔離了業(yè)務方對Paddle Lite的直接依賴,并向上層提供基本一致的OC、Java、C++ API,提供了基礎結構和數(shù)據(jù)類型的定義,并提供通用的工具集。
3. LiteKit業(yè)務層:根據(jù)各自不同的業(yè)務,封裝了人像分割、視頻超分、手勢識別等能力。LiteKit的能力將會不斷的擴充。
LiteKit的人像分割、視頻超分、手勢識別三大能力, 底層統(tǒng)一依賴LiteKitCore。目前LiteKitCore也同步進行了開源。LiteKitCore作為移動端AI能力部署工具,其職責主要是向下接管推理引擎,并向上提供統(tǒng)一的AI推理能力。
-移動端的AI開發(fā)者接入了LiteKitCore之后,不必再關心推理引擎的配置、模型的加載等復雜操作,LiteKit內部管理了推理引擎大部分復雜的配置,同時仍然支持使用者靈活的配置一些入模型地址等的關鍵參數(shù)。
-LiteKitCore向上對AI能力的開發(fā)者,提供了Java/ObjectiveC/C++三套接口,能大大降低端AI開發(fā)者的開發(fā)成本。
下面以C++接口接入CPU AI推理能力為例,簡單示范一下接入的流程:
-使用LiteKitCore創(chuàng)建AI推理引擎管理實例,不再需要關心模型的結構,推理引擎的使用方式,只需要通過LiteKitCore進行簡單的配置?! ?/div>


-使用AI推理能力的時候也不需要關心推理引擎具體如何調用,LiteKitCore提供方便使用的C++/Java/ObjectiveC API。

在開發(fā)不同業(yè)務的過程中,上層的業(yè)務配置根據(jù)不同業(yè)務場景設置,底層LiteKitCore部分代碼完全可以復用和移植,極大的降低了AI能力開發(fā)的工作量。
展望
LiteKit作為飛槳的移動端部署工具,能夠快速的部署基于百度深度學習框架飛槳的輕量化推理引擎Paddle Lite的AI能力。能夠讓AI能力在任何APP中、任何場景下快速的工程化落地,可以讓同學們簡單的實現(xiàn)自己的AI特效。
- 上一篇: 數(shù)字化轉型下一站重新定義混合云
- 下一篇: 算法工程師的AI啟示錄