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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

發(fā)布時(shí)間:2025/3/11 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RCNN

這個(gè)網(wǎng)絡(luò)也是目標(biāo)檢測(cè)的鼻祖了。其原理非常簡(jiǎn)單,主要通過提取多個(gè)Region Proposal(候選區(qū)域)來判斷位置,作者認(rèn)為以往的對(duì)每個(gè)滑動(dòng)窗口進(jìn)行檢測(cè)算法是一種浪費(fèi)資源的方式。在RCNN中,不再對(duì)所有的滑動(dòng)窗口跑算法,而是只選擇一些窗口,在少數(shù)窗口上運(yùn)行CNN。

流程是:

  • 輸入圖像
  • 利用selective search對(duì)圖像生成1K~2K的候選區(qū)域(region proposal),這個(gè)量比傳統(tǒng)的算法要少得多。具體一點(diǎn),選出region proposal的方法是運(yùn)行圖像分割算法,對(duì)于分割算法跑出來的塊,把它作為可能的region proposal輸出。
  • 提取特征:將region proposal resize為統(tǒng)一大小,送進(jìn)去掉了softmax的CNN,對(duì)每個(gè)候region proposal提取特征
  • 對(duì)區(qū)域進(jìn)行分類:對(duì)從CNN output出來的特征向量送進(jìn)每一類的SVM分類, 如果我有十個(gè)類別,那么每個(gè)region proposal要跑10個(gè)SVM,得到類別。這里為什么要用SVM而不是softmax,有一種說法是為了解決樣本不均衡的問題,另外是早期神經(jīng)網(wǎng)絡(luò)還不如現(xiàn)在這樣發(fā)達(dá),當(dāng)時(shí)SVM還是比較領(lǐng)先的分類器。
  • 修正:對(duì)CNN output的特征向量(這個(gè)特征向量和第4步中拿去喂給SVM的是一個(gè)向量)做回歸(左上角右下角的四個(gè)坐標(biāo)),修正region proposal的位置。
  • Fast R-CNN

    前面聊的這個(gè)RCNN吧,有幾點(diǎn)問題:

  • 可以明顯地感受到它的計(jì)算量是非常大的,畢竟要對(duì)每個(gè)候選區(qū)域都進(jìn)行特征計(jì)算。
  • 冗余計(jì)算太多了,畢竟候選區(qū)域高度重疊。
  • 同時(shí)又不是端到端的訓(xùn)練,還麻煩。
  • 內(nèi)存占用:需要儲(chǔ)存多個(gè)SVM分類器和bounding box 回歸器
  • 對(duì)輸入圖片的大小有硬性要求
  • 這種情況下,二代目fast R-CNN出現(xiàn)了,它的流程是:

  • 將任意size的圖片輸入CNN,得到特征圖。在RCNN中,先生成region proposals再做卷積,相當(dāng)于做了多次卷積,浪費(fèi)時(shí)間。
  • 對(duì)原始圖片使用selective search算法得到約2k region proposals(相當(dāng)于RCNN的第一步)
  • 在特征圖中找到每一個(gè)region proposals對(duì)應(yīng)的特征框。在ROI池化層中將每個(gè)特征框池化到統(tǒng)一大小
  • 統(tǒng)一大小的特征框經(jīng)過全連接層得到固定大小的特征向量,分別進(jìn)行softmax分類(使用softmax代替了RCNN里面的多個(gè)SVM分類器)和bbox回歸
  • Fast R-CNN組合了classification和regression, 做成single Network,實(shí)現(xiàn)了端到端的訓(xùn)練,實(shí)際上它相對(duì)RCNN最大的改進(jìn)是拋棄了多個(gè)SVM分類器和bounding box回歸器的做法,一起輸出bbox和label, 很大程度上提升了原始RCNN的速度。

    這里出現(xiàn)了一個(gè)新的概念,ROI Polling,很重要,是考點(diǎn),解釋一下:

    ROI Pooling(Region of Interest)

    它的輸入是特征圖,輸出則是大小固定的channel x H x W的vector。ROI Pooling是將一個(gè)個(gè)大小不同的region proposals,映射成大小固定的(W x H)的矩形框。它的作用是根據(jù)region proposals的位置坐標(biāo)在特征圖中將相應(yīng)區(qū)域池化為固定尺寸的特征圖,以便進(jìn)行后續(xù)的分類和輸出回歸框操作。它可以加速處理速度。這個(gè)ROI Pooling在下面的Faster RCNN也會(huì)出現(xiàn),它的作用是類似的,就是將region proposals池化成同樣大小的vector,便于傳入后續(xù)分類網(wǎng)絡(luò)。

    ROI Pooling有兩個(gè)輸入,一個(gè)是圖片進(jìn)入CNN后的特征圖,另一個(gè)是區(qū)域的邊框。ROI 的輸出是一個(gè)region_nums x channels x W x H的向量。

    說到這里耶解釋一下ROI Pooling的進(jìn)階版本ROI Align。

    ROI Pooling在池化的時(shí)候需要對(duì)浮點(diǎn)數(shù)邊界int化,這樣會(huì)存在一定的偏差。在特征圖比原始圖片尺寸小的情況下,一點(diǎn)點(diǎn)的精度損失映射到原始圖片上就存在很大的像素點(diǎn)差別。而ROI Align就是取消了取整的操作,使用雙線性內(nèi)插的方法獲得坐標(biāo)未浮點(diǎn)數(shù)的像素點(diǎn)上的圖像數(shù)值。

    Faster RCNN

    在Fast RCNN的基礎(chǔ)上,Faster RCNN在性能上又有了進(jìn)步。Faster RCNN將特征抽取(feature extraction),proposal提取,bounding box regression,classification都整合在了一個(gè)網(wǎng)絡(luò)中,使得綜合性能有較大提高,在檢測(cè)速度方面尤為明顯。對(duì)比起它哥哥Fast-RCNN, 其實(shí)最重要的一點(diǎn)就是使用RPN(下面會(huì)詳細(xì)解說)來代替原來使用分割算法生成候選框的方式,極大的提升了檢測(cè)框生成速度。總地來說,Faster RCNN對(duì)Fast RCNN的改進(jìn)點(diǎn)在于獲得region proposals的速度要快很多。

    具體來說,它的網(wǎng)絡(luò)結(jié)構(gòu)長(zhǎng)這樣:

  • 提取特征:輸入固定大小的圖片,進(jìn)過卷積層提取特征圖feature maps
  • 生成region proposals: 然后經(jīng)過Region Proposal Networks(RPN)生成region proposals。該層通過softmax判斷anchors屬于foreground或者background,再利用bounding box 回歸修正anchors獲得精確的proposals(候選區(qū)域)。
  • ROI Pooling: 該層的輸入是feature maps和proposals,綜合這些信息后提取proposal feature maps
  • Classification: 將Roi pooling生成的proposal feature maps分別傳入softmax分類和bounding box regression獲得檢測(cè)物體類別和檢測(cè)框最終的精確位置。
  • 具體一點(diǎn)的圖長(zhǎng)這樣:

    Region Proposal Network(RPN)

    Faster-RCNN的巨大優(yōu)勢(shì)主要在于第二步Region Proposal Networks(RPN)的設(shè)計(jì)。傳統(tǒng)的Selective Search方法生成檢測(cè)框都很耗時(shí)。而使用RPN生成就會(huì)快很多,我們來看看RPN的原理叭

    RPN的作用是用來提取候選框的,類似于前面介紹的RCNN的第一步Selective Search。它的網(wǎng)絡(luò)結(jié)構(gòu)基于神經(jīng)網(wǎng)絡(luò),但是輸出的是包含二元softmax和bbox回歸的多任務(wù)模型。RPN網(wǎng)絡(luò)的輸入是前面CNN output的feature maps。我們?cè)趂eature map上做一個(gè)大小為3x3的滑窗操作, 得到一個(gè)channel是256維的特征圖,尺寸與input的特征圖相同,維度是256*H*W。對(duì)這個(gè)256維的向量,我們分別做兩次1x1卷積操作,一個(gè)得到2k score, 一個(gè)得到4k coordinates。這個(gè)2k score只區(qū)分是不是目標(biāo),輸出候選區(qū)域?qū)儆谇熬?#xff08;物體)和背景的分?jǐn)?shù),這里注意,這里的分類只區(qū)分是否包含目標(biāo),至于所包含目標(biāo)的類別,是Faster-RCNN最后的分類網(wǎng)絡(luò)干的事情。4k coordinates指的是對(duì)原圖坐標(biāo)的偏移。

    那么這個(gè)k又是什么東西呀?這里有一個(gè)anchor的概念,也是RPN的核心之一。論文預(yù)先設(shè)定好生成9個(gè)anchors。我們前面說到對(duì)于feature map, 我們有一個(gè)3*3的滑窗操作。對(duì)于每次滑窗所劃到的3x3的區(qū)域,就以該區(qū)域中心點(diǎn)為坐標(biāo),生成9個(gè)anchor。anchor它的本質(zhì)是,將相同尺寸的輸入,得到不同尺寸的輸出。它們的中心相同,但是有不同的長(zhǎng)寬比和尺度。這9個(gè)anchor, 中心坐標(biāo)一樣,但是大小各不相同,如下圖:

    而上文提到的k就是anchors的數(shù)量,所以2k個(gè)分?jǐn)?shù)就是9個(gè)anchors的共18個(gè)分?jǐn)?shù),36個(gè)坐標(biāo)。對(duì)于每個(gè)anchor, 計(jì)算anchor與ground-truth bounding boxes的IoU,大于0.7則判定為有目標(biāo),小于0.3則判定為背景,介于0.3-0.7,則設(shè)為0,不參與訓(xùn)練

    這么說完可能還是有點(diǎn)模糊,我們來看看RPN的代價(jià)函數(shù):

    代價(jià)函數(shù)有兩部分,對(duì)應(yīng)著RPN的兩條路線,即是否包含目標(biāo)和bbox的坐標(biāo)與anchor坐標(biāo)的回歸誤差。注意回歸誤差這一項(xiàng)中,L與p相稱,也就是說,如果anchor不包含目標(biāo),那么box輸出位置是不算誤差的,對(duì)于

    ,只計(jì)算 判定為有目標(biāo)的anchor。總的來說 ,就是交叉熵,分類的損失; ,計(jì)算每個(gè)anchor分配的四個(gè)坐標(biāo)和ground truth的坐標(biāo)的偏移量,用的是L1范數(shù)。看一下pytorch的官方實(shí)現(xiàn)你就懂了:self

    插嘴一句,我們現(xiàn)在在做目標(biāo)檢測(cè)基本是用YOLO了,賊快,Faster RCNN雖然已經(jīng)Faster了還是YOLO快!當(dāng)然region proposals的概念很值得了解,YOLO的缺點(diǎn)是在檢測(cè)小目標(biāo)時(shí)難以得到精確的定位。

    Faster R_CNN改進(jìn)方法

    Faster R-CNN從2015年被提出,后來也出現(xiàn)了不少改進(jìn)方法,下面列舉一些方向,有興趣可以再去深入研究:

    • 提取特征網(wǎng)絡(luò)的改進(jìn):使用ResNet代替原來的VGG提取特征,效果顯著
    • RPN升級(jí)版本:FPN
    • ROI升級(jí):PS_RPI
    • R-FCN
    • Mask R-CNN
    • DeepText
    • 訓(xùn)練過程中的hard-example finetune,可參見:視覺分類任務(wù)中處理不平衡問題的loss比較 - Daniel2333的博客 - CSDN博客
    • A-Fast-RCNN, 這篇文章引入了GAN, 在某些數(shù)據(jù)集上精度增加

    參考文獻(xiàn)

    曉雷:RCNN- 將CNN引入目標(biāo)檢測(cè)的開山之作

    最帥的大廚:RCNN-> SPP net -> Fast RCNN -> Faster RCNN

    Fast R-CNN論文詳解 - WoPawn的博客 - CSDN博客

    CNN目標(biāo)檢測(cè)(一):Faster RCNN詳解

    RPN 解析 - lanran2的博客 - CSDN博客

    目標(biāo)檢測(cè) - Faster R-CNN 中 RPN 原理

    RPN 解析 - lanran2的博客 - CSDN博客

    目標(biāo)檢測(cè) - Faster R-CNN 中 RPN 原理

    Faster-RCNN算法精讀 - hunterlew的專欄 - CSDN博客

    詳解 ROI Align 的基本原理和實(shí)現(xiàn)細(xì)節(jié)

    Faster R-CNN 深入理解 && 改進(jìn)方法匯總

    總結(jié)

    以上是生活随笔為你收集整理的faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。