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

歡迎訪問 生活随笔!

生活随笔

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

目标检测

【技术综述】一文道尽R-CNN系列目标检测

發(fā)布時間:2025/3/20 目标检测 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【技术综述】一文道尽R-CNN系列目标检测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章首發(fā)于微信公眾號《有三學AI》

【技術綜述】一文道盡R-CNN系列目標檢測

目標檢測任務關注的是圖片中特定目標物體的位置。一個檢測任務包含兩個子任務,其一是輸出這一目標的類別信息,屬于分類任務。其二是輸出目標的具體位置信息,屬于定位任務

分類的結果是一個類別標簽,對于單分類任務而言,它就是一個數(shù),對于多分類任務,就是一個向量。定位任務的輸出是一個位置,用矩形框表示,包含矩形框左上角或中間位置的x,y坐標和矩形框的寬度高度。

與計算機視覺領域里大部分的算法一樣,目標檢測也經(jīng)歷了從傳統(tǒng)的人工設計特征和淺層分類器的思路,到大數(shù)據(jù)時代使用深度神經(jīng)網(wǎng)絡進行特征學習的思路這一過程。

本文主要是為了介紹R-CNN、fast R-CNN、faster R-CNN系列。

?

01目標檢測基礎

不管用傳統(tǒng)方法,還是用深度學習方法來完成目標檢測任務,系統(tǒng)一定會遵循以下3個步驟。第一個是檢測窗口的選擇,第二個是圖像特征的提取,第三個是分類器的設計。

1.1 候選框提取

在傳統(tǒng)方法中,當我們要在不同的距離下檢測不同大小的目標時,最簡單也最直觀的方法就是用圖像金字塔+各種尺度比例的框+暴力搜索法:從左到右、從上到下滑動窗口,然后利用分類方法對目標框進行識別。

這種利用窗口滑動來確定候選框的方法可以實現(xiàn)我們的預期目標,但是我們不難想到,這種方法在使用過程中會產(chǎn)生大量的無效窗口,浪費了很多計算資源,而且無法得到精確的位置。

1.2 特征提取

在選定候選區(qū)域之后,我們需要提取圖像的特征來進行表達,傳統(tǒng)的有監(jiān)督的方法和以CNN為代表的無監(jiān)督特征學習方法都可以派上用場。常見的傳統(tǒng)特征有Haar特征、LBP、HOG等。這些特征都是研究人員通過長時間的學術研究和實際項目驗證得來的,雖然在比較簡單的任務中可以取得很好的結果,但是設計成本很高,而且面對復雜任務時魯棒性遠遠不夠。

1.3 分類器

最后是分類器,常常被使用的分類器包含Adaboost,SVM,Decision Tree等。在很多時候單一的分類器可能并不能滿足我們的要求,如今使用深度學習來完成各項任務,尤其是參加各類比賽的時候,一定會使用不同的模型不同的輸入進行Ensemble。比如我們常見的使用不同的裁剪子區(qū)域進行預測,或者使用不同的基準模型進行預測,最后取平均概率等。

傳統(tǒng)目標檢測方法以保羅·維奧拉和邁克爾·瓊斯于2001年提出的維奧拉-瓊斯目標檢測框架為代表,這是第一篇基于Haar特征和Adaboost分類器的檢測方法,也是首個實現(xiàn)實時檢測的框架,論文在2011年的CVPR會議上被評為龍格-希金斯獎。

