日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

目标检测——Faster R-CNN论文阅读

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标检测——Faster R-CNN论文阅读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

論文閱讀——Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks

文章目錄

  • 論文閱讀——Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
      • 一、前言
      • 二、目標檢測背景
      • 三、VGG-16結構
      • 四、Faster R-CNN算法步驟
      • 五、細節部分解讀
        • RPN網絡
        • RPN實現方式
        • anchor
        • VGG如何提取特征
        • ROI pooling
        • NMS
      • 六、Loss Function
      • 七、實驗結果分析
      • 八、總結

一、前言

論文地址:https://arxiv.org/abs/1506.01497
開源代碼:https://github.com/endernewton/tf-faster-rcnn

筆者最近在學習目標檢測相關方向,第一篇看的就是Faster RCNN算法,但是已經看完了許久,所以經常會忘記,學長一問起來就又不懂了,說明掌握的不夠,所以在此又重新看了一遍論文,著重研究了下細節,所以在此記錄,寫的不好,希望大家多多指正。(畢竟我是小白,所以語言可能會偏通俗,盡量讓新手也能看懂)

二、目標檢測背景

目標檢測是很多計算機視覺任務的基礎。目前主流的目標檢測算法主要是基于深度學習模型,可以分為兩大塊:(1)one-stage檢測算法。這種算法直接產生物體的類別概率和坐標位置,不需要產生候選區域。比如說YOLO和SSD(2)two-stage檢測算法。這是將檢測問題劃分為兩個階段,首先是產生候選區域,然后對候選區域分類。典型算法就是R-CNN系列,而今天要介紹的就是基于region proposal的目標檢測——Faster R-CNN。

三、VGG-16結構

VGG-16是Faster R-CNN使用的主干網絡,在論文中可能經常會將主干網絡稱為backbone network。主干網絡的作用就是用來提取圖片特征的,這個不是一成不變的,可以替換,比如現在都在流行使用殘差網絡ResNet,再比如CornerNet算法中使用的backbone是Hourglass Network,所以具體情況具體分析。

網絡結構圖如圖2-1,VGG-16網絡中的16代表的含義是含有參數的有16個層,分別是13個卷積層+3個全連接層。如圖2-1,其中,13層的卷積層就是在不斷地提取特征,池化層就是使圖片的尺寸不斷在變小,例如,輸入圖片尺寸為224×224,由于pad=1,所以經過3×3的卷積核之后,圖片尺寸不變,所以圖片只有在池化層尺寸才會變小。而我們的Faster R-CNN,VGG16用的是 convolution layer
feature,一個卷積層的feature map。

當然,用這種網絡式的圖應該能夠更清楚(圖來自于網絡):

四、Faster R-CNN算法步驟

這部分是理解Faster R-CNN,先總體描述下算法的整個過程,以便后期我們做細節分析的時候,知道那個細節是在整個算法的哪個過程中。

由圖1可知,將整張圖片輸進CNN,得到feature map,卷積特征輸入到RPN,得到候選框的特征信息,對候選框中提取出的特征,使用分類器判別是否屬于一個特定類別,對于屬于某一特征的候選框,用回歸器進一步調整其位置。

Faster R-CNN可以看成是RPN和Fast R-CNN模型的組合體,即Faster R-CNN = RPN + Fast R-CNN。接下來,我們將一步步分析上圖3,搞清楚每個步驟的輸入輸出。

1.如圖3-1,首先通過預訓練模型訓練得到 conv layers

2.如圖3-2,這個conv layers實際上就是VGG-16,能夠接收整張圖片并提取特征圖feature maps,這個feature maps是在conv5_3獲得最后的特征(怎么一步步獲得特征的下面有具體分析)。

3.如圖3-4,這個feature maps被共享用于后續的RPN層和RoI池化層

4.如圖3-5,先看去往RPN層的:RPN網絡用于生成region proposals.該層通過softmax判斷anchors屬于前景(foreground)還是背景(background),再利用邊框回歸修正anchors,獲得精確的proposals

