目標檢測-深度學習算法總結(從R-CNN到......最新..........)

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/weixin_44474718/article/details/89414127

僅作爲個人筆記:如有不對,歡迎指出…

回過頭來,發現寫的都是什麼東西。決定重新完善,重點在於紅色字體-(個人認爲比較重要的),其餘的是否修改視情況而定——2019.08.30

在這裏插入圖片描述

預熱(缺啥補啥…):

mAP指標的通俗解釋:
  • P(準確率)=TP/(TP+FP),預測爲正例的那些數據裏預測正確的個數(你給出的結果有多少是正確的)
  • R(召回率) =TP/P, 實際爲正例的那些數據裏預測正確的個數(正確的結果有多少被你給出了)
  • AP(平均精確度):不同召回率上的正確率的平均值
  • mAP: 所有類別的平均精度(AP)求和除以所有類別。
  • P—R曲線:P-R曲線,顧名思義,就是P-R的關係曲線圖,表示了召回率和準確率之間的關係;我們可以在座標系上做以 precision 作爲 縱和 recall 作爲 橫軸座標 的二維曲線。
Bounding Box(bbox):
  • bbox是包含物體的最小矩形,該物體應在最小矩形內部,物體檢測中關於物體位置的信息輸出是一組(x,y,w,h)數據,其中x,y代表着bbox的左上角(或者其他固定點,可自定義),對應的w,h表示bbox的寬和高.一組(x,y,w,h)可以唯一的確定一個定位框。
Intersection over Union(IoU):
非極大值抑制(Non-Maximum Suppression又稱NMS):
  • 用到NMS來選取那些鄰域裏分數最高(是目標的概率最大),並且抑制那些分數低的窗口。
one stage的解釋:
  • 位置框和物體的類是在同一個特徵提取層來做迴歸和分類預測
【分割線】

?(2013.11-CVPR)R-CNN論文原文】【參考文章

