目標檢測論文整理


原文:https://www.cnblogs.com/yhyue/p/9247962.html,如有侵權請聯系我。 

  • RCNN
  • Overfeat
  • MR-CNN
  • SPPNet
  • Fast RCNN
  • A Fast RCNN
  • Faster RCNN
  • FPN
  • R-FCN
  • Mask RCNN
  • YOLO
  • YOLO 9000
  • YOLO v3
  • SSD
  • DSSD
  • R-SSD
  • RetinaNet(focal loss)
  • DSOD
  • Cascade R-CNN
    (待續)

RCNN之前的故事

Histogram of Gradient (HOG) 特征

在深度學習應用之前,圖像的特征是人工定義的具有魯棒性的特征,如SIFT,HOG等,下面簡要介紹一下HOG。
8x8像素框內計算方向梯度直方圖:

HOG Pyramid

特征金字塔,對於不同大小的物體進行適應,設計尺度不變性特征

HOG特征 -> SVM分類

DPM模型 Deformable Part Model

加組件組合的HOG特征, 組件間計算彈性得分,優化可變形參數

如果沒有彈性距離,就是BoW (Bag of Word)模型, 問題很大, 位置全部丟失:

n個組件的DPM計算流程:

Selective Search 思想

過分割后基於顏色紋理等相似度合並,
然后,過分割、分層合並、建議區域排序

基於Selective Search + DPM/HoG + SVM的物體識別

此時的框架就是RCNN的雛形,因為DPM就是基本由RBG和他導師主導,所以大神就是大神。

AlexNet的圖像分類(深度學習登場)

2012年AlexNet贏得LSVRC的ImageNet分類競賽。深度CNN結構用來圖像特征提取。

bounding-box regression 框回歸

BBR 在DPM時代就和SVM分類結合,一般直接使用線性回歸,或者和SVR結合

RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation

RCNN作為深度學習用於目標檢測的開山之作,可以看出是基於Selective Search + DPM/HoG + SVM框架,只不過將是將手工特征轉變為CNN提取特征,本文主要貢獻如下:

  • CNN用於object detection
  • 解決數據集不足的問題


主要流程如下:

  1. regional preposals(selective research)

  2. CNN feature extraction

  3. SVM Classification

  4. NMS

  5. bounding-box regression(BBR)

為啥能work?

  • 優秀的目標檢測框架,region proposal 和 regression offset降低了目標檢測的難度,
  • 強大的CNN特征提取器,代替傳統的已經到瓶頸的手工特征
  • 遷移訓練降低了對數據集的要求

MR-CNN:Object detection via a multi-region & semantic segmentation-aware CNN model

Multi-Region的提出, 開始對Box進一步做文章, 相當於對Box進一步做增強,希望改進增強后的效果,主要改善了部分重疊交叉的情況。

特征拼接后使得空間變大,再使用SVM處理, 效果和R-CNN基本類似.

OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

不得不說雖然OverFeat在但是比賽成績不是太好,但是它的思想還是很有啟發性的。
OverFeat直接拋棄了Selective Search,采用CNN上slide windows來進行框推薦,並且把Bounding box Regression整合一起使用全連接層搞定, 解決了后面一端的問題(取代了SVM分類器和BBR線性回歸器),這個思想影響了后來的Fast RCNN。是第一個End to End 的目標檢測模型,模型雖然簡陋,但是可以驗證網絡強大的擬合能力注意整合目標檢測的各項功能(分類,回歸)。

亮點:

  • 先用CNN得到feature map再做slide windows推薦區域,避免了特征重復計算。
  • 設計了End to End模型,方便優化和加快檢測速度
  • 設計全卷積網絡,並進行多尺度圖像訓練
  • maxpool offset(沒有Fast RCNN的ROI Pooling自然)

為啥能work?
可以看出OverFeat將不同的兩個問題物體分類和位置回歸采用了兩個分支網絡,共用前面的CNN特征表述,而CNN提取的特征正如OverFeat所言,是一種類似於SIFT,HOG等人工描述子的一種穩定的描述子(底層抽象),可以用於構建不同的任務(高層表述),也就是模型為什么能work的原因。

SPPNet

