和cnn结合_写给小白的R-CNN介绍
在上一篇寫給小白的YOLO介紹中,我介紹了目標(biāo)檢測的任務(wù)類型和YOLO的基本方法。
實(shí)際上,R-CNN是比YOLO更早的方法,但是因?yàn)樗鼘竺娴脑S多目標(biāo)檢測方法都有指導(dǎo)意義,所以我們還是介紹一下。
下面是R-CNN論文的國內(nèi)鏡像:
Rich feature hierarchies for accurate object detection and semantic segmentation?xxx.itp.ac.cn盡管R-CNN在當(dāng)年有劃時代的意義,它的思想也影響到了后面算法的設(shè)計,但是仍有一些處理方式在今天看來不夠成熟,或者干脆說比較奇怪。在這里我們就避開不重要的部分,重點(diǎn)介紹一些有意思的技巧。
R-CNN的劃時代意義其實(shí)也是因?yàn)樗谜驹谏疃葘W(xué)習(xí)剛剛復(fù)蘇的風(fēng)口上,使得它站在了巨人的肩膀上。
看論文的名字也能看出,R-CNN既可以做目標(biāo)檢測也可以做語義分割,這里我們主要介紹用于目標(biāo)檢測的方法,但是有些技巧其實(shí)是相通的。
整個R-CNN的流程是這樣的:
我們說過,R-CNN使用了一個叫做selective search的算法搜索Region Proposal,因此它也被稱為是Region-based的方法。先來介紹一下這個selective search算法。
首先,我們之前說,理論上滑窗法是可以解決目標(biāo)檢測的一切問題的,但是其成本不可能達(dá)到,因此想出了各種各樣的辦法優(yōu)化這個過程。因此Region的設(shè)計目標(biāo)是,恰好包含一個物體。
論文在這里:
Selective Search for Object Recognition?202.119.32.195在這之前我再啰嗦一句,在現(xiàn)在的Region-based方法中,selective search這么naive的算法幾乎不會再被用到了,但是我們還是應(yīng)該學(xué)習(xí)一下,已經(jīng)后面的深度學(xué)習(xí)方法想學(xué)也學(xué)不明白了,這種白箱模型雖然簡單,但是能看到具體每一個細(xì)節(jié)的感覺還是挺好的。
Selective Search
Selective Search借鑒了在它之前的兩種圖片分割思想,一種是用滑窗的窮舉分割exhaustive search,一種是基于圖的圖像分割Efficient Graph-Based Image Segmentation(這個圖是離散數(shù)學(xué)中的graph,不是我們說的圖片)。
這兩種方法各有各的缺點(diǎn),窮舉分割太浪費(fèi)時間了;而基于圖的圖像分割得到的是小塊的Region,沒辦法識別大的物體,或者我們得到比較大的快,又沒辦法識別小的物體了,總之,基于圖的圖像分割總是不能兼顧物體的大小。
我們重新捋一下,滑窗窮舉可以選擇不同的窗口大小,使用不同的步長,得到理論上所有的Region,但是這里的Region很多都是毫無用處的。Graph-Based Image Segmentation只能得到同樣尺度的Region,但是因?yàn)樗澈笥杏嬎銠C(jī)圖形學(xué)和圖論的基礎(chǔ),可以選出一些看起來含有物體可能性比較大的Region。
能不能將上面的兩種方法合二為一,形成一種既準(zhǔn)確又全面的圖像分割方法呢?
Selective Search的核心思想就在這個,它將Exhaustive Search和Graph-Based Image Segmentation結(jié)合起來,形成了一種數(shù)據(jù)驅(qū)動的方法。
其實(shí)Selective Search算法還算比較簡單,它的想法是通過合成把小塊的Region分廠更大塊的Region,直到所有的Region都被合成為了整張圖片,最后輸出所有出現(xiàn)過的Region。
也就是說,一開始的塊都是很小的,然后我們將其中兩個合成,然后再合成,不停的合成下去,直到全部都合成為一個塊。算法的輸出是合成過程中出現(xiàn)的所有塊,這既包括我們最開始的很小的塊,也包括后面合成得到的比較大的塊。
現(xiàn)在還有兩個疑問:最開始的小塊是怎么來的?怎么判斷兩個小塊應(yīng)不應(yīng)該合稱為更大的塊?
上面的算法也說明了,最開始的小塊是根據(jù)[13],額,就是我們前面說的Efficient Graph-Based Image Segmentation得到的,這個我們就不細(xì)講了。
至于怎么判斷哪兩個塊應(yīng)該合并,算法中說的是應(yīng)該將圖中相似度最大的兩個塊合并。這個相似度是人為設(shè)計的特征,透露著濃濃的上世紀(jì)計算機(jī)視覺的氣息,論文中給出了四種相似度,額,看看就好呢。
顏色相似度:
材質(zhì)相似度:
優(yōu)先合并小區(qū)域:
區(qū)域的合適度距離:
最后把這四個相似度結(jié)合起來:
嗯,Selective Search的最重要的思想就是從小塊開始,然后逐漸合并得到新的Region。也正是Selective Search這種從小到大不斷合并的方法,讓R-CNN可以識別出多級特征。
其實(shí),解決完Region的選擇問題后,R-CNN就沒有什么特別值得我們注意的地方了,畢竟比較古老了。
還有一些小細(xì)節(jié)倒是值得一提。
比如Selective Search得到的Region很可能是在一定程度上重合,它們會重復(fù)的預(yù)測同一個物體,這時我們用非極大值抑制NMS解決這個問題。
Region也可能只覆蓋了物體的一小部分,我們通過計算Region和物體的IOU,設(shè)計一個閾值,當(dāng)IOU小于這個閾值就把這個Region排除。
還有就是原始的Region作為分割圖片的框框是夠用了,但是具體預(yù)測出真正的物體的位置,往往還是不夠精確的,這之后我們可以根據(jù)經(jīng)過極大值抑制后的Region作為輸入值,訓(xùn)練一個線性模型,結(jié)合整個圖片信息,回歸出更精準(zhǔn)的物體位置。這個主意是從更古老的DPM哪里借鑒過來的。
在網(wǎng)絡(luò)訓(xùn)練的時候,R-CNN采用遷移學(xué)習(xí)的方法,往往是在大量的圖片分類數(shù)據(jù)集上預(yù)訓(xùn)練,因?yàn)閳D片分類的標(biāo)注成本要遠(yuǎn)小于目標(biāo)檢測的標(biāo)注成本。然后將預(yù)訓(xùn)練的模型放到目標(biāo)檢測的數(shù)據(jù)集上訓(xùn)練,并fine-tuning。
在論文中作者們是用SVM進(jìn)行圖片分類的,但是我感覺用神經(jīng)網(wǎng)絡(luò)的softmax輸出可能會更好,這應(yīng)該是歷史遺留問題。
細(xì)節(jié)上可能還有更多,但是我決定不一一展開了,這種模型我們只要領(lǐng)會其中的核心思想就夠了。
總結(jié)
以上是生活随笔為你收集整理的和cnn结合_写给小白的R-CNN介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长虹chiq电视语音遥控器RBE901如
- 下一篇: tcp当主动发出syn_(二)深入浅出T