?步驟:

  • 1.獲取輸入圖像
  • 2.提取約2000個候選區域(未進行卷積操作
  • 3.將候選區域分別輸入CNN網絡(這裏需要將候選圖片進行縮放統一大小,滿足CNN的輸入要求)
  • 4.將CNN的輸出輸入SVM中進行類別的判定

● OverFeat(2014)

主要特徵:集成的處理識別(Recognition)、定位(Localization)、檢測(Detection)三個問題,做到一個網絡解決所有問題。並且通過一個卷積網絡,實現對輸入支持多尺度(multiscale)、滑動窗口的變換。學習FCN、offset pooling,然後把它們結合起來。over feat就是說我們得到了不同尺寸的feature map,並且在feature map上遍歷。
OverFeat說的簡單一點就是特徵提取算子,就相當於SIFT,HOG等這些算子一樣。

MultiBox(2014)

主要特徵:這是Szegedy等人開發的邊界框迴歸技術的名稱。最後,MultiBox只保留最小化定位(LOC)和置信度(CONF)損失的前K個預測。

?(2014.06-IEEE)SPP-Net論文原文】【參考文章1參考2

?contributions:

  • 只需要將完整的圖片進行一次卷積操作,得到特徵圖(feature map);
  • 提出了Spatial Pyramid Pooling,可以將任意size的feature map池化成固定大小,對輸入圖像大小無尺寸要求
下圖所示:將SPP層加在最後一個卷積層後面,然後再送入FC網絡
下圖的空間金字塔池化層是SPPNet的核心,其主要目的是對於任意尺寸的輸入產生固定大小的輸出。思路是對於任意大小的feature map首先分成16、4、1個塊,然後在每個塊上最大池化,池化後的特徵拼接得到一個固定維度的輸出

解釋一下爲什麼經過SPP池化層維度就一致:因爲不管輸入的特徵圖多大,經過最大池化之後,得到的結果長度都是1、4、16。即,輸出結果與輸入無關。

MR-CNN(2015)

主要特徵:通過提取多個區域的特徵來豐富目標的特徵,達到提高目標檢測的效果。

DeepBox(2015)

主要特徵:論文主要乾了一件事:用一個卷積網,對於bottom-up方法(主要是EdgeBox)產生的proposal重新打分(re-rank)。也就是用EdgeBox等方法產生的proposal區域進行重新排序,把準確的區域賦予更高的objectness score。更直白一點:EdgeBox產生的每個propsal都有得分,得分有高有低,但有時候最準的box得分並不高,得分高的box並不準,用一個卷積網將這個score進行糾正。。

?(2015.04-ICCV)Fast R-CNN論文原文】【參考文章1參考2(透徹)

?contributions:

  • 基本上算是end-to-end模型(候選區域是使用selective search算法先提取出來的);
  • 使用softmax代替SVM分類器(直接顯存讀取);
  • 將SPP換成了ROI Poling(單尺度SPP),將卷積層特徵還分爲H*W個塊,然後在每個塊上進行最大池化。
  • 將特徵向量經由各自的全連接層由SVD分解實現(加速全連接層計算),分別得到兩個輸出向量:一個是softmax的分類得分,一個是Bounding-box窗口迴歸;
  • 引入了多任務損失函數,用於同時計算bbox迴歸和分類的損失。
注:原圖中的區域建議框只是用來映射到特徵圖中用於ROI 池化,並沒有進行卷積操作

DeepProposal(2015)

主要特徵:構建了一個反向級聯,從CNN的最終卷積層到最初的卷積層,選擇最有希望的對象位置並以粗到精的方式細化它們的邊框。???。

?(2015.06-NIPS)Faster R-CNN論文原文】【參考文章:優秀!

?contributions:

  • end-to-end模型
  • 提出Region Proposal Network(RPN) 代替了Selective Search(time:2s -> 0.01s)(通過NMS之後每張圖給出大概2000個候選框);
  • 提出anchor,三種尺寸,小(藍128)中(紅256)大(綠512),三個比例分別是1:1,1:2,2:1;
##### 注:每一個像素點都有一個anchor點,每個anchor點有9個anchor框。一張WxH的原圖=(H/16)× (W/16)×9(大概20000個框)

?(2015.06-CVPR)YOLOv1論文原文】【參考文章

?contributions:

  • one-stage的鼻祖;
  • 只做一次邊框迴歸和打分。
  • YOLOv1的網絡框架:24層卷積層(6組)、兩層全連接。

步驟:

  • 將一幅圖像分成SxS個網格(grid cell),如果某個object的中心 落在這個網格中,則這個網格就負責預測這個object。

如下公式所示,confidence代表了所預測的box中含有object的置信度(有object取1,否則取0)和這個box預測的有多準兩重信息:
在這裏插入圖片描述

注:S x Sx(B*5+C)解釋:
  • S x S:圖片劃爲S x S個網格(cell);
  • B:每個網格要預測B個bounding box(4個位置信息+1個置信度),B就類似於anchor中的框(右圖的黃色框2個);
  • C:每個網格要預測C個categories

缺點:

  • 只利用conv5特徵圖進行迴歸分類來目標檢測。導致小目標丟失,位置信息有丟失

?(2015.06-ICCV)AttentionNet:Aggregating Weak Directions for Accurate Object Detection論文原文

?contributions:

  • 引入attention機制

G-CNN(2016):

主要特徵:G-CNN,一種基於卷積神經網絡的,不依賴於候選框生成算法(proposal algorithms-費時)的目標檢測算法。G-CNN從一固定的多尺度網格邊框開始,此後訓練一回歸器迭代地移動和縮放對象網格。意即G-CNN將對象檢測問題建模爲尋找從固定網格到緻密對象框的路徑。Fast R-CNN由候選框生成算法生成近2K個邊框(候選框),G-CNN僅從180個固定網格開始,然性能與之相當。這種策略去掉候選框生成階段,減少需要處理的候選框,使得對象檢測更快。(注:one-step regression不能處理這個非線性的過程,因此採用迭代)

● AZNet( Adjacency and Zoom Prediction,2016):小目標檢測

主要特徵:通過zoom縮放來確定候選區域,因此,錨點區域集的生成取決於圖像內容。對於只有少量小對象的圖像,大多數區域在搜索的早期被修剪,在對象附近留下一些小的錨區域。對於只包含大型實例的圖像,我們的方法優雅地回到依賴於少量大型錨區域的現有方法。通過這種方式,我們的算法自適應地將其計算資源定向到可能包含對象的區域。==對於一個包含小目標的區域,算法能夠持續進行細化分割區域,以便實現最終的檢測。==小目標的檢測在兩步網絡的主要問題是第一步的區域建議可能存在問題。
參考:https://blog.csdn.net/fine_0007/article/details/88305658

Inside-OutsideNet(ION,2016):

主要特徵:所謂 Outside 是指 ROI 區域之外,也就是目標周圍的 上下文(Contextual)信息,通過添加了兩個 RNN 層(修改後的 IRNN)實現上下文特徵提取。上下文信息對於目標遮擋有比較好的適應。所謂 Inside 是指在 ROI 區域之內,通過連接不同 Scale 下的 Feature Map,實現多尺度特徵融合。這裏採用的是 Skip-Pooling,從 conv3-4-5-context 分別提取特徵。 多尺度特徵能夠提升對小目標的檢測精度

● HyperNet(2016):

主要特徵:Faster-RCNN的變種。HyperNet主要改進在於集合了多層的特徵圖,得到多尺度的超特徵(Hyper Feature),相比與Faster-RCNN,HyperNet更擅長處理小物體,在高IOU時更有優勢,mAP提高3.1%。但多尺度也必然降低速度。其快速模型HyperNet-SP速度與Faster-RCNN相同,VOC上mAP僅提高1.6%。但注意到其應用的跳層特徵(skip layer feature)在處理小物體檢測中已經在ION等多次被用到,成爲了一種常用的有效手段。

CRAFT(2016):

主要特徵:用於一般物體檢測,遵循“分而治之”的理念。 通過精心設計的卷積神經網絡級聯,它改善了候選區域的生成和分類任務。 對於候選區域任務,CRAFT輸出更緊湊和更好的本地化對象候選區域。R-CNN 系列算法的第一階段是生成目標 proposals,第二階段是對目標 proposals 進行分類,2016 年中科院自動化所提出的 CRAFT 算法分別對 Faster R-CNN 中的這兩個階段進行了一定的改進。對於生成目標 proposals 階段,在 RPN 的後面加了一個二值的 Fast R-CNN 分類器來對 RPN 生成的 proposals 進行進一步的篩選,留下一些高質量的 proposals;對於第二階段的目標 proposals 分類,在原來的分類器後又級聯了 N 個類別(不包含背景類)的二值分類器以進行更精細的目標檢測。

● MultiPathNet(MPN,2016):

主要特徵:MultiPathNet目的是提高物體檢測性能,包括定位的精確度和解決一些尺度、遮擋、集羣的問題。網絡的起點是Fast R-CNN,基本上,MultiPathNet就是把Fast R-CNN與DeepMask/SharpMask一起使用,但是做了一些特殊的改造,例如:skip connections、foveal regions和integral loss function。這一識別管道中的最後一步,研究院使用了一個特殊的卷積網絡,稱爲MultiPathNet,爲圖片中檢測到的物體添加標籤。也就是說Facebook研究院的物體檢測系統遵循一個三階段的過程:(1)DeepMask生成初始物體mask(2)SharpMask優化這些mask(3)MutiPathNet識別每個mask框定的物體

deep mask:整體來講,給定一個image patch作爲輸入,DeepMask會輸出一個與類別無關的mask和一個相關的score估計這個patch完全包含一個物體的概率。它最大的特點是不依賴於邊緣、超像素或者其他任何形式的low-level分割,是首個直接從原始圖像數據學習產生分割候選的工作。還有一個與其他分割工作巨大的不同是,DeepMask輸出的是segmentation masks而不是bounding box。【masks其實就是每個像素都要標定這個像素屬不屬於一個物體,bounding box是比較粗略的】

Sharp mask:從名字就能看出來,主要爲了是refine DeepMask的輸出。DeepMask的問題在於它用了一個非常簡單的前向網絡產生粗略的object mask,但不是像素級別準確的分割。顯然因爲DeepMask採用了雙線性上採樣以達到和輸入圖像相同大小這一機制,使得物體邊緣是粗略估計出來的,不準確。SharpMask的insight來自,物體精確地邊緣信息可以從low-level圖像中得到,與網絡高層的物體信息結合,應該能夠得到比較精確的邊緣。因此主要的思路是,首先用DeepMask生成粗略的mask,然後把這個粗略的mask通過貫穿網絡的很多refinement模塊,生成最終的精細mask。

?(2015.12-ECCV)SSD論文原文】【參考文章1參考2

?contributions:

  • 融合多尺度特徵圖(SSD300的m=6,分別是conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2 共6個)
  • 先驗框大小數量根據不同特徵圖的大小選取(8732),高層特徵適合分類(大目標),底層特徵適合定位(小目標)。
  • 再打分過程中會計算每個類別的分數
  • SSD的分類和座標迴歸都是全卷積的,不需要roipooling
SSD的先驗框(以像素點爲單位):
  • 正方形:每個cell都有一大一小的兩個先驗框;
  • 長方形:多個,不同層數量不一樣,

SSD網絡以VGG16前5層卷積網絡作爲第1個stage,然後將VGG16中的fc6和fc7兩個全連接層轉化爲兩個卷積層Conv6和Conv7作爲網絡的第2、第3個stage。接着在此基礎上,SSD網絡繼續增加了Conv8、Conv9、Conv10和Conv11四層網絡,用來提取更高層次的語義信息。如下圖3.1所示就是SSD的網絡結構。在每個stage操作中,網絡包含了多個卷積層操作,每個卷積層操作基本上都是小卷積共融合了六個特徵層
在這裏插入圖片描述

?(2016.02-ICLR)SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size論文原文】【參考文章

?contributions:

  • 開拓模型壓縮的先河;
  • SqueezeNet的核心模塊是Fire模塊,其由Squeeze部分和Expand部分組成;
  • 3 x3 卷積替換成 1 x1卷積,減少3x3卷積的通道數;
  • 使用same卷積,卷積沒有使用降採樣,使用池化進行降採樣

GBDNet(2016):

主要特徵:????,

CPF(2016):

主要特徵:???,

● MS-CNN(2016):

主要特徵:解決多尺度同時存在時的檢索問題,類似於FCNT跟蹤方法,該MS-CNN也是根據觀察到了卷積網絡不同層得到的特徵特點的不同,**對不同層的特徵採用不同的利用方式。**比如conv-3的低網絡層,有更小的感受野,可以進行小目標的檢測;而高層如conv-5,對於大目標的檢測更加準確。對於不同的輸出層設計不同尺度的目標檢測器,完成多尺度下的檢測問題。

?(2016.04-CVPR)OHEM:Training Region-based Object Detectors with Online Hard Example Mining論文原文】【參考文章

?contributions:

  • 基於Fast R-CNN改進,認爲之前選擇roi的方法效率低而且不是最優的(正負樣本比:1:3);
  • 構建兩個ROI模塊,一個只讀(只做前向計算,爲了得到hard example),一個可讀可寫,權重共享;
  • 通過選擇hard example的方式來訓練,對簡單樣本和一些小數量樣本進行抑制,

?(2016.05-NIPS)R-FCN: Object Detection via Region-based Fully Convolutional Networks論文原文】【參考文章1參考2(優秀)

平移可變性與平移不變性的解釋:
  • 平移不變性:無論貓怎麼扭曲、平移,最終識別出來的都是貓,輸入怎麼變形輸出都不變
  • 平移可變性:一隻貓從圖片左側移到了右側,檢測出的貓的座標會發生變化

?contributions:

  • 提出位置敏感得分圖position-sensitive score map
  • 解決了目標檢測網絡的位置敏感性(平移可變性)與物體分類網絡的位置不敏感性(平移不變性)的矛盾;
  • 全卷積網絡,具有更深的共享卷積網絡層,這樣可以獲得更加抽象的特徵;
  • 提升精度的同時利用“位置敏感得分圖提升檢測速度(比Faster-RCNN快2.5-20倍)。
位置敏感得分圖(position-sensitive score map)解釋:
  • 在共享卷積層的最後再接上一層卷積層,該卷積層就是“位置敏感得分圖position-sensitive score map,但是其通道爲k x k(C+1),C爲類別,也就是每個類別有k x k個score map。
  • RoI必須是k x k 個子區域都含有該物體的相應部位,才能判斷該RoI屬於該物體;
和Faster RCNN中用的ResNet(前91層共享,插入ROI pooling,後10層不共享)策略不同,R-FCN把所有的101層都放在了前面共享的subnetwork,最後用來prediction的卷積只有1層,大大減少了計算量。

● PVANet(2016):

主要特徵:改進Faster CNN的特徵提取網絡,也就是用PVANet來提取特徵作爲Faster RCNN網絡中RPN部分和RoI Pooling部分的輸入,改進以後的Faster RCNN可以在基本不影響準確率的前提下減少運行時間。PVANET網絡的總體設計原則是:less channels with more layers,深層網絡的訓練問題可以通過residual(殘差網絡)結構來解決。(該網絡使用了C.ReLU、Inception、HyperNet以及residual模塊等技巧)

● DeeplD-Net(2016):

主要特徵:人臉識別???,

NoC(2016):

主要特徵:???,

● PGAN(2017):小目標檢測

主要特徵:基於生成對抗網絡的目標檢測算法,由於卷積神經網絡的本質就是對目標特徵的提取,因此小目標未能被有效識別的原因就是RPN無法有效識別小目標的特徵或者說小目標和大目標之間的特徵存在一定的偏差,基於此情況出現了PGAN算法。該算法中採用GAN網絡模擬大目標與小目標之間特徵的差,訓練至一定程度後,將網絡訓練的結果與直接提取的特徵進行求和即可得到新的特徵,在保證大目標特徵基本不變的前提下提升了小目標的有效被識別。PGAN的效果要優於AZ-NET,,,論文不公佈源碼,經不起推敲?

?(2016.08-CVPR)DenseNet:Densely Connected Convolutional Networks論文原文】【參考文章參考2

?contributions:

  • 改進ResNet(dense net參數和計算成本更少性能更優),引入密連模塊代替殘差模塊。主要特徵:密連模塊內部允許任意兩個非相連層之間進行跨層連接。優點:緩和梯度消失、加強特徵傳播、促進特徵重用和減少參數數量。
  • 每一層與前面所有層在channel(resnet 是逐像數)上連接在一起(各層的特徵圖大小一致),實現特徵複用

TDM(2017):

主要特徵:時間差分模型(TDM)強化學習???,

?(2016.12-CVPR)YOLO V2:YOLO9000: Better, Faster, Stronger論文原文】【參考文章參考2

?contributions(在V1上的改進):

  • 每個卷積層後面都添加了Batch Normalization層,並且不再使用droput(mAP提升:2.4%);
  • 增加了在ImageNet數據集上使用 448 x 448 (高分辨率)的輸入來finetune分類網絡這一中間過程(10 epochs),(mAP提升:4%);
  • 移除了YOLOv1中的全連接層而採用了卷積和anchor boxes來預測邊界框;(訓練圖片大小:448 x 448 ,測試:416 x 416)
  • 採用k-means聚類方法對訓練集中的邊界框尺度做了聚類分析(5個聚類中心);
  • 採用了一個新的基礎模型(特徵提取器),稱爲Darknet-19,計算量減少約33%
  • 利用sigmoid函數約束預測邊框的位置,使得模型更容易學習,且預測更爲穩定
  • 提出了一種passthrough層來利用更精細的特徵圖
  • Multi-Scale Training:在訓練過程中每間隔一定的iterations之後改變模型的輸入圖片大小
  • 提出了一種目標分類與檢測的聯合訓練方法,同時在COCO和ImageNet數據集中進行訓練得到YOLO9000,實現9000多種物體的實時檢測。(這纔是YOLO V2最大的貢獻吧)

下圖爲passthrough原理示例(1個4x4拆成4個2x2):

?(2016.12-CVPR)FPN:Feature Pyramid Networks for Object Detection論文原文】【參考文章

?contributions:

  • 特徵feature金字塔;
  • 融合低層特徵高分辨率和高層特徵的高語義信息,預測是在每個融合後的特徵層上單獨進行
  • a):圖像image金字塔,最不科學;
  • b):使用Single feature map的包括R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、YOLOv1以及R-FCN系列;
  • c):SSD,作者認爲SSD沒有用到足夠底層的特徵,而越底層的特徵對檢測小物體越有利。SSD用的最底層的特徵是conv4_3
  • d):FPN:predict=左的1x1 conv + 上 的2x up(下圖所示)。