這個算法包含以下幾個重要部分:

  • 利用Haar特征描述人臉的共有屬性。

  • 建立了被稱為積分圖像的特征,可以快速獲取幾種不同的矩形特征。

  • 利用Adaboost 算法進行訓練,通過弱分類器的組合實現(xiàn)速度較快精度也不錯的檢測方案。

  • 大家可以好好了解一下,尤其是積分圖和adaboost的思想,這個方法也是opencv中的cvHaarDetectObjects()算法。

    ?

    02?R-CNN系列算法

    傳統(tǒng)方法由于滑窗效率低下,特征不夠魯棒等原因限制了目標檢測的發(fā)展,導致其一直無法在工業(yè)界進行大規(guī)模落地。基于深度學習的方案致力于解決這幾個問題,力求能讓這個領域?qū)崿F(xiàn)進一步發(fā)展。

    根據(jù)檢測階段的不同,我們可以將深度學習方法分為one-stage檢測算法和two-stage檢測算法兩種。對于two-stage檢測方法來說,它先生成了可能包含物體的候選區(qū)域Region Proposal,然后在對這個候選區(qū)域做進一步的分類和校準,得到最終的檢測結果,代表方法有R-CNN系列方法。而單階段檢測算法直接給出最終的檢測結果,沒有經(jīng)過生成候選區(qū)域的步驟,典型代表為YOLO和SSD。

    我們今天主要介紹的是R-CNN系列的有關算法。

    2.1 selective search與R-CNN

    傳統(tǒng)目標檢測方法中的區(qū)域選擇過程用的是窮舉法的思路而不是生成候選區(qū)域方法,每滑一個窗口檢測一次,相鄰窗口信息重疊高,檢測速度慢,這導致出現(xiàn)非常多的無效區(qū)域的判斷,一張普通大小的圖像可以輕易提出超過1萬的候選區(qū)域。那有沒有辦法減小候選區(qū)域的數(shù)量呢?

    J. R. R. Uijlings在2012年提出了selective search方法,這種方法其實是利用了經(jīng)典的圖像分割方法Graphcut,首先對圖像做初始分割,然后通過分層分組方法對分割的結果做篩選和歸并,最終輸出所有可能位置,將候選區(qū)域縮小到2000個左右。

    具體來說,首先通過將圖像進行過分割得到若干等區(qū)域組成區(qū)域的集合S,這是一個初始化的集合;

    然后利用顏色、紋理、尺寸和空間交疊等特征,計算區(qū)域集里每個相鄰區(qū)域的相似度; 找出相似度最高的兩個區(qū)域,將其合并為新集并從區(qū)域集合中刪除原來的兩個子集。重復以上的迭代過程,直到最開始的集合S為空,得到了圖像的分割結果,得到候選的區(qū)域邊界,也就是初始框。

    有了這樣的大量降低計算量的候選框生成策略后,基于深度學習的早期目標檢測框架開始發(fā)展起來,比較典型的就是R-CNN算法。

    R-CNN即Region-based Convolutional Neural Networks,是一種結合區(qū)域提名(Region Proposal)和卷積神經(jīng)網(wǎng)絡(CNN)的目標檢測方法。

    R-CNN的網(wǎng)絡框架如下所示:

    在R-CNN框架中使用Selective search將候選區(qū)域控制在了2000個左右,然后將對應的框進行縮放操作,送入CNN中進行訓練,通過SVM和回歸器確定物體的類別并對其進行定位。由于CNN具有非常強大的非線性表征能力,可以對每一個區(qū)域進行很好的特征學習,所以性能大大提升。

    R-CNN的主要特點有以下三點:

    1、利用了selective search方法,即先通過實例分割將圖像分割為若干小塊,然后選擇相似度較高的小塊,把這些相似小塊合并為一個大塊,最后整個物體生成一個大的矩形框,通過這種方法大大提高候選區(qū)域的篩選速度。

    2、用在ImageNet數(shù)據(jù)集上進行學習的參數(shù)對神經(jīng)網(wǎng)絡進行預處理,解決了在目標檢測訓練過程中標注數(shù)據(jù)不足的問題。

    3、通過線性回歸模型對邊框進行校準,減少圖像中的背景空白,得到更精確的定位。

    該方法將PASCAL VOC上的檢測率從35.1%提升到了53.7%,其意義與AlexNet在2012年取得分類任務的大突破是相當?shù)?#xff0c;對目標檢測領域影響深遠。

    不過,selective search方案仍然有計算量過大的問題。

    2.2?SPPNet

    盡管 RCNN通過減少了候選框減少了計算量,利用了CNN進行學習提升了特征表達能力,但是它仍然有兩個重大缺陷。

    • 其一是冗余計算,因為R-CNN的方法是先生成候選區(qū)域,再對區(qū)域進行卷積,其中候選區(qū)域會有一定程度的重疊,因為selective search方法仍然不夠好,導致CNN對相同區(qū)域進行重復卷積提取特征。而且R-CNN方法將提取后的特征存儲下來,然后使用傳統(tǒng)的SVM分類器進行分類,導致需要很大的存儲空間。

    • 其二是候選區(qū)域的尺度縮放問題,因為R-CNN方法將所有區(qū)域縮放到同一尺度進行網(wǎng)絡訓練,而實際selective search選取的目標框有各種尺寸,這可能導致目標的變形,無論是剪裁還是縮放都不能解決這個問題。

    SPP-Net主要對第二個缺陷進行改進,其主要思想是去掉了原始圖像上的crop/warp等操作,換成了在卷積特征上的空間金字塔池化層(Spatial Pyramid Pooling,SPP)

    之所以要對圖像進行縮放到固定的尺度,是因為全連接層的存在。全連接層的輸入需要固定的大小,所以要使用不同大小的圖片,就必須在輸入全連接層之前進行統(tǒng)一變換。

    但是直接進行裁剪或縮放會使圖片信息發(fā)生丟失,有時候會因為候選框太小的原因?qū)е轮荒塬@得部分目標,使輸入神經(jīng)網(wǎng)絡的信息不完整,如下圖。

    圖像裁剪之后再進行縮放操作又會導致物體變形失真,同樣影響檢測效果。

    SPP提出可以通過一個特殊的池化層,Spatial Pyramid Pooling層來解決,它實現(xiàn)了將輸入的任意尺度的特征圖組合成了特定維度的輸出,從而去掉了原始圖像上的crop/warp等操作的約束。

    Spatial Pyramid Pooling是在卷積特征上的空間金字塔池化層,不管輸入的圖像是多大,假設最終的單個通道的featuramap尺度為N*N。

    利用max pooling操作將其分成1x1,2x2,4x4的3張子圖,從而原來任意的N*N的featuremap,都被表示成為21維的固定維度的向量,然后輸入全連接層。在實際進行檢測任務的時候,就可以根據(jù)任務本身來設計這個spp操作。這樣就解決了不同輸入大小圖的問題,避免了縮放變形等操作。

    ?

    2.3 Fast R-CNN

    在RCNN中,對于每一個候選區(qū)域都使用CNN進行特征提取,沒有共享計算,這其實包含了非常多的冗余操作。那能否像V-J算法中的積分圖一樣,只需要提取一次特征就能完成操作呢?

    Fast R-CNN借鑒了SPP的思想,解決了這個問題。 Fast R-CNN的流程就是,首先以整張圖片為輸入,利用CNN得到圖片的特征層。然后,利用selective search算法得到原始圖像空間中的候選框,并將這些候選框投影到特征層。針對特征層上的每個不同大小的候選框,使用RoI池化操作,得到固定維度的特征表示,最后通過兩個全連接層,分別用softmax分類以及回歸模型進行檢測。

    與R-CNN的區(qū)別之處就在于RoI(Region of Interesting)Pooling層,它是一個簡化的SPP層。

    一張圖經(jīng)過卷積后,會得到相應的feature map,feature map的每一個像素都可以對應回原始的圖像。任何一個候選區(qū)域,我們只需要獲取它的左上右下兩個點對應到feature map中的位置,就能從feature map中取到這個候選區(qū)域?qū)奶卣?#xff0c;這就是一個簡單的映射,如下圖:

    令S是stride的大小,也就是從原始分辨率到當前分辨率尺度的降低倍率,則從原圖的坐標(x,y)對應到featuremap的坐標(x’,y’),就是

    x’=x/S ,y’=y/S? ? ? ? ? ? ? ? ? ? ? ? ? ??

    根據(jù)圖片填充的不同,需要計算相應的偏移值,但是這是一一對應的。此時,任意的圖像區(qū)域的特征,都可以從特征圖中獲取,就沒有必要使用不同的CNN網(wǎng)絡進行特征的提取了。而是實現(xiàn)了一次卷積處處可用,類似于積分圖的思想,從而大大降低了計算量。

    同時它的訓練和測試不再分多步,不再需要額外的硬盤來存儲中間層的特征,梯度也能夠通過RoI Pooling層直接傳播。Fast R-CNN還使用SVD分解全連接層的參數(shù)矩陣,壓縮為兩個規(guī)模小很多的全連接層。

    2.4 Faster R-CNN

    R-CNN,SPPNet,Fast R-CNN都沒有解決一個問題,就是selective search方法低效率的滑動窗口選擇問題,它仍然生成了大量無效區(qū)域,多了造成算力的浪費,少了則導致漏檢。

    因此,任少卿等人提出了Faster RCNN方法。在Faster RCNN框架中,提出了Region Proposal Networks,簡稱RPN框架。它實現(xiàn)了利用神經(jīng)網(wǎng)絡自己學習生成候選區(qū)域的策略,充分利用了feature maps的價值,在目標檢測中徹底去除了selective search方法。

    Faster R-CNN是深度學習中的two-stage方法的奠基性工作,提出的RPN網(wǎng)絡取代Selective Search算法后使得檢測任務可以由神經(jīng)網(wǎng)絡端到端地完成。

    粗略的講,Faster R-CNN = RPN + Fast R-CNN,因為Fast RCNN具有共享卷積計算的特性,所以使得新引入的RPN的計算量很小, Faster R-CNN可以在單個GPU上以5fps的速度運行。

    所謂RPN,就是以一張任意大小的圖片作為輸入,輸出一批矩形區(qū)域的提名,每一個區(qū)域都會對應目標的分數(shù)和位置信息。實際就是在最終的卷積特征層上,在每個點利用滑窗生成k個不同的矩形框來提取區(qū)域,k一般取為9。

    K個不同的矩形框被稱為anchor,具有不同尺度和比例。用分類器來判斷anchor覆蓋的圖像是前景還是背景。對于每一個anchor,還需要使用一個回歸模型來回歸框的精細位置。

    Faster R-CNN中RPN的結構如下:

    ?

    與selective search方法相比,RPN網(wǎng)絡將候選區(qū)域的選擇從圖像中移到了feature map中,因為feature map的大小遠遠小于原始的圖像,此時的滑動窗口的計算量呈數(shù)量級的降低。并且RPNs和RoI Pooling還共用了基礎的網(wǎng)絡,更是大大地減少了參數(shù)量和預測時間。由于是在特征空間進行候選框生成,可以學到更加高層語義的抽象特征,生成的候選區(qū)域的可靠程度也得到了大大提高。

    Faster R-CNN的主要步驟如下:

    • 特征提取:與Fast R-CNN相同,Faster R-CNN把整張圖片輸入神經(jīng)網(wǎng)絡中,利用CNN處理圖片得到feature map;

    • 區(qū)域提名:在上一步驟得到的feature map上學習proposal的提取;

    • 分類與回歸:對每個Anchor Box對應的區(qū)域進行二分類,判斷這個區(qū)域內(nèi)是否有物體,然后對候選框位置和大小進行微調(diào),分類。

    理論上就這么多,理解起來很簡單,但是實際實現(xiàn)細節(jié)非常多,請大家關注今天的另外一篇文章,《萬字長文詳解Faster RCNN源代碼》。

    ?

    同時,在我的知乎專欄也會開始同步更新這個模塊,歡迎來交流

    https://zhuanlan.zhihu.com/c_151876233

    感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內(nèi)容將會不定期奉上,歡迎大家關注有三公眾號 有三AI

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的【技术综述】一文道尽R-CNN系列目标检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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