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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

【CV】通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster

發布時間:2025/3/8 目标检测 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【CV】通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全文5500個字,22幅圖,學習時長預計20分鐘

目錄

  • 0?概述

  • 1?RCNN

    • 1.1 候選區Region Proposal

    • 1.2 特征提取

    • 1.3 SVM分類

    • 1.4 線性回歸

  • 2 SPP Net

  • 3 Fast RCNN

  • 4 Faster RCNN

  • 5 總結

0 概述

本文主要講一下深度網絡時代,目標檢測系列的RCNN這個分支,這個分支就是常說的two-step,候選框 + 深度學習分類的模式:RCNN->SPP->Fast RCNN->Faster RCNN

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

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

1 RCNN

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

  • 第一步,生成候選區

  • 第二步,判斷每個候選區的類別 2.1 用CNN提取特征 2.2 用SVM分類 2.3 用線性回歸矯正候選框的位置

  • 1.1 候選區Region Proposal

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

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

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

  • 使用一種過分割手段,將圖像分割成過小的區域;

  • 查看現有小區域,合并可能性最高的兩個區域,重復直到整張圖像合并成一個區域位置;;

  • 輸出所有曾經存在過的區域,也就是從小合并到大的所有出現過的大大小小的候選框,即所謂候選區域。

  • 【合并遵守的原則】

  • 顏色(顏色直方圖)相近的;

  • 紋理(梯度直方圖)相近的;

  • 合并后總面積小的;

  • 1.2 特征提取

    之前選出來的大大小小的候選框,其實就是大大小小的圖片。這里把圖片都縮放成統一的227*227的大小,然后把統一大小的圖片輸入到CNN中,進行特征提取。這里的特征網絡是一個比較簡單的網絡(當年resnet啊googlenet啊都沒提出來,BN層也沒提出來,所以結構如下)

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

    1.3 SVM分類

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

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

    • one vs one:就是假設5個類別,那么兩兩類別之間訓練一個SVM,總共訓練10個SVM,然后把一個圖片放入這個10個SVN,然后對于結果進行投票;

    • one vs all:這個5分類任務,就訓練5個SVM,然后每個SVM訓練的正負樣本就是:是這個類別的和不是這個類別的。淦!語言說的不清楚。

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

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

    1.4 線性回歸

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

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

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

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

    2 SPP Net

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

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

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

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

    【crop與warp】

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

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


    【如何避免使用warp和crop】SPP net使用了SPP空間金字塔池化層,來實現了這個功能。先看和RCNN的模型結構對比:

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


    【SPP層如何實現尺寸輸入不同輸出相同的呢?】ROI pooling是空間金字塔池化層的更底層的結構。準確的說,是ROI池化層實現的輸入尺寸不同,輸出相同的功能。

    • ROI Pooling=Region of Interest Pooling感興趣區域池化層

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

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

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


    【SPPnet比RCNN好在哪里?】

  • 通過使用SPP結構(ROI池化層),避免了warp和crop的使用,避免了圖像失真;

  • RCNN的處理順序是:先把候選框的圖扣出來,再放到卷積層進行訓練得到特征圖;SPPNet是先把原圖通過卷積層得到特征圖,然后把候選框的大小映射到特征圖上再摳出來。哪個速度快不用我多說了吧。就好比,我通知個消息,我一個一個好友的轉發,與我把好友拉到一個群里,我在群里發一樣(這是個不太恰當的例子可能)。總之,這樣RCNN需要卷積2000個候選框,而SPPNet只需要卷積一次,速度提升了100倍。

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

    3 Fast RCNN

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

    【R-CNN vs Fast R-CNN】

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

  • **不再使用SVM+線性回歸的方法,而是全部通過神經網絡來實現分類和邊框回歸的任務。**Fast-RCNN很重要的一個貢獻是成功的讓人們看到了Region Proposal + CNN這一框架的可行性,不再使用Region Proposal + CNN + SVM + LR的框架了。

  • 現在梳理一些Fast RCNN推理的流程。

  • 現在有一個原圖,先通過selective search得到候選框;

  • 將原圖放到CNN中進行特征處理,得到特征圖,然后將候選框映射到特征圖上,得到大小不同的特征圖的候選框。

  • 把特征圖候選框放到ROI pooling層中(只有一個,不是SPP的3個ROI結構了),輸出7*7的特征圖,這時候有512個通道,所以在ROI輸出之后,把7*7*512個特征放到FC層中。

  • FC層后接入了兩個不同的FC層(分支結構),分別輸出兩個不同的結果。第一個結果加上softmax變成候選框的類別概率,第二個結果就是候選框的4個參數的邊框回歸的值。

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

    現在,目標檢測一張圖片,只需要0.32秒鐘,之前的RCNN可是47秒。

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

    4 Faster RCNN

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

    為了更快,使用神經網絡來代替selective search,所以現在,Faster RCNN整體就是一個神經網絡來搞,一個端對端的模型。(輸入圖片,輸出候選框,一個模型完成所有任務所以是端對端)。

    【區域候選網絡RPN】Faster RCNN最大的貢獻在一引入了Region Proposal Network(RPN)網絡來代替selective search。

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

    【Archor box先驗框】 這里還會有一個archor box的概念,因為滑動窗口一般是正方形的,但是實際的目標檢測可能是長方形。也許比較近似正方形的長方形可以通過邊框回歸矯正,但是其他的長方形物體就非常難辦了。這里事先設置了幾種不同形狀大小的候選框,除了正方形之外,還有長方形,小正方形等,這樣雖然成倍的增加了計算量,但是可以提高準確度。而且這樣增加候選框的計算量消耗依然是小于selective search的。

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

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

    整個網絡有四個損失函數:

    • RPN的二分類損失函數

    • RPN的邊框回歸損失函數

    • FAST RCNN的多分類損失函數

    • Fast RCNN的邊框回歸損失函數

    然后看看速度比Fast RCNN更快了。Faster R-CNN的主要貢獻就是設計了提取候選區域的網絡RPN,代替了費時的選擇性搜索Selective Search,使得檢測速度大幅提高。

    5 總結

    這里有個圖來總結:

    項目

    R-CNN

    Fast R-CNN

    Faster R-CNN

    提取候選框

    Selective Search

    Selective Search

    RPN網絡

    提取特征

    卷積神經網絡(CNN)

    卷積神經網絡+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)

    往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群: 與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的【CV】通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster的全部內容,希望文章能夠幫你解決所遇到的問題。

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