深度學(xué)習(xí)目標(biāo)檢測算法對比詳述(RCNN,F(xiàn)AST-RCNN,F(xiàn)ASTER-RCNN,YOLO,SSD)

綜述_部分內(nèi)容借鑒

目標(biāo)檢測中的RNN家族 與 基于深度學(xué)習(xí)的回歸方法
RNN家族
采用selective search+CNN+SVM的RCNN模型
  • 提取候選框:使用selective search方法,這是一種傳統(tǒng)的候選框提取算法,根據(jù)圖像的顏色紋理色差提取出大約兩千個(gè)proposal(候選框),注意這些候選框是可以重疊的。

    selective search 方法提取的候選框

    selective search 提取候選框的方法

  • 對候選框進(jìn)行特征提取:對每一個(gè)候選框使用CNN提取特征,因?yàn)?strong>取出的區(qū)域大小各自不同,所以需要將每個(gè)Region Proposal縮放(warp)成統(tǒng)一的227x227的大小并輸入到CNN,將CNN的fc7層的輸出作為特征,但是進(jìn)行warp and crop 很大程度上會(huì)造成圖像的失真。

    圖像進(jìn)行warp和crop之后造成失真

  • 使用特征對候選框進(jìn)行分類 :將每個(gè)Region Proposal提取到的CNN特征輸入到SVM進(jìn)行分類,SVM是已經(jīng)訓(xùn)練好的21個(gè)(voc數(shù)據(jù)集有20個(gè)分類+1個(gè)背景)分類器,用于判斷這個(gè)物品是否屬于這一類,最終選出置信度最高的類作為圖像的分類,然后使用回歸模型對候選框進(jìn)行精修,回歸方法

    回歸模型對候選框進(jìn)行精修

  • 細(xì)心的同學(xué)可能看出來了問題,R-CNN雖然不再像傳統(tǒng)方法那樣窮舉,但R-CNN流程的第一步中對原始圖片通過Selective Search提取的候選框region proposal多達(dá)2000個(gè)左右,而這2000個(gè)候選框每個(gè)框都需要進(jìn)行CNN提特征+SVM分類,計(jì)算量很大,導(dǎo)致R-CNN檢測速度很慢,一張圖都需要47s。

  • 如何訓(xùn)練RCNN?使用什么網(wǎng)絡(luò)結(jié)構(gòu)?
    因?yàn)闃?biāo)注有框的檢測模型數(shù)據(jù)集很少,但是用于分類的數(shù)據(jù)集數(shù)量是比較多的,所以我們要利用分類數(shù)據(jù)集(voc,pascal)來訓(xùn)練我們的網(wǎng)絡(luò),并且也使用分類模型進(jìn)行fine-turning 得到我們的檢測模型。

    RCNN網(wǎng)絡(luò)結(jié)構(gòu)

  • 訓(xùn)練樣本怎么標(biāo)記?如何得到訓(xùn)練集?


    RCNN訓(xùn)練集
  • 為什么不直接使用CNN分類還要使用SVM進(jìn)行分類呢:原因在于CNN容易過擬合,所以我們需要大量的標(biāo)注圖片,但是使用上面方法得到的標(biāo)注信息其條件很松散(因?yàn)橹灰狪OU大于0.5就算正樣本,那么很有可能只是物體的一部分也被判斷成物體了,物體的另一部分卻不視為這個(gè)物體),所以用來做分類效果并不好。

    RCNN為什么要用SVM進(jìn)行分類

  • 如何使用特征+SVM進(jìn)行分類:并不是把特征丟到一個(gè)一個(gè)的SVM分類器中的哦,并且SVM的正負(fù)樣本IOU閾值和CNN正負(fù)樣本IOU閾值不一樣,注意分辨。

    SVM進(jìn)行分類是正負(fù)樣本的閾值

SVM進(jìn)行分類
  • 如何對框體進(jìn)行位置精修?: 對于每一個(gè)類別中IOU大于0.6的框使用線性脊回歸器進(jìn)行位置精修

    圖片7.png

  • 所以RCNN的訓(xùn)練方法如下:非極大值抑制就是對被分為同一類的框,從概率最大的框開始一直到最小概率的框(對列進(jìn)行排序,從列首到列尾進(jìn)行循環(huán)),重復(fù)的去除一些與當(dāng)前框IOU大于閾值的小概率框。

    RCNN的訓(xùn)練方法

