ZSYL 2021-08-15 14:00:46 阅读数:52
SSD算法源於2016年發錶的算法論文,論文網址:https://arxiv.org/abs/1512.02325
SSD的特點在於:
SSD結合了YOLO中的回歸思想和Faster-RCNN中的Anchor機制,使用全圖各個比特置的多尺度區域進行回歸,既保持了YOLO速度快的特性,也保證了窗口預測的跟Faster-RCNN一樣比較精准。
SSD的核心是在不同尺度的特征特征圖上采用卷積核來預測一系列Default Bounding Boxes的類別、坐標偏移。
以VGG-16為基礎,使用VGG的前五個卷積,後面增加從CONV6開始的5個卷積結構,輸入圖片要求300*300。
SSD中引入了Defalut Box,實際上與Faster R-CNN的anchor box機制類似,就是預設一些目標預選框,不同的是在不同尺度feature map所有特征點上使用PriorBox層
Detector & classifier的三個部分:
1.PriorBox層:生成default boxes,默認候選框
2.Conv3 x 3:生成localization, 4個比特置偏移
3.Conv3 x 3:confidence,21個類別置信度(要區分出背景)
default boxex類似於RPN當中的滑動窗口生成的候選框,SSD中也是對特征圖中的每一個像素生成若幹個框。
根據輸入的不同aspect ratio 和 scale 以及 num_prior來返回特定的default box,
1、SSD網絡prior_box:打印出來的形狀為:
Tensor("concat_2:0", shape=(?, 7308, 8), dtype=float32)
2、variance: bounding regression中的權重。網絡輸出[dxmin,dymin,dxmax,dymax],即對應利用如下方法進行針對prior box的比特置回歸:
decode_bbox->set_xmin(
prior_bbox.xmin() + prior_variance[0] * bbox.xmin() * prior_width);
decode_bbox->set_ymin(
prior_bbox.ymin() + prior_variance[1] * bbox.ymin() * prior_height);
decode_bbox->set_xmax(
prior_bbox.xmax() + prior_variance[2] * bbox.xmax() * prior_width);
decode_bbox->set_ymax(
prior_bbox.ymax() + prior_variance[3] * bbox.ymax() * prior_height);
# 其中某一層的結構輸出
layer {
name: "conv6_2_mbox_priorbox"
type: "PriorBox"
bottom: "conv6_2"
bottom: "data"
top: "conv6_2_mbox_priorbox"
prior_box_param {
min_size: 111.0
max_size: 162.0
aspect_ratio: 2.0
aspect_ratio: 3.0
flip: true
clip: false
variance: 0.10000000149
variance: 0.10000000149
variance: 0.20000000298
variance: 0.20000000298
step: 32.0
offset: 0.5
}
這兩者的意義如下,主要作用用來過濾,訓練
模型中打印出最後的三個部分結果:
Tensor("Reshape_42:0", shape=(?, 7308, 4), dtype=float32) Tensor("truediv:0", shape=(?, 7308, 21), dtype=float32) Tensor("concat_2:0", shape=(?, 7308, 8), dtype=float32)
問題:SSD中的多個Detector & classifier有什麼作用?
SSD的核心是在不同尺度的特征圖上來進行Detector & classifier容易使得SSD觀察到更小的物體
1. 樣本標記:
先將prior box與ground truth box做匹配進行標記正負樣本,每次並不訓練8732張計算好的default boxes, 先進行置信度篩選,並且訓練指定的正樣本和負樣本, 如下規則
正樣本
負樣本:其它的樣本標記為負樣本
在訓練時, default boxes按照正負樣本控制positive:negative=1:3
2. 損失
網絡輸出預測的predict box與ground truth回歸變換之間的損失計算, 置信度是采用 Softmax Loss(Faster R-CNN是log loss),比特置回歸則是采用 Smooth L1 loss (與Faster R-CNN一樣)
從圖中看出SSD算法有較高的准確率和性能,兼顧了速度和精度
版权声明:本文为[ZSYL]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815140041027y.html