目標檢測發(fā)展的22年
點擊上方“ 邁微AI研習社 ”,選擇“ 星標★ ”公眾號
重磅干貨,第一時間送達
本文詳細總結了從傳統手工提取特征到基于卷積神經網絡方法的發(fā)展過程,核心圍繞怎么在圖像中找到對應位置的目標分類問題,從是否基于anchor-box分類各算法,精煉提取算法思想和改進過程、總結對比,給出了主要的應用場景和發(fā)展趨勢。針對視覺2D到3D目標檢測方法,再到自動駕駛場景的BEV下的3D目標檢測,給出自動駕駛領域拓展實踐:從BEV到占據柵格網絡。 1
目標檢測概述
-
什么是目標檢測?
目標檢測的任務是找出圖像中所有感興趣的目標(物體),確定他們的類別和位置。
作為計算機視覺的基本問題之一,目標檢測構成了許多其它視覺任務的基礎,例如實例分割,圖像標注和目標跟蹤等等;從檢測應用的角度看:行人檢測、面部檢測、文本檢測、交通標注與紅綠燈檢測,遙感目標檢測統稱為目標檢測的五大應用。
機器視覺中關于目標檢測有4大類任務:
-
分類(Classification):給定一張圖片或一段視頻判斷里面包含什么類別的目標。
-
定位(Location):定位出這個目標的的位置。
-
檢測(Detection):即定位出這個目標的位置并且知道目標物是什么。
-
分割(Segmentation):分為實例的分割(Instance-level)和場景分割(Scene-level),解決“每一個像素屬于哪個目標物或場景”的問題。
這4大類任務結果如圖所示:

我們要解決的目標檢測任務,是一個分類問題和回歸問題的疊加,分類是區(qū)分目標屬于哪個類別,回歸用來定位目標所在的位置。
1.2 具體實現過程

1.3 核心問題:怎么得到ROI?
-
滑窗 (預選anchor)
-
Region proposal
-
CNN 提取特征

計算機視覺中的目標檢測任務就圍繞著這個核心問題展開:
-
如何提取目標區(qū)域ROI特征:
-
傳統方法:手工設計特征
-
CNN方法:卷積運算提取
-
-
預選框怎么確定
-
基于proposal方式( 兩階段網路):滑窗、選擇性搜索算法Selective Search、RPN、
-
不基于proposal方式( 一階段網路):直接產生物體的類別概率和位置坐標值
-
基于anchor錨點方式:
-
不基于anchor錨點方式:將網絡對目標邊界框的檢測轉化為一對關鍵點的檢測
-
2術語anchor boxes是指預定義的框集合,其寬度和高度被選擇以匹配數據集中目標的寬度和高度。提議的anchor boxes包含可以在數據集中找到的目標大小的可能組合。這自然應該包括數據中存在的不同縱橫比和比例。通常選擇 4-10 個anchor boxes作為圖像中不同位置的提議。
目標檢測發(fā)展的22年

2.1 傳統目標檢測算法:手工設計特征
-
選取感興趣區(qū)域,選取可能包含物體的區(qū)域
-
對可能包含物體的區(qū)域進行特征提取
-
對提取的特征進行檢測分類

2.1.1 Viola Jones Detector
VJ[1] (Viola Jones)檢測器采用滑動窗口的方式以檢查目標是否存在窗口之中,該檢測器看起來似乎很簡單穩(wěn)定,但由于計算量龐大導致時間復雜度極高,為了解決該項問題,VJ檢測器通過合并三項技術極大提高了檢測速度,這三項技術分別是:1)特征的快速計算方法-積分圖,2)有效的分類器學習方法-AdaBoost,以及3)高效的分類策略-級聯結構的設計。
2.1.2 HOG Detector
HOG[2](Histogram of Oriented Gradients)檢測器于2005年提出,是當時尺度特征不變性(Scale Invariant Feature Transform)和形狀上下文(Shape Contexts)的重要改進,為了平衡特征不變性(包括平移,尺度,光照等)和非線性(區(qū)分不同的對象類別),HOG通過在均勻間隔單元的密集網格上計算重疊的局部對比度歸一化來提高檢測準確性,因此HOG檢測器是基于本地像素塊進行特征直方圖提取的一種算法,它在目標局部變形和受光照影響下都有很好的穩(wěn)定性。HOG為后期很多檢測方法奠定了重要基礎,相關技術被廣泛應用于計算機視覺各大應用。
2.1.3 DPM Detector
作為VOC 2007-2009目標檢測挑戰(zhàn)賽的冠軍,DPM[3] (Deformable Parts Model)是目標檢測傳統算法中當之無愧的SOTA(State Of The Art)算法。DPM于2008年提出,相比于HOG,DPM作了很多改進,因此該算法可以看作HOG的延申算法。DPM算法由一個主過濾器(Root-filter)和多個輔過濾器(Part-filters)組成,通過硬負挖掘(Hard negative mining),邊框回歸(Bounding box regression)和上下文啟動(Context priming)技術改進檢測精度。作為傳統目標檢測算法的SOTA,DPM方法運算速度快,能夠適應物體形變,但它無法適應大幅度的旋轉,因此穩(wěn)定性差。
2.1.4 局限性
基于手工提取特征的傳統目標檢測算法主要有以下三個缺點:
-
識別效果不夠好,準確率不高
-
計算量較大,運算速度慢
-
可能產生多個正確識別的結果
從手工設計特征到CNN提取特征