R-CNN和Overfeat都存在部分多尺度,重疊效果的問題。 某種意義上, 應對了HoG特征, 這樣對於物體來說類似BoW模型, 我們知道DPM里面,是帶有組件空間分布的彈性得分的, 另外也有HoG Pyramid的思想。 如何把Pyramid思想和空間限制得分加入改善多尺度和重疊的效果呢? MR-CNN里面嘗試了區域增強, Overfeat里面嘗試了多尺度輸入。 但是效果都一般。 這里我們介紹另外一個技術Spatial Pyramid Matching, SPM,是采用了空間尺度金字塔的特點。和R-CNN相比做到了先特征后區域, 和Overfeat相比自帶Multi-Scale。

SPP pooling layer 的優勢:

  • 解決了卷積層到全連接層需要固定圖片大小的問題,方便多尺度訓練。
  • 能夠對於任意大小的輸入產生固定的輸出,這樣使得一幅圖片的多個region proposal提取一次特征成為可能。
  • 進一步強調了CNN特征計算前移, 區域處理后移的思想, 極大節省計算量


也能看出文章還是強調用CNN做特征的提取,還是用的BBR和SVM完成回歸和分類的問題

Fast RCNN

可以看出Fast RCNN結合了OverFeat和Sppnet的實現,打通了高層表述和底層特征之間的聯系


主要流程

  • 任意size圖片輸入CNN網絡,經過若干卷積層與池化層,得到特征圖;

  • 在任意size圖片上采用selective search算法提取約2k個建議框;

  • 根據原圖中建議框到特征圖映射關系,在特征圖中找到每個建議框對應的特征框【深度和特征圖一致】,並在RoI池化層中將每個特征框池化到H×W【VGG-16網絡是7×7】的size;

  • 固定H×W【VGG-16網絡是7×7】大小的特征框經過全連接層得到固定大小的特征向量;

  • 將上一步所得特征向量經由各自的全連接層【由SVD分解實現(全連接層加速)】,分別得到兩個輸出向量:一個是softmax的分類得分,一個是Bounding-box窗口回歸;

  • 利用窗口得分分別對每一類物體進行非極大值抑制剔除重疊建議框

其中ROI POOL層是將每一個候選框映射到feature map上得到的特征框經池化到固定的大小,其次用了SVD近似求解實現全連接層加速。

這里需要注意的一點,作者在文中說道即使進行多尺度訓練,map只有微小的提升,scale對Fast RCNN的影響並不是很大,反而在測試時需要構建圖像金字塔使得檢測效率降低。這也為下一步的多尺度改進埋下了伏筆。

為啥能更好的work?
也是結合了OverFeat的和SPPnet的work,同時規范了正負樣本的判定(之前由於SVM和CNN對區域樣本的閾值划分不同而無法統一網絡,當然這只是其中的一個原因。更多的估計是作者當時沒想到),將網絡的特征抽取和分類回歸統一到了一個網絡中。

A Fast RCNN: Hard Positive Generation via Adversary for Object Detection

這篇論文是對,CMU與rbg的online hard example mining(OHEM)改進,hard example mining是一個針對目標檢測的難例挖掘的過程,這是一個更充分利用數據集的過程。實際上在RCNN訓練SVM時就已經用到,但是OHEM強調的是online,即如何在訓練過程中選擇樣本。同期還有S-OHEM的改進。

而隨着但是GAN的火熱,A-Fast-RCNN嘗試生成hard example(使用對抗網絡生成有遮擋和有形變的兩種特征,分別對應網絡ASDN和ASTN)

結論如下:
ASTN 和 隨機抖動(random jittering)做了對比,發現使用AlexNet,mAP分別是58.1%h和57.3%,使用VGG16,mAP分別是69.9%和68.6%,ASTN 的表現都比比隨機抖動效果好。作者又和OHEM對比,在VOC 2007數據集上,本文方法略好(71.4% vs. 69.9%),而在VOC 2012數據集上,OHEM更好(69.0% vs. 69.8%)。gan用於目標檢測還沒有很好的idea,這篇論文相當於拋磚引玉了。
同時需要注意的一個問題,網絡對於比較多的遮擋和形變情況識別情況更好;但是對於正常目標的特征抽象能力下降,所以有時候創造難例也要注意樣本的數量。下面是一些由於遮擋原因造成的誤判。

