基于深度学习的目标检测方法综述
引言
? ? ? ?現有的深度學習的目標檢測方法,可以大致分為兩類:一、基于候選區域的目標檢測方法;二、基于回歸的目標檢測方法。依據方法的提出時間,可以構建出如下時間線:
- 2014 CVPR R-CNN[1]
- 2015 arXiv DenseBox[14]
- 2015 ICCV Fast R-CNN[2]
- 2015 NIPS Faster R-CNN[3]
- 2016 CVPR YOLO[5]
- 2016 ACMMM UnitBox[15]
- 2016 ECCV SSD[8]
- 2017 CVPR Mask R-CNN[4]
- 2017 CVPR YOLOv2[6]
- 2017 arXiv DSSD[9]
- 2017 ICCV DSOD[10]
- 2017 arXiv FSSD[11]
- 2017 arXiv R-SSD[12]
- 2018 arXiv YOLOv3[7]
- 2018 CVPR RefineDet[13]
- 2018 ECCV CornerNet[16]
- 2019 CVPR ExtremeNet[17]
- 2019 CVPR FSAF[18]
- 2019 ICCV FCOS[19]
- 2020 TIP FoveaBox[20]
- 2020 ECCV DETR[21]
? ? ? ?下面,對上述提到的方法按照其所屬類別,依次進行介紹。
基于候選區域的目標檢測方法
? ? ? ?基于候選區域的目標檢測方法由于其處理過程分為兩個階段,也常常被稱為兩階段方法。這類方法首先進行候選區域的提取,再基于候選區域得到檢測結果。
圖 1 R-CNN模型結構? ? ? ?Girshick等人在2014年提出第一個基于深度學習的兩階段目標檢測方法R-CNN[1],它的整體框架如圖1所示。它首先使用Selective Search在輸入圖像上提取候選區域,然后將不同大小的候選區域調整至相同尺寸,再使用CNN提取提取它們的特征,最后使用SVM進行分類、使用線性回歸進行位置修正。但是,在R-CNN中,調整候選區域的尺度會造成信息丟失,且不同的候選區域之間存在重疊,單獨使用CNN對每個候選區域進行特征提取存在大量的冗余計算,限制了R-CNN的檢測速度。
? ? ? ?Girshick等人在2015年對R-CNN進行了改進,提出了Fast R-CNN[2]。主要貢獻在于:1. 在輸入圖片上進行一次特征提取,基于坐標信息直接在特征圖上進行裁剪,得到每個候選區域的特征,這極大的提高了模型速度;2. 提出RoI Pooling層,使用該層可以將不同大小的候選區域特征處理為相同尺度,降低了信息丟失;3. 使用softmax進行分類,實現了基本的端到端。
? ? ? ?Ren等人在2015年對Fast R-CNN進行了進一步的改進,提出了Faster R-CNN[3]。它使用區域建議網絡(RPN)代替原有的Selective Search提取候選區域,極大地降低了提取候選區域的時間。區域建議網絡的處理過程為:1. 在特征圖上進行滑動窗口,得到一系列的錨框(anchor boxes);2. 使用softmax提取前景錨框,回歸它們的偏移和縮放;3. 使用非極大值抑制(NMS)對錨框進行后處理,再取TopK個作為候選區域。Faster R-CNN是第一個真正意義上的端到端的深度目標檢測方法,在目標檢測領域具有重要意義。
? ? ? ?He等人在2017年提出Mask R-CNN[4],在Faster R-CNN的基礎上,通過增加不同分支,可以應對目標檢測、語義分割、實例分割、關鍵點檢測、人體姿勢識別等多個任務,且在多個任務上的結果可以超過當時的SOTA,具有很強的靈活性和適用性。
基于回歸的目標檢測方法
? ? ? ?基于回歸的深度目標檢測方法也被稱為一階段方法,這類方法不提取候選區域,直接回歸出目標檢測結果。目前主要分為三個系列:YOLO系列、SSD系列和Anchor Free系列。
圖 2 YOLO模型結構? ? ? ?Redmon等人在2016年提出了第一個基于深度學習的一階段目標檢測方法——YOLO[5],其核心思想如圖2所示。它將輸入圖片分割為固定數目的網格,每個網格負責檢測中心落入該網格的目標,直接回歸出邊界框和類別概率。2017年,Redmon等人對YOLO進行了改進,提出了YOLOv2[6]方法。在YOLO的基礎上,引入了錨框、高分辨率分類網絡、尺寸聚類等機制,保證速度的同時提高了檢測準確率。2018年,Redmon等人在YOLOv2的基礎上提出了YOLOv3[7]方法,將YOLOv2中的softmax損失函數修改為獨立的交叉熵損失,并提出了多級預測策略,同時加深了網絡結構,進一步提升了檢測精度。
圖3 SSD模型結構? ? ? ?在YOLO提出的同一年,Liu等人提出了SSD[8]方法,它的模型結構如圖3所示。SSD繼承了YOLO中的回歸思路,引入了與Faster R-CNN類似的錨框機制,并加入了特征金字塔檢測方式,達到了與YOLO相近的檢測速度,同時在準確率上比Faster R-CNN更高。Fu等人在2017年對SSD進行了改進,提出了DSSD[9]方法,使用Resnet-101替換了SSD中的VGG網絡,并添加了反卷積層形成了“寬-窄-寬”的沙漏結構,提升了檢測小目標的準確性。Shen等人在2017年提出了四個網絡設計原則,并基于這些原則設計了DSOD[10]模型,不需要預訓練也可達到較高的檢測準確率。Li等人在2017年提出了FSSD[11]方法,通過在SSD中添加特征融合機制,在速度與SSD相差無幾的前提下,準確率有較大提升。與FSSD類似地,Jeong等人在2017年提出在SSD中添加rainbow特征融合方法[12],一定程度上解決了SSD方法中存在的重復框問題,且提高了檢測小目標時的準確性。Zhang等人在2018年提出RefineDet[13]方法,在SSD的基礎上,融合了RPN和FPN,在速度上和一階段方法相近,在準確性上可以和兩階段方法媲美。
圖4 DenseBox模型結構 圖5 CornerNet模型結構? ? ? ?和兩階段方法相比,YOLO系列和SSD系列方法沒有提取候選區域的階段,但除了YOLO方法,YOLOv2、YOLOv3、SSD及其變體方法都使用了錨框機制,這限制了方法的靈活性。Huang等人在2015年提出了第一個Anchor Free(不使用錨框)的深度目標檢測方法——DenseBox[14],它的檢測流程如圖4所示。此方法使用全卷積結構,直接預測目標的邊框和類別,并且可以結合landmark定位進一步提高目標檢測的準確性。Yu等人在2016年提出了UnitBox[15]方法,在DenseBox的基礎上提出并使用了IoU損失,具有更高的準確性和魯棒性。Redmon等人在2016年提出的YOLO也屬于Anchor Free模型,由于前文介紹過,這里就不多做介紹了。Law等人在2018年提出了CornerNet[16]方法,其模型結構如圖5所示。CornerNet通過預測目標的左上角和右下角完成目標檢測,避免了使用錨框帶來的正負樣本不均衡的問題,同時提出了Corner Pooling層,可以更精確的定位目標的左上角和右下角。2019年,Zhou等人在CornerNet的基礎上進行改進,提出了ExtremeNet[17]方法,將檢測兩個角點變為檢測四個邊界點(最上、最下、最左、最右),并預測一個中心點用于判斷邊界點是否為同一組,取得了比CornerNet更高的檢測準確率。與ExtremeNet同一年,Zhu等人提出了FSAF[18]方法,讓每個實例自動地選擇最適合它的特征層,避免了錨框的使用。同年,Tian等人提出了FCOS[19]方法,使用全卷積網絡預測每個像素點相較于對應目標框在上、下、左、右四個方向上的距離,并通過centerness找到目標的中心點,取得了非常優秀的檢測結果。2020年Kong等人提出FoveaBox[20],模仿人眼的中央凹(視覺中心具有最高的視力),先提取每個目標的“凹區域”,再進行后續的分類和回歸。2020年,Carion等人提出了DETR[21]方法,將Transformer融入了目標檢測框架,簡化了模型結構,并在實驗結果上超過了精調的Faster R-CNN。
結論
? ? ? ?可以看出,在深度目標檢測領域,最初是R-CNN系列、YOLO系列和SSD系列“三足鼎立”,近些年,各種各樣的Anchor Free方法如“井噴”一樣層出不窮。我認為,目標檢測在未來的研究重點包括但不限于:
- 實時視頻目標檢測
- 小目標、微小目標檢測
- 易于部署到移動端的目標檢測
- 半監督、弱監督、無監督目標檢測
? ? ? ?相信目標檢測技術一定會發展的越來越好,并為人類的生活帶來越來越多的便利。
參考文獻
總結
以上是生活随笔為你收集整理的基于深度学习的目标检测方法综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: <文本,场景图>解析实践
- 下一篇: Video Question Answe