一.网络结构
通过上图与YOLO网络结构对比,可以发现SSD的主要特征:
(1)SSD采用卷积进行提取检测 YOLO采用全连接层
(2)SSD采用多尺度feature map进行检测 YOLO单尺度
(3)SSD每个单元采用多个先验框(defult box),预测的边界框以先验框为基准 YOLO直接每个单元预测多边界框
(3)同:端到端的one-stage方法,使用CNN提取特征
注:先验框
以下每个单元设置4个先验框
二.SSD流程:
1.模型输入size 300x300 (也可512x512,最后新增一个卷积层)
2.VGG16模型做为基础网络进行特征提取,借鉴DeepLab-LargeFOV,将VGG16全连接层fc6,fc7-->3x3conv6和1x1conv7
为配合以上变化,采用Atrous Algorithm,扩展卷积或带孔卷积,指数级扩大卷积视野,Conv6采用3x3,扩张率(dilation rate)=6。然后移除dropout层和fc8层。
3.从上图可以看到通过卷积后生成的feature map大小(38x38),(19x19),(10x10),(5x5),(3x3),(1x1)
4.然后对生成的feature map上的每个单元设置先验框,上图先验框个数8732=38x38x4+19x19x6+10x10x6+5x5x6+3x3x4+1x1x4
由于每个先验框都产生一个边界框,所以预测的边界框个数为8732,所以属于密集抽样
5.得到边界框后,在通过3x3卷积得到类别置信度和边界框位置。然后将这些数据丢到NMS,选出最合适的边框。
注:扩展卷积
3x3conv dilation rate=2 dilation rate=4
三.Train技术
1.先验框匹配
YOLO:Truth中心落在那个单元格,该单元格与IOUmax边界框负责预测
SSD:1。对于每个Truth找到一个IOUmax先验框匹配(匹配为正样本,不匹配负样本)
2。对于剩余未匹配先验框,如果IOU>阈值(eg.0.5)匹配,IOU<阈值不匹配
必须先满足第一条,才能执行第二条,即使IOU<阈值,因为必须保证每个Truth都有先验框
2.损失函数
3.数据扩增
扩增数据,提升性能:水平翻转,随机裁剪加颜色扭曲,随机采集块域(获取小目标训练样本)
四.预测过程
1.对于预测框,通过类别置信度和置信度过滤
2.对剩下的预测框进行解码
五 代码
SSD_tensorflow代码:https://github.com/balancap/SSD-tensorflow
详解:https://blog.csdn.net/qq1483661204/article/details/79776065
以上公式解释截图截取https://blog.csdn.net/xiaohu2022/article/details/79833786博客