RCNN
1. Rcnn的Motivation是什么?
目標(biāo)檢測(cè)進(jìn)展緩慢,CNN在 圖片分類 中取得重大成功。應(yīng)用CNN將檢測(cè)問(wèn)題轉(zhuǎn)化成
分類問(wèn)題。
2. 候選框提取
一張圖片,利用seletive search方法從中提取出2000個(gè)候選框。由于候選框大小不一,考慮到后續(xù)CNN要求輸入的圖片大小統(tǒng)一,將2000個(gè)候選框全部resize到 227×227 分辨率;
3. 目標(biāo)檢測(cè)為什么需要候選區(qū)域,有哪些生成候選區(qū)域的方法?
在目標(biāo)檢測(cè)中,為了定位到目標(biāo)的具體位置,通常會(huì)把圖像劃分成很多子塊。再把這些子塊依次送入目標(biāo)識(shí)別模型中。
滑動(dòng)窗口法(sliding window)
滑動(dòng)窗口的方法就是按照子塊的大小在整幅圖像上窮舉所有子圖像塊。這種方法產(chǎn)生的數(shù)據(jù)量想想都頭大。效率較低,對(duì)于實(shí)時(shí)性要求高的情況不建議使用。Seletive Search
- 滑窗法類似窮舉進(jìn)行圖像子區(qū)域搜索,但是一般情況下圖像中大部分子區(qū)域是沒(méi)有物體的。只對(duì)圖像中最有可能包含物體的區(qū)域進(jìn)行搜索以此來(lái)提高計(jì)算效率。
- 主要觀點(diǎn):圖像中物體可能存在的區(qū)域應(yīng)該是有某些相似性或者連續(xù)性區(qū)域的。首先,對(duì)輸入圖像進(jìn)行分割算法產(chǎn)生許多小的子區(qū)域。其次,根據(jù)這些子區(qū)域之間相似性(相似性標(biāo)準(zhǔn)主要有顏色、紋理、大小等等)進(jìn)行區(qū)域合并,不斷的進(jìn)行區(qū)域迭代合并。每次迭代過(guò)程中對(duì)這些合并的子區(qū)域做bounding boxes。
4. 特征提取+分類器的過(guò)程
- 227*227的大小并輸入到CNN,將CNN的fc7層的輸出作為特征;
- 將每個(gè)Region Proposal提取的CNN特征輸入到SVM進(jìn)行分類;
- 得到SVMs對(duì)于所有Proposal的評(píng)分結(jié)果,將一些分?jǐn)?shù)較低的proposal去掉后,剩下的proposal中會(huì)出現(xiàn)候選框相交的情況。采用非極大值抑制技術(shù),對(duì)于相交的兩個(gè)框或若干個(gè)框,找到最能代表最終檢測(cè)結(jié)果的候選框。
5. RCNN的缺點(diǎn)?
- R-CNN需要對(duì)SS提取得到的每個(gè)proposal進(jìn)行一次前向CNN實(shí)現(xiàn)特征提取,因此計(jì)算量很大,無(wú)法實(shí)時(shí);
- 由于全連接層的存在,需要嚴(yán)格保證輸入的proposal最終resize到相同尺度大小,這在一定程度造成圖像畸變,影響最終結(jié)果。
SPPNet
1. Sppnet的Motivation是什么?
- 卷積層對(duì)輸入圖像大小不作特別要求,但全連接層要求輸入圖像具有統(tǒng)一尺寸大小。
- R-CNN在訓(xùn)練和測(cè)試是需要對(duì)每一個(gè)圖像中每一個(gè)proposal進(jìn)行一遍CNN前向特征提取,如果是2000個(gè)propsal,需要2000次前向CNN特征提取。
2. sppnet如何做到任意大小featuremap得到固定全連接?
任意大小的feature map首先分成16、4、1個(gè)塊,然后在每個(gè)塊上最大池化,池化后的特征拼接得到一個(gè)固定維度的輸出。以滿足全連接層的需要