SPP Net(空間金字塔池化)
  • SPP-Net是出自2015年發(fā)表在IEEE上的論文-《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》。 該論文提出了將 最后一個(gè)卷積層后的池化層替換為spatial pyramid pooling layer(SPP層), 該層能夠生成長度固定的特征,并輸入到全連接層。因此,SPP-net適合輸入大小不同的圖像。之前的CNN網(wǎng)絡(luò)都要求使用尺寸的圖片作為輸入,因?yàn)槿B接層要求的輸入尺寸成固定的那么倒推整個(gè)CNN網(wǎng)絡(luò)的輸入圖片的尺寸也要是固定尺寸,這樣就要求對圖片進(jìn)行裁剪和縮放,使得圖像識(shí)別失真,SPP-Net可以使得CNN網(wǎng)絡(luò)輸入圖片的大小是非固定的,因?yàn)閺脑砩蟻碚f,做卷積,池化都不需要圖片有固定尺寸,那么我們只需要在輸入全連接層之前做一個(gè)池化操作就可以使得輸入到全連接層的特征是尺寸相同的了。即在普通的CNN機(jī)構(gòu)中,輸入圖像的尺寸往往是固定的(比如224*224像素),輸出則是一個(gè)固定維數(shù)的向量。SPP Net在普通的CNN結(jié)構(gòu)中加入了 ROI池化層(ROI Pooling),使得網(wǎng)絡(luò)的輸入圖像可以是任意尺寸的,輸出則不變,同樣是一個(gè)固定維數(shù)的向量。
    RCNN與SPP-Net網(wǎng)絡(luò)結(jié)構(gòu)的比較
  • SPP-Net的貢獻(xiàn)二是 只對原圖提取一次卷積特征: 在R-CNN中,每個(gè)候選框先resize到統(tǒng)一大小,然后分別作為CNN的輸入,這樣是很低效的。而SPP Net根據(jù)這個(gè)缺點(diǎn)做了優(yōu)化:只對原圖進(jìn)行一次卷積計(jì)算,便得到整張圖的卷積特征feature map,然后找到每個(gè)候選框在feature map上的映射patch,將此patch作為每個(gè)候選框的卷積特征輸入到SPP layer和之后的層,完成特征提取工作。如此這般,R-CNN要對每個(gè)區(qū)域計(jì)算卷積,而SPPNet只需要計(jì)算一次卷積,從而節(jié)省了大量的計(jì)算時(shí)間,比R-CNN有一百倍左右的提速。
  • SPP-Net的構(gòu)造方法:我們以論文中的例子進(jìn)行講解,如果原始的CNN中最后一個(gè)池化層的輸出是60 * 40 * 256(256個(gè)60 * 40的特征圖,256是維度)的特征圖,如果要得到固定的神經(jīng)元個(gè)數(shù),論文中提到的是21,我們就需要將60*40的特征圖,處理成長度為21的向量。
    SPP-Net

論文中使用三層的金字塔池化層pooling,且論文中設(shè)置每次特征圖被分別切成(1,4,16)塊,然后按照層次對這個(gè)特征圖分別處理(用代碼實(shí)現(xiàn)就是for(1,2,3層))。第一層對這個(gè)特征圖整個(gè)特征圖進(jìn)行池化(池化又分為:最大池化,平均池化,隨機(jī)池化),論文中使用的是最大池化,然后得到了1個(gè)特征。第二層先將這個(gè)特征圖切分為4個(gè)(20,30)的小的特征圖,然后使用對應(yīng)的大小的池化核對其進(jìn)行池化得到4個(gè)特征。第三層先將這個(gè)特征圖切分為16個(gè)(10,15)的小的特征圖,然后使用對應(yīng)大小的池化核對其進(jìn)行池化得到16個(gè)特征,然后將這1+4+16=21個(gè)特征輸入到全連接層,當(dāng)然了,這個(gè)層數(shù)是可以隨意設(shè)定的,以及這個(gè)圖片劃分也是可以隨意的,只要效果好同時(shí)最后能組合成我們需要的特征個(gè)數(shù)即可,這就SPP-Net的核心思想。

Fast-RCNN
  • 與RCNN的區(qū)別:一是最后一個(gè)卷積層后加了一個(gè)ROI pooling layer,二是損失函數(shù)使用了多任務(wù)損失函數(shù)(multi-task loss),將邊框回歸Bounding Box Regression直接加入到CNN網(wǎng)絡(luò)中訓(xùn)練,使用softmax代替SVM進(jìn)行分類。
  • ROI Layer :ROI pooling layer實(shí)際上是SPP-NET的一個(gè)精簡版,SPP-NET對每個(gè)proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采樣到一個(gè)7x7的特征圖。對于VGG16網(wǎng)絡(luò)conv5_3有512個(gè)特征圖,這樣所有region proposal對應(yīng)了一個(gè)77512維度的特征向量作為全連接層的輸入。
  • 構(gòu)造成end-to-end模型:R-CNN訓(xùn)練過程分為了三個(gè)階段,而Fast R-CNN直接使用softmax替代SVM分類,同時(shí)利用多任務(wù)損失函數(shù)邊框回歸也加入到了網(wǎng)絡(luò)中,這樣整個(gè)的訓(xùn)練過程是端到端的(除去region proposal提取階段)。之前R-CNN的處理流程是先提proposal,然后CNN提取特征,之后用SVM分類器,最后再做box regression,而在Fast R-CNN中,作者巧妙的把box regression放進(jìn)了神經(jīng)網(wǎng)絡(luò)內(nèi)部,與region分類和并成為了一個(gè)multi-task模型,實(shí)際實(shí)驗(yàn)也證明,這兩個(gè)任務(wù)能夠共享卷積特征,并相互促進(jìn)。