5.如圖3-6,接著是去往RoI pooling的:Roi Pooling層收集輸入的feature maps 和 proposals,綜合這些信息提取proposal feature map,進入到后面可利用全連接操作來進行目標識別和定位

最后的classifier會將Roi Pooling層形成固定大小的feature map進行全連接操作,利用Softmax進行具體類別的分類,同時,利用L1 Loss完成bounding box regression回歸操作獲得物體的精確位置.

五、細節部分解讀

  1. RPN網絡

    之前的R-CNN和Fast R-CNN都是采用可選擇性搜索(SS)來產生候選框的,但是這種方法特別耗時,因此,Faster R-CNN最大的亮點就是拋棄以往的SS,采用RPN來生成候選框。下圖是RPN網絡的結構圖。

    先對上圖做個注解:

    1. Conv feature map:VGG-16網絡最后一個卷積層輸出的feature map

    2. Sliding windows:滑動窗口,實際就是3*3的卷積核,滑窗只是選取所有可能的區域,并沒有什么額外的作用

    3. K anchor boxes:在每個sliding window的點上的初始化的參考區域(論文中k=9),其實就是9個矩形框

    4. Intermediate layer:中間層

    5. 256-d:中間層的維度(論文中有說用ZF網絡就是256維,VGG的話就512維)

    6. Cls layer:分類層,預測proposal的anchor對應的proposal的(x,y,w,h)

    7. 2k scores:2k 個分數(18個)

    8. Reg layer:回歸層,判斷該proposal是前景還是背景

    9. 4k coordinates:4k 坐標(36個)

  2. RPN實現方式

    RPN 的輸入是卷積特征圖,輸出是圖片生成的 proposals.如下圖,RPN通過一個滑動窗口,連接在最后一個卷積層(conv5-3的卷積)的feature map上,生成一個長度為256(對應于ZF網絡)維的全連接特征。

    接著如下圖,這個全連接特征分別送入兩個全連接層,一個是分類層,用于分類預測,另外一個是回歸層,用于回歸。對于每個華東窗口位置一般設置k(論文中k=9)個不同大小或比例的anchors,這意味著每個滑窗覆蓋的位置就會預測9個候選區域。

    對于分類層,每個 anchor 輸出兩個預測值:anchor 是背景(background,非object)的 score 和 anchor 是前景(foreground,object) 的 score;對于回歸層,輸出4k(4×9=36)個坐標值,表示各個候選區域的位置即(x,y,w,h)

    也就是說,在這里,我們是通過在這些特征圖上應用滑動窗口加anchor機制進行目標區域判定和分類的,這里的滑窗加anchor機制,功能其實就類似于 fast rcnn 的selective search 生成proposals 的作用,而我們是通過RPN來生成proposals。RPN就是一個卷積層+relu+左右兩個層(cls layer和reg layer)的小型網絡。

  3. anchor

    論文中的原話:The k proposals are parameterized relative to k reference boxes, which we call anchors。字面上可以理解為錨點,位于之前提到的

    3×3的滑窗的中心處。anchor實際上就是矩形,如下圖所示,9個anchor的中心點重合。對于一個滑窗,我們可以同時預測多個proposal,就是因為有多個anchor。這9個anchor是作者設置的,論文中scale ==[128,256,512],長寬比[1;1,1:2,2:1],所以有9種。自己可以根據目標的特點做出不同的設計。對于一幅W×H的feature map,共有W×H×k個錨點。

  4. VGG如何提取特征

    如下圖,這是VGG網絡的流程圖

    每個卷積層利用前面網絡信息來生成抽象描述. 第一層一般學習邊緣edges信息,第二層學習邊緣edges中的圖案patterns,以學習更復雜的形狀等信息. 最終,可以得到卷積特征圖,其空間維度(分辨率)比原圖小了很多,但更深. 特征圖的 width 和 height 由于卷積層間的池化層而降低,而 depth 由于卷積層學習的 filters 數量而增加.

  5. ROI pooling

    ROI就是region of interest,指的是感興趣區域,如果是原圖,roi就是目標,如果是featuremap,roi就是特征圖像目標的特征了,roi在這里就是經過RPN網絡得到的,總之就是一個框。pooling就是池化。所以ROI Pooling就是Pooling的一種,只是是針對于Rois的pooling操作而已。RPN 處理后,可以得到一堆沒有 class score 的 object proposals.待處理問題為:如何利用這些proposals分類.Roi pooling層的過程就是為了將不同輸入尺寸的feature map(ROI)摳出來,然后resize到統一的大小。

    ROI pooling層的輸入:

    • 特征圖feature maps(這個特征圖就是cnn卷積出來后的用于共享的那個特征圖)
    • roi信息(就是RPN網絡的輸出, 一個表示所有ROI的N×5的矩陣,其中N表示ROI的數目。第一列表示圖像index,其余四列表示其余的左上角和右下角坐標,坐標信息是對應原圖中的絕對坐標。)

    ROI pooling層的過程:

    首先將RPN中得到的原圖中的roi信息映射到feature上(按原圖與featuremap的比例縮小roi坐標就行了),然后經過最大池化,池化到固定大小w×h。但這個pooling不是一般的Pooling,而是將區域等分,然后取每一小塊的最大值,最后才能得到固定尺寸的roi。

    也就是:

    • 根據輸入的image,將Roi映射到feature map對應的位置;
    • 將映射后的區域劃分為相同大小的sections(sections數量和輸出的維度相同);
    • 對每個section進行max pooling操作;

    ROI pooling層的輸出:

    結果是,由一組大小各異的矩形,我們快速獲取到具有固定大小的相應特征圖。值得注意的是,RoI pooling 輸出的維度實際上并不取決于輸入特征圖的大小,也不取決于區域提案的大小。這完全取決于我們將區域分成幾部分。也就是,batch個roi矩陣,每一個roi矩陣為:通道數xWxH,也就是從selective search得到batch個roi,然后映射為固定大小。

  6. NMS

    NMS(Non Maximum Suppression,非極大值抑制)用于后期的物體冗余邊界框去除,因為目標檢測最終一個目標只需要一個框,所以要把多余的框干掉,留下最準確的那個。

    NMS的輸入:

    檢測到的Boxes(同一個物體可能被檢測到很多Boxes,每個box均有分類score)

    NMS的輸出:

    最優的Box.

    過程舉例:

    假設圖片中的某個目標檢測到 4 個 Boxes,每個 Box 分別對應一個類別 Score,根據 Score 從小到大排列依次為,(B1, S1), (B2, S2), (B3, S3), (B4, S4). S4 > S3 > S2 > S1.
    ***以上B代表的是框,S代表的是框的分數***Step 1. 根據Score 大小,挑Score最大的那個先,從 Box B4 框開始;
    Step 2. 分別計算 B1, B2, B3 與 B4 的重疊程度 IoU,判斷是否大于預設定的閾值;如果大于設定閾值,則舍棄該 Box;同時標記保留的 Box. 假設 B3 與 B4 的閾值超過設定閾值,則舍棄 B3,標記 B4 為要保留的 Box;
    Step 3. 從剩余的 Boxes 中 B1, B2 中選取 Score 最大的 B2, 然后計算 B2 與 剩余的 B1 的重疊程度 IoU;如果大于設定閾值,同樣丟棄該 Box;同時標記保留的 Box.
    重復以上過程,直到找到全部的保留 Boxes.
    
  7. 全連接層

    經過roi pooling層之后,batch_size=300, proposal feature map的大小是7×7,512-d,對特征圖進行全連接,參照下圖,最后同樣利用Softmax Loss和L1 Loss完成分類和定位。

    通過全連接層與softmax計算每個region proposal具體屬于哪個類別(如人,馬,車等),輸出cls_prob概率向量;同時再次利用bounding box regression獲得每個region proposal的位置偏移量bbox_pred,用于回歸獲得更加精確的目標檢測框

    即從PoI Pooling獲取到7x7大小的proposal feature maps后,通過全連接主要做了:

    通過全連接和softmax對region proposals進行具體類別的分類;

    再次對region proposals進行bounding box regression,獲取更高精度的rectangle box。