3. sppnet只需要進(jìn)行一次cnn特征提???
SPP-net只需要進(jìn)行一次前向CNN特征提取,即對(duì)整圖進(jìn)行CNN特征提取,得到最后一個(gè)卷積層的feature map,然后采用SPP-layer根據(jù)空間對(duì)應(yīng)關(guān)系得到相應(yīng)proposal的特征。
Fast-Rcnn
1. fastrcnn的motivation是什么?
fastrcnn可以看成是一個(gè)joint training的sppnet。加入ROI pooling層解決需要多次計(jì)算cnn特征的問(wèn)題。
2. 具體過(guò)程?
- 利用selective search 算法在圖像中從上到下提取2000個(gè)左右的建議窗口(Region Proposal);
- 將整張圖片輸入CNN,進(jìn)行特征提??;得到一個(gè)整個(gè)的Feature map
- 把建議窗口映射到CNN的最后一層卷積feature map上;
- 通過(guò)RoI pooling層使每個(gè)建議窗口生成固定尺寸的feature map;
3. Rol pooling layer的作用?
- 將image中的rol定位到feature map中對(duì)應(yīng)patch
- 是用一個(gè)單層的SPP layer將這個(gè)feature map patch下采樣為大小固定的feature再傳入全連接層
ROIpooling更具字面意思就是一個(gè)pooling,它是把不同尺寸的featuremap輸入,得到相同尺寸的featuremap的輸出。
ROI是Region of Interest的簡(jiǎn)寫(xiě),指的是在“特征圖上的框”;
1)在Fast RCNN中, RoI是指Selective Search完成后得到的“候選框”在特征圖上的映射,
2)在Faster RCNN中,候選框是經(jīng)過(guò)RPN產(chǎn)生的,然后再把各個(gè)“候選框”映射到特征圖上,得到RoIs。
候選框-映射共享featuremap-不同大小的featuremap-spp-相同大小的featuremap。
4. 如何引入多任務(wù)loss的?
- 利用Softmax Loss(探測(cè)分類概率) 和Smooth L1 Loss(探測(cè)邊框回歸)對(duì)分類概率和邊框回歸(Bounding box regression)聯(lián)合訓(xùn)練.
- 將邊框回歸直接加入到CNN網(wǎng)絡(luò)中訓(xùn)練
Faster-Rcnn
FasterRcnn中RPN的引入,可以說(shuō)真正意義上將檢測(cè)流程融合成一個(gè)網(wǎng)絡(luò)。
Faster RCNN = RPN + Fast RCNN
閱讀這篇博客https://blog.csdn.net/lanran2/article/details/54376126,https://blog.csdn.net/lanran2/article/details/60143861寫(xiě)得很好,比較通俗易懂。我大致總結(jié)一下。
關(guān)于RPN

-
RPN網(wǎng)絡(luò)大致處于整個(gè)網(wǎng)絡(luò)的中前端,RPN輸入的featuremap是一個(gè)共享的featuremap,為RPN和后面的ROI共同使用。
公共的Featuremap是77512(視網(wǎng)絡(luò)結(jié)構(gòu)),輸入RPN層,經(jīng)過(guò)一個(gè)33的卷積,得到77256的輸出,相當(dāng)于77個(gè)256維向量,相當(dāng)于7*7的特征圖(比原圖縮小了32倍)上每一個(gè)點(diǎn)都有一個(gè)256維的向量,每個(gè)點(diǎn)的256維度向量接兩個(gè)FC,一個(gè)預(yù)測(cè)該點(diǎn)是前景還是背景。一個(gè)預(yù)測(cè)該點(diǎn)相對(duì)于原圖的偏移。
7*7上每個(gè)點(diǎn)相對(duì)與原圖來(lái)說(shuō),都是對(duì)應(yīng)于一個(gè)框。那這個(gè)框是什么樣呢,就是基于錨點(diǎn)(anchor)來(lái)講的。錨點(diǎn)(x,y,w,h)決定了一個(gè)框的大小。fasterrcnn中這個(gè)框是確定的,一共有9個(gè)。
那么77上每一個(gè)點(diǎn)可以在原圖上有9個(gè)框,那么每一個(gè)點(diǎn)對(duì)應(yīng)的256維度的向量可以輸出29個(gè)判斷是否是前景的概率值。也可以輸出49個(gè)判斷anchorbox與原圖的偏移。 那么77256會(huì)得到 7729個(gè)概率,774*9個(gè)坐標(biāo)。
基于上面兩個(gè)步驟就可以得到候選框。
- RCNN系列目標(biāo)檢測(cè)都包含四個(gè)基本步驟:
- 候選區(qū)域生成
- 特征提取
- 分類
- boundingbox修正
