目標檢測綜述(三)

2.3 Anchor-based中的單階段目標檢測算法

單階段目標檢測算法不需要region proposal階段,直接產生物體的類別概率和位置坐標值,經過一個階段即可直接得到最終的檢測結果,因此有著更快的檢測速度。

2.3.1 YOLO v1

https://www.cvfoundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

代碼鏈接:https://github.com/abeardear/pytorch-YOLO-v1

YOLO v1是第一個單階段的深度學習檢測算法,其檢測速度非常快,該算法的思想就是將圖像劃分成多個網格,然后為每一個網格同時預測邊界框并給出相應概率。例如某個待檢測目標的中心落在圖像中所劃分的一個單元格內,那么該單元格負責預測該目標位置和類別。YOLO v1檢測速度非???,在VOC-07數(shù)據(jù)集上的mAP可達52.7%,實現(xiàn)了155 fps的實時性能。相較于基于錨框的目標檢測算法,盡管YOLO v1算法的檢測速度有了很大提高,但精度相對較低(尤其是對于一些小目標檢測問題)。

2.3.2 SSD

論文鏈接:https://arxiv.org/pdf/1512.02325

代碼鏈接:https://github.com/amdegroot/ssd.pytorch

SSD

SSD算法的主要創(chuàng)新點是提出了Multi-reference和Multi-resolution的檢測技術。SSD算法和先前的一些檢測算法的區(qū)別在于:先前的一些檢測算法只是在網絡最深層的分支進行檢測,而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在精度、速度和分類數(shù)量上都有了很大的改進。在速度上(Faster),YOLO v2使用DarkNet19作為特征提取網絡,該網絡比YOLO-v2所使用的VGG-16要更快。在分類上(Stronger),YOLO-v2使用目標分類和檢測的聯(lián)合訓練技巧,結合Word Tree等方法,使得YOLO v2的檢測種類擴充到了上千種。YOLO-v2算法在VOC 2007數(shù)據(jù)集上的表現(xiàn)為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

盡管一階段檢測算法推理速度快,但精度上與二階段檢測算法相比還是不足。RetinaNet論文分析了一階段網絡訓練存在的類別不平衡問題,提出能根據(jù)Loss大小自動調節(jié)權重的Focal loss,代替了標準的交叉熵損失函數(shù),使得模型的訓練更專注于困難樣本。同時,基于FPN設計了RetinaNet,在精度和速度上都有不俗的表現(xiàn)。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

YOLOv3

相比于YOLO v2,YOLO v3將特征提取網絡換成了DarkNet53,對象分類用Logistic取代了Softmax,并借鑒了FPN思想采用三條分支(三個不同尺度/不同感受野的特征圖)去檢測具有不同尺寸的對象。YOLO v3在VOC數(shù)據(jù)集,Titan X上處理608608圖像速度達到20FPS,在COCO的測試數(shù)據(jù)集上mAP@0.5達到57.9%。其精度比SSD高一些,比Faster RCNN相比略有遜色(幾乎持平),比RetinaNet差,但速度是SSD、RetinaNet和Faster RCNN至少2倍以上。YOLO v3采用MSE作為邊框回歸損失函數(shù),這使得YOLO v3對目標的定位并不精準,之后出現(xiàn)的IOU,GIOU,DIOU和CIOU等一系列邊框回歸損失大大改善了YOLO v3對目標的定位精度。

2.3.6 YOLO v4

論文鏈接:https://arxiv.org/pdf/2004.10934

代碼鏈接:https://github.com/Tianxiaomo/pytorch-YOLOv4

相比于YOLO v3,YOLO v4在輸入端,引入了Mosaic數(shù)據(jù)增強、cmBN、SAT自對抗訓練;在特征提取網絡上,YOLO v4將各種新的方式結合起來,包括CSPDarknet53,Mish激活函數(shù),Dropblock;在檢測頭中,引入了SPP模塊,借鑒了FPN+PAN結構;在預測階段,采用了CIOU作為網絡的邊界框損失函數(shù),同時將NMS換成了DIOU_NMS等等??傮w來說,YOLO v4具有極大的工程意義,將近年來深度學習領域最新研究的tricks都引入到了YOLO v4做驗證測試,在YOLO v3的基礎上更進一大步。

YOLOv4

2.3.7 Anchor-based目標檢測算法局限性

基于Anchor的目標檢測算法主要有以下四大缺點:

(1)Anchor的大小,數(shù)量,長寬比對于檢測性能的影響很大(通過改變這些超參數(shù)Retinanet在COCO benchmark上面提升了4%的AP),因此Anchor based的檢測性能對于anchor的大小、數(shù)量和長寬比都非常敏感;

(2)這些固定的Anchor極大地損害了檢測器的普適性,導致對于不同任務,其Anchor都必須重新設置大小和長寬比;

(3)為了去匹配真實框,需要生成大量的Anchor,但是大部分的Anchor在訓練時標記為負樣本,所以就造成了樣本極度不均衡問題(沒有充分利用fore-ground);

(4)在訓練中,網絡需要計算所有Anchor與真實框的IOU,這樣就會消耗大量內存和時間。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯(lián)系作者。

相關閱讀更多精彩內容

友情鏈接更多精彩內容