<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【CV】通俗易懂的目標(biāo)檢測 | RCNN, SPPNet, Fast, Faster

          共 5496字,需瀏覽 11分鐘

           ·

          2020-07-29 14:40

          全文5500個字,22幅圖,學(xué)習(xí)時長預(yù)計20分鐘

          目錄

          • 0?概述

          • 1?RCNN

            • 1.1 候選區(qū)Region Proposal

            • 1.2 特征提取

            • 1.3 SVM分類

            • 1.4 線性回歸

          • 2 SPP Net

          • 3 Fast RCNN

          • 4 Faster RCNN

          • 5 總結(jié)

          0 概述

          本文主要講一下深度網(wǎng)絡(luò)時代,目標(biāo)檢測系列的RCNN這個分支,這個分支就是常說的two-step,候選框 + 深度學(xué)習(xí)分類的模式:RCNN->SPP->Fast RCNN->Faster RCNN

          另外一個分支是yolo v1-v4,這個分支是one-step的端到端的方式。不過這里主要是介紹RCNN那個體系的。

          把下圖中的yolo忽略,剩下的四個就是RCNN體系的一個非常好的總結(jié)。

          1 RCNN

          RCNN既然是two-step,那么就從這里切入理解:

          1. 第一步,生成候選區(qū)
          2. 第二步,判斷每個候選區(qū)的類別 2.1 用CNN提取特征 2.2 用SVM分類 2.3 用線性回歸矯正候選框的位置

          1.1 候選區(qū)Region Proposal

          一個圖片中有多個待檢測的目標(biāo),我們怎么找到這個目標(biāo)的位置呢?Region Proposal就是給出目標(biāo)可能在的候選框中。如下圖,Region Proposal給出了大大小小的可能候選框:

          怎么給出可能的候選框呢?比較籠統(tǒng)的說法是:利用圖像中的紋理、邊緣、顏色等信息,先產(chǎn)生較小的相同紋理、相同顏色的候選框,然后小的候選框慢慢合并成大的紋理相似的候選框。

          【selective search 選擇性搜索】這個選擇性搜索就是給出候選框的算法的名字。用Selective Search方法可以對一張圖片生成大約1000~3000個候選框,具體的算法邏輯如下:

          1. 使用一種過分割手段,將圖像分割成過小的區(qū)域;
          2. 查看現(xiàn)有小區(qū)域,合并可能性最高的兩個區(qū)域,重復(fù)直到整張圖像合并成一個區(qū)域位置;;
          3. 輸出所有曾經(jīng)存在過的區(qū)域,也就是從小合并到大的所有出現(xiàn)過的大大小小的候選框,即所謂候選區(qū)域。

          【合并遵守的原則】

          1. 顏色(顏色直方圖)相近的;
          2. 紋理(梯度直方圖)相近的;
          3. 合并后總面積小的;

          1.2 特征提取

          之前選出來的大大小小的候選框,其實(shí)就是大大小小的圖片。這里把圖片都縮放成統(tǒng)一的227*227的大小,然后把統(tǒng)一大小的圖片輸入到CNN中,進(jìn)行特征提取。這里的特征網(wǎng)絡(luò)是一個比較簡單的網(wǎng)絡(luò)(當(dāng)年resnet啊googlenet啊都沒提出來,BN層也沒提出來,所以結(jié)構(gòu)如下)

          從上圖中的pool5之后的輸出的特征圖取出來,所以SVM的輸入特征。(這里需要提到的是,pool5在某些博客中被說成了第五個池化層,感覺不是很恰當(dāng),應(yīng)該是第三個池化層,只是接在了第5個卷積層后面。)

          1.3 SVM分類

          眾所周知,SVM只能分類二分類任務(wù)(這個不清楚的給我回去看之前的SVM推導(dǎo)去)。

          想要SVM處理多分類任務(wù),那么就有多種集成方式。我記得上課老師說的有兩種(我只記得兩種了):

          • one vs one:就是假設(shè)5個類別,那么兩兩類別之間訓(xùn)練一個SVM,總共訓(xùn)練10個SVM,然后把一個圖片放入這個10個SVN,然后對于結(jié)果進(jìn)行投票;
          • one vs all:這個5分類任務(wù),就訓(xùn)練5個SVM,然后每個SVM訓(xùn)練的正負(fù)樣本就是:是這個類別的和不是這個類別的。淦!語言說的不清楚。

          舉個例子:a,b,c三個類別。one vs one就是:a|b,a|c,b|c。one vs all就是a|bc,b|ac,c|ab。(值得注意的是,在目標(biāo)檢測中,會多一個類別,叫做背景

          回到RCNN,這里的SVM用的就是one vs all的方式。下圖可以比較好的理解什么是one vs all:

          1.4 線性回歸

          現(xiàn)在我們知道一個候選框的類別了(通過SVM),但是我們經(jīng)過一開始的拉伸,雖然讓所有圖片都變成了227的大小,但是也會造成圖像的扭曲。如下圖:

          所以這時候,訓(xùn)練一個線性回歸模型,來做一個邊框回歸,精細(xì)的調(diào)整候選框(x,y,w,h)四個參數(shù)。這里每一個類別就會訓(xùn)練一個線性回歸模型,根據(jù)SVM的結(jié)果,選擇相應(yīng)類別的線性回歸模型進(jìn)行候選框的矯正。

          整個RCNN的過程可以用下面這張圖來概括一下:

          整體四個步驟,精度達(dá)到了當(dāng)時水平的巔峰,但是每一張圖片都會有2000左右的候選框,再加上SVM和線性回歸的推理,一張圖片的推理時間需要47s。慢的雅痞。之后的三個模型,都是不斷改進(jìn)了RCNN的各種問題,做出了各種杰出的提升。

          2 SPP Net

          • SPP:Spatial Pyramid Pooling空間金字塔池化

          SPP-Net是出自2015年發(fā)表在IEEE上的論文-《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》。

          眾所周知,CNN一般都含有卷積部分和全連接部分,其中,卷積層不需要固定尺寸的圖像,而全連接層是需要固定大小的輸入(SVM的輸入也是需要固定大小的輸入)。

          所以當(dāng)全連接層面對帶下不同的輸入數(shù)據(jù)的時候,就需要對數(shù)據(jù)做拉伸warp或者剪裁crop,就像是RCNN中把候選框拉伸到227尺寸大小。

          【crop與warp】

          兩者的效果看下面的圖就懂了吧。

          現(xiàn)在的問題是,warp還是crop都會讓圖像變形、物體不全,這樣勢必會對識別的精確度產(chǎn)生影響。


          【如何避免使用warp和crop】SPP net使用了SPP空間金字塔池化層,來實(shí)現(xiàn)了這個功能。先看和RCNN的模型結(jié)構(gòu)對比:

          RCNN中先通過warp講大小不同的候選框變成227統(tǒng)一大小輸入到conv layers;SPP中直接對大小不同的候選框做conv layers,所以我們得到了大小不同的特征圖。然后將大小不同的特征圖輸入到SPP空間金字塔池化層中,輸出變成大小相同的特征圖


          【SPP層如何實(shí)現(xiàn)尺寸輸入不同輸出相同的呢?】ROI pooling是空間金字塔池化層的更底層的結(jié)構(gòu)。準(zhǔn)確的說,是ROI池化層實(shí)現(xiàn)的輸入尺寸不同,輸出相同的功能。

          • ROI Pooling=Region of Interest Pooling感興趣區(qū)域池化層

          ROI池化層一般跟在卷積層后面,此時網(wǎng)絡(luò)的輸入可以是任意尺度的,ROI pooling的filter會根據(jù)輸入調(diào)整大小。一個簡單的例子,10*10的特征圖輸入到ROI pooling,我們設(shè)置要一個5*5的輸出,所以ROI pooling的filter大小自動計算出是2*2的。假如輸入時20*20的特征圖,計算出來的filter就是4*4大小的,輸出結(jié)果還是5*5。

          而SPP之所以稱之為金字塔(希望各位了解圖像金字塔的概念,不了解也沒事哈),是因?yàn)樗昧撕脦讉€ROI pooling,每一個ROI輸出的特征圖大小不同,有1*1的、2*2的、4*4的,然后把不同尺寸的特征圖的特征拉平,變成21個特征變量,就可以輸入到FC層或者SVM了。

          下圖正式重現(xiàn)了上面我說的情況,三個不同的ROI總共產(chǎn)生了21個特征進(jìn)行分類。(其中的256是通道數(shù),嚴(yán)格來說是21*256個特征進(jìn)行分類)


          【SPPnet比RCNN好在哪里?】

          1. 通過使用SPP結(jié)構(gòu)(ROI池化層),避免了warp和crop的使用,避免了圖像失真;
          2. RCNN的處理順序是:先把候選框的圖扣出來,再放到卷積層進(jìn)行訓(xùn)練得到特征圖;SPPNet是先把原圖通過卷積層得到特征圖,然后把候選框的大小映射到特征圖上再摳出來。哪個速度快不用我多說了吧。就好比,我通知個消息,我一個一個好友的轉(zhuǎn)發(fā),與我把好友拉到一個群里,我在群里發(fā)一樣(這是個不太恰當(dāng)?shù)睦涌赡埽?傊@樣RCNN需要卷積2000個候選框,而SPPNet只需要卷積一次,速度提升了100倍。

          (最后需要提的一點(diǎn)是,我并不清楚SPPNet最后的分類是用FC層還是依然使用RCNN的SVM分類,不知道SPPNet是否使用了線性回歸的方法做邊框回歸。因?yàn)槲抑皇前裇PPNet看成提出了ROI pooling的一個方法,是RCNN進(jìn)化史中的一個插曲。不過在意的朋友可以自行查找,然后方便的話告訴我哈哈哈,我懶得搞了。到這里已經(jīng)碼字3小時了)

          3 Fast RCNN

          SPP Net真是個好方法,R-CNN的進(jìn)階版Fast R-CNN就是在R-CNN的基礎(chǔ)上采納了SPP Net方法,對R-CNN作了改進(jìn),使得性能進(jìn)一步提高。

          【R-CNN vs Fast R-CNN】

          1. 依舊使用selective search的方法來選取候選框bounding box。

          2. **不再使用SVM+線性回歸的方法,而是全部通過神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)分類和邊框回歸的任務(wù)。**Fast-RCNN很重要的一個貢獻(xiàn)是成功的讓人們看到了Region Proposal + CNN這一框架的可行性,不再使用Region Proposal + CNN + SVM + LR的框架了。

          現(xiàn)在梳理一些Fast RCNN推理的流程。

          1. 現(xiàn)在有一個原圖,先通過selective search得到候選框;
          2. 將原圖放到CNN中進(jìn)行特征處理,得到特征圖,然后將候選框映射到特征圖上,得到大小不同的特征圖的候選框。
          3. 把特征圖候選框放到ROI pooling層中(只有一個,不是SPP的3個ROI結(jié)構(gòu)了),輸出7*7的特征圖,這時候有512個通道,所以在ROI輸出之后,把7*7*512個特征放到FC層中。
          4. FC層后接入了兩個不同的FC層(分支結(jié)構(gòu)),分別輸出兩個不同的結(jié)果。第一個結(jié)果加上softmax變成候選框的類別概率,第二個結(jié)果就是候選框的4個參數(shù)的邊框回歸的值。

          整個流程可以看下面的圖:

          現(xiàn)在,目標(biāo)檢測一張圖片,只需要0.32秒鐘,之前的RCNN可是47秒。

          【Fast RCNN的貢獻(xiàn)】再說一下Fast RCNN的改進(jìn),其實(shí)主要改進(jìn)都是SPP Net的,用了ROI和先卷積再扣除候選框的方法(SPPNet的兩個優(yōu)點(diǎn)都用了),此外,還是用FC層直接代替了SVM和LR,這個Fast RCNN的最大貢獻(xiàn)。

          4 Faster RCNN

          之前Fast RCNN最消耗時間的地方,在于使用selective search來找候選框

          為了更快,使用神經(jīng)網(wǎng)絡(luò)來代替selective search,所以現(xiàn)在,F(xiàn)aster RCNN整體就是一個神經(jīng)網(wǎng)絡(luò)來搞,一個端對端的模型。(輸入圖片,輸出候選框,一個模型完成所有任務(wù)所以是端對端)。

          【區(qū)域候選網(wǎng)絡(luò)RPN】Faster RCNN最大的貢獻(xiàn)在一引入了Region Proposal Network(RPN)網(wǎng)絡(luò)來代替selective search。

          RPN網(wǎng)絡(luò)直接放在最后一個卷積層的后面,通過一個滑動窗口,在feature map上滑動。每一個滑動窗口會給出一個置信度,置信度低的可以理解為這個窗口是沒有目標(biāo)的,置信度高的再考慮不同類別的概率。

          【Archor box先驗(yàn)框】 這里還會有一個archor box的概念,因?yàn)榛瑒哟翱谝话闶钦叫蔚模菍?shí)際的目標(biāo)檢測可能是長方形。也許比較近似正方形的長方形可以通過邊框回歸矯正,但是其他的長方形物體就非常難辦了。這里事先設(shè)置了幾種不同形狀大小的候選框,除了正方形之外,還有長方形,小正方形等,這樣雖然成倍的增加了計算量,但是可以提高準(zhǔn)確度。而且這樣增加候選框的計算量消耗依然是小于selective search的。

          下圖來理解之前講解的概念:圖中有四種不同的archor box,意味著滑動到某一個位置的時候,以那個點(diǎn)為中心,產(chǎn)生四個不同大小的候選框,然后預(yù)測得到 是否是目標(biāo)物體二分類結(jié)果 和 邊框回歸四分類結(jié)果。下圖會清晰的理解這個過程:

          總的來說,RPN做的事情是:? 在feature map上滑動窗口 ? 建一個神經(jīng)網(wǎng)絡(luò)用于物體分類+框位置的回歸 ? 滑動窗口的位置提供了物體的大體位置信息 ? 框的回歸提供了框更精確的位置

          整個網(wǎng)絡(luò)有四個損失函數(shù):

          • RPN的二分類損失函數(shù)
          • RPN的邊框回歸損失函數(shù)
          • FAST RCNN的多分類損失函數(shù)
          • Fast RCNN的邊框回歸損失函數(shù)

          然后看看速度比Fast RCNN更快了。Faster R-CNN的主要貢獻(xiàn)就是設(shè)計了提取候選區(qū)域的網(wǎng)絡(luò)RPN,代替了費(fèi)時的選擇性搜索Selective Search,使得檢測速度大幅提高。

          5 總結(jié)

          這里有個圖來總結(jié):

          項目

          R-CNN

          Fast R-CNN

          Faster R-CNN

          提取候選框

          Selective Search

          Selective Search

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

          提取特征

          卷積神經(jīng)網(wǎng)絡(luò)(CNN

          卷積神經(jīng)網(wǎng)絡(luò)+ROI池化

          特征分類

          SVM

          • R-CNN(Selective Search + CNN + SVM)

          • SPP-net(ROI Pooling)

          • Fast R-CNN(Selective Search + CNN + ROI)

          • Faster R-CNN(RPN + CNN + ROI)



          往期精彩回顧





          獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:

          https://t.zsxq.com/yFQV7am

          本站qq群1003271085。

          加入微信群請掃碼進(jìn)群:

          瀏覽 27
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷久久色| 强伦轩人妻一区二区电影 | 亚洲欧视频在线播放 | 青娱乐超碰在线 | 免费无码又爽又刺激A片视频男男 |