總結(jié) :R-CNN有一些相當(dāng)大的缺點(diǎn)(把這些缺點(diǎn)都改掉了,就成了Fast R-CNN)容易看見,F(xiàn)ast R-CNN相對于R-CNN的提速原因就在于:不過不像R-CNN把每個(gè)候選區(qū)域給深度網(wǎng)絡(luò)提特征,而是整張圖提一次特征,再把候選框映射到conv5上,而SPP只需要計(jì)算一次特征,剩下的只需要在conv5層上操作就可以了。

Faster RCNN(與Fast RCNN 的區(qū)別是使用RPN網(wǎng)絡(luò),所以Faster RCNN講解就是RPN網(wǎng)絡(luò)的講解)
  • Faster RCNN的改進(jìn)之處主要在加入了一個(gè)特征提取網(wǎng)絡(luò)RPN以代替原來獲取候選框的selective search 方法:這一網(wǎng)絡(luò)可以根據(jù)共享的特征圖直接得到分類信息(框里面的物體屬于前景還是背景)與框的位置信息(框的坐標(biāo)信息)。

RPN簡介: 
? 在feature map上滑動(dòng)窗口
? 建一個(gè)神經(jīng)網(wǎng)絡(luò)用于物體分類+框位置的回歸
? 滑動(dòng)窗口的位置提供了物體的大體位置信息
? 框的回歸提供了框更精確的位置

RPN網(wǎng)絡(luò)

PRN網(wǎng)絡(luò)結(jié)構(gòu)

FasterRcnn的PRN網(wǎng)絡(luò)
  • 一個(gè)特征點(diǎn)(總共256維)產(chǎn)生2k個(gè)分?jǐn)?shù)(256 * 9),4k個(gè)坐標(biāo)(256 * 9 * 4),最后一層特征圖尺寸是7 * 7,所以總共大概產(chǎn)生20000個(gè)坐標(biāo)(框)。
  • Faster-RCNN網(wǎng)絡(luò)結(jié)構(gòu)
    Faster-RCNN 網(wǎng)絡(luò)結(jié)構(gòu)
  • 網(wǎng)絡(luò)中有4個(gè)pooling層 最終的feature Map的大小是(M/16)*(N/16),


    卷積層

    圖片大小
  • softmax前后都有1 * 1的卷積核進(jìn)行reshape是為了方便分類
    reshape layer的作用
bounding box regression
  • 與ROIPooling層相接的Proposal層的作用
    對于一副任意大小的P*Q的圖像,傳入FasterRCNN之前首先要Reshape 到固定的M * N大小,im_info=[M,N,scale_factor]保存的就是此次縮放的所有信息,所以雖然輸入到Faster RCNN的圖片都是reshape過的,但是還是保留有且使用原圖的信息,只不過輸出給ROIPooling層的proposal 是對應(yīng)于reshape后的圖片的。
    圖片17.png
Proposal 層
  • ROI Pooling層的處理方式相當(dāng)于只使用一層的SPP-Net
    ROI Pooling 層
  • 最后一部分,分類,回歸精修框:
    Classify 層
  • 總結(jié)!Faster RCNN網(wǎng)絡(luò)的處理過程:

1.對整張圖片輸進(jìn)CNN,得到feature map
2.卷積特征輸入到RPN,得到候選框的特征信息
3.對候選框中提取出的特征,使用分類器判別是否屬于一個(gè)特定類
4.對于屬于某一類別的候選框,用回歸器進(jìn)一步調(diào)整其位置

什么是下采樣

縮小圖像(或稱為下采樣(subsampled)或降采樣(downsampled))的主要目的有兩個(gè):1、使得圖像符合顯示區(qū)域的大?。?、生成對應(yīng)圖像的縮略圖。
下采樣原理:對于一副圖像I尺寸為MN,對起進(jìn)行s倍下采樣,即得到(M/s)(N/s)尺寸的分辨率圖像,當(dāng)然,s應(yīng)該是M和N的公約數(shù)才可以,如果考慮是矩陣形式的圖像,就是把原始圖像s*s窗口內(nèi)的圖像變成一個(gè)像素,這個(gè)像素點(diǎn)的值就是窗口內(nèi)所有像素的 均值:Pk = Σ Ii / s2。

未完待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容