Faster RCNN:Towards Real-Time Object Detection with Region Proposal Networks

這篇文章標志着two-stage目標檢測的相對成熟,其主要改進是對候選區域的改進,將候選區域推薦整合進了網絡中。


結合后面的一系列文章,可以馬后炮一下它的缺點:

  • 雖然Faster RCNN已經共享了絕大部分卷積層運算,但是RoI之后還有部分ConvNet的計算,有沒有可能把ROI之上的計算進一步前移? 請看R-FCN
  • Faster RCNN還是沒有很好的解決多尺度問題,如何解決,請看FPN

YOLO:You Only Look Once

作者的論文簡直是一股論文界的泥石流,作者本身是一個喜歡粉紅小馬的大叔,萌萌噠。實際上YOLO一直發展到v3都是簡單粗暴的目標檢測方法,雖然學術界模型繁雜多樣,但是在實際應用工業應用上YOLO絕對是一個首選的推薦。YOLO v1版本現在看來真是簡單粗暴,也印證了網絡抽象的強大之處。可以看出作者沒有受到太多前輩的影響,將對象檢測重新定義為單個回歸問題,直接從圖像像素到邊界框坐標和類概率(當然這也是一個缺少坐標約束也是一個缺點)。

YOLO的明顯缺點,如多尺度問題,密集物體,檢測框耦合,直接回歸坐標等在yolo 9000中也做了比較好的改進。

SSD:Single Shot MultiBox Detector

SSD作為one stage的代表模型之一,省去了判斷推薦候選區域的步驟(實際上可以認為one-stage就是以feature map cell來抽象代替ROI Pooling功能) ,雖然SSD和Faster RCNN在Anchor box上一脈相承,但是Faster RCNN卻還是有一個推薦候選區域(含有物體的區域)的監督部分(注意后面其實也是整合到了最終Loss中),因此one-stage優勢是更快,而含有區域推薦的two-stage目前是更加准確一些。(更看好one-stage,其實區域推薦不太符合視覺系統,但是可以簡化目標檢測問題),主要貢獻:

  • 用多尺度feature map來預測,也生成了更多的default box
  • 檢測框對每一類對象產生分數(低耦合,對比yolo)



缺點:

  • 底層feature map高級語義不足 (FPN)
  • 正負樣本影響 (focal loss)
  • feature map抽象分類和回歸任務只用了兩個卷積核抽象性不足(DSSD)

為啥能更好的工作?
SSD的出現對多尺度目標檢測有了突破性進展,利用卷積層的天然金字塔形狀,設定roi scale讓底層學習小物體識別,頂層學習大物體識別

FPN:feature pyramid networks

SSD網絡引入了多尺度feature map,效果顯著。那Faster RCNN自然也不能落后,如何在Faster RCNN中引入多尺度呢?自然有FPN結構
同時FPN也指出了SSD因為底層語義不足導致無法作為目標檢測的feature map



注意原圖的候選框在Faster RCNN中只固定映射到同一個ROI Pooling中,而現在如果某個anchor和一個給定的ground truth有最高的IOU或者和任意一個Ground truth的IOU都大於0.7,則是正樣本。如果一個anchor和任意一個ground truth的IOU都小於0.3,則為負樣本。
本文算法在小物體檢測上的提升是比較明顯的,另外作者強調這些實驗並沒有采用其他的提升方法(比如增加數據集,迭代回歸,hard negative mining),因此能達到這樣的結果實屬不易。

DSSD:Deconvolutional Single Shot Detector

一個SSD上移植FPN的典型例子,作者主要有一下改動:

  • 將FPN的Upsampling變成deconv
  • 復雜了高層表述分支(分類,回歸)網絡的復雜度


R-SSD:Enhancement of SSD by concatenating feature maps for object detection

本文着重討論了不同特征圖之間的融合對SSD的影響(水論文三大法寶),這篇論文創新點不是太多,就不說了

DSOD: Learning Deeply Supervised Object Detectors from Scratch