圖片鏈接:https://pic2.zhimg.com/80/v2-ae8a4d6f0ded77d731f179f361254db1_1440w.webp
2.2 Anchor-based中的two-stage目標檢測算法
二階段檢測算法主要分為以下兩個階段 Stage1- 預選框 從圖像中生成region proposals Stage2- 目標分類 從region proposals生成最終的物體邊框。
2.2.1 RCNN
【簡介】 RCNN[4]由Ross Girshick于2014年提出,RCNN首先通過選擇性搜索算法Selective Search從一組對象候選框中選擇可能出現的對象框,然后將這些選擇出來的對象框中的圖像resize到某一固定尺寸的圖像,并喂入到CNN模型(經過在ImageNet數據集上訓練過的CNN模型,如AlexNet)提取特征,最后將提取出的特征送入到SVM分類器來預測該對象框中的圖像是否存在待檢測目標,并進一步預測該檢測目標具體屬于哪一類。

論文鏈接:https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf
代碼鏈接:https://github.com/rbgirshick/rcnn

【性能】 RCNN算法在VOC-07數據集上取得了非常顯著的效果,平均精度由33.7%(DPM-V5, 傳統檢測的SOTA算法)提升到58.5%。相比于傳統檢測算法,基于深度學習的檢測算法在精度上取得了質的飛躍。
【不足】 雖然RCNN算法取得了很大進展,但缺點也很明顯:重疊框(一張圖片大2000多個候選框)特征的冗余計算使得整個網絡的檢測速度變得很慢(使用GPU的情況下檢測一張圖片大約需要14S)。
為了減少大量重疊框帶來的冗余計算,K. He等人提出了SPPNet。
2.2.2 SPPNet
【簡介】 SPPNet[5]提出了一種空間金字塔池化層(Spatial Pyramid Pooling Layer, SPP)。它的主要思路是對于一張圖像分成若干尺度的圖像塊(比如一副圖像分成1份,4份,8份等),然后對每一塊提取的特征融合在一起,從而兼顧多個尺度的特征。SPP使得網絡在全連接層之前能生成固定尺度的特征表示,而不管輸入圖片尺寸如何。當使用SPPNet網絡用于目標檢測時,整個圖像只需計算一次即可生成相應特征圖,不管候選框尺寸如何,經過SPP之后,都能生成固定尺寸的特征表示圖,這避免了卷積特征圖的重復計算。

論文鏈接:https://link.springer.com/content/pdf/10.1007/978-3-319-10578-9_23.pdf
代碼鏈接:https://github.com/yueruchen/sppnet-pytorch

【性能】 相比于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
【簡介】 Fast RCNN[6]網絡是RCNN和SPPNet的改進版,該網路使得我們可以在相同的網絡配置下同時訓練一個檢測器和邊框回歸器。該網絡首先輸入圖像,圖像被傳遞到CNN中提取特征,并返回感興趣的區(qū)域ROI,之后再ROI上運用ROI池化層以保證每個區(qū)域的尺寸相同,最后這些區(qū)域的特征被傳遞到全連接層的網絡中進行分類,并用Softmax和線性回歸層同時返回邊界框。

論文鏈接:https://openaccess.thecvf.com/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf
代碼鏈接:https://github.com/rbgirshick/fast-rcnn

