目標檢測綜述
轉自:https://zhuanlan.zhihu.com/p/383616728
論文參考:[Object Detection in 20 Years: A Survey][https://arxiv.org/abs/1905.05055]
引言
目標檢測領域發展至今已有二十余載,從早期的傳統方法到如今的深度學習方法,精度越來越高的同時速度也越來越快,這得益于深度學習等相關技術的不斷發展。本文將對目標檢測領域的發展做一個系統性的介紹,旨在為讀者構建一個完整的知識體系架構,同時了解目標檢測相關的技術棧及其未來的發展趨勢。由于編者水平有限,本文若有不當之處還請指出與糾正,歡迎大家評論交流!
本文將從以下九大方面進行展開:
- 背景
- 目標檢測算法發展脈絡
- 目標檢測常用數據集及評價指標
- 目標檢測任務普遍存在的六大難點與挑戰
- 目標檢測的五大技術及其演變
- 目標檢測模型的加速技術
- 提高目標檢測模型精度的五大技術
- 目標檢測的五大應用場景
- 目標檢測未來發展的七大趨勢
1. 背景
目標檢測任務是找出圖像或視頻中人們感興趣的物體,并同時檢測出它們的位置和大小。不同于圖像分類任務,目標檢測不僅要解決分類問題,還要解決定位問題,是屬于Multi-Task的問題。如下圖1-1所示:
作為計算機視覺的基本問題之一,目標檢測構成了許多其它視覺任務的基礎,例如實例分割,圖像標注和目標跟蹤等等;從檢測應用的角度看:行人檢測、面部檢測、文本檢測、交通標注與紅綠燈檢測,遙感目標檢測統稱為目標檢測的五大應用。
2. 目標檢測發展脈絡
目標檢測的發展脈絡可以劃分為兩個周期:傳統目標檢測算法時期(1998年-2014年)和基于深度學習的目標檢測算法時期(2014年-至今)。而基于深度學習的目標檢測算法又發展成了兩條技術路線:Anchor based方法(一階段,二階段)和Anchor free方法。下圖2-1展示了從2001年至2021年目標檢測領域中,目標檢測發展路線圖。
2.1 傳統目標檢測算法
不同于現在的卷積神經網絡可以自動提取高效特征進行圖像表示,以往的傳統目標檢測算法主要基于手工提取特征。傳統檢測算法流程可概括如下:
- 選取感興趣區域,選取可能包含物體的區域
- 對可能包含物體的區域進行特征提取
- 對提取的特征進行檢測分類
2.1.1 Viola Jones Detector
VJ[1] (Viola Jones)檢測器采用滑動窗口的方式以檢查目標是否存在窗口之中,該檢測器看起來似乎很簡單穩定,但由于計算量龐大導致時間復雜度極高,為了解決該項問題,VJVJVJ 檢測器通過合并三項技術極大提高了檢測速度,這三項技術分別是:1)特征的快速計算方法-積分圖,2)有效的分類器學習方法-AdaBoost,以及3)高效的分類策略-級聯結構的設計。
2.1.2 HOG Detector
HOG[2](Histogram of Oriented Gradients)檢測器于2005年提出,是當時尺度特征不變性(Scale Invariant Feature Transform)和形狀上下文(Shape Contexts)的重要改進,為了平衡特征不變性(包括平移,尺度,光照等)和非線性(區分不同的對象類別),HOGHOGHOG 通過在均勻間隔單元的密集網格上計算重疊的局部對比度歸一化來提高檢測準確性,因此 HOGHOGHOG 檢測器是基于本地像素塊進行特征直方圖提取的一種算法,它在目標局部變形和受光照影響下都有很好的穩定性。 HOGHOGHOG 為后期很多檢測方法奠定了重要基礎,相關技術被廣泛應用于計算機視覺各大應用。
2.1.3 DPM Detector
作為VOC 2007-2009目標檢測挑戰賽的冠軍,DPM[3] (Deformable Parts Model)是目標檢測傳統算法中當之無愧的SOTA(State Of The Art)算法。DPMDPMDPM 于2008年提出,相比于 HOGHOGHOG,HOGHOGHOG 作了很多改進,因此該算法可以看作的 DPMDPMDPM 延申算法。DPMDPMDPM 算法由一個主過濾器(Root-filter)和多個輔過濾器(Part-filters)組成,通過硬負挖掘(Hard negative mining),邊框回歸(Bounding box regression)和上下文啟動(Context priming)技術改進檢測精度。作為傳統目標檢測算法的SOTA,DPMDPMDPM 方法運算速度快,能夠適應物體形變,但它無法適應大幅度的旋轉,因此穩定性差。
2.1.4 局限性
基于手工提取特征的傳統目標檢測算法主要有以下三個缺點:
- 識別效果不夠好,準確率不高
- 計算量較大,運算速度慢
- 可能產生多個正確識別的結果
2.2 Anchor-Based中的Two-stage目標檢測算法
基于手工提取特征的傳統目標檢測算法進展緩慢,性能低下。直到2012年卷積神經網絡(Convolutional Neural Networks, CNNs)的興起將目標檢測領域推向了新的臺階。基于CNNs的目標檢測算法主要有兩條技術發展路線:anchor-based和anchor-free方法,而anchor-based方法則包括一階段和二階段檢測算法(二階段目標檢測算法一般比一階段精度要高,但一階段檢測算法速度會更快)。
二階段檢測算法主要分為以下兩個階段:
Stage1:從圖像中生成region proposals
Stage2:從region proposals生成最終的物體邊框。
2.2.1 RCNN
論文鏈接:https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf
代碼鏈接:https://github.com/rbgirshick/rcnn
【簡介】 RCNN[4] 由Ross Girshick于2014年提出,RCNN首先通過選擇性搜索算法Selective Search從一組對象候選框中選擇可能出現的對象框,然后將這些選擇出來的對象框中的圖像resize到某一固定尺寸的圖像,并喂入到CNN模型(經過在ImageNet數據集上訓練過的CNN模型,如AlexNet)提取特征,最后將提取出的特征送入到 SVMSVMSVM 分類器來預測該對象框中的圖像是否存在待檢測目標,并進一步預測該檢測目標具體屬于哪一類。
【性能】 RCNN算法在VOC-07數據集上取得了非常顯著的效果,平均精度由33.7%(DPM-V5, 傳統檢測的SOTA算法)提升到58.5%。相比于傳統檢測算法,基于深度學習的檢測算法在精度上取得了質的飛躍。
【不足】 雖然RCNN算法取得了很大進展,但缺點也很明顯:重疊框(一張圖片大2000多個候選框)特征的冗余計算使得整個網絡的檢測速度變得很慢(使用GPU的情況下檢測一張圖片大約需要14S)。
為了減少大量重疊框帶來的冗余計算,K. He等人提出了SPPNet。
2.2.2 SPPNet
論文鏈接:https://link.springer.com/content/pdf/10.1007/978-3-319-10578-9_23.pdf
代碼鏈接:https://github.com/yueruchen/sppnet-pytorch
【簡介】 SPPNet[5] 提出了一種空間金字塔池化層(Spatial Pyramid Pooling Layer, SPP)。它的主要思路是對于一副圖像分成若干尺度的圖像塊(比如一副圖像分成1份,4份,8份等),然后對每一塊提取的特征融合在一起,從而兼顧多個尺度的特征。SPP使得網絡在全連接層之前能生成固定尺度的特征表示,而不管輸入圖片尺寸如何。當使用SPPNet網絡用于目標檢測時,整個圖像只需計算一次即可生成相應特征圖,不管候選框尺寸如何,經過SPP之后,都能生成固定尺寸的特征表示圖,這避免了卷積特征圖的重復計算。
【性能】 相比于RCNN算法,SPPNet在Pascal-07數據集上不犧牲檢測精度(VOC-07, mAP=59.2%)的情況下,推理速度提高了20多倍。
【不足】 和RCNN一樣,SPP也需要訓練CNN提取特征,然后訓練SVM分類這些特征,這需要巨大的存儲空間,并且多階段訓練的流程也很繁雜。除此之外,SPPNet只對全連接層進行微調,而忽略了網絡其它層的參數。
為了解決以上存在的一些不足,2015年R. Girshick等人提出Fast RCNN
2.2.3 Fast RCNN
論文鏈接:https://arxiv.org/pdf/1506.01497.pdf
代碼鏈接:https://github.com/jwyang/faster-rcnn.pytorch
【簡介】 Faster RCNN[7] 是第一個端到端,最接近于實時性能的深度學習檢測算法,該網絡的主要創新點就是提出了區域選擇網絡用于申城候選框,能幾大提升檢測框的生成速度。該網絡首先輸入圖像到卷積網絡中,生成該圖像的特征映射。在特征映射上應用Region Proposal Network,返回object proposals和相應分數。應用Rol池化層,將所有proposals修正到同樣尺寸。最后,將proposals傳遞到完全連接層,生成目標物體的邊界框。
【性能】 該網絡在當時VOC-07,VOC-12和COCO數據集上實現了SOTA精度,其中COCO mAP@.5=42.7%, COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%, VOC12 mAP=70.4%, 17fps with ZFNet
【不足】 雖然Faster RCNN的精度更高,速度更快,也非常接近于實時性能,但它在后續的檢測階段中仍存在一些計算冗余;除此之外,如果IOU閾值設置的低,會引起噪聲檢測的問題,如果IOU設置的高,則會引起過擬合。
2.2.5 FPN
論文鏈接:http://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf
代碼鏈接:https://github.com/jwyang/fpn.pytorch
【簡介】 2017年,T.-Y.Lin等人在Faster RCNN的基礎上進一步提出了特征金字塔網絡FPN[8](Feature Pyramid Networks)技術。在FPN技術出現之前,大多數檢測算法的檢測頭都位于網絡的最頂層(最深層),雖說最深層的特征具備更豐富的語義信息,更有利于物體分類,但更深層的特征圖由于空間信息的缺乏不利于物體定位,這大大影響了目標檢測的定位精度。為了解決這一矛盾,FPN提出了一種具有橫向連接的自上而下的網絡架構,用于在所有具有不同尺度的高底層都構筑出高級語義信息。FPN的提出極大促進了檢測網絡精度的提高(尤其是對于一些待檢測物體尺度變化大的數據集有非常明顯的效果)。
【性能】 將FPN技術應用于Faster RCNN網絡之后,網絡的檢測精度得到了巨大提高(COCO mAP@.5=59.1%, COCO mAP@[.5,.95]=36.2%),再次成為當前的SOTA檢測算法。此后FPN成為了各大網絡(分類,檢測與分割)提高精度最重要的技術之一。
2.2.6 Cascade RCNN
論文鏈接:https://openaccess.thecvf.com/content_cvpr_2018/papers/Cai_Cascade_R-CNN_Delving_CVPR_2018_paper.pdf
代碼鏈接:https://github.com/zhaoweicai/cascade-rcnn
【簡介】 Faster RCNN完成了對目標候選框的兩次預測,其中RPN一次,后面的檢測器一次,而Cascade RCNN[9] 則更進一步將后面檢測器部分堆疊了幾個級聯模塊,并采用不同的IOU閾值訓練,這種級聯版的Faster RCNN就是Cascade RCNN。通過提升IoU閾值訓練級聯檢測器,可以使得檢測器的定位精度更高,在更為嚴格的IoU閾值評估下,Cascade R-CNN帶來的性能提升更為明顯。Cascade RCNN將二階段目標檢測算法的精度提升到了新的高度。
【性能】 Cascade RCNN在COCO檢測數據集上,不添加任何Trick即可超過現有的SOTA單階段檢測器,此外使用任何基于RCNN的二階段檢測器來構建Cascade RCNN,mAP平均可以提高2-4個百分點。
2.3 Anchor-based中的one-stage目標檢測算法
一階段目標檢測算法不需要region proposal階段,直接產生物體的類別概率和位置坐標值,經過一個階段即可直接得到最終的檢測結果,因此有著更快的檢測速度。
2.3.1 YOLO v1
論文鏈接:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf
代碼鏈接:https://github.com/abeardear/pytorch-YOLO-v1
【簡介】 YOLO v1[10] 是第一個一階段的深度學習檢測算法,其檢測速度非常快,該算法的思想就是將圖像劃分成多個網格,然后為每一個網格同時預測邊界框并給出相應概率。例如某個待檢測目標的中心落在圖像中所劃分的一個單元格內,那么該單元格負責預測該目標位置和類別。
【性能】 YOLO v1檢測速度非常快,在VOC-07數據集上的mAP可達52.7%,實現了155 fps的實時性能,其增強版性能也很好(VOC-07 mAP=63.4%, 45 fps, VOC-12 mAP=57.9%),性能要優于DPM和RCNN。
【不足】 相比于二階段的目標檢測算法,盡管YOLO v1算法的檢測速度有了很大提高,但精度相對教低(尤其是對于一些小目標檢測問題)。
2.3.2 SSD
論文鏈接:https://arxiv.org/pdf/1512.02325
代碼鏈接:https://github.com/amdegroot/ssd.pytorch
【簡介】 SSD[11] 算法的主要創新點是提出了Multi-reference和Multi-resolution的檢測技術。SSD算法和先前的一些檢測算法的區別在于:先前的一些檢測算法只是在網絡最深層的分支進行檢測,而SSD有多個不同的檢測分支,不同的檢測分支可以檢測多個尺度的目標,所以SSD在多尺度目標檢測的精度上有了很大的提高,對小目標檢測效果要好很多。
【性能】 相比于YOLO v1算法,SSD進一步提高了檢測精度和速度(VOC-07 mAP=76.8%, VOC-12 mAP=74.9%, COCO mAP@.5=46.5%, mAP@[.5,.95]=26.8%, SSD的精簡版速度達到59 fps)。
2.3.3 YOLO v2
論文鏈接:https://openaccess.thecvf.com/content_cvpr_2017/papers/Redmon_YOLO9000_Better_Faster_CVPR_2017_paper.pdf
代碼鏈接:https://github.com/longcw/yolo2-pytorch
【簡介】 相比于YOLO v1,YOLO v2[12] 在精度、速度和分類數量上都有了很大的改進。在速度上(Faster),YOLO v2使用DarkNet19作為特征提取網絡,該網絡比YOLO v2所使用的VGG-16要更快。在分類上(Stronger),YOLO v2使用目標分類和檢測的聯合訓練技巧,結合Word Tree等方法,使得YOLO v2的檢測種類擴充到了上千種。下圖2-2展示了YOLO v2相比于YOLO v1在提高檢測精度(Better)上的改進策略。
【性能】 YOLO v2算法在VOC 2007數據集上的表現為67 FPS時,mAP為76.8,在40FPS時,mAP為78.6。
【不足】 YOLO v2算法只有一條檢測分支,且該網絡缺乏對多尺度上下文信息的捕獲,所以對于不同尺寸的目標檢測效果依然較差,尤其是對于小目標檢測問題。
2.3.4 RetinaNet
論文鏈接:https://openaccess.thecvf.com/content_ICCV_2017/papers/Lin_Focal_Loss_for_ICCV_2017_paper.pdf
代碼鏈接:https://github.com/yhenon/pytorch-retinanet
【簡介】 盡管一階段檢測算推理速度快,但精度上與二階段檢測算法相比還是不足。RetinaNet[13] 論文分析了一階段網絡訓練存在的類別不平衡問題,提出能根據Loss大小自動調節權重的Focal loss,代替了標準的交叉熵損失函數,使得模型的訓練更專注于困難樣本。同時,基于FPN設計了RetinaNet,在精度和速度上都有不俗的表現。
【性能】 RetinaNet在保持高速推理的同時,擁有與二階段檢測算法相媲美的精度(COCO mAP@.5=59.1%, mAP@[.5, .95]=39.1%)。
2.3.5 YOLO v3
論文鏈接:https://arxiv.org/pdf/1804.02767.pdf
代碼鏈接:https://github.com/ultralytics/yolov3
【簡介】 相比于YOLO v2,YOLO v3[14] 將特征提取網絡換成了DarkNet53,對象分類用Logistic取代了Softmax,并借鑒了FPN思想采用三條分支(三個不同尺度/不同感受野的特征圖)去檢測具有不同尺寸的對象。
【性能】 YOLO v3在VOC數據集,Titan X上處理 608×608608\times 608608×608 圖像速度達到20FPS,在COCO的測試數據集上mAP@0.5達到57.9%。其精度比SSD高一些,比Faster RCNN相比略有遜色(幾乎持平),比RetinaNet差,但速度是SSD、RetinaNet和Faster RCNN至少2倍以上,而簡化后的Yolov3 tiny可以更快。
【不足】 YOLO v3采用MSE作為邊框回歸損失函數,這使得YOLO v3對目標的定位并不精準,之后出現的IOU,GIOU,DIOU和CIOU等一系列邊框回歸損失大大改善了YOLO v3對目標的定位精度。
2.3.6 YOLO v4
論文鏈接:https://arxiv.org/pdf/2004.10934
代碼鏈接:https://github.com/Tianxiaomo/pytorch-YOLOv4
【簡介】 相比于YOLO v4,YOLO v4[15] 在輸入端,引入了Mosaic數據增強、cmBN、SAT自對抗訓練;在特征提取網絡上,YOLO v4將各種新的方式結合起來,包括CSPDarknet53,Mish激活函數,Dropblock;在檢測頭中,引入了SPP模塊,借鑒了FPN+PAN結構;在預測階段,采用了CIOU作為網絡的邊界框損失函數,同時將NMS換成了DIOU_NMS等等。總體來說,YOLO v4具有極大的工程意義,將近年來深度學習領域最新研究的tricks都引入到了YOLO v4做驗證測試,在YOLO v3的基礎上更進一大步。
【性能】 YOLO v4在COCO數據集上達到了43.5%AP(65.7% AP50),在Tesla V100顯卡上實現了65 fps的實時性能,下圖2-3展示了在COCO檢測數據集上YOLO v4和其它SOTA檢測算法的性能對比。
2.3.7 YOLO V5
代碼鏈接:https://github.com/ultralytics/yolov5
【簡介】 目前YOLO V5公布了源代碼,但尚未發表論文;與YOLO V4有點相似,都大量整合了計算機視覺領域的State-of-the-art,從而顯著改善了YOLO對目標的檢測性能。相比于YOLO V4,YOLO V5在性能上稍微遜色,但其靈活性與速度上遠強于YOLO V4,而且在模型的快速部署上也具有極強優勢。
**【性能】**如下圖2-4展示了在COCO檢測數據集上YOLO v5和其它SOTA檢測算法的性能對比。
2.3.8 Anchor-based目標檢測算法局限性
基于Anchor的目標檢測算法主要有以下四大缺點:
- Anchor的大小,數量,長寬比對于檢測性能的影響很大(通過改變這些超參數Retinanet在COCO benchmark上面提升了4%的AP),因此Anchor based的檢測性能對于anchor的大小、數量和長寬比都非常敏感。
- 這些固定的Anchor極大地損害了檢測器的普適性,導致對于不同任務,其Anchor都必須重新設置大小和長寬比。
- 為了去匹配真實框,需要生成大量的Anchor,但是大部分的Anchor在訓練時標記為負樣本,所以就造成了樣本極度不均衡問題(沒有充分利用fore-ground)。
- 在訓練中,網絡需要計算所有Anchor與真實框的IOU,這樣就會消耗大量內存和時間。
2.4 Anchor-Free中的目標檢測算法
基于Anchor的物體檢測問題通常被建模成對一些候選區域進行分類和回歸的問題,在一階段檢測器中,這些候選區域就是通過滑窗方式產生Anchor box,而在二階段檢測器中,候選區域是RPN生成的Proposal,但是RPN本身仍然是對滑窗方式產生的Anchor進行分類和回歸。基于Anchor的檢測算法由于Anchor太多導致計算復雜,及其所帶來的大量超參數都會影響模型性能。近年的Anchor free技術則摒棄Anchor,通過確定關鍵點的方式來完成檢測,大大減少了網絡超參數的數量。
2.4.1 CornerNet
論文鏈接:http://openaccess.thecvf.com/content_ECCV_2018/papers/Hei_Law_CornerNet_Detecting_Objects_ECCV_2018_paper.pdf
代碼鏈接:https://github.com/princeton-vl/CornerNet
【簡介】 CornerNet[16] 是Anchor free技術路線的開創之作,該網絡提出了一種新的對象檢測方法,將網絡對目標邊界框的檢測轉化為一對關鍵點的檢測(即左上角和右下角),通過將對象檢測為成對的關鍵點,而無需設計Anchor box作為先驗框。
【性能】 實驗表明,CornerNet在COCO數據集上實現了42.1%AP,該精度優于所有現有的單階段檢測網絡。下圖2-3展示了在COCO檢測數據集上CornerNet和其它SOTA檢測算法的性能對比。
【不足】 CornerNet只關注邊緣和角點,缺乏目標內部信息,容易產生FP;該網絡還是需要不少的后處理,比如如何選取分數最高的點,同時用offset來微調目標定位,也還需要做NMS。
2.4.2 CenterNet
論文鏈接:https://openaccess.thecvf.com/content_ICCV_2019/papers/Duan_CenterNet_Keypoint_Triplets_for_Object_Detection_ICCV_2019_paper.pdf
代碼鏈接:https://github.com/Duankaiwen/CenterNet
【簡介】 與CornerNet檢測算法不同,CenterNet[17] 的結構十分簡單,它摒棄了左上角和右下角兩關鍵點的思路,而是直接檢測目標的中心點,其它特征如大小,3D位置,方向,甚至姿態可以使用中心點位置的圖像特征進行回歸,是真正意義上的Anchor free。該算法在精度和召回率上都有很大提高,同時該網絡還提出了兩個模塊:級聯角池化模塊和中心池化模塊,進一步豐富了左上角和右下角收集的信息,并提供了
【性能】 相比于一階段和二階段檢測算法,CenterNet的速度和精度都有不少的提高,在COCO數據集上,CenterNet實現了47.0%的AP,比現有的一階段檢測器至少高出4.9%。下圖2-4展示了在COCO檢測數據集上CenterNet和其它SOTA檢測算法的性能對比。
【不足】 在訓練過程中,同一類別中的如果某些物體靠的比較近,那么其Ground Truth中心點在下采樣時容易擠到一塊,導致兩個物體GT中心點重疊,使得網絡將這兩個物體當成一個物體來訓練(因為只有一個中心點了);而在模型預測階段,如果兩個同類物體在下采樣后的中心點也重疊了,那么網絡也只能檢測出一個中心點。
2.4.3 FSAF
論文鏈接:http://openaccess.thecvf.com/content_CVPR_2019/papers/Zhu_Feature_Selective_Anchor-Free_Module_for_Single-Shot_Object_Detection_CVPR_2019_paper.pdf
代碼鏈接:https://github.com/hdjang/Feature-Selective-Anchor-Free-Module-for-Single-Shot-Object-Detection
【簡介】 FSAF[18] 網絡提出了一種FSAF模塊用于訓練特征金字塔中的Anchor free分支,讓每一個對象都自動選擇最合適的特征。在該模塊中,Anchor box的大小不再決定選擇哪些特征進行預測,使得Anchor的尺寸成為了一種無關變量,實現了模型自動化學習選擇特征。
【性能】 下圖2-5展示了在COCO檢測數據集上FSAF算法和其它SOTA檢測算法的性能對比。
2.4.4 FCOS
論文鏈接:https://openaccess.thecvf.com/content_ICCV_2019/papers/Tian_FCOS_Fully_Convolutional_One-Stage_Object_Detection_ICCV_2019_paper.pdf
代碼鏈接:https://github.com/tianzhi0549/FCOS
【簡介】 FCOS[19] 網絡是一種基于FCN的逐像素目標檢測算法,實現了無錨點(Anchor free),無提議(Proposal free)的解決方案,并且提出了中心度Center ness的思想。該算法通過去除Anchor,完全避免了Anchor的復雜運算,節省了訓練過程中大量的內存占用,將總訓練內存占用空間減少了2倍左右。
【性能】 FCOS的性能優于現有的一階段檢測器,同時FCOS還可用作二階段檢測器Faster RCNN中的RPN,并且很大程度上都要優于RPN。下圖2-6展示了在COCO檢測數據集上FCOS算法和其它SOTA檢測算法的性能對比。
2.4.5 SAPD
論文鏈接:https://arxiv.org/pdf/1911.12448
代碼鏈接:https://github.com/xuannianz/SAPD
【簡介】 SAPD[20] 論文作者認為Anchor point的方法性能不高主要還是在于訓練的不充分,主要是注意力偏差和特征選擇。因而作者提出了兩種策略:1)Soft-weighted anchor points對不同位置的樣本進行權重分配 2)Soft-selected pyramid levels,將樣本分配到多個分辨率,并進行權重加權。而在訓練階段,作者前6個epoch采用FSAF的方式,而后6個epoch會將特征選擇的預測網絡加入進行聯合訓練。
【性能】 下圖2-6展示了在COCO檢測數據集上SAPD算法和其它SOTA檢測算法的性能對比。
3. 常用數據集及評價指標
3.1 常用數據集
3.1.1 四大公共數據集
Pascal VOC[21],ILSVRC[22],MS-COCO[23],和OID[24] 數據集是目標檢測使用最多的四大公共數據集,至于這四大數據集的介紹,此處不一一展開,大家可根據下方給出的鏈接了解:
- PASCAL VOC數據集詳細介紹可參考:https://arleyzhang.github.io/articles/1dc20586/
- ILSVRC數據集詳細介紹可參考:https://cloud.tencent.com/developer/article/1747599
- MS-COCO數據集詳細介紹可參考:https://blog.csdn.net/qq_41185868/article/details/82939959
- Open Images(QID)數據集詳細介紹可參考:https://bbs.easyaiforum.cn/thread-20-1-1.html
下圖3-1展示了這四大檢測數據集的樣例圖片及其標簽
下表3-1展示了這四大檢測數據集的數據統計結果:
3.1.2 其它數據集
檢測任務包含了很多種,其中比較常見的檢測任務有行人檢測,臉部檢測,文本檢測,交通燈與交通標志檢測,遙感圖像目標檢測。下表3-2至3-6分別列舉了各檢測任務下的常用公共檢測數據集。
行人檢測:
臉部檢測:
文本檢測:
交通標志檢測:
遙感圖像檢測:
3.2 常用評價指標
目標檢測常用的評價指標有:交并比,準確率,精度,召回率,FPR,F1-Score,PR曲線-AP值,ROC曲線-AUC值,和mAP值和FPS。
3.2.1 交并比(IOU)
IOU = 兩個矩形交集的面積 / 兩個矩形并集的面積
如上圖3-2,假設A是模型檢測結果,B為Ground Truth,那么IOU = (A ∩ B) / (A ∪ B),一般情況下對于檢測框的判定都會存在一個閾值,也就是IOU的閾值,一般將IOU值設置為大于0.5的時候,則可認為檢測到目標物體。
3.2.2 準確率/精度/召回率/F1值/FPR
True positives (TP,真正): 預測為正,實際為正
True negatives (TN,真負): 預測為負,實際為負
False positives(FP,假正): 預測為正,實際為負
False negatives(FN,假負): 預測為負,實際為正
Accuracy=TP+TNTP+TN+FP+FNAccuracy=\frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN?
Precision=TPTP+FPPrecision=\frac{TP}{TP+FP} Precision=TP+FPTP?
Recall=TPTP+FNRecall=\frac{TP}{TP+FN} Recall=TP+FNTP?
F1=2×TP2×TP+FP+FNF1=\frac{2\times TP}{2\times TP+FP+FN} F1=2×TP+FP+FN2×TP?
FPR=FPFP+TNFPR=\frac{FP}{FP+TN} FPR=FP+TNFP?
3.2.3 PR曲線-AP值
模型精度,召回率,FPR和F1-Score值無法往往不能直觀反應模型性能,因此就有了PR曲線-AP值 和 ROC曲線-AUC值
PR曲線就是Precision和Recall的曲線,我們以Precision作為縱坐標,Recall為橫坐標,可繪制PR曲線如下圖3-3所示:
評估標準:如果模型的精度越高,且召回率越高,那么模型的性能自然也就越好,反映在PR曲線上就是PR曲線下面的面積越大,模型性能越好。我們將PR曲線下的面積定義為AP(Average Precision)值,反映在AP值上就是AP值越大,說明模型的平均準確率越高。
3.2.4 ROC曲線-AUC值
ROC曲線就是RPR和TPR的曲線,我們以FPR為橫坐標,TPR為縱坐標,可繪制ROC曲線如下圖3-4所示:
評估標準:當TPR越大,FPR越小時,說明模型分類結果是越好的,反映在ROC曲線上就是ROC曲線下面的面積越大,模型性能越好。我們將ROC曲線下的面積定義為AUC(Area Under Curve)值,反映在AUC值上就是AUC值越大,說明模型對正樣本分類的結果越好。
3.2.5 mAP
Mean Average Precision(mAP)是平均精度均值,具體指的是不同召回率下的精度均值。在目標檢測中,一個模型通常會檢測很多種物體,那么每一類都能繪制一個PR曲線,進而計算出一個AP值,而多個類別的AP值的平均就是mAP。
評估標準:mAP衡量的是模型在所有類別上的好壞,屬于目標檢測中一個最為重要的指標,一般看論文或者評估一個目標檢測模型,都會看這個值,這個值(0-1范圍區間)越大越好。
劃重點!!!
一般來說mAP是針對整個數據集而言的,AP則針對數據集中某一個類別而言的,而percision和recall針對單張圖片某一類別的。
3.2.6 FPS
Frame Per Second(FPS)指的是模型一秒鐘能檢測圖片的數量,不同的檢測模型往往會有不同的mAP和檢測速度,如下圖3-5所示:
目標檢測技術的很多實際應用在準確度和速度上都有很高的要求,如果不計速度性能指標,只注重準確度表現的突破,其代價是更高的計算復雜度和更多內存需求,對于行業部署而言,可擴展性仍是一個懸而未決的問題。因此在實際問題中,通常需要綜合考慮mAP和檢測速度等因素。本小節參考目標檢測中的評價指標有哪些[25]
4. 存在的六大難點與挑戰
每一個檢測任務都有其特有的檢測難點,比如背景復雜,目標尺度變化大,顏色對比度低等挑戰,這就導致某個檢測算法在檢測任務A上可能表現SOTA,但在檢測任務B上表現得可能不盡如人意。因此,分析研究每一個檢測任務存在的難點與挑戰至關重要,這有利于我們針對不同的檢測難點設計出不同的技術以解決該項問題,從而使得我們提出的算法能夠在特定的任務上表現SOTA。
我們對大部分檢測任務加以分析,概括出了以下幾點在檢測任務可能存在的檢測難點與挑戰:
- 待檢測目標尺寸很小,導致占比小,檢測難度大
- 待檢測目標尺度變化大,網絡難以提取出高效特征
- 待檢測目標所在背景復雜,噪音干擾嚴重,檢測難度大
- 待檢測目標與背景顏色對比度低,網絡難以提取出具有判別性的特征
- 各待檢測目標之間數量極度不均衡,導致樣本不均衡
- 檢測算法的速度與精度難以取得良好平衡
劃重點!!!
以上六大檢測難點基本覆蓋檢測任務中存在的所有挑戰,對于我們所做過的每一份檢測任務數據集,都可以在上述找到相應難點與挑戰,并針對具體的檢測難點提出相應的解決方案!
5. 目標檢測的五大技術及其演變
5.1 Multi-Scale檢測技術的演變
不同尺度,不同形狀物體的檢測是目標檢測面臨的主要挑戰之一,而多尺度檢測技術是解決多尺度問題的主要技術手段。目標檢測發展的幾十年來,多尺度檢測技術的演變經歷了以下過程:
- Feature pyramids and sliding windows(2014年前)
- Detection with object proposals(2010-2015年)
- Deep regression(2013-2016年)
- Multi-reference detection(2015年后)
- Multi-resolution detection(2016年后)
如下圖5-1展示了多尺度檢測技術的演變歷程。
5.2 邊框回歸技術的演變
邊框回歸(The Bounding Box regression)是目標檢測非常重要的技術。它的目的是根據初始設定的anchor box來進一步改進修正預測框的位置。目標檢測發展的幾十年來,多尺度檢測技術的演變經歷了以下過程:
- Without BB regression(2008年之前)
- From BB to BB(2008-2013年)
- From feature to BB(2013年后)
如下圖5-2展示了邊框回歸技術的演變歷程。
5.3 上下文信息提取技術的演變
目標檢測領域中每一個目標都被周圍背景所包圍,而我們對于一個目標的認知會根據其周圍的環境作出判斷,于是我們將目標周圍的環境信息稱作上下文信息。上下文可以作為網絡判斷目標類別和定位的重要輔助信息,可大大提高網絡檢測的精度。為網絡提取上下文信息有以下三種常用的方法:
- 提取局部上下文信息用于目標檢測
- 提取全局上下文信息用于目標檢測
- 上下文信息交互提取高效上下文信息用于目標檢測
如下圖5-3展示了上下文信息提取技術的演變歷程。
5.4 非極大值抑制技術的演變
目標檢測的過程中在同一目標的位置上會產生大量的候選框,這些候選框相互之間可能會有重疊,此時我們需要利用非極大值抑制找到最佳的目標邊界框,消除冗余的邊界框。非極大值抑制算法的流程如下:
- 根據置信度得分進行排序
- 選擇置信度最高的比邊界框添加到最終輸出列表中,將其從邊界框列表中刪除
- 計算所有邊界框的面積
- 計算置信度最高的邊界框與其它候選框的IoU。
- 刪除IoU大于閾值的邊界框
- 重復上述過程,直至邊界框列表為空。
非極大值抑制算法逐漸發展成為以下三條路線:
- Greedy selection
- Bounding box aggregation
- Learning to NMS
如下圖5-4展示了非極大值抑制算法的技術演變歷程。
5.5 難分負樣本挖掘技術的演變
目標檢測的訓練過程本質上還是一個樣本數據不平衡的學習過程,因為檢測算法中需要用到很多檢測框,而真正包含目標的檢測框占比卻極少。在網絡訓練過程中,大量簡單的負樣本(背景)會主導學習方向而不利于網絡往正確的方向加以優化,因此這需要采取一定的策略來解決這一問題。難分負樣本挖掘(Hard Negative Mining, HNM)技術正是解決訓練過程中的數據不平衡問題的一項關鍵技術。
難分負樣本挖掘技術的演變主要經歷了以下過程:
- Bootstrap
- HNM in deep learning based detectors
如下圖5-5展示了難分負樣本挖掘技術的演變歷程。
6. 模型加速技術
目前卷積神經網絡在移動端的部署仍然具有不小挑戰,一個高精度的模型若計算量大,則在工業落地的時候需要購買昂貴的設備去運行該模型,這會極大提高工業生產成本,阻礙模型落地進程。因此模型在高精度的同時,還需要速度快。學術界研究學者致力于研究出高精度的輕量化網絡架構,而工業界工程師則致力于從硬件的角度出發,開發一系列模型壓縮與量化技術來提高模型運算速度。近年來出現的一些加速技術大體可分為以下三類:
- 輕量化網絡設計
- 模型壓縮與量化
- 模型數值加速
6.1 輕量化網絡設計
設計輕量化網絡架構可以使模型在輕量化的同時保持較高的精度,在輕量化網絡設計中,除了降低網絡通道數和卷積層數等一些通用的網絡設計準則外,一些其它的方法也被用于構建輕量化的網絡:
- 卷積分解
- 分組卷積
- 深度可分離卷積
- Bottle-neck設計
- 神經架構搜索
6.1.1 卷積分解
卷積分解是最簡單也最常用的用于構建輕量級網絡的技巧,卷積分解的方式主要有兩種:
第一種方法是:將大卷積核分解為多個小卷積核。如上圖所示,可以將一個 7×77\times 77×7 的卷積核分解為 3 個 3×33\times 33×3 的卷積核。它們擁有相同的感受野。但是后者計算效率會更高。或者將 ab×bab\times bab×b 的卷積核分解為 ab×1ab\times 1ab×1 和 a×ba\times ba×b 的卷積核。
第二種方法是:將一組大卷積在其通道維度上分解為兩小組卷積,如上圖6-2所示,我們可以用 d′d'd′ 個卷積核將特征圖的通道數從 ccc 降到 d′d'd′。然后用 ddd 個卷積核將特征的通道數調整為 ddd。通過此種方式,可以將復雜度從 O(dk2c)O(dk^2c)O(dk2c) 降到 O(d′k2c)+O(dd′)O(d'k^2c)+O(dd')O(d′k2c)+O(dd′) 。
6.1.2 分組卷積
分組卷積的目的是通過將特征通道分成多個不同的組來減少卷積層中的參數數量,然后對每個組獨立進行卷積,如上圖6-3所示。如果我們將特征通道平均劃分成 mmm 組,卷積的計算復雜度理論上會降低到之前的 1/m1/m1/m。
6.1.3 深度可分離卷積
如上圖6-4所示,深度可分離卷積是用于構建輕量化網絡的一種常見方法,當組數設置為通道數時,可以將其視為組卷積的特例。假設我們有一個帶有 ddd 個卷積濾波器的卷積層和一個具有 ccc 個通道數的特征圖。每個卷積濾波器的大小是 k×kk\times kk×k。對于深度可分離卷積,每個 k×k×ck\times k\times ck×k×c 的卷積濾波器首先分成大小為 k×k×1k\times k\times 1k×k×1 的切片,然后在每個同道中人對濾波器的每個切片單獨進行卷積,使用多個 1×11\times 11×1 的濾波器進行維度變換,以便最終輸出相同的通道。通過使用濕度可分離卷積,計算復雜度可以從 O(dk2c)O(dk^2 c)O(dk2c) 降低到 O(ck2)+O(dc)O(ck^2)+O(dc)O(ck2)+O(dc) 。
6.1.4 Bottle-neck設計
Bottle-neck已被廣泛用于設計輕量級網絡,Bottle-neck的核心思想就是運用少量的參數/計算量進行信息壓縮。在Bottle-neck的設計中,一種常見的方法是壓縮檢測器的輸入層使得檢測器在一開始就減少計算量;另一種方法是壓縮檢測器的輸出來降低通道數,從而使其在后續檢測階段更加高效。
6.1.5 神經架構搜索NAS
NAS技術已應用于大規模圖像分類、對象檢測和圖像分割任務,神經網絡架構搜索主要有三大流程:
- 定義搜索空間
- 執行搜索策略采樣網絡
- 對采樣的網絡進行性能評估
定義搜索空間是指待搜索網絡結構的候選集合,搜索空間大致分為全局搜索空間和局部搜索空間,前者代表搜索整個網絡結構,后者只搜索一些小的結構,通過堆疊、拼接的方法組合成完整的大網絡;執行搜索策略即如何在搜索空間進行選擇,根據方法不同,搜索策略可大致分為:1)基于強化學習的方法 2)基于進化算法的方法 3)基于梯度的方法;而性能評估即在目標數據集上評估網絡結構的性能好壞,從而篩選出最優網絡結構。
6.2 模型壓縮與量化
模型壓縮與量化是兩種常用于加速CNN模型的技術,這其中所涉及到的技術有模型剪枝,量化與知識蒸餾。其中模型剪枝是指修剪網絡結構或權重從而減小規模的一種技術;模型量化則是指將模型一些浮點計算轉成低Bit的定點計算的技術,它可以有效降低模型計算強度、參數大小和內存消耗;而知識蒸餾則是指將大網絡所學習到的"知識"有效傳遞到小網絡中的一種技術。
6.2.1 網絡剪枝
網絡剪枝最早可以追溯到1980年代,而近年來的網絡剪枝方法通常采用迭代訓練的方式進行剪枝,即在每個訓練階段后僅去除一小部分不重要的權重,并重復此操作直到模型達到較小量級且精度滿足落地要求。由于傳統的網絡剪枝只是簡單的去除一些不重要的權重,這可能會導致卷積濾波器連的連接變得稀疏,因此不能直接用于壓縮CNN模型。而解決這一問題的方案就是移除整個過濾器而不是獨立的權重。
6.2.2 模型量化
近年來關于模型量化的工作主要集中在網絡二值化,其目的是通過將網絡的參數權重量化為二進制變量(例如0或1)來進行網絡加速,以便將一些浮點運算轉換為AND,OR,NOT等邏輯運算。模型參數的二值化可以顯著加快其計算速度并減少網絡存儲,從而使得網絡更容易地部署在移動設備上。而實現以上思路的一種方法就是用最小二乘法通過二進制變量來近似卷積操作,并使用多個二值化卷積的線性組合來不斷提高模型精度。此外,一些研究人員還進一步開發了用于二值化計算的GPU加速庫,并取得了更顯著的模型加速效果。
6.2.3 知識蒸餾
知識蒸餾是一種將大型網絡所學習到的"知識"有效傳遞到小網絡中,使得小網絡接近于大網絡預測能力的一種技術,此處我們將大網絡稱作“Teacher Net”,將小網絡稱作“Student Net”,近年來這一技術成功用于目標檢測算法的加速。使用知識蒸餾一個最直接的方法就是使用Teacher Net來指導輕量級的Student Net,以便Student Net可以用于檢測的加速;而知識蒸餾的另一個方法就是對候選區域進行變換,以最小化Student Net和Teacher Net之間特征的距離,這種方法直接使得模型的檢測速度提高了2倍,而同時又保持了很高的檢測精度。
6.3 數值加速技術
目標檢測中常用的數值加速方法主要有以下四種,具體實現方法此處就不一一展開了,有興趣的讀者可自行搜索資料進行了解。
- 積分圖像加速
- 頻域加速
- 矢量量化
- 降階逼近
7. 提高目標檢測模型精度的五大技術
接下來,本小節帶你簡單回顧近幾年年目標檢測領域中用于提高模型精度的幾大技術。
7.1 特征提取網絡
特征提取網絡(Backbone)對于目標檢測模型性能的提升至關重要,一些經典的特征提取網絡對目標檢測任務精度起到了重要的推動作用,如AlexNet、VGG、GoogLeNet、ResNet、DenseNet、SENet等等。隨著卷積神經網絡的發展,業界不斷涌現出了一些新的特征提取網絡,性能更是步步攀升。一些先進的特征提取網絡被應用于目標檢測模型的特征提取Backbone,使得目標檢測模型的精度與速度不斷提升,比如STDN,DSOD,TinyDSOD和DenseNet等等。作為當時實力分割的SOTA算法,Mask RCNN采用了ResNeXt作為網絡的Backbone。
7.2 高效的特征融合
高效的特征表示是提升目標檢測性能的關鍵,近年來,許多研究學者在特征提取網絡中加入一些Trick去提高網絡的特征提取能力。而用于提高網絡表征能力的兩項最重要的方法便是:1)高效的特征融合 和2)學習出具備大感受野的高分辨率特征表示。
7.2.1 為什么特征融合如此重要呢?
平移不變性和等變性是圖像特征表示中的兩個重要特性:特征的平移不變性有利于圖像分類,因為它旨在學習高級語義信息;而特征的平移等變性更有利于目標定位,因為它旨在區分位置和尺度變化。由于目標檢測由圖像識別和目標定位兩個子任務組成,因此目標檢測算法需要同時學習特征平移不變性和等變性。
近年來,特征融合在目標檢測中得到了廣泛的應用,由于CNN模型由一系列卷積和池化層組成,因此更深層的特征具有更強的平移不變性但缺乏一定的平移等變性,這雖然更有利于物體識別,但它對目標定位的精度低。相反,較淺層的特征具有更強的平移等變性且包含更多的邊緣輪廓信息,這雖然有利于目標定位,但由于缺乏一定的語義信息而不利于物體分類。因此CNN模型中深層和淺層特征的融合有助于提高特征的平移不變性和等變性,這對提高目標檢測的精度是非常重要的。
7.2.2 實現高效特征融合的一些方法
在目標檢測中實現特征融合,首先需要確定要融合哪些特征,比如我們可以采取自底向上的特征融合,將淺層特征通過跳躍連接融入到深層特征中,如上圖7-1(a)所示;也可以采用自頂向下的特征融合,將深層特征通過跳躍連接融入到淺層特征中,如上圖7-1(b)所示;同樣也可以采用的跨不同層進行特征融合的方式。確定要融合哪些特征之后,再確定融合的方式,比如逐元素求和,如上圖7-1?;還是逐元素相乘,如上圖7-1(d);還是Concat融合,如上圖7-1(e)所示。
7.2.3 具備大感受野的高分辨率特征表示
特征的感受野和分辨率是CNN模型需要考慮的兩個重要因素,具有較大感受野的網絡能夠捕獲更大尺度的上下文信息,而具備較小感受野的網絡可能更專注于圖像的局部細節。高分辨率的特征有利于檢測小物體,由于感受野較小缺乏一定的語義信息,因此不利于檢測大尺寸物體,而為了增大感受野最直接的辦法是引入池化層,但這會導致特征的分辨率降低而不利于檢測小物體。為了解決這一矛盾,在增加感受野的同時又喪失特征分辨率,空洞卷積是一種比較好的解決辦法,空洞卷積無需額外的參數和計算成本即可有效提高檢測算法的精度。
7.3 目標定位改進
為了改善檢測算法對于目標定位的精度,近年來出些的一些主要改進方法是:1)邊框微調,2)設計新的損失函數用于更精準的定位。
7.3.1 邊框微調技術
邊框微調是對檢測結果進行后處理。盡管邊界框回歸已經集成到大多數現代目標檢測器中,但仍有一些目標無法被Anchor box很好的錨定,這導致邊框的預測并不精確,因此一些研究學者提出邊界框微調技術,通過將檢測結果迭代輸入BB回歸器,直到模型的預測收斂到正確的位置和大小。
7.3.2 改進損失函數以提高定位精度
目標定位被認為是一個坐標回歸問題,定位損失函數的演變經歷了MSE->IOU->GIOU->DIOU->CIOU這一過程
7.4 語義分割促進目標檢測
目標檢測和語義分割是計算機視覺最基本的兩大任務,近年來一些研究發現語義分割可以促進目標檢測性能的提升。
7.4.1 為什么分割可以改善檢測性能呢?
分割改善檢測性能的原因主要有以下三點
- 分割可以幫助類別分類
- 分割可以促進目標的精準定位
- 分割可以作為一種上下文信息嵌入到檢測網絡
7.4.2 分割如何改善檢測性能
通過分割改善檢測性能主要有兩種方法:1)學習豐富的特征表示,2)多任務損失促進網絡的學習
- 學習豐富的特征表示
最簡單的方法就是將分割網絡視為固定的特征提取器嵌入到檢測算法中,這種方式的優點是容易實現,缺點是分割網絡會帶來額外的計算。
- 多任務損失促進網絡學習
另一種方法是在原始檢測算法中引入一個額外的分割分支,并使用多任務損失函數(分割損失 + 檢測損失)來訓練該模型。而在模型推理階段,將分割分支去除即可。這種方法的優點是檢測速度不會受到影響,缺點是該算法在訓練時還需要像素級別的圖像標注。在此基礎上,一些研究人員引入了弱監督學習的思想:不基于像素級別的圖像標注進行模型訓練,而是簡單地基于邊界框標注來訓練該分割分支。
7.5 旋轉和尺度變化的魯棒性檢測
物體的旋轉和尺度變換是目標檢測面臨的重要挑戰,CNN的平移不變性使得越來越多人投入到該項挑戰的研究當中。
7.5.1 旋轉的魯棒性檢測
物體旋轉在目標檢測任務中非常常見,而解決這一問題最直接方法就是數據增強,使得任何方向的對象都可以被增強數據很好地覆蓋,而解決這一問題的另一個方案就是為每個方向訓練獨立的檢測器,除了這些方法外,近年來還出現了一些新的改進方法。
- 旋轉不變性損失函數
- 旋轉校準
- 旋轉ROI池化
7.5.2 尺度魯棒性檢測
近年來的一些研究也有從訓練和檢測階段兩個方面來改善尺度變換的魯棒性檢測
- 自適應尺度訓練方法
- 自適應尺度檢測方法
8. 五大應用場景
在本節中,我們將回顧過去幾年中出現的一些重要檢測應用:行人檢測、人臉檢測、文本檢測、交通信號和遙感目標檢測。
8.1 行人檢測
行人檢測作為一種目標檢測一項重要的應用,在自動駕駛、視頻監控、刑事偵查等諸多領域受到廣泛關注。一些早期的行人檢測方法(如HOG檢測器和ICF檢測器)在特征表示、分類器設計和檢測加速方面為目標檢測技術奠定了堅實的基礎。近年來一些通用的目標檢測算法,例如Faster RCNN被用于行人檢測,這極大地推動了行人檢測領域的進步。
8.1.1 難點與挑戰
行人檢測任務中存在的難點與挑戰可簡要概括為如下四點:
- 小尺寸行人
上圖8-1(a)展示了一些小尺寸行人的樣例,在Caltech數據集中,據統計大約15%的行人其高度都小于30個像素點。
- 困難負樣本
如上圖8-1(b)所示,由于場景圖像中一些背景在視覺上與行人非常相似,這導致網絡很難將負樣本進行正確分類,往往會將一些很像行人的背景物體預測成為行人。
- 行人密集且遮擋情況
如上圖8-1?所示,由于圖像中多存在行人密集且行人遮擋情況,這導致網絡難以精準檢測出被遮擋的行人,在Caltech數據集中,據統計行人未遮擋的個體約占行人總數的29%。
- 固有的實時檢測性能
由于一些自動駕駛和視頻監控等應用需要檢測算法能夠實時提供檢測結果以便系統快速做出決斷,因此視頻的實時行人檢測至關重要。
8.1.2 解決方法
- 改善小尺寸行人檢測
即使Fast/Faster RCNN算法在當時表現SOTA,但由于檢測頭所提取出的低分辨率特征,導致它對小目標的檢測效果并不理想。近年來針對這個問題的一些解決方案包括:1)特征融合[26],2)引入超高分辨率手工提取的特征[27],以及3)在多個分辨率特征圖上集成檢測結果[28]。
- 改善困難負樣本檢測
近年來對于改善困難負樣本的檢測方法主要有:決策樹增強和語義分割[29](作為一種上下文信息引入),此外,還引入了跨模態學習的思想,通過使用RGB和紅外圖像的方式來豐富困難負樣本的特征[30]。
- 改善行人密集且遮擋的檢測
CNN中深層的特征具有更豐富的語義信息,但對密集物體的檢測是無效的,為此一些研究學者通過考慮目標的吸引和目標周圍背景的排斥關系,設計了一種新的損失函數[31]。而目標遮擋則是伴隨行人密集所出現的另一個問題,部分檢測器的集成[32]和注意力機制[33] 是解決行人遮擋問題最常見的方法。
8.2 人臉檢測
早期的人臉檢測(如VJ檢測器)極大促進了目標檢測的發展,其中許多檢測思想即使在今天的目標檢測也仍然發昏這重要作用。目前人臉檢測已應用到各行各業,如數碼相機中的微笑檢測,電子商務中的刷臉,手機應用中的面部化妝等等。
8.2.1 難點與挑戰
人臉檢測任務中存在的難點與挑戰可簡要概括為如下四點:
- 人臉姿態變化大
如上圖8-2(a)所示,人類臉部可能出現各種變化,如表情,膚色,姿勢和運動等變化。
- 臉部遮擋問題
如上圖8-2(b)所示,人臉可能被其它物體所遮擋。
- 多尺度檢測問題
如上圖8-2?所示,在檢測大尺寸人臉的時候,也經常要檢測小尺寸的人臉,因此存在多尺度檢測挑戰。
- 實時檢測要求
移動設備上的人臉檢測應用還需要在CPU上實現實時檢測的性能。
8.2.2 解決方法
- 人臉檢測加速技術
級聯檢測[34] 是加速人臉檢測最常用的一種方式。其它的一些加速方法則是通過在一張圖片上預測出人臉尺度的分布[35],然后在選擇某些尺度進行人臉檢測。
- 改善人臉多姿態和臉部遮擋問題
通過估計校準后的參數或使用漸進校準技術可以實現人臉校準,人臉校準是改善多姿態人臉檢測的主要技術手段。為了改善臉部遮擋后的人臉檢測,近年來提出了兩種方法:第一個是結合注意力機制[36],以增強人臉特征;第二個則是使用**Detection based on parts[37]**來解決人臉遮擋問題,該項技術借鑒了DPM的思想。
- 改善多尺度人臉檢測
改善多尺度人臉檢測的解決方法主要是**多尺度特征融合[38]**與多分辨率檢測。
8.3 文本檢測
文本檢測的任務是判斷一張圖片中是否存在文字,若有文字,則需要計算機對圖片中的文字進行定位并識別文字的具體內容,所以文本檢測具有兩個子任務:文本定位與文本識別。文本檢測可以幫助視障人士閱讀路牌或貨幣,在地理信息系統中,門牌號和街道標值的檢測與識別也使數字地圖的構建變得更加容易。
8.3.1 難點與挑戰
文本檢測任務中存在的難點與挑戰可簡要概括為如下四點:
- 字體與語言差異大
如上圖8-3(a)所示,圖像中可能會出現不同字體,顏色和不同語言的文本。
- 文本旋轉與透視變化
如上圖8-3(b)所示,圖像中可能會出現具有不同視角和方向的文本。
- 文本密集
如上圖8-3?所示,具有大寬高比和高密集文本的文字導致文本檢測算法難以精確定位。
- 字體缺失與模糊
在街景圖像中,字體的缺失與模糊是經常存在的一個問題。
8.3.2 解決方法
- 改善文本旋轉和透視變化
對此問題最常見的方法是在Anchor box中,和通過旋轉與透視變化分區[39] 的ROI引入額外的參數。
- 改善文本密集檢測問題
基于分割的方法在密集型檢測任務中展現了許多優勢,為了區分相鄰的文本行,近年來一些研究學者提出了兩種解決方案:第一個是段連接方法[40],其中段指的是字符熱圖,而連接指的是兩個相鄰段之間的連接,這表明它們屬于同一單詞或文本行;第二個是增加一個額外的邊界檢測任務[41] 來幫助分離密集排列的文本。
- 改善字體缺失與模糊問題
處理字體缺失與模糊問題的最近解決方案是使用單詞或句子級別的識別[42],而處理不同字體的文本,最有效的方法是使用**合成樣本[43]**進行訓練。
8.4 交通信號檢測
隨著自動駕駛技術的發展,交通標志和紅綠燈的自動檢測近年來備受關注。對于像交通燈和交通標志這樣的固定場景的標志檢測,仍然具有不小的挑戰。
8.4.1 難點與挑戰
交通標志檢測任務中存在的難點與挑戰可簡要概括為如下四點:
- 照明變化
如上圖8-4(a)所示,當夜晚或者有強烈光照的時候,交通標志的檢測將變得異常困難。
- 標志模糊
如上圖8-4(b)所示,由于車輛在高速行駛的時候所拍攝出來交通標志照片會出現模糊的情況。
- 天氣變化導致問題
如上圖8-4?所示,在一些雨雪天氣,車輛所拍攝的交通標志圖片質量會大大下降,導致檢測困難。 - 實時檢測
交通標志的檢測對于自動駕駛非常重要,所以此任務需要有很高的實時性能。
8.4.2 解決方法
在深度學習時代,一些經典的檢測算法如Faster RCNN和SSD被應用于交通標志/燈光的檢測任務,而后在這些檢測算法的基礎上,出現的一些新技術,如注意力機制[44]和對抗性訓練[45],已被用于改進復雜交通環境下的算法檢測性能。
8.5 遙感目標檢測
近年來,隨著遙感圖像分辨率的提高,遙感圖像目標檢測(如飛機、船舶、油罐等的檢測)成為研究熱點,遙感圖像目標檢測具有廣泛的應用,如軍事偵查、災害救援、城市交通管理等等。
8.5.1 難點與挑戰
交通標志檢測任務中存在的難點與挑戰可簡要概括為如下四點:
- 遙感圖像分辨率巨大
如上圖8-5(a)所示,由于遙感圖像分辨率巨大,因此如何快速準確的檢測出遙感目標仍然是一個挑戰性的問題。
- 目標遮擋問題
如上圖8-5(b)所示,超過50%的目標被云霧所遮擋,因此目標遮擋問題也是遙感圖像目標檢測所面臨的一個挑戰。
- 域適應問題
由不同傳感器所捕獲的遙感圖像仍然存在很大差異。
8.5.2 解決方法
在2014年RCNN取得巨大成功后,深度卷積神經網絡很快便應用于遙感圖像目標檢測,之后通用目標檢測網絡Faster RCNN和SSD的提出,吸引了一大批研究學者將越來越多的注意力集中到遙感圖像目標檢測中。
為了檢測不同方向的目標,一些研究人員改進了ROI池化層[46],以獲得更好的旋轉不變性;為了提高領域適應性,一些研究人員會從**貝葉斯的角度[47]進行檢測,從而在檢測階段,模型會基于測試圖像的分布完成自適應更新。此外,注意力機制和特征融合策略也被用于改進小目標檢測[48]**問題。
9. 七大發展趨勢
在過去的十幾年里,目標檢測取得了顯著的成就。本文不僅回顧了一些具備里程碑意義的檢測算法(例如VJ檢測器、HOG檢測器、DPM、Faster-RCNN、YOLO、SSD等)、關鍵技術、加速方法、檢測應用、數據集和指標;還討論了檢測任務所遇到的幾大挑戰,以及如何解決這幾大挑戰作了充分討論。在未來的一些研究工作中,目標檢測領域可能主要呈現以下七大發展趨勢:
9.1 輕量型目標檢測
為了加快目標檢測的推理速度并使其能夠在移動設備上快速流暢的運行,比如在一些重要的應用:增強現實、智能相機、人臉驗證等等,近年來一些研究學者為此做了大量的努力,但目前的一些檢測算法速度仍然較慢。這將導致工業界不得不花費更多的資金來購買算力更高的設備去運行該檢測算法,這在一定程度上阻礙了檢測算法的落地進程。因此檢測算法在未來的一個發展趨勢中,輕量快速且高精度是目標檢測永恒的主題。
9.2 與AutoML結合的目標檢測
近年來基于深度學習的檢測算法變得越來越復雜且嚴重依賴于經驗設計,為了在使用神經架構搜索NAS技術設計檢測算法時減少人為參與(如何設計檢測算法的Backbone,如何設計先驗框等等),未來的一個發展方向就是將目標檢測與AutoML技術結合,因此AutoML可能是目標檢測的未來。
9.3 領域自適應的目標檢測
任何目標檢測算法的訓練過程本質上都可以看成數據在獨立同分布(i.i.d.)下的似然估計過程,而對于不滿足(i.i.d.)的目標檢測數據(特別是對于一些現實世界的應用程序)仍然是一個挑戰,GAN在領域自適應方面已經顯示出 了強大的效果,這對于目標檢測技術來講應該具有很大的促進作用。
9.4 弱監督目標檢測
基于深度學習檢測算法的訓練通常依賴于大量高質量標注的圖像數據集,而標準過程通常比較耗時且效率低下。運用弱監督目標檢測技術,可以使檢測算法使用部分邊界框標注的數據集進行訓練,因此弱監督技術對于降低人力成本和提高檢測靈活性非常重要。
9.5 小目標檢測
在場景圖像中檢測小目標一直是目標檢測領域長期以來所面臨的一個挑戰,小目標檢測研究方向的一些潛在應用包括:利用遙感圖像統計野生動物的數量,和檢測一些重要軍事目標的狀態,因此如何解決小目標問題一直是研究者研究的熱點。
9.6 視頻檢測
高清視頻中的實時目標檢測/跟蹤對于視頻監控和自動駕駛具有重要意義,現有的目標檢測算法通常是為單張圖像的物體檢測而設計的,而忽略了視頻幀與幀之間的相關性,通過探索視頻幀序列之間的空間和時間相關性來改善檢測性能是一個重要的研究方向。
9.7 信息融合目標檢測
具有多種數據源(多模態,例如RGB-D圖像、3d 點云、激光雷達等)的目標檢測對于自動駕駛和無人機應用非常重要,一些未解決的問題包括:如何將訓練好的的檢測模型遷移到不同模態的數據中,如何通過信息融合以改進檢測性能等也是未來發展的一個重要研究方向。
總結
本文介紹了傳統目標檢測算法到基于深度學習的目標檢測算法發展進程,詳細介紹了基于CNN目標檢測算法發展的三條技術路線:一階段、二階段和Anchor free的檢測算法,同時分析了為了提高檢測模型精度和速度,近年來所出現的一些技術及其演變歷程,最后本文簡單介紹了目標檢測的幾大應用場景及其未來發展的趨勢。希望本文能幫助各位讀者在目標檢測領域構建一個清晰的知識體系架構,并在目標檢測發展的快車道上盡快找到屬于自己的研究方向并有所建樹!
References
[1] Rapid object detection using a boosted cascade of simple features
[2] Histograms of oriented gradients for human detection
[3] A discriminatively trained, multiscale, deformable part model
[4] Rich feature hierarchies for accurate object detection and semantic segmentation
[5] Spatial pyramid pooling in deep convolutional networks for visual recognition
[6] Fast r-cnn
[7] Faster r-cnn: Towards real-time object detection with region proposal networks
[8] Feature pyramid networks for object detection
[9] Cascade R-CNN: Delving into High Quality Object Detection
[10] You only look once: Unified, real-time object detection
[11] SSD: Single shot multibox detector
[12] YOLO9000: better, faster, stronger
[13] Focal loss for dense object detection
[14] Yolov3: An incremental improvement
[15] Yolov4: Optimal speed and accuracy of object detection
[16] Cornernet: Detecting objects as paired keypoints
[17] Centernet: Keypoint triplets for object detection
[18] Feature selective anchor-free module for single-shot object detection
[19] Fcos: Fully convolutional one-stage object detection
[20] Soft Anchor-Point Object Detection
[21] http://host.robots.ox.ac.uk/pascal/VOC/
[22] http://image-net.org/challenges/LSVRC/
[23] http://cocodataset.org/
[24] https://storage.googleapis.com/openimages/web/index.html
[25] https://cloud.tencent.com/developer/article/1624811
[26] Is faster r-cnn doing well for pedestrian detection?
[27] What can help pedestrian detection?
[28] Pushing the limits of deep cnns for pedestrian detection
[29] Pedestrian detection aided by deep learning semantic tasks
[30] Learning cross-modal deep representations for robust pedestrian detection
[31] Repulsion loss: Detecting pedestrians in a crowd
[32] Jointly learning deep features, deformable parts, occlusion and classification for pedestrian detection
[33] Occluded pedestrian detection through guided attention in cnns
[34] Joint face detection and alignment using multitask cascaded convolutional networks
[35] Scale-aware face detection
[36] Face attention network: An effective face detector for the occluded faces
[37] Faceless-net:Face detection through deep facial part responses
[38] Faceless-net:Face detection through deep facial part responses
[39] Arbitrary-oriented scene text detection via rotation proposals
[40] Deep matching prior network: Towardtighter multi-oriented text detection
[41] Multi-oriented scene text detection via corner localization and region segmentation
[42] Attention-based extraction of structured information from street view imagery
[43] Reading text in the wild with convolutional neural networks
[44] Traffic signal detection and classification in street views using an attention model
[45] Perceptual generative adversarial networks for small object detection
[46] Rotated region-based cnn for ship detection
[47] Random access memories: A new paradigm for target detection in high resolution aerial remote sensing images
[48] Fully convolutional network with task partitioning for inshore ship detection in optical remote sensing images