深度学习(主要是CNN)用于图片的分类和检测总结
2014-12-4閱讀920 評(píng)論0
前言: 主要總結(jié)一下自己最近看文章和代碼的心得。
1. CNN用于分類:具體的過(guò)程大家都知道,無(wú)非是卷積,下采樣,激活函數(shù),全連接等。CNN用于分類要求它的輸入圖片的大小是固定的(其實(shí)不單單是CNN,很多其它的方法也是這樣的),這是它的一個(gè)不足之處之一。目前的大部分CNN都是用來(lái)做分類比較多。
2. CNN用于檢測(cè):主要的方法有兩種,細(xì)分一下有三種,
第一種最為簡(jiǎn)單和暴力的,通過(guò)滑動(dòng)窗口的方法,提取一個(gè)固定大小的圖像patch輸入到CNN網(wǎng)絡(luò)中,得到該patch的一個(gè)類別,這樣得到一個(gè)圖片密集的類別得分圖。顯然,這種方法的一個(gè)弊端就是運(yùn)算量太大,如果圖片的分辨率比較的大,就根本無(wú)法進(jìn)行下去,更何況,這還是在沒(méi)有考慮圖片多尺度檢測(cè)的情況。
第二種方法,在第一種方法的基礎(chǔ)之上,采用了動(dòng)態(tài)規(guī)劃的思想,避免了重復(fù)計(jì)算問(wèn)題。對(duì)于CNN來(lái)說(shuō),直到第一個(gè)全連接層之前,它的輸入圖片大小是可以不固定的,但是有了全連接層之后,就要求輸入大小保持一致,第二種方法是先把任意大小的圖片進(jìn)行輸入CNN直到第一個(gè)全連接層,然后再在它的基礎(chǔ)上進(jìn)行固定大小的滑動(dòng)窗口輸入到全連接層中,由于第一個(gè)全連接層之前進(jìn)行了大量的下采樣操作,所以這時(shí)候的滑動(dòng)窗口的數(shù)目就大大的減少了,而且前面的卷積操作就要計(jì)算一次,沒(méi)有重復(fù)計(jì)算的問(wèn)題。CNN里面有一個(gè)trick就是把訓(xùn)練好了的用于分類的網(wǎng)絡(luò),把它的全連接層參數(shù)轉(zhuǎn)化為卷積層參數(shù)。這樣改造后的CNN就成了全卷積CNN,它的輸入是可以任意的,而它的輸出是patch 的類別得分。這個(gè)在Caffe里面有一個(gè)例子說(shuō)明怎么轉(zhuǎn)換。網(wǎng)址在這里:http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb
第三種方法,跟前兩種不同的是,它不是采用滑動(dòng)窗口的方法,而是采用提取子窗口的方法,這種方法最典型的是今年的CVPR2014的R-CNN方法,它先采用一個(gè)方法來(lái)進(jìn)行生成1000-2000左右的窗口區(qū)域(類似于目標(biāo)顯著性檢測(cè),但又不同,英文的說(shuō)法叫Objectness,不好翻譯),然后再把這些窗口歸一化到相同的大小放到CNN里面去做分類。(當(dāng)然RCNN的方法只是用訓(xùn)練好了的CNN進(jìn)行提特征,它還需要進(jìn)行對(duì)每一個(gè)類別進(jìn)行訓(xùn)練SVM分類器)。顯然這種方法的優(yōu)點(diǎn)的是比前兩種快,因?yàn)榉诸惖拇翱谏?#xff0c;但是它也有不足就是,它要保證要檢測(cè)的目標(biāo)在這些1000-2000個(gè)提取的窗口中的概率要足夠的高,也就是要有比較高的召回率。再者,它要保證這1000-2000個(gè)窗口的提取要足夠的快,(在R-CNN中,由于它采用的方法生成窗口很慢,所以實(shí)際上整個(gè)檢測(cè)是比較慢的。)
總結(jié)
以上是生活随笔為你收集整理的深度学习(主要是CNN)用于图片的分类和检测总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Deep Learning(深度学习)学
- 下一篇: 学习的路径