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