目錄
1、faster rcnn:
2、SSD:
3、YOLOv1:
小結:
拓展:anchor-based和anchor-free
anchor
1、faster rcnn:
FasterRcnn 算法原理講解筆記(非常詳細)https://blog.csdn.net/xjtdw/article/details/98945548
1)主要流程
將輸入的圖像按照短邊設置為600后,等比例不失真縮放;
主干網絡(VGG16、RESTNET)進行特征提取得到特征圖38,38(下采樣率為16);
特征圖每個點生成九個anchor,共有38*38*9個anchors;
每個anchor等比例縮小16得到在特征圖上的坐標,先將超出圖像的anchor去掉,然后根據特征圖可以得到每個anchor的得分(這個得分是二分類,前景or背景),根據得分篩選出12000個anchor,這里使用的分類網絡為softmax+交叉熵損失;
NMS和得分再次篩選得到2000個anchor,這2000個就是建議框proposal;
2000個建議框再和標簽框構建IOU矩陣,根據IOU來區分正負樣本,然后選擇3:1的正負樣本數,總數256,這樣就得到了256個roi;
將roi區域池化為7*7大小的區域,傳輸到全連接層,進行分類和回歸(分類網絡為softmax+交叉熵損失),回歸損失使用的是smoothL1損失。
2)rpn和proposal以及roi層的區別
rpn是一個網絡,主要作用是區域生成和對正樣本的位置先進行調整,得到位置更加準確的建議框;proposal一般為2000個,是rpn網絡的產物;roi是proposal和標簽框構建iou矩陣后得到的區域;
3)為什么最后要池化為7*7
fasterrcnn原始使用的是VGG的全連接層,而全連接層是固定維度的,因此需要將維度編程適用于vgg
4)為什么小目標最后會消失
經過主干網絡特征提取后,圖像的下采樣率為16,這樣就導致了目標像素小于16的對象會被下采樣過程中丟棄,同時后續使用的特征圖是下采樣后的,特征圖中沒有小目標的特征點存在,導致后續訓練的網絡并沒有對小目標進行訓練檢測。
5)要注意什么?
fasterrcnn:盡量保證標簽框在錨框的最大范圍內,便于收斂;
是一個two stage模型,主要創新點在于RPN網絡用于候選框的生成。首先利用先驗知識對特征圖上每一個點生成先驗大小的9個ANCHOR框,然后第一階段是訓練RPN網絡即生成候選區域,確定每一個框是否包含物體,這里主要是對固定的ANCHOR進行篩選和修正,將剩余的錨框作為候選區域;第二個階段則是對候選區域進行分類和回歸,確定物體的類別具體是什么,以此實現物體的檢測
優點:精度高
缺點:訓練時間長,且anchor是在同一個特征圖上得到的,不利于小目標物體的檢測
注意:先驗大小——指的是根據現有的目標的縱橫比來進行錨框的設計,以此來使得候選區域盡可能地接近真實的物體的位置
2、SSD:
是一個one stage模型,主要創新點在于多尺度訓練。SSD是從多個特征層上進行anchor的獲取,然后直接將這些anchor框作為候選框進行物體類別的預測與位置的預測。這里還是采用了先驗知識來指導anchor的生成,每個特征層每個點生成的anchor的個數不一樣,主要為4個或者是6個,為了樣本平衡,也會對樣本進行篩選,使得正負樣本1:3.
優點:速度快
缺點:精度不夠
注意:先驗大小——指的是根據現有的目標的縱橫比來進行錨框的設計,以此來使得候選區域盡可能地接近真實的物體的位置
3、YOLOv1:
是一個one stage模型,主要創新點在于最后7*7*30的特征矩陣當中。YOLOV1是一個沒有先驗框的模型,它主要是將輸入的圖像分割成7*7大小的網格,然后每個網格生成2個預測框,最后每個網格含有30個信息值(2個預測框的x,y,h,w,c以及20個類別的條件概率)。
優點:速度比SSD快,是目前性能綜合最高的了
小結:
以上三種模型都需要生成候選框,且訓練數據都需要有標記的圖像數據。不同的是前二者有先驗框來指導候選框的生成,而YOLO沒有;且rcnn系列是二階段,后兩者是一階段。前兩者可以看成是anchor_based,yolov1可以看成是anchor_free.
拓展:anchor-based和anchor-free
參考鏈接:https://www.zhihu.com/question/356551927/answer/926659692
目標檢測算法一般可分為anchor-based、anchor-free、兩者融合類,區別就在于有沒有利用anchor提取候選目標框。
A. anchor-based類算法代表是fasterRCNN、SSD、YoloV2/V3等
B. anchor-free類算法代表是CornerNet、ExtremeNet、CenterNet、FCOS,yolov1等
anchor
(也被稱為anchor box)是在訓練之前,在訓練集上利用k-means等方法聚類出來的一組矩形框,代表數據集中目標主要分布的長寬尺度。在推理時生成的特征圖上由這些anchor滑動提取n個候選矩形框再做進一步的分類和回歸(詳細敘述請參考提出anchor思想的fasterRCNN一文)。也就是傳統目標檢測算法中,在圖像金字塔上使用的那個m*n的滑窗。只不過傳統方法中特征圖是不同尺度的,滑窗一般是固定大小的;而類似于fasterRCNN算法中特征圖是固定的,anchor是多尺度的。