關(guān)于視頻分析或者圖像處理過程如下:
1.首先要提取視頻中的運動物體,常用算法有:幀差法,GMM,vibe等;
2.提取前景(運動物體)后對其進(jìn)行跟蹤,主要算法有:camshift,粒子濾波,TLD,壓縮感知等;
3.對監(jiān)控視頻的去模糊,去霧,夜視增強(qiáng)等,可基于opencv來實現(xiàn)。
4.最后通過機(jī)器學(xué)習(xí)對視頻進(jìn)行分析。
下面著重介紹機(jī)器學(xué)習(xí)的分支:深度學(xué)習(xí),也就是深度神經(jīng)網(wǎng)絡(luò),是近來比較火熱的領(lǐng)域。很多機(jī)器學(xué)習(xí)實現(xiàn)的功能很難用到商用中,比如人臉識別,傳統(tǒng)的機(jī)器學(xué)習(xí)方法受光照,角度干擾太大,很難達(dá)到較好的識別率,深度學(xué)習(xí)在圖像中的應(yīng)用已經(jīng)有很多了。這里介紹幾個開源框架:
其他資料:
1.caffe:
c++,伯克利大學(xué)開發(fā),支持公司facebook。
caffe開發(fā)過程中使用了哪些工具
Caffe是非常高效的針對畫面的深層學(xué)習(xí)框架。Caffe2是我們的第一個產(chǎn)業(yè)級深度學(xué)習(xí)平臺,它可以在服務(wù)器CPU、GPU、iOS和安卓四種平臺上運行,使用同一種代碼。
2.TensorFlow:
支持公司:google。
基于圖計算的框架,有一個限制,就是需要用戶把所有的計算全部都表示成一張圖來高效運行。
基于圖計算的框架也提供了比如自動多卡并行調(diào)度,內(nèi)存優(yōu)化等便利條件。
Theano的一個優(yōu)勢在于代碼是在計算時生成并編譯的,所以理論上可以達(dá)到更高的速度(不需要運行時的polymorphism,而且如果寫得好的話可以fuse kernel),但是因為是學(xué)術(shù)實現(xiàn),沒有花大精力在優(yōu)化上面,所以實際速度并不占優(yōu)勢。另外現(xiàn)在大家都高度依賴于第三方庫比如說cudnn,所以比較速度已經(jīng)是上個時代的事情了,不必太在意。
另外吐槽一下,TensorFlow的分布式計算不是最快的,單機(jī)使用CPU作reduction,多機(jī)用基于socket的RPC而不是更快的RDMA,主要的原因是TF現(xiàn)有框架的抽象對于跨設(shè)備的通訊不是很友好(最近開始有一些重新設(shè)計的傾向,待考)。
在分布式上百度美研的解決方案要好得多,沒有開源。
3.mxnet:
開源框架。
支持公司:華為、阿里部分團(tuán)隊。
DL框架的未來發(fā)展TensorFlow/MXNet/Torch, 選哪個
允許用戶自由把圖計算和過程計算混合起來, 并且可以對多步執(zhí)行進(jìn)行自動多卡調(diào)度, 使得程序在需要優(yōu)化的部分可以非常優(yōu)化,而必要的時候可以通過過程計算來實現(xiàn)一些更加靈活的操作, 并且所有的操作都可以自動并行(TF只能并行一個圖的執(zhí)行,但是不能并行像torch這樣的多步執(zhí)行的操作)。
MXNet的operator不僅僅局限于MShadow。MShadow只是提供了一個方便的模板,完全可以使用C, C++, CUDA等去實現(xiàn)。同時支持直接采用numpy來寫各種operator。另外,目前的mxnet已經(jīng)做到完全和Torch兼容,以調(diào)用所有Torch的Module和Operator ( mxnet/example/torch at master · dmlc/mxnet · GitHub ),所以Torch能做的MXNet就可以做。
4.Torch:
torch采取了支持用戶把計算拆分成多步來做,用戶可以直接利用lua來選擇下一步執(zhí)行什么。用戶可以比較簡單地對計算進(jìn)行模塊分割,并且根據(jù)比如輸入長度的不同來直接動態(tài)改變需要運行哪一個步驟。
Torch為代表的過程式計算更加靈活。
TF由G的優(yōu)秀工程師設(shè)計,更加注重性能和優(yōu)化。Torch本身是researcher設(shè)計的,更加注重靈活性。
5.Theano:
TensorFlow和Theano,都是基于Python的符號運算庫,TensorFlow顯然支持更好,Google也比高校有更多的人力投入。Theano的主要開發(fā)者現(xiàn)在都在Google,可以想見將來的工程資源上也會更偏向于TF一些。