● RON(Reverse Connection with Objectness Prior Networks,2017):

主要特徵:將基於區域和不基於區域的方法的優點聯繫起來。給定一張輸入圖像,網絡首先計算骨幹網絡的特徵。然後,(a)添加反向連接;(b)生成 objectness prior;(c)在相應的 CNN 尺度和位置上檢測物體。(一般般感覺)

?(2017.01-arXiv)DSSD : Deconvolutional Single Shot Detector論文原文】【參考文章

?contributions:

  • 基於SSD的改進;
  • 提出基於top down的網絡結構,用反捲積(低層特徵和高層特徵的融合)代替傳統的雙線性插值上採樣;
  • 在預測階段引入殘差單元
  • 採用兩階段訓練方法;
  • 特徵融合採用product代替sum(精度提高,但是速度變慢);
  • BN操作放在卷積層和激活層之間;
  • 高層特徵圖的通道數將會被捨棄,在反捲積模型中,所有卷積和反捲積操作,卷積個數都依賴於輸入的低層特徵圖的通道數
  • 使用K-means 方法 setting prior box aspect ratio

?(2017.03-ICCV)Mask R-CNN論文原文】【參考文章–優秀

?contributions:

  • 特徵提取採用ResNet-FPN的架構;
  • 提出了RoIAlign(雙線性插值+池化)的方法來取代ROI pooling;
  • 加了一個Mask預測分支(在ROIAlign後面加捲積層)