六、Loss Function

為了訓練RPN,作者給每個anchor分配了二類別標簽(是目標或者不是目標),還給兩種anchor設定了一個正標簽(兩種anchor分別是:①具有與實際邊界框的重疊最高交并比(IoU)的anchor,②具有與實際邊界框的重疊超過0.7 IoU的anchor),一個GT包圍盒可以對應多個anchor,這樣一個GT包圍盒就可以有多個正標簽。負標簽則是與所有GT包圍盒的IoU都小于0.3的anchor。剩下的既不是正樣本也不是負樣本,不用于最終訓練.

我們對一個圖像的損失函數如公式1 :共有兩大部分組成:分類損失(classification loss,就是分類分的準不準,比如這個目標是dog,你是否分類成pig或者cat了) 和回歸損失(regression loss,就是框畫的精不精確,比如這個目標是dog,這個框有沒有剛好框住dog,還是說只框住了一半) ,這兩大塊是按一定比重組成的(通過λ調節).

先大概解釋下公式中的變量:i是一個mini-batch中anchor的索引,Pi是anchor i是目標的預測概率。如果anchor為正,GT標簽Pi* 就是1,如果anchor為負,Pi* 就是0。ti是一個向量,表示預測的包圍盒的4個參數化坐標,ti* 是與正anchor對應的GT包圍盒的坐標向量。ti* 是與正anchor對應的GT包圍盒的坐標向量。λ是平衡參數,值為10,Ncls值為256,Nreg最大為2400,代表anchor的數量。

  • 分類損失

    分類損失Lcls是兩個類別(目標或者非目標)的對數損失:

    對于每一個anchor計算對數損失,然后累加求和求和除以總的anchor數量Ncls。

  • 回歸損失

    是一個向量,表示該anchor預測的偏移量,是與ti維度相同的向量,表示anchor相對于gt實際的偏移量。具體如下:

    x,y,w,h指的是包圍盒中心的(x, y)坐標、寬、高。變量x,xa,x*分別指預測的包圍盒、anchor的包圍盒、GT的包圍盒(對y,w,h也是一樣)的x坐標。可以理解為從anchor包圍盒到附近的GT包圍盒的包圍盒回歸。

    R是smoothL1 函數,就是這樣。