【性能】 Fast RCNN在VOC-07數據集上將檢測精度mAP從58.5%提高到70.0%,檢測速度比RCNN提高了200倍。
【不足】 Fast RCNN仍然選用選擇性搜索算法來尋找感興趣的區(qū)域,這一過程通常較慢,與RCNN不同的是,Fast RCNN處理一張圖片大約需要2秒,但是在大型真實數據集上,這種速度仍然不夠理想。
那么問題來了: “我們可以使用CNN模型來直接生成候選框嗎?”,基于此,Faster RCNN的提出完美回答這一問題。
☆ 2.2.4 Faster RCNN
【簡介】 Faster RCNN[7]是第一個端到端,最接近于實時性能的深度學習檢測算法,該網絡的主要創(chuàng)新點就是提出了區(qū)域選擇網絡用于申城候選框,能幾大提升檢測框的生成速度。該網絡首先輸入圖像到卷積網絡中,生成該圖像的特征映射。在特征映射上應用Region Proposal Network,返回object proposals和相應分數。應用Rol池化層,將所有proposals修正到同樣尺寸。最后,將proposals傳遞到完全連接層,生成目標物體的邊界框。
論文鏈接:https://arxiv.org/pdf/1506.01497.pdf
代碼鏈接:https://github.com/jwyang/faster-rcnn.pytorch

【性能】 該網絡在當時VOC-07,VOC-12和COCO數據集上實現了SOTA精度,其中COCO [email protected]=42.7%, COCO mAP@[.5,.95]=21.9%, VOC07 mAP=73.2%, VOC12 mAP=70.4%, 17fps with ZFNet
【不足】 雖然Faster RCNN的精度更高,速度更快,也非常接近于實時性能,但它在后續(xù)的檢測階段中仍存在一些計算冗余;除此之外,如果IOU閾值設置的低,會引起噪聲檢測的問題,如果IOU設置的高,則會引起過擬合。
2.2.5 FPN
【簡介】 2017年,T.-Y.Lin等人在Faster RCNN的基礎上進一步提出了特征金字塔網絡FPN[8](Feature Pyramid Networks)技術。在FPN技術出現之前,大多數檢測算法的檢測頭都位于網絡的最頂層(最深層),雖說最深層的特征具備更豐富的語義信息,更有利于物體分類,但更深層的特征圖由于空間信息的缺乏不利于物體定位,這大大影響了目標檢測的定位精度。為了解決這一矛盾,FPN提出了一種具有橫向連接的自上而下的網絡架構,用于在所有具有不同尺度的高底層都構筑出高級語義信息。FPN的提出極大促進了檢測網絡精度的提高(尤其是對于一些待檢測物體尺度變化大的數據集有非常明顯的效果)。
論文鏈接:http://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf
代碼鏈接:https://github.com/jwyang/fpn.pytorch

【性能】 將FPN技術應用于Faster RCNN網絡之后,網絡的檢測精度得到了巨大提高(COCO [email protected]=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%),性能要優(yōu)于DPM和RCNN。
【不足】 相比于二階段的目標檢測算法,盡管YOLO v1算法的檢測速度有了很大提高,但精度相對教低(尤其是對于一些小目標檢測問題)。
2.3.2 SSD

論文鏈接:https://arxiv.org/pdf/1512.02325
代碼鏈接:https://github.com/amdegroot/ssd.pytorch

