基于GPU實現(xiàn)的深度學習的數(shù)據(jù)庫
項目組基于深度學習實現(xiàn)了視頻風格化和人像摳圖的功能,但這是在PC/服務端上跑的,現(xiàn)在需要移植到移動端,因此需要一個移動端的深度學習的計算框架。
同類型的庫
caffe-Android-lib 目前應該是最便于集成使用的深度學習框架庫。
tensorflow和mxnet據(jù)說也有對應的android庫,因時間原因暫未。
CNNdroid,網(wǎng)址,這個是用
render 作優(yōu)化的深度學習框架,不過就代碼實現(xiàn)和實際測試結果來看,性能一般。
工程定位
實現(xiàn)可實時、體積小、通用的深度學習預測框架。
可實時
跟PC或服務器不同,移動設備上的GPU可不一定有CPU強悍(多線程+neon/vfp),但在需要實時計算的場景(主要是相機預覽和視頻播放),往往都是基于OpenGL渲染環(huán)境的。
實時的情況下,深度學習框架的輸入和輸出都在GPU端,使用CPU進行計算往往需要拷貝圖像出來,算好后再傳到GPU端,因此基于GPU實現(xiàn)的深度學習的庫能持平CPU版本的效率就有足夠優(yōu)勢了。
比如實時摳人像這個case:
對每一幀相機預覽產(chǎn)生的數(shù)據(jù),系統(tǒng)將其映射為opengl 的一個external texture,然后需要 計算出一個 mask texture,與原先的texture作混合,顯示出來。如果mask texture 的計算在cpu上進行,則需要每幀先把 graphicbuffer 的數(shù)據(jù)拷貝出來,計算出mask后上傳到 mask texture 去,產(chǎn)生一來一回兩次額外拷貝。
通用
本工程需要支持 caffe 產(chǎn)出的模型文件,支持常見的網(wǎng)絡如lenet、ResNet等等。這個工作量包括編寫相應層的算子,設計網(wǎng)絡結構,解析caffe模型的參數(shù)等。
所幸的是,目前在移動端做好深度學習的預測就足夠了,相比于兼顧訓練的結構至少省去2/3的工作量。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%