● DCN(deformable convolution,2017):

主要特徵:1) 引入了可以自調節感受野大小的deformable convolution和deformable RoI 模塊。該模塊通過額外學習一組採樣偏移量來決定卷積操作和RoI pooling操作的採樣位置, 通過這種方式, 網絡模型可以根據輸入的圖譜自動調節感受野的大小的分佈。2) 上面的兩種deformable模塊均可以無痛的添加到現有模型中。由於deformable convolution和deformable RoI 模塊並不會改變原始的輸入輸出大小, 因此可以很輕易的替換到現有網絡中, 並且可以有其他多種提升精度的trick想疊加, 在多個視覺任務上(檢測, 分割)都表現出色。

● DeNet(2017):

主要特徵:針對候選區域提取這個步驟進行加速: 使用角點提取來初步過濾大部分候選區域,

● CoupleNet(2017):

主要特徵:針對 R-FCN 算法沒有考慮到 region proposal 的全局信息和語義信息的問題,2017 年中科院自動化所提出 CoupleNet 算法,其在原來 R-FCN 的基礎上引入了 proposal 的全局和語義信息,通過結合局部、全局以及語義的信息,提高了檢測的精度。

?(2017.08-CVPR)RetinaNet:Focal Loss for Dense Object Detection論文原文】【參考文章

?contributions:

  • Resnet + FPN + FCN 的組合應用;
  • 改進交叉熵(cross-entropy, CE) loss,提出Focal loss,解決了正負樣本區域極不平衡而目標檢測loss易被大批量負樣本所左右的問題。
RetinaNet 目標檢測框架
最終最終所用的Focal_loss

● DSOD(Deeply Supervised Object Detectors,2017):一階

主要特徵:基於單次檢測(SSD)框架開發DSOD。由於深度學習需要大量的訓練數據,而針對特定任務需求的訓練樣本往往是有限的,通常情況下,目標檢測算法會先使用在海量數據(如ImageNet數據集)上訓練好的分類模型對需要訓練的網絡參數進行初始化(pre-train,預訓練),然後使用訓練樣本對網絡參數進行微調(fine-tune)
但這種預訓練結合微調的方法存在以下幾點問題:(1)對於目標檢測任務而言,由於其損失函數和目標類別分佈與分類模型存在差異,其搜索/優化空間是不同的,所以使用預訓練模型容易求得局部而非全局最優解。雖然利用訓練數據對網絡進行微調可以在一定程度上緩解這種現象,但仍然不能從本質上解決問題。(2)預訓練模型一般是基於RGB圖像訓練得到的,對於差異較大的問題域,如針對深度圖像、多光譜圖像和醫學影像的目標檢測,要從預訓練的分類模型遷移學習爲目標檢測模型難度非常大。(3)預訓練的分類模型通常具有**較爲複雜的網絡結構,不僅參數規模大,其特定的網絡結構也限制了目標檢測模型的設計空間,難以對模型的結構進行靈活地調整。
因此,DSOD提出了一種
無需預訓練,直接基於訓練樣本來訓練目標檢測模型**的方法。
只有不基於region proposal的方法,纔可以不使用預訓練模型直接訓練網絡。

SMN(Spatial Memory Network,2017):

主要特徵:Memory Network是深度學習的一個小分支–記憶網絡(如(RNN、LSTM、GRU等)),

?(2017.11-CVPR)SNIP:An Analysis of Scale Invariance in Object Detection -SNIP 論文原文】【參考文章

?contributions:

  • 引入MST(Multi-Scale Training)思想的同時,在梯度回傳時只將和預訓練模型所基於的訓練數據尺寸相對應的ROI的梯度進行回傳(爲了減少domain-shift);
  • 引入圖像金字塔來處理數據集中不同尺寸的數據(在測試中,建立大小不同的Image Pyramid,在每張圖上都運行這樣一個detector,同樣只保留那些大小在指定範圍之內的輸出結果,最終在一起NMS)。
  • 缺點:三個RPN(太慢

invalid anchor的定義是:和invalid ground truth的IOU大於0.3的anchor就是invalid anchor,如上圖中左邊的黑色框所示。

?(2017.11-ECCV)RFBNet:Receptive Field Block Net for Accurate and Fast Object Detection論文原文】【參考文章】【代碼

?contributions:

  • 提出RFB模塊
  • 基於SSD300的改進,
  • 改進的inception模塊(加入空洞卷積);

?(2017.12-CVPR)Cascade R-CNN: Delving into High Quality Object Detection論文原文】【參考文章

動機

  • R-CNN系列中存在mismatch問題:在inference階段的輸入proposals質量相對較差(沒有被採樣過,可能包括很多IoU<threshold的)
  • IoU指訓練過程中positive和negative的判定處。

?contributions:

  • 出了muti-stage的結構,每個stage都有一個不同的IoU閾值
  • 用一個R-CNN stage的輸出去訓練下一個R-CNN stage,共是4個stages:1個RPN+3個detector(IoU閾值設定分別爲0.5,0.6,0.7)
  • 解決了提高IoU時候帶來的過擬合問題(IoU高>正樣本少>過擬合);
  • 解決了不同IoU閾值導致的不匹配問題

?(2018.01-CVPR)RefineDet:Single-Shot Refinement Neural Network for Object Detection論文原文】【參考文章

?contributions:

  • 基於ssd的改進算法ARM(anchor refinement module),即bottom up(上部分)爲常規ssd多尺度預測階段(bottom up用來解決正負樣本框數目不平衡問題);
  • 將ARM預測的結果通過TCB(transfer connection block)傳遞給OBM,TCB單元實質上就是top down結構;作用就是使得多尺度特徵圖的信道融合以此來豐富特徵。
  • 通過加入ODM(object detection module),即top down(下部分) 的方法變成two stage模型(解決正負樣本框數目不平衡問題);
  • bottom up迴歸粗略位置與分類,在top down迴歸精細位置與分類,

在這裏插入圖片描述

RefineDet與RetinaNet的區別:
  • 都解決了train過程中正負anchor不平衡的問題;
  • RefineDet採用negative anchor過濾的方法,RetinaNet通過Focal Loss解決。
ARM和RPN的區別:
  • ARM由多層不同尺度的特徵輸出,而RPN只有一個

?(2018.04-Arxiv)YOLO v3: An Incremental Improvement論文原文】【源碼】【參考文章

?contributions:

  • 引入殘差結構=,網絡由Darknet-19變爲Darknet-53
  • 多尺度預測:輸出3層,每層 S × S個網格,分別爲 13×13 ,26 ×26 ,52×52(類似於FPN的相鄰層的特徵融合);
  • anchor box一共有9個,由k-means聚類得到特徵圖越大上面的anchor box框越小(尺度越大,感受野越小,對小物體越敏感,所以選擇小的anchor box);
  • sigmoid取代之前版本的softmax(V 2不也是sigmoid?)預測邊框,
  • 損失函數將V2中的Softmax loss變成Logistic loss
YOLO v3 網絡結構

?(2018.04-ECCV)DetNet: A Backbone network for Object Detection論文原文】【參考文章】

?contributions:

  • A子圖在原始ResNet-50的bottleneck(c圖)結構上,把中間3x3卷積換成了帶洞3x3卷積
  • B子圖是在A的基礎上把identity通路替換成1x1的卷積
  • stage5,6分辨率保持在16x(跟stage4一致,14x14大小)(可以保持大物體位置信息的完整,小物體信息在深層網絡完全不可見的可能性減少

?(2018.05-arXiv)SNIPER: Efficient Multi-Scale Training論文原文】【參考文章】【代碼

?contributions:

  • 引入chips:chips是某個圖片的某個scale上的一系列固定大小的(比如KxK個像素)的以恆定間隔(比如d個像素)排布的小窗(window) ,每個window都可能包含一個或幾個objects;
  • 每個scale都會生成這些chips,而且chip的大小是固定的,變化的是圖片的尺寸(與anchor相反);
  • 用於訓練的是這些chip(包含若干個目標)。

SIN(Structure Inference Net,2018):

主要特徵:SIN提出了結合場景信息和物體之間聯繫的檢測方法。爲了更加有效地利用這些信息,提出了結構推理網絡。實驗表明,在與場景高度相關的類別上檢測效果很好。針對物體之間關係的實例級對物體的定位檢測發揮了很重要的作用。

● STDN(Scale-Transferrable Object Detection,2018):

主要特徵:通過尺度變換模塊(scale-transfer module )去解決物體檢測中不同目標檢測時的尺度問題,基礎網絡採用的是DenseNet-169,DenseNet通過多層連接的方式整合低層和高層信息,其特徵提取能力較強。

● MLKP(Multi-scale Location-aware Kernel,2018):

主要特徵:嘗試利用對象檢測中的高階統計量,最近對具有挑戰性的細粒度視覺分類的研究表明,與一階分類相比,高階統計表示可以捕獲更多的判別信息同時獲得更好的提升。嘗試在目標檢測中利用高階統計信息,爲生成更多的能判別表示的候選框從而提高目標檢測器性能。。

● Relation-Net(2018):

主要特徵:基於Faster RCNN系列算法,希望在檢測過程中可以通過利用圖像中object之間的相互關係或者叫圖像內容(context)來優化檢測效果,這種關係既包括相對位置關係也包括圖像特徵關係。

?(2018.08-ECCV)CornerNet: Detecting Objects as Paired Keypoints論文原文】【參考文章

?contributions:

  • 將目標邊界框檢測爲一對關鍵點(即邊界框的左上角和右下角)(左圖);
  • 引入了corner pooling(右圖,對每個channel,分別提取特徵圖的水平和垂直方向的最大值,然後求和),這是一種新型的池化層,可以幫助網絡更好地定位邊界框的角點
  • 堆疊兩個hourglass架構(訓練慢,檢測也慢),使用focal loss的變體訓練神經網絡;
CornerNet模型架構

● PFPNet(Parallel Feature Pyramid Network,2018):可以試試

主要特徵:借鑑了SPP的思想並通過MSCA(multi-scale context aggregation)模塊進行特徵融合,
。PFPNet整體上還是one stage類型的目標檢測算法,思想借鑑了SSD,速度上有保證,效果上因爲引入SPP思想構造特徵金字塔,相當於加寬了網絡,同時MSCA模塊做類似FPN的特徵融合操作,最後基於多層融合特徵進行預測,因此效果也是很不錯的。

● Pelee(2018):

主要特徵:基於DesNet的變種版本,適用於移動端的輕量級網絡。

● HKRM(Hybrid Knowledge Routed Modules ,2018):

主要特徵:用於大規模目標檢測的混合知識路由模塊???,

● R-DAD(Region Decomposition and Assembly,2019):

主要特徵:解決檢測錯誤經常由於目標遮擋造成的問題,

M2Det(Multi-Level Feature Pyramid,2019):可以試試

主要特徵:提出多級特徵金字塔網絡MLFPN。基於提出的MLFPN,結合SSD,提出一種新的Single-shot目標檢測模型M2Det。
參考:https://blog.csdn.net/sinat_37532065/article/details/87385302

?(2019.01-ICCV)TridentNet:Scale-Aware Trident Networks for Object Detection論文原文】【代碼】【參考文章參考2

?contributions:

  • 解決scale variation的問題;
  • 構造了不同receptive field的parallel multi-branch
  • 對於trident block中每一個branch的weight是share的;
  • 對於每個branch,訓練和測試都只負責一定尺度範圍內的樣本,也就是所謂的scale-aware
  • 訓練時3個branch,測試時只用一個branch。

?(2019.03-CVPR)FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection論文原文】【參考文章

動機

  • anchor在分配到的特徵圖不是最優的,並不知道一個確切的 ground-truth 分配到哪一層上去學習是最合適的。:

?contributions:

  • 提出FSAF,爲了使得每一個ground truth box匹配到最佳的特徵層(採用focal loss 和IoUloss來確定);
  • RetinaNet上加上anchor-free分支,使用anchor-based和anchor-free進行聯合訓練得到最終的FSAF模型;
FSAF框架:基於Retina Net,每一層額外增加2個卷積層(圖左)、整體框架(圖右)

?(2019.04-arXiv)Objects as Points論文原文】【代碼】【參考文章

?contributions:

  • 通過目標中心點來找到目標(下圖左),然後在中心點位置迴歸出目標的一些屬性,例如:size, dimension, 3D extent, orientation, pose。
  • 採用的是熱力圖。

?(2019.04-arXiv)CenterNet: Keypoint Triplets for Object Detection論文原文】【源碼】【參考文章

動機:

  • 如果目標框是準確的,那麼在其中心區域能夠檢測到目標中心點的概率就會很高,反之亦然。

?contributions:

  • 利用關鍵點三元組中心點、左上角點和右下角點三個關鍵點來確定一個目標;
  • 提出 center pooling 來提取中心點的特徵;
  • 提出 cascade corner pooling 來提取角點的特徵;
  • 提出了一種新的衡量指標:FD (false discovery) rate=1-AP
左圖控制中心點區域的大小,右圖(a):center pooling 來豐富中心點特徵;右圖(b):corner pooling 來豐富角點特徵

?(2019.04-CVPR)NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection論文原文】【代碼】【參考文章

?contributions:

  • 通過網絡搜素得到新的特徵金字塔NAS-FPN(圖f:包含自上而下和自下而上的連接),
  • NAS-FPN對構建目標架構有很大的靈活性(性能更好);
  • 基於RetinaNet框架(與之結合達到目前最優模型),
  • NAS 利用強化學習訓練控制器在給定的搜索空間中選擇最優的模型架構

?(2019.04-arXiv)CornerNet-Lite: Efficient Keypoint Based Object Detection論文原文】【源碼】【參考文章

?contributions:

  • 使用注意機制消除了對圖像的所有像素進行徹底處理的需要;
  • 引入新的緊湊骨幹架構的 CornerNet-Squeeze:Hourglass-54(含3個hourglass模塊,深度爲54),原CornerNet中使用的是 Hourglass-104(含2個hourglass模塊,深度爲54)
  • 使用fire module代替residual block;
  • 使用3x3深度分離卷積代替3x3標準卷積
CornerNet-Saccade 和CornerNet-Squeeze 的區別:
  • CornerNet-Saccade:
    是追求高準確率(mAP)的同時,儘可能提高速度(FPS),即準確率優先,其對標於CornerNet等算法。創新點:引入Saccade思想。(類似於加了注意力機制?)
  • CornerNet-Squeeze:
    是追求高實時性(FPS)的同時,儘可能提高準確率(mAP),即速度優先,其對標於YOLOv3等算法。創新點:引入SqueezeNet優化思想。

?(2019.04-ICCV)FCOS: Fully Convolutional One-Stage Object Detection論文原文】【代碼】【參考文章

?contributions:

  • 全卷積的one-stage目標檢測算法(FCOS),採用語義分割的思想進行目標檢測(逐像素預測,但是速度變慢);
  • 不需要anchor等操作,最終通過NMS後處理實現檢測;
  • 網絡結構:【Backbone】 + 【特徵金字塔(Feature Pyramid)】+ 【Classification + Center-ness + Regression】
  • Center-ness用來抑制檢測到的低質量邊界框(保證預測的邊界框儘可能的靠近中心);
  • 如果大尺度和小尺度的重疊,直接簡單的使用最小區域作爲迴歸目標。

?(2019.04-ICCV)RepPoints: Point Set Representation for Object Detection論文原文】【代碼】【參考文章

動機

  • 邊界框的規則單元格中提取的特徵可能會受到背景內容或前景區域的無效信息的嚴重影響。這可能導致特徵質量降低,從而降低了目標檢測的分類性能。

?contributions:

  • deformable convolution的使用;
  • 採用n個點來代替規則的目標框,表示物體的幾何形態,並且將這些點作爲deformable卷積的offset(其實也可以看作是物體的語義特徵),
  • 通過定位和分類的直接監督來學習可形變卷積的偏移量,使得偏移量具有可解釋性;
  • 可以通過採樣點來直接生成僞框 (pseudo box),不需要另外學習邊界框,並且分類和定位有聯繫。

?(2019.06-arXiv)Cascade R-CNN: High Quality Object Detection and Instance Segmentation論文原文】【代碼

?contributions:

  • 將其應用與實例分割
  • 提出了muti-stage的結構,每個stage都有一個不同的IoU閾值
  • 用一個R-CNN stage的輸出去訓練下一個R-CNN stage,共是4個stages:1個RPN+3個detector(IoU閾值設定分別爲0.5,0.6,0.7)
  • 解決了提高IoU時候帶來的過擬合問題(IoU高>正樣本少>過擬合);
  • 解決了不同IoU閾值導致的不匹配問題
● (2019.06-arXiv)Learning Data Augmentation Strategies for Object Detection論文原文】【代碼】【參考文章

?contributions:

  • 共計從色彩變換、圖像幾何變換、bbox內變換三個角度設計了22種不同的變換方式。每種變換方式定義三個參數:(變換標識符,概率,強度)
  • 用到了NAS。

● Res2Net(2019):論文原文

通過在一個單個殘差塊內構造分層的殘差類連接,爲CNN提出了一種新的構建模塊,即Res2Net。Res2Net 以更細粒度(granular level)表示多尺度特徵,並增加每個網絡層的感受野(receptive fields)範圍
相對於ResNet來說:在殘差單元(residual block)中插入更多帶層級的殘差連接結構(hierarchical residual-like connections)。

● RandWire-WS(2019):論文原文

NAS 的改進:通過隨機神經網絡連接的方式探索了比此前神經架構搜索更爲廣泛的連接形式,並實現了很好的效果。

● FoveaBox(2019):論文原文

FoveaBox是在RetinaNet目標檢測網絡基礎上做的改進。
FoveaBox的動機來自人眼的中央凹:視野中心(物體)具有最高的視力。對於可能存在目標的每個輸出空間位置,FoveaBox直接預測所有目標類別存在的置信度和邊界框。

?(2019.08-arXiv)AlignDet:Revisiting Feature Alignment for One-stage Object Detection論文原文】【參考文章】

動機

  • 對齊特徵與ROI

?contributions:

  • 基於RefineDet改進,解決feature和與RoI不對齊的問題;
  • 用了cascade-rcnn變iou判據的思路;
  • 7x7 RoIConv (AlignDet) vs. 3x3 “RoIConv” (RepPoints table1 baseline);
  • 用了multi-scale training

在這裏插入圖片描述
可以看到上圖主要分爲兩個步驟,首先DPM會迴歸一次anchor,並且對應anchor,每個anchor有四個座標,所以輸出大小爲H x W x 4,然後根據stride可以計算對應的偏移,在特徵上做一個RoIConv,得到對齊的特徵後,再做一次迴歸。

注意此處,借鑑了cascade RCNN的思路,兩次迴歸中,正樣本的IoU閾值並不相同。

?(2019.08-arXiv)Matrix Nets: A New Deep Architecture for Object Detection論文原文

?contributions:

  • 提出 xNet 加強基於關鍵點的目標檢測;
  • 能夠同時解決目標尺度和寬高比不同的問題;
  • 將右上角和左下角的進行剪枝操作(目標出現概率低);
  • 相對於CornerNet來說,不需要corner pooling操作。
MatrixNet 架構(左)、KP-xNet 架構(右)

步驟

  • (a-b) 步驟使用了 xNet 主幹(左圖);
  • ( c ) 步驟使用了共享輸出子網絡,而針對每個矩陣層,他們預測了左上角和右下角的熱圖和偏移量,並在目標層內對它們進行中心點預測;
  • ( d )步驟利用中心點預測匹配同一層中的角,然後將所有層的輸出與 soft 非極大值抑制結合,從而得到最終輸出。

二、Anchor-Free時代:

早期探索:

● DenseBox:

主要特徵:1.證明單個FCN可以檢測出遮擋嚴重、不同尺度的目標。2.通過多任務引入landmark localization,能進一步提升性能。

● YOLO:

主要特徵:1.速度快,2.通過整幅圖進行推理得到預測結果,3.能學到目標的一般特徵。

DenseBox和YOLO的區別:
1.DenseBox應用於人臉檢測,相當於只有兩類,而YOLO是通用檢測,通常大於兩類。
2.DenseBox是密集預測,對每個pixel進行預測,而YOLO先將圖片進行網格化,對每個grid cell進行預測。
3.DenseBox的gt通過bbox中心圓形區域確定的,而YOLO的gt由bbox中心點落入的grid cell確定的。

基於關鍵點:

● CornerNet:

主要特徵:1.通過檢測bbox的一對角點來檢測出目標。2.提出corner pooling,來更好的定位bbox的角點。

● ExtremeNet:

主要特徵:1.將關鍵點定義爲極值點。2.根據幾何結構對關鍵點進行分組。

CornerNet和ExtremeNet的區別:
1.CornerNet通過預測角點來檢測目標的,而ExtremeNet通過預測極值點和中心點來檢測目標的。
2.CornerNet通過角點embedding之間的距離來判斷是否爲同一組關鍵點,而ExtremeNet通過暴力枚舉極值點、經過中心點判斷4個極值點是否爲一組。

密集預測:

● FSAF(Feature Selective Anchor-Free,2019):原文

以RetinaNet爲主要結構,添加一個FSAF分支和原來的classification subnet、regression subnet並行。
主要特徵:讓每個實例選擇最好的特徵層來優化網絡,因此不需要anchor來限制特徵的選擇

FCOS(Fully Convolutional One-Stage,2019 ):原文

主要特徵:1.將檢測和其他使用FCN的任務統一起來,容易重用這些任務的思想。2.proposal free和anchor free,減少了超參的設計。3.不使用trick,達到了單階段檢測的最佳性能。4.經過小的修改,可以立即拓展到其他視覺任務上。

● FoveaBox

主要特徵:人類眼睛的中央凹:視野(物體)的中心具有最高的視覺敏銳度。FoveaBox聯合預測對象中心區域可能存在的位置以及每個有效位置的邊界框。由於特徵金字塔的特徵表示,不同尺度的目標可以從多個特徵層中檢測到。

FSAF、FCOS、FoveaBox的異同點:
1.都利用FPN來進行多尺度目標檢測。
2.都將分類和迴歸解耦成2個子網絡來處理。
3.都是通過密集預測進行分類和迴歸的。
4.FSAF和FCOS的迴歸預測的是到4個邊界的距離,而FoveaBox的迴歸預測的是一個座標轉換。
5.FSAF通過在線特徵選擇的方式,選擇更加合適的特徵來提升性能,FCOS通過center-ness分支剔除掉低質量bbox來提升性能,FoveaBox通過只預測目標中心區域來提升性能。

(DenseBox、YOLO)和(FSAF、FCOS、FoveaBox)的異同點:
1.都是通過密集預測進行分類和迴歸的。
2.(FSAF、FCOS、FoveaBox)利用FPN進行多尺度目標檢測,而(DenseBox、YOLO)只有單尺度目標檢測。
3.(FSAF、FCOS、FoveaBox)將分類和迴歸解耦成2個子網絡來得到,而(DenseBox、YOLO)分類和定位統一得到。

總結:

1.各種方法的關鍵在於gt如何定義
2.主要是基於關鍵點檢測的方法和密集預測的方法來做Anchor-Free
3.本質上是將基於anchor轉換成了基於point/region

anchor-free 的方法能夠在精度上媲美 anchor-based 的方法,最大的功勞我覺得應該歸於 FPN,其次歸於 Focal Loss。(RetinaNet 賽高)。在每個位置只預測一個框的情況下,FPN 的結構對尺度起到了很好的彌補,FocalLoss 則是對中心區域的預測有很大幫助。當然把方法調 work 並不是這麼容易的事情,相信有些細節會有很大影響,例如對重疊區域的處理,對迴歸範圍的限制,如何將 target assign 給不同的 FPN level,head 是否 share 參數等等。

?(2019.09-ECCV)目標檢測算法【論文原文】【參考文章】

?contributions:

  • 一直更新中

待續。。。

參考:https://github.com/hoya012/deep_learning_object_detection

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章