博客專欄

        EEPW首頁 > 博客 > 基于深度學習的目標檢測算法面試必備(RCNN~YOLOv5)

        基于深度學習的目標檢測算法面試必備(RCNN~YOLOv5)

        發(fā)布人:數(shù)據(jù)派THU 時間:2021-05-16 來源:工程師 發(fā)布文章

        來源:不出名的小金 

        鏈接:https://zhuanlan.zhihu.com/p/354060133

        編輯:深度學習與計算機視覺

        1.jpg

        目標檢測算法主要包括:【兩階段】目標檢測算法、【多階段】目標檢測算法、【單階段】目標檢測算法。

        什么是兩階段目標檢測算法,與單階段目標檢測有什么區(qū)別?

        兩階段目標檢測算法因需要進行兩階段的處理:1)候選區(qū)域的獲取,2)候選區(qū)域分類和回歸,也稱為基于區(qū)域(Region-based)的方。與單階段目標檢測算法的區(qū)別:通過聯(lián)合解碼同時獲取候選區(qū)域、類別。

        什么是多階段目標檢測算法?

        【兩階段】和【多階段】目標檢測算法統(tǒng)稱級聯(lián)目標檢測算法,【多階段】目標檢測算法通過多次重復進行步驟:1)候選區(qū)域的獲取,2)候選區(qū)域分類和回歸,反復修正候選區(qū)域。

        2.jpg

        根據(jù)是否屬于錨框分為:

        1、Anchor-Free:

        CornerNet

        FCOS

        TTFNet

        YOLOv1(注意)

        2、Anchor-based:

        RetinaNet

        YOLOv2-v5

        PP-YOLO

        SSD

        主要考慮問題

        1、準確性

        2、實時性

        3、多尺度

        4、標簽方案

        5、目標重疊

        6、模型訓練

        7、重復編碼

        8、數(shù)據(jù)增強

        9、樣本不平衡

        兩階段目標檢測算法

        RCNN

        1、模型通過【選擇性搜索算法】獲取潛在的候選區(qū)域

        2、截取原圖每個候選區(qū)域并resize輸入到模型中進行特征抽取

        3、使用SVM進行分類,以及進行bounding box 回歸

        3.jpg

        存在問題:

        重復編碼:由于候選區(qū)域存在重疊,模型需要重復進行重疊區(qū)域的特征圖提取,計算冗余。

        模型訓練:由于特征抽取模型和區(qū)域的分類回歸模型分開訓練,無法進行端到端的模型訓練,訓練過程需要提取每個包含重疊區(qū)域的候選區(qū)域特征并保存用于分類和回歸訓練。

        實時性差:重復編碼導致實時性不佳,【選擇性搜索算法】耗時嚴重。

        Fast-RCNN

        考慮到RCNN的缺點,F(xiàn)ast-RCNN來了!

        1、模型依舊通過【選擇性搜索算法】獲取潛在的候選區(qū)域。

        2、將原圖通過特征抽取模型進行一次的共享特征圖提取,避免了重復編碼。

        3、在特征圖中找到每一個候選區(qū)域對應的區(qū)域并截取【區(qū)域特征圖】,ROI pooling層中將每個【區(qū)域特征圖】池化到統(tǒng)一大小。

        4、分別進行softmax分類(使用softmax代替了RCNN里面的多個SVM分類器)和bbox回歸。

        4.jpg

        主要優(yōu)點:

        1、可以進行端到端模型訓練。

        2、不需要存儲中間特征向量用于SVM分類和回歸模型訓練。

        3、使用更高效的SPPnet特征提取網(wǎng)絡。

        存在問題:

        實時性差:選擇性搜索獲取候選區(qū)域耗時,主要通過貪婪算法合并低級特征超像素,單張圖片耗時接近2s,且無法使用GPU加速。

        Faster R-CNN

        使用RPN網(wǎng)絡代替Fast RCNN使用的選擇性搜索進行候選區(qū)域的提取,相當于Faster R-CNN=RPN+Fast RCNN,且RPN和Fast RCNN共享卷積層。

        1、多尺度目標:通過RPN網(wǎng)絡候選區(qū)域,并使用不同大小和長寬比的anchors來解決多尺度問題。

        2、通過計算anchors與真實框的交并比IOU,并通過閾值建立正負樣本。

        3、樣本不平衡:每批次隨機采樣256個anchors進行邊框回歸訓練,并盡可能保證正負樣本數(shù)相同,避免負樣本過多導致的梯度統(tǒng)治問題。

        論文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks。

        5.jpg6.jpg

        多階段目標檢測算法

        Cascade R-CNN

        通過分析Faster RCNN在目標候選區(qū)域的位置修正能力, 如下圖基于單個檢測器的可優(yōu)化性但優(yōu)化的程度有限,通過多次將預測區(qū)域作為候選區(qū)域進行修正,使得輸出的預測區(qū)域與真實標簽區(qū)域的IOU逐級遞增。

        7.png

        主要優(yōu)點:

        1、準確性:碾壓各種單雙階段目標檢測算法,采用RoIAlign取代RoIPooling。

        2、多尺度:通過FPN網(wǎng)絡集成多尺度特征圖,利用歸一化尺度偏差方法緩解不同尺度對Loss的影響程度。

        3、實時性:去除了Fater RCNN的全連接層,取而代之采用FCN網(wǎng)絡,相比Fater RCNN,具有更少的模型參數(shù)和計算時間。

        主要不足:

        8.jpg

        單階段目標檢測算法

        編碼方式

        1、基于中心坐標

        方案1

        通過計算IOU或者長寬比閾值篩選每個anchor位置對應的target,可能過濾比較極端的target,但緩解目標重疊情況下的編碼重疊問題。

        通過對應anchor找到中心坐標位置(x,y)。

        方案2

        通過iou最大值計算每個target對應的anchor位置,保證每個target至少對應一個,目標少的情況下但容易造成目標稀疏編碼,通過對應target找到中心坐標位置(x,y),YOLOv5中通過中心坐標結合四舍五入進行多中心坐標映射緩解目標稀疏問題。

        方案3

        同時利用方案1和方案2,保證每個target至少對應一個anchor區(qū)域。

        YOLOv1

        雖然是單階段目標檢測開山之作,但真正的鼻祖應該是Faster RCNN的RPN。

        9.png

        主要優(yōu)點:

        1、快。

        2、采用全局特征進行推理,由于利用全局上下文信息,相比于滑動窗口和建議框方法,對背景的判斷更準確。

        3、泛化性,訓練好的模型在新的領域或者不期望的輸入情況下依然具有較好的效果。

        主要不足:

        1、準確性:與Faster RCNN相比,correcct反映了YOLOv1準確率較低,background反映了召回率較高,但總體性能F1較低,雖然loss采用長寬平方根進行回歸,試圖降低大目標對loss的主導地位,但小目標的微小偏差對IOU的影響更嚴重,導致小目標定位不準。

        10.jpg

        2、目標重疊:雖然通過每個S*S的網(wǎng)格點設置了2個預測框用于回歸訓練,但是每個網(wǎng)格點設置了一種類別,無法解決不同類別目標重疊率較大,導致映射到相同網(wǎng)格點上的問題。

        3、多尺度:由于模型只是簡單使用下采樣獲得的粗糙特征,很難將其推廣到具有新的或不同尋常的寬高比或配置的對象。

        4、實時性:雖然與Faster RCNN相比,速度很快,但還可以更快,主要是由于v1中使用了全連接網(wǎng)絡,不是全卷積網(wǎng)絡。

        全連接層參數(shù)

        =7x7x1024x4096+4096X7x7x30=2x10^8

        11.jpg

        SSD

        通過使用FCN全卷積神經(jīng)網(wǎng)絡,并利用不同尺度的特征圖進行目標檢測,在速度和精度都得到了極大提升。

        主要優(yōu)點

        1、實時性:相比YOlOv1更快,因為去除了全連接層。

        2、標簽方案:通過預測類別置信度和相對固定尺度集合的先驗框的偏差,能夠有效均衡不同尺度對loss的影響程度。

        3、多尺度:通過使用多個特征圖和對應不同尺度的錨框進行多尺度目標預測。

        4、數(shù)據(jù)增強:通過隨機裁剪的方式進行數(shù)據(jù)增強提高模型的魯棒性。

        5、樣本不平衡:通過困難樣本挖掘,采用負樣本中置信度最高的先驗框進行訓練,并設置正負樣本比例為1:3,使得模型訓練收斂更快。

        12.jpg

        主要不足

        1、通過人工先驗設置的不同尺度的錨框無法適應真實的目標框的尺度分布。

        2、使用的多個特征圖由于高分辨率的特征圖不能有效地結合高層特征。

        YOLOv2

        針對YOLOv1在解決多尺度和實時性方面的不足,提出了YOLOv2。

        13.jpg

        主要優(yōu)點:

        1、更好

        1)Batch Normalization:使得性能極大提升;

        2)Higher Resolution Classifier:使預訓練分類任務分辨率與目標檢測的分辨率一致;

        3)Convolutional With Anchor Boxes:使用全卷積神經(jīng)網(wǎng)絡預測偏差,而非具體的坐標,模型更容易收斂;

        4)Dimension Clusters:通過聚類算法設置錨框的尺度,獲得更好的先驗框,緩解了不同尺度對loss的影響變化;

        5)Fine-Grained Features:通過簡單相加融合了低層的圖像特征;

        6)Multi-Scale Training:通過使用全卷積網(wǎng)絡使得模型支持多種尺度圖像的輸入并輪流進行訓練。

        14.jpg

        2、更快,構建Darknet-19代替VGG-16作為backbone具有更好的性能。

        15.jpg

        主要不足

        1、多尺度:在模型維度只是簡單融合底層特征,在輸入維度進行多尺度圖像分辨率的輸入訓練,不能克服模型本身感受野導致的多尺度誤差。

        RetinaNet

        論文:Focal Loss for Dense Object Detection

        主要優(yōu)點

        1、多尺度:借鑒FPN網(wǎng)絡通過自下而上、自上而下的特征提取網(wǎng)絡,并通過無代價的橫向連接構建增強特征提取網(wǎng)絡,利用不同尺度的特征圖檢測不同大小的目標,利用了底層高分率的特征圖有效的提高了模型對小尺度目標的檢測精度。

        2、樣本不平衡:引入Focal Loss用于候選框的【類別預測】,克服正負樣本不平衡的影響及加大困難樣本的權重。

        主要不足

        1、實時性:網(wǎng)絡使用ResNet-101作為主干特征提取網(wǎng)絡,檢測效率略微不足。

        16.jpg

        YOLOv3

        論文:YOLOv3: An Incremental Improvement

        主要優(yōu)點

        1、實時性:相比RetinaNet,YOLOv3通過犧牲檢測精度,使用Darknet主干特征提取網(wǎng)絡而不是Resnet101,從而獲取更快的檢測速度。

        2、多尺度:相比于YOLOv1-v2,與RetinaNet采用相同的FPN網(wǎng)絡作為增強特征提取網(wǎng)絡得到更高的檢測精度。

        3、目標重疊:通過使用邏輯回歸和二分類交叉熵損失函數(shù)進行類別預測,將每個候選框進行多標簽分類,解決單個檢測框可能同時包含多個目標的可能。

        主要不足

        1、準確率:主要因為Darknet的特征提取不夠強,未進行精細化結構模型設計。

        17.jpg18.jpg

        YOLOv4

        論文:YOLOv4: Optimal Speed and Accuracy of Object Detection

        鑒于YOLOv3的缺點,YOLOv5進行了Darknet53主干特征提取網(wǎng)絡等一系列改進。

        主要優(yōu)點

        1、實時性:借鑒CSPNet網(wǎng)絡結構將Darknet53改進為CSPDarknet53使模型參數(shù)和計算時間更短。

        19.jpg

        2、多尺度:頸部分別引入PAN和SPP網(wǎng)絡結構作為增強特征提取網(wǎng)絡,能夠有效多尺度特征,相比于引入FPN網(wǎng)絡準確度更高。

        3、數(shù)據(jù)增強:引入Mosaic數(shù)據(jù)增強,在使用BN的時候可以有效降低batch_size的影響。

        4、模型訓練,采用IOU:GIoU,DIoU,CIoU作為目標框的回歸,與YOLOv3使用的平方差損失相比具有更高的檢測精度。

        20.png21.jpg

        YOLOv5

        為了進一步提升YOLOv4的檢測速度,YOLOv5采用了更輕量的網(wǎng)絡結構。

        主要優(yōu)點

        1、多尺度:使用FPN增強特征提取網(wǎng)絡代替PAN,使模型更簡單,速度更快。

        2、目標重疊:使用四舍五入的方法進行臨近位置查找,使目標映射到周圍的多個中心網(wǎng)格點。

        主要不足

        1、通過長寬比篩選并過濾了大小和長寬比較極端的真實目標框,而這些恰恰在真實檢測任務極為重要,和重點解決的檢測問題。

        22.jpg

        *博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



        關鍵詞: 深度學習

        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 新晃| 南投市| 苏尼特右旗| 杨浦区| 乐都县| 即墨市| 迁西县| 青州市| 庄浪县| 肥乡县| 临清市| 天门市| 灌云县| 宣恩县| 班戈县| 鲜城| 遂平县| 双流县| 元谋县| 思茅市| 新丰县| 青冈县| 泉州市| 伊春市| 那曲县| 宁乡县| 唐山市| 昭苏县| 睢宁县| 南郑县| 富裕县| 城口县| 鄂托克旗| 遂宁市| 武威市| 东乌珠穆沁旗| 石阡县| 离岛区| 嘉定区| 调兵山市| 当阳市|