【簡介】 SSD[11]算法的主要創(chuàng)新點是提出了Multi-reference和Multi-resolution的檢測技術。SSD算法和先前的一些檢測算法的區(qū)別在于:先前的一些檢測算法只是在網絡最深層的分支進行檢測,而SSD有多個不同的檢測分支,不同的檢測分支可以檢測多個尺度的目標,所以SSD在多尺度目標檢測的精度上有了很大的提高,對小目標檢測效果要好很多。
【性能】 相比于YOLO v1算法,SSD進一步提高了檢測精度和速度(VOC-07 mAP=76.8%, VOC-12 mAP=74.9%, COCO [email protected]=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大小自動調節(jié)權重的Focal loss,代替了標準的交叉熵損失函數,使得模型的訓練更專注于困難樣本。同時,基于FPN設計了RetinaNet,在精度和速度上都有不俗的表現。
【性能】 RetinaNet在保持高速推理的同時,擁有與二階段檢測算法相媲美的精度(COCO [email protected]=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×608圖像速度達到20FPS,在COCO的測試數據集上[email protected]達到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公布了源代碼,但尚未發(fā)表論文;與YOLO V4有點相似,都大量整合了計算機視覺領域的State-of-the-art,從而顯著改善了YOLO對目標的檢測性能。相比于YOLO V4,YOLO V5在性能上稍微遜色,但其靈活性與速度上遠強于YOLO V4,而且在模型的快速部署上也具有極強優(yōu)勢。
【性能】 。如下圖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的物體檢測問題通常被建模成對一些候選區(qū)域進行分類和回歸的問題,在一階段檢測器中,這些候選區(qū)域就是通過滑窗方式產生Anchor box,而在二階段檢測器中,候選區(qū)域是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技術路線的開創(chuàng)之作,該網絡提出了一種新的對象檢測方法,將網絡對目標邊界框的檢測轉化為一對關鍵點的檢測(即左上角和右下角),通過將對象檢測為成對的關鍵點,而無需設計Anchor box作為先驗框。
【性能】 實驗表明,CornerNet在COCO數據集上實現了42.1%AP,該精度優(yōu)于所有現有的單階段檢測網絡。下圖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位置、方向,甚至姿態(tài)可以使用中心點位置的圖像特征進行回歸,是真正意義上的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的復雜運算,節(jié)省了訓練過程中大量的內存占用,將總訓練內存占用空間減少了2倍左右。
【性能】 FCOS的性能優(yōu)于現有的一階段檢測器,同時FCOS還可用作二階段檢測器Faster RCNN中的RPN,并且很大程度上都要優(yōu)于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.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 常用評價指標
目標檢測常用的評價指標有:交并比,準確率,精度,召回率,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,假負): 預測為負,實際為正

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范圍區(qū)間)越大越好。
劃重點!!!
一般來說mAP是針對整個數據集而言的,AP則針對數據集中某一個類別而言的,而percision和recall針對單張圖片某一類別的。
3.2.6 FPS
Frame Per Second(FPS)指的是模型一秒鐘能檢測圖片的數量,不同的檢測模型往往會有不同的mAP和檢測速度,如下圖3-5所示:

目標檢測技術的很多實際應用在準確度和速度上都有很高的要求,如果不計速度性能指標,只注重準確度表現的突破,其代價是更高的計算復雜度和更多內存需求,對于行業(yè)部署而言,可擴展性仍是一個懸而未決的問題。因此在實際問題中,通常需要綜合考慮mAP和檢測速度等因素。本小節(jié)參考目標檢測中的評價指標有哪些[25
4應用場景和發(fā)展趨勢
4.1 5大應用場景
1 行人檢測 2 人臉檢測 3 文本檢測 4 交通信號檢測 5 遙感目標檢測4.2 7大發(fā)展趨勢
1 輕量型目標檢測 2 與AutoML結合的目標檢測 3 領域自適應的目標檢測 4 弱監(jiān)督目標檢測 5 小目標檢測 6 視頻檢測 7 信息融合目標檢測5
課程拓展
從2D檢測 -> 3D檢測 -> BEV檢測 -> Occupancy Net
自動駕駛的視覺感知算法主要經歷了四個階段
- 2D檢測
-
3D檢測
-
BEV檢測
-
Occupancy Net
直接輸出車輛框在圖像上的位置和大小(x,y,w,h)
| PV視角 |
BEV (鳥瞰圖) |
這個結果自動駕駛系統是不能直接用的,自動駕駛系統需要的是BEV(鳥瞰圖)視角下物體的的位置
缺少了深度D或者高度H!!!
輸入360度圖像,直接給出BEV下的預測結果

對比:
2d檢測:檢測圖像在2D上的位置->變換到bev坐標系->拼接多個相機的bev結果
Mono 3d檢測:檢測圖像在3D上的位置->拼接多個相機的bev結果
3d檢測:檢測物體在bev上位置
Occupancy Net: 預測物體在BEV上的占用情況


《自動駕駛感知算法:從BEV到占據網絡》視頻、課件、源代碼
推薦閱讀
(點擊標題可跳轉閱讀)
由于微信公眾號試行亂序推送,您可能不再能準時收到邁微AI研習社的推送。為了第一時間收到報道, 請將“邁微AI研習社”設為 星標賬號 ,以及常點文末右下角的“ 在看 ”。 邁微AI研習社
微信號: MaiweiE_com
GitHub: @Charmve
CSDN、知乎: @Charmve
主頁: github.com/Charmve
如果覺得有用,就請點贊、轉發(fā) 吧!


