深度学习完全攻略!(连载十二:SSD网络理解)

在介绍SSD的整个网络之前,我们先介绍几个名词

Single Shot:目标定位和分类是在同一个前向传播网络中完成的。

MultiBox:这是由Szegedy等人开发的一种边界盒回归技术。

Detector:网络是一个对象检测器,它也可以对检测到的对象进行分类。

 

从编程的角度来看:

前向传播:图像输入进去,经过VGG-16网络,生成特征图,然后再卷积,再生成特征图,把所有这些特征图利用起来,结合预测框,去检测目标。

反向传播:把前向传播的结果,跟真实的目标位置,类别结果做比较,从而求解各个参数。

 

网络结构

我们先看SSD的整个网络结构图。

从上图中可以看到,SSD是建立在VGG-16体系结构之上,但放弃了全连接层。VGG-16之所以被用作基本网络,是因为它在图像分类任务中具有很强的性能,并且在迁移学习上有助于提高问题解决效果。与原始VGG完全连接层不同,SSD添加了一组辅助卷积层(从conv6开始),从而能够在多个尺度上提取特征,并逐步减小每个后续层的输入大小。

图中重要数据说明

Classifier: conv: 3 * 3 * ( 4 * ( classes + 4 ) )和Classifier: conv: 3 * 3 * ( 6 * ( classes + 4 ) )是什么意思。用原文中的图来说明。

classes 表示预测类别的个数,classes +4中4表示预测框的四个坐标,6 * ( classes + 4 )中6表示特征图上,每个格子设置的预测框个数,3*3表示特征图分块的大小。由于整个特征图用的卷积核参数是一样的,所以对于一个特征图,就有6 * ( classes + 4 )个卷积核,对应3 * 3 * ( 6 * ( classes + 4 ) )个卷积输出。

SSD的本质就是在不同尺度的图像上,采用不同的窗口去检测目标,只不过加了一个GPU加速,使得这种窗口检测变快了。有了这样的知识理解,那理解SSD甚至其他任何检测用神经网络就容易多了。

特征图

特征图就是图像经过卷积之后的结果。下图显示图像的特征图:

从图上可以看到,对于不同的卷积层,图像特征的表现方式是不一样的,那么在不同层做特征图的检测,就为多尺度的目标检测提供了可能。

 

负样本处理

在训练过程中,由于大多数边界框的IoU较低,因此会被认为是负面训练样本。在训练集中加入一些负样本,是因为网络还需要学习并明确告知什么是不正确的检测。

 

损失函数

SSD的损失函数由两部分组成,

置信度损失:测量网络对计算出的边界框对象类别的置信度,分类交叉熵被用来计算这种损失。

位置损失:测量网络的预测边界框与训练集的真实边界框之间的距离,这里使用L2范数。

在不深入研究数学的情况下,总体的损失函数定义为:

multibox_loss = confidence_loss + alpha * location_loss

α项帮助平衡位置损失的贡献。和一般的深度学习一样,我们的目标是找到最能降低损失函数的参数值,从而使我们的预测更接近实际情况。

 

更多关于SSD的知识点:

点一:更多的默认框会使得检测结果更精确,但是会影响速度。

解释:可以理解为,检测窗口越多,那么覆盖到目标的概率也就会越大

点二:由于检测器在多个分辨率的特征上运行,在多个层上有多个盒子也会产生更好的检测效果

解释:跟上面的解释类似

点三:80%的时间都花在了VGG-16的基础网络上:这意味着,使用一个更快、同样精确的网络,SSD的性能可能会更好

解释:笔者会在后续更新mobilenet的相关知识,并在移动端实际应用,敬请关注。

点三:SSD混淆了具有相似类别的对象(例如动物)。

解释:很可能是因为,相似的类别共享了相同的位置信息。

点四:SSD在较小的对象上会产生较差的性能。

解释:这是显而易见的,因为默认框并不能覆盖到小目标,而且目标较小时,通过层层卷积之后,所保留的信息也就所剩无几了。

 

关注"麻瓜智能"获取更多信息.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值