当前位置: 首页 > article >正文

深度学习-物体检测SSD

一:SSD结构

以VGG-16为基础,使用VGG的前五个卷积,后面增加从CONV6开始的5个卷积结构,输入图片要求300*300

1. 分别将VGG16的全连接层FC6和FC7转换成3x3的卷积层Conv6和1x1的卷积层Conv7

2.去掉所有的Dropout层和FC8层

3.同时将池化层pool5中的stride=2的2x2变成了stride=1的3x3

4.添加了Atous算法,目的获取更加密集的得分映射

5.然后在VGG16的基础上新增了卷积层来获得更好的特征图以用于检测

它针对输入的图片获取不同尺度的特征映射,但是在预测阶段仅仅使用了最后一层的特征映射。 同时在不同的特征映射上面进行预测,它在增加运算量的同时可能会提高检测的精度,因为它具有更多的可能性。

二:流程

 

如上图,输入以辆汽车图片,经历了多个卷积层和池化层,可以看到,不同的卷积层会输出不同大小的feature map(特征图),而且不同的feature map中有不同的特征,不同的特征有不同的作用,都会输入到NMS中。总的来说,浅层卷积层对边缘更加感兴趣,可以获得一些位置信息,二深层网络对有浅层特征构成的复杂特征更感兴趣,可以获得一些语义信息,对于检测任务而言,目标有复杂有简单的,对于简单的我们利用浅层网络的特征就可以检测出来,对于复杂的利用深层网络的特征检测出来。因此,如果同时在不同的feature map上面进行检测,理论上会有更好的检测结果。

 SSD中引入了Defalut Box(候选框),实际上与Faster R-CNN的anchor box(候选框,不同的结构力叫法不一样)机制类似,就是预设一些目标预选框,不同的是在不同尺度feature map所有特征点上使用PriorBox层

生成一系列feature map时,传统框架会在feature map上进行region proposal提取出可能有物体的部分然后分类,这一步非常费时,所以SSD就放弃了,而是选择将直接生成一系列defaul box(候选框),然后以prior box为初始bbox,将bbox回归到正确的GT位置上去,预测出的定位信息实际上是回归后的bboxes和回归前的prior box的相对坐标,整个过程通过网络的一次前向传播就可以完成。

三:Detector和classifier

 Detector和classifier的三个部分

1.PriorBox层:生成default boxes,默认候选框

2.Conv3x3:生成localization,4个位置偏移

3.Conv3x3:confidence,21个类别置信度(要区分出背景)

 

四:PriorBox层-default boxes

 训练中还有一个东西:Prior box,是指实际中选择的要投入训练过程的Default box(每一个feature map cell 不是k个Default box都取)。
      也就是说Default box是一种概念,Prior box则是实际的选取。训练中一张完整的图片送进网络获得各个feature map,对于正样本训练来说,需要先将prior box与ground truth box做匹配,匹配成功说明这个prior box所包含的是个目标,但离完整目标的ground truth box还有段距离,训练的目的是保证default box的分类confidence的同时将prior box尽可能回归到ground truth box。
       举个列子:假设一个训练样本中有2个ground truth box,所有的feature map中获取的prior box一共有8732个。那可能分别有10、20个prior box能分别与这2个ground truth box匹配上。

default boxex类似于RPN当中的滑动窗口生成的候选框,SSD中也是对特征图中的每一个像素生成若干个框,以feature map上每个点的中点为中心(offset=0.5),生成一些列同心的Defalut box(然后中心点的坐标会乘以step,相当于从feature map位置映射回原图位置)

 

特点分析:
priorbox:相当于faster rcnn里的anchors,预设一些box,网络根据box,通过分类和回归给出被检测到物体的类别和位置。每个window都会被分类,并回归到一个更准的位置和尺寸上
各个feature map层经过priorBox层生成prior box 

 根据输入的不同aspect ratio 和 scale 以及 num_prior来返回特定的default box,default box 的数目是feature map的height x width x num_prior。

 

五:localization与confidence

 这两者的意义如下,主要作用用来过滤,训练

六:训练与测试流程

1.train流程

 输入->输出->结果与ground truth标记样本回归损失计算->反向传播, 更新权值

2.样本标记

先将prior box与ground truth box做匹配进行标记正负样本,每次并不训练8732张计算好的default boxes, 先进行置信度筛选,并且训练指定的正样本和负样本, 如下规则

正样本:

1.与GT重合最高的boxes, 其输出对应label设为对应物体.
2.物体GT与anchor iou满足大于0.5

负样本:其它的样本标记为负样本

七:损失

 网络输出预测的predict box与ground truth回归变换之间的损失计算, 置信度是采用 Softmax Loss(Faster R-CNN是log loss),位置回归则是采用 Smooth L1 loss (与Faster R-CNN一样)

 


http://www.kler.cn/news/311232.html

相关文章:

  • 【60天备战2024年11月软考高级系统架构设计师——第21天:系统架构设计原则——高内聚低耦合】
  • mongodb 安装教程
  • 顺序表数据结构
  • TCP 和 UDP 协议的区别?
  • Open3D(C++) 点云中的植被信息提取
  • BPG的定义和工作原理是什么?
  • 定制相亲交友系统如何提升用户体验
  • SQL:子查询
  • Qwen 2.5:阿里巴巴集团的新一代大型语言模型
  • neo4j安装启动教程+对应的jdk配置
  • 巧用服务名解决主备集群中主库DMDSC节点间会话负载不均衡的问题
  • Activiti7《第二式:破剑式》——工作流中的以柔克刚
  • 算法:计算二叉树的最大深度(Java实现)
  • 翻页时钟 2.0-自动置顶显示,点击小时切换显示标题栏不显示标题栏-供大家学习研究参考
  • 【C++语言】模版的进一步学习
  • 网页打开时,下载的文件svg+xml类型有什么作用?
  • 99AutoML 自动化机器学习实践--NNI 自动化机器学习工具包
  • axure的下载,激活,汉化全过程,多图
  • VirtualBox增加磁盘并给docker用
  • 大数据之Spark(一)
  • 【LabVIEW】条件结构的使用
  • VMWARE安装Ubuntu24.04桌面版的问题
  • 由于 Python 环境不一致导致的No module named ‘selenium‘
  • 除了递归算法,要如何优化实现文件搜索功能
  • 改进版field-sensitive指针分析算法
  • vue2+js项目升级vue3项目流程
  • Vue 常用高级指令解析
  • @JSONField(name=xx)、@JsonProperty(value=xx)和@SerializedName的使用
  • Qt_控件的QWidget属性介绍
  • 2024年轻人驯化AI指南