這篇文章的亮點:

  • 提出來了不需要預訓練的網絡模型
  • DSOD實際上是densenet思想+SSD,只不過並不是在base model中采用densenet,而是密集連接提取default dox的層,這樣有一個好處:通過更少的連接路徑,loss能夠更直接的監督前面基礎層的優化,這實際上是DSOD能夠直接訓練也能取得很好效果的最主要原因,另外,SSD和Faster RCNN直接訓練無法取得很好的效果果然還是因為網絡太深(Loss監督不到)或者網絡太復雜。
  • Dense Prediction Structure 也是參考的densenet
  • stem能保留更多的信息,好吧,這也行,但是對效果還是有提升的。

YOLO 9000:Better, Faster, Stronger

很喜歡這個作者的論文風格,要是大家都這么寫也會少一點套路,多一點真誠。。。。文章針對yolo做了較多的實驗和改進,簡單粗暴的列出每項改進提升的map。這個建議詳細的看論文。下面列舉幾個亮點:

  • 如何用結合分類的數據集訓練檢測的網絡來獲得更好的魯棒性
  • 將全連接層改為卷積層並結合了細粒度信息(passthrough layer)
  • Multi-Scale Traning
  • Dimension Clusters
  • darknet-19更少的參數
  • Direct locaion prediction對offset進行約束


R-FCN:Object Detection via Region-based Fully Convolutional Networks

本文提出了一個問題,base CNN網絡是為分類而設計的(pooling 實際上是反應了位置的不變性,我一張人臉圖片只要存在鼻子,兩只眼睛,分類網絡就認為它是人臉,這也就是Geoffrey Hinton 在Capsule中吐槽卷積的缺陷),而目標檢測則要求對目標的平移做出准確響應。Faster RCNN是通過ROI pooling讓其網絡學習位置可變得能力的,再次之前的base CNN還是分類的結構,之前講過R-FCN將Faster RCNN ROI提取出來的部分的卷積計算共享了,那共享的分類和回歸功能的卷積一定在划分ROI之前,那么問題來了,如何設計讓卷積對位置敏感?

主要貢獻:

  • 將用來回歸位置和類別的卷積前置共享計算,提高了速度。
  • 巧妙設計score map(feature map)的意義(感覺設計思想和yolo v1最后的全連接層一樣),讓其何以獲得位置信息,之后在經過ROI pooling和vote得到結果

為啥能work?
實際上rfcn的feature map設計表達目標檢測問題的方式更加抽象(ROI pool前的feature map中每一個cell的channel代表定義都很明確),loss在監督該層時更能通過論文中關於ROI pool和vote設計,在不同的channel上獲得高的響應,這種設計方式可能更好優化(這個是需要大量的實驗得出的結論),至於前面的resnet-base 自然是抽象監督,我們本身是無法理解的,只是作為fintuning。實際上fpn的loss監督也是非常淺和明確的,感覺這種可以理解的優化模塊設計比較能work。

Focal Loss: Focal Loss for Dense Object Detection

這篇文章實際上提供了另外一個角度,之前一直認為Single stage detector結果不夠好的原因是使用的feature不夠准確(使用一個位置上的feature),所以需要Roi Pooling這樣的feature aggregation辦法得到更准確的表示。但是這篇文章基本否認了這個觀點,提出Single stage detector不好的原因完全在於:

  • 極度不平衡的正負樣本比例: anchor近似於sliding window的方式會使正負樣本接近1000:1,而且絕大部分負樣本都是easy example,這就導致下面一個問題:gradient被easy example dominant的問題:往往這些easy example雖然loss很低,但由於數 量眾多,對於loss依舊有很大貢獻,從而導致收斂到不夠好的一個結果。
    所以作者的解決方案也很直接:直接按照loss decay掉那些easy example的權重,這樣使訓練更加bias到更有意義的樣本中去。很直接地,如下圖所示:

    實驗中作者比較了已有的各種樣本選擇方式:

  • 按照class比例加權重:最常用處理類別不平衡問題的方式
  • OHEM:只保留loss最高的那些樣本,完全忽略掉簡單樣本
  • OHEM+按class比例sample:在前者基礎上,再保證正負樣本的比例(1:3)

Focal loss各種吊打這三種方式,coco上AP的提升都在3個點左右,非常顯著。值得注意的是,3的結果比2要更差,其實這也表明,其實正負樣本不平衡不是最核心的因素,而是由這個因素導出的easy example dominant的問題。
RetinaNet 結構如下

實際上就是SSD+FPN的改進版

Cascade R-CNN Delving into High Quality Object Detection


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM