经典目标检测模型
一、Classic detection model
1.Proposal or not
1.1 One-stage
OverFeat(ICLR,2014)——>YOLOv1(CVPR,2016)——>SSD(ECCV,2016)——>DSSD(Arxiv,2017)——>YOLOv2(CVPR,2017)——>RetinaNet(ICCV,2017)——>DSOD(ICCV,2017)——>YOLOv3(Arxiv,2018)——>RefineDet(ICCV,2018)——>RFBNet(ECCV,2018)——>M2Det(AAAI,2019)——>Consistent Optimization(12)
1.2 Two-stage
RCNN(CVPR,2013)——>SPPNet(ECCV,2014)——>Fast RCNN(ICCV,2015)——>Faster RCNN(NIPS,2015)——>OHEM(CVPR,2016)——>R-FCN(NIPS,2016)——>FPN(CVPR,2017)——>DCN(ICCV,2017)——>Mask RCNN(ICCV,2017)——>Soft-NMS(ICCV, 2017)——>Cascade R-CNN(CVPR,2018)——>IoUNet(ECCV 2018)——>TrindentNet(13)
1.3 One-Two Combination
RefineDet(ICCV,2018)
2.Improvement of detection modules
2.1 based RPN
[MR-CNN]
[FPN]
[CRAFT]
[R-CNN for Small Object Detection]
2.2 based ROI
[RFCN]
[CoupleNet]
[Mask R-CNN]
[Cascade R-CNN]
2.3 based NMS
[Soft-NMS(ICCV,2017)]
[Softer-NMS]
[ConvNMS]
[Pure NMS Network]
[Fitness NMS]
2.4 based anchor
[GA-RPN(CVPR2019)]
3.Improvement to solve problems
3.1 small object
針對MaskRCNN做數據增強,人工隨機在圖像中復制小物體,提高anchor的命中率
[FPN] [DSSD]?R-SSD?[M2Det]
在主干網絡的low level(stride較小部分)出feature map,對應的anchor size可以設置較大。
利用context信息,建立小物體與context的關系。或者上dilated類似混合感知野,或者在head部分引入SSH相似的模塊。
[R-CNN for Small Object Detection]
iou loss、cascade rcnn
參考CVPR論文SNIP/SNIPER
在anchor層面去設計
anchor densitification(出自faceboxes論文),
anchor matching strategy(出自SFD論文)。
[Relation Network for Object Detection]
GAN的主要運用是為了超分辨率的學習應用,將模糊的小目標放大清晰化,而不是為了檢測器生成對抗一下。
上采樣,先做超分辨率再做檢測
參考資料:
深度學習在 small object detection 有什么進展?
小目標檢測問題中“小目標”如何定義?其主要技術難點在哪?有哪些比較好的傳統的或深度學習方法?
3.2 scale variation/Feature fusion
[image pyramid/multi-scale testing]
[feature pyramid]
[anchor box]
[M2Det]
[FSSD]
3.3 shelter
[Repulsion Loss]
[Occlusion-aware R-CNN]
[Soft-NMS]
[Bi-box]
[R-DAD]
3.4 Imbalance Of Positive&Negative
[OHEM(CVPR2016)]
[A-Fast-RCNN(CVPR2017)]
[Focal loss(ICCV2017)]
[GHM(AAAI2019)]
3.5 Mobile or Light Weight
[Light-Head R-CNN]
[ThunderNet]
二、Classic classification/detection backbone
1.deepen
(1)resnet
2.widen
(1)Inception
3.smaller
(1)mobilenet
(2)shufflenet
(3)pelee
4.feature
(1)DenseNet
(2)SeNet
5.detection specific
(1)darknet
(2)detnet
三、Detection modules
1.Selective Search&&RPN
2.ROI pooling&&ROI align
3.IoU
4.NMS
5.Generic metrics
6.mAP
四、經典Paper解讀與源碼(PyTorch)
1.SSD
SSD
SSD目標檢測
SSD目標檢測筆記
目標檢測|SSD原理與實現
SSD詳解Default box的解讀
SSD 源碼實現 (PyTorch)
ssd算法的pytorch實現與解讀
SSD代碼解讀(三)——MultiboxLoss
2.RFBNet
《Receptive Field Block Net for Accurate and Fast Object Detection》
官方代碼
論文筆記
源碼解讀
RFB模塊+SSD,借鑒Inception結構的空洞卷積。
3.DetNet
《DetNet: A Backbone network for Object Detection》
核心點
目標檢測專門設計的backbone,高層不減小分辨率+空洞卷積+減小網絡高層的寬度
2.1 Motivation
(1)分類和檢測任務不同,因此用分類數據上訓練的分類模型來提取特征用于檢測任務不一定合適,比如檢測任務比較關注目標的尺度特征,但是分類任務就不一定了。
(2)檢測任務不僅僅要做目標的分類,而且要做目標的定位,這樣的差異容易導致一些問題,比如在分類網絡中常用的降采樣操作可能對分類有效,因為增大了感受野,但是對于需要定位目標的檢測任務而言就不一定有利,因為丟失了目標的位置信息。
2.2 contribution
(1)增加網絡高層輸出特征的分辨率,換句話說就是高層不對特征圖做尺寸縮減。
(2)引入dilated卷積層增加網絡高層的感受野,這是因為第一個改進點引起的感受野減小。
(3)減小網絡高層的寬度,減少因增大分辨率帶來的計算量。
2.3 Method
如果網絡高層的特征不做像分類網絡那樣多的降采樣(將stride等于32修改為stride等于16)會帶來兩個問題:
(1)增加計算量。這個很容易理解,畢竟特征圖比之前的大,計算量的增加不可避免。
(2)高層的感受野(receptive field)減小。感受野和信息丟失類似蹺蹺板,既然前面選擇了盡可能減少高層的特征信息丟失,那么感受野減小也是情理之中。
那么怎么解決這兩個問題呢?
(1)針對問題1,主要是降低了網絡高層的寬度,這個在下圖D中展示得比較清楚了,高層的幾個stage的每個block的輸入特征通道都是256。而常見的分類算法中,比如ResNet越往高層的stage,特征通道數往往越大。 (2)針對問題2,主要引入dilated卷積層來增大感受野,如下圖的A和B所示,通過對比ResNet網絡的residual block(下圖C)可以看出主要是替換了傳統的3*3卷積為dilated卷積層。因此下圖中的A和B是DetNet網絡中的基礎結構(下圖D所示)。
參考資料:DetNet 算法筆記
4.Cascade R-CNN
?
Github:Pytorch復現
參考資料:
Cascade RCNN算法筆記
CVPR18 Detection文章選介(上)
目標檢測論文閱讀:Cascade R-CNN: Delving into High Quality Object Detection
Cascade R-CNN 詳細解讀
5.RefineDet
核心點
SSD+RPN+FPN
(1)引入Two Stage目標檢測算法中對Box由粗到細進行回歸思想,即先通過RPN網絡得到粗粒度的Box信息,然后再通過常規的回歸支路進行進一步回歸從而得到更加精確的框信息;
(2)引入類似FPN網絡的特征融合操作,可以有效提高對小目標的檢測效果,檢測網絡的框架還是SSD。
Motivation
兩階段目標檢測方法相比單階段方法有以下三個優勢:
(1)兩階段目標檢測器采用了兩段結構采樣來處理類別不均衡的問題 (2)使用了先提取粗粒度Box然后進一步回歸,兩階段級聯的方式來擬合bbox (3)采用了兩階段的特征圖來描述待檢目標
Method
網絡結構主要包含ARM、TCB和ODM三部分
(1)ARM(Anchor Refinement Module)
粗篩anchor,剔除掉過于容易的負樣本anchors以便為分類器減少搜索空間,降低后續的計算復雜度
粗略調整 anchors 的位置和大小,為ODM提供更好的初始值
(2)TCB(Transfer Connection Block)
將ARM部分輸出的Feature Map轉換成ODM部分的輸入。TCB通過進行特征層的融合,將高語義層上采樣(通過反卷積實現)與上一層進行融合,提高底特征層的語義信息。不僅可以傳遞anchor的信息,也是一種做特征金字塔的方式。
本文作者使用了反卷積和按位加法來完成了TCB的運算。
(3)ODM(Object Detection Module)
ODM 旨在根據細化后的 anchors 將結果回歸到準確的目標位置并預測多類別標簽。不同的地方在于該部分的Anchors是ARM部分得到的Refined Anchors,Feature Map來自TCB得到的融合了各層的多語義Feature Map(可大幅度提高小目標物體的檢測效果)。
(4)two-step cascaded regression
作者認為目前的單階段目標檢測器只進行了一次的目標框回歸,這可能是導致在一些困難任務上表現不佳的原因
所以,不同于SSD,RefineDet采用了兩步的回歸策略,首先由ARM生成大致的目標框,再由ODM在次基礎上進一步精修目標框邊界,作者認為這種方法會提升模型整體的精度,尤其是改進對小目標檢測的表現
(5)negative anchor ?ltering
負樣本篩選,本文的思路是ARM將負樣本置信度大于門限值 θ 的目標框篩去,θ 的經驗值是0.99。也就是說ARM僅將正樣本和困難的負樣本送進ODM進行進一步檢測
困難負樣本挖掘采用了與SSD一致的方法,將負:正樣本比例保持在3:1
(6)損失函數
RefineDet的損失函數由兩部分組成,ACM和ODM,每一部分都包含分類與回歸兩個損失函數,所以總得損失函數為:
其中i是mini-batch中anchor的index,
$l_i^*$ 是anchor i ground truth class label.
$g_i^*$ 是i anchor 的ground truth location 和 size.
$p_i$和$x_i$ 是anchor i 的predicted confidence和ARM的refined coordinates.
$c_i$和 $t_i$是 ODM 的predicted object class 和 coordinates of the bounding box.
$N_{arm}$和$N_{odm}$是ARM和ODM的positive anchor的數目
[l>1]是Iverson bracket indicator function,如果括號里面成立輸出1,否則輸出零。
參考資料
[讀論文] Single-Shot Refinement Neural Network for Object Detection
http://www.baiyifan.cn/2019/03/10/RefineDet/
https://hellozhaozheng.github.io/z_post/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89-RefineDet-CVPR2018/
RefineDet算法筆記
6. Consistent Optimization
《Consistent Optimization for Single-Shot Object Detection》
Motivation
單階段目標檢測主要有兩個不足,一個是前景-背景類別不平衡,由focal loss處理;另一個是訓練目標和推理設置的不一致,本文通過利用訓練時refined anchors來解決后者。
不一致具體是:分類的訓練目標是對default,regular anchor進行分類,而預測的概率分配給由定位分支產生的對應回歸后anchor。
當原始anchor和refined anchor具有相同的groundtruth目標時,這種訓練推理配置可以很好地工作。但是在下面兩種情況則不然。
?
?
(1)當兩個物體相互遮擋時,比如上圖,兩個anchor都匹配bike,所以檢測器把這兩個anchor的類別都判定為bike,進行分類和回歸后,黃色框回歸到類別person,但是其判定的類別是bike,這樣不一致可能導致NMS時定位準確的anchor(紅框)被錯誤的框(黃框)抑制。
(2)上圖可以發現,回歸后輸出的IoU一般比輸入的IoU要大,所以一些anchor被判定為負樣本,但是如果經過回歸,有可能是正樣本.
所以在訓練階段使用回歸后的anchor可以此gap。
Consistent Optimization
Consistent Detection

Consistent Localization

Comparison to Prior Works
Experiments
對比實驗
正負樣本超參數

不同數量分類/回歸
泛化能力
不同網絡深度和輸入圖片尺度
SSD
與SOTA比較
?
7.Focal Loss
《Focal Loss for Dense Object Detection》
RetinaNet:ResNet+FPN+Focal Loss
Motivation
one-stage不如two-stage的主要原因在于正負樣本的極度不平衡,一張圖像可能生成成千上萬的candidate locations,但是其中只有很少一部分是包含object的,這就帶來了類別不均衡。
而這種不平衡會導致兩個問題:
(1)訓練低效,因為大部分位置都是簡單負樣本,貢獻無用的學習信號;
(2)整體而言,簡單負樣本會在訓練中占據壓倒性優勢,導致模型退化。
OHEM(online hard example mining):each example is scored by its loss, non-maximum suppression (nms) is then applied, and a minibatch is constructed with the highest-loss examples。
8.Light-Weight RetinaNet
減少FLOPs的兩種常用思路:
(1)更換小backbone
(2)減小輸入圖片尺寸,會指數下降準確率
只減少計算密集層中的FLOPs,而保持其他層不變。可以接近線性。
五、Reference
[1](YOLOv1)?J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You only look once: Unified, real-time object detection. In CVPR, 2016.
[2](SSD)?W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y. Fu, and A. C. Berg. SSD: Single shot multibox detector. In ECCV, 2016.
[3](DSSD)?C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. DSSD:Deconvolutional single shot detector. In arXiv,2017.
[4](YOLOv2)?J. Redmon and A. Farhadi. YOLO9000: Better, faster, stronger. In CVPR, 2017.
[5](RetinaNet)?T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollar. Focal loss for dense object detection. In ICCV, 2017.
[6](DSOD)?Shen Z., Liu Z., Li J., Jiang Y., Chen Y., Xue X. DSOD: Learning deeply supervised object detectors from scratch. In ICCV, 2017
[7]?(YOLOv3)?J. Redmon and A. Farhadi. YOLOv3: An incremental im- provement. In arXiv, 2018.
[8](RefineDet)?S. Zhang, L. Wen, X. Bian, Z. Lei, and S. Z. Li. Single-shot refinement neural network for object detection. In CVPR, 2018.
[9](RFBNet)?Songtao Liu, Di Huang?, and Yunhong Wang. Receptive Field Block Net for Accurate and Fast Object Detection. In ECCV ,2018.
[10](M2Det)?Qijie Zhao, Tao Sheng, Yongtao Wang, Zhi Tang, Ying Chen, Ling Cai and Haibin Ling. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network. In AAAI,2019.
[11](Consistent Optimization)?Tao Kong,Fuchun Sun,Huaping Liu,Yuning Jiang and Jianbo Shi. Consistent Optimization for Single-Shot Object Detection. In arXiv, 2019.
[12](R-CNN)?R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.
[13](SppNet)?K.He,X.Zhang,S.Ren,andJ.Sun.Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV,2014.
[14](Fast R-CNN)?R. Girshick. Fast R-CNN. In ICCV, 2015.
[15](Faster R-CNN)?S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal net-works. In NIPS, 2015.
[16](OHEM)?Abhinav Shrivastava,Abhinav Gupta and Ross Girshick. Training Region-based Object Detectors with Online Hard Example Mining.In CVPR, 2016.
[17]?(R-FCN)?J.Dai,Y.Li,K.He,andJ.Sun.R-FCN:Object detection via region-based fully convolutional networks. In NIPS, 2016.
[18](FPN)?T.-Y. Lin, P. Dolla ?r, R. B. Girshick, K. He, B. Hariharan, and S. J. Belongie. Feature pyramid networks for object detection. In CVPR, 2017.
[19](DCN)?J. Dai, H. Qi, Y. Xiong, Y. Li, G. Zhang, H. Hu, and Y. Wei. Deformable convolutional networks. In ICCV, 2017.
[20](Mask R-CNN)?K.He,G.Gkioxari,P.Dolla ?r,and R.Girshick.MaskR-CNN. In ICCV, 2017.
[21](Soft- NMS)?N. Bodla, B. Singh, R. Chellappa, and L. S. Davis. Soft-NMS-improving object detection with one line of code. In ICCV, 2017.
[22](Cascade R-CNN)?Z. Cai and N. Vasconcelos. Cascade R-CNN: Delving into high quality object detection. In CVPR, 2018.
[23](IoUNet)?Borui Jiang,Ruixuan Luo,Jiayuan Mao,Tete Xiao,and Yuning Jiang.Acquisition of Localization Confidence for Accurate Object Detection.In ECCV 2018.
[24](TridentNet)?Yanghao Li,Yuntao Chen,Naiyan Wang,Zhaoxiang Zhang.Scale-Aware Trident Networks for Object Detection.In arXiv,2019.
[25](ResNet)?K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.
[26](DenseNet)?Gao Huang,Zhuang Liu,Laurens van der Maaten.Densely Connected Convolutional Networks. In CVPR,2017.
總結
- 上一篇: RTTHREAD软件包目录
- 下一篇: 目标检测后处理:从nms到softer