七、實驗結果分析

此次的Faster R-CNN是在pascal_voc數據集上訓練及測試的

1.檢測器使用的是Fast R-CNN和ZF。

由圖5-1可知,SS在Fast R-CNN框架下的mAP為58.7%,EB的mAP為58.6%。RPN與Fast R-CNN的mAP為59.9%。

2.檢測器使用的是Fast R-CNN和VGG16。

由圖5-2可知,使用RPN+VGG,非共享特征的結果是68.5%,高于SS的。這是因為RPN+VGG生成的提議比SS更準確。對于特性共享的RPN+VGG,mAP是69.9%,比SS要高很多。如果在PASCAL VOC 2007和2012的訓練評估數據集上進一步訓練RPN和檢測網絡,該mAP是73.2%,也就是說能達到更高。

3.檢測器使用的是Fast R-CNN和VGG16。

如圖5-3,是我自己訓練測試的結果與論文的mAP對比:

八、總結

Faster R-CNN創新點:

  • 設計 RPN,利用CNN卷積操作后的特征圖生成region proposals,代替了Selective Search的方法,速度上提升明顯;

  • 訓練 RPN 與檢測網絡Fast R-CNN共享卷積層,大幅提高網絡的檢測速度。

  • FasterR-CNN將一直以來分離的region proposal和CNN分類融合到了一起,使用端到端的網絡進行目標檢測,無論在速度上還是精度上都得到了不錯的提高。

RPN的核心思想是使用CNN卷積神經網絡直接產生Region Proposal,使用的方法本質上就是滑動窗口。RPN的作用:

  • 輸出proposal的位置(坐標)和score

  • 將不同scale和ratio的proposal映射為低維的feature vector

  • 輸出是否是前景的classification和進行位置的regression

總結

以上是生活随笔為你收集整理的目标检测——Faster R-CNN论文阅读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。