目标识别:SSD 论文及pytorch代码学习笔记

论文:https://arxiv.org/pdf/1512.02325.pdf

代码:https://github.com/amdegroot/ssd.pytorch

目录

一 介绍

SSD 的特点和贡献:

二 SSD网络结构:

模型的输入与输出

三 模型训练

matching规则

训练目标(损失函数)

强力挖掘(Hard negative mining) 

pytorch代码学习

dataset的读取

网络结构的构建

损失函数


 

一 介绍

SSD--single shot multibox detection,是目标识别领域中对 不同类的物体(汽车,人。。。)的识别,识别的表示方式是对被识别的物体画bounding box(包围框)。除此之外还有其他种类的目标识别,比如下图:

SSD 网络的特点是 对不同尺度下的 feature map 中每一个点都设置一些 default box, 这些default box有不同的大小和横纵比例,对这些default box进行分类和边框回归的操作。在预测阶段,SSD会对每个default box 生成一个分类标签(属于每一类的概率构成的向量)以及位置坐标的调整(两个点有四个坐标值)。

SSD 的特点和贡献:

是当时的最高性能的one stage方法,精确度与two stage的faster cnn基本持平

SSD的核心是对 固定设置的default box(不同尺度feature map中每一个空间位置都设置一组default box,这里只考虑空间位置,不考虑feature 的通道个数)计算属于各类物体的概率以及坐标调整的数值。这个计算方法是 对每层的feature map 做卷积操作,卷积核设定为3*3,卷积核的个数是与default box个数相关。

SSD同时实现了端到端的操作(可以理解为输入是图像,输出是结果而不是什么中间的特征)和比较高的准确率

 

二 SSD网络结构:

SSD网络由两部分组成,前部分是一些经典的特征提取网络,在这里作为base network,使用的是VGG16。后半部分是作者增加的网络,提取成特征的基础之上处理得到不同尺度的feature map,生成许多组default box进行预测分类和位置调整信息。

两部分网络要想直接连接在一起需要经过一个处理,VGG16的两个全连接层被改掉(FC6,7)。之前用全连接层是因为在这两层要完成分类,改动过后可以与后面的卷积层连接,这个地方需要注意1*1的卷积层,1*1的感受野是1,它对空间位置上的信息没有进行任何改变,它完成的是维度信息的整合。在作者加入的后半部分也用到了1*1的卷积层,并且发挥了1*1卷积层降维的作用。

把全连接层换成1*1的卷积层的另一个好处:输入图像的大小可以变化(虽然SSD300只使用300*300的图片作为输入),因为全连接层的参数由前后两层的元素个数决定,如果输入图像的大小不统一,那么就找不到一个固定大小的全连接层

模型的输入与输出

输入:300*300*3 的图像

default box:六个尺度下的feature map 中每一个点设置多个default box,不同尺度下的feature map决定了default box 的scale,不同的横纵比决定了default box 的形状。

实现对不同尺度feature map进行分类预测和位置调整的方法是进行卷积操作,一个卷积核相当于完成对一种default box的一个信息(比如类别信息,位置信息)进行处理,一个卷积核可以完成对所有空间位置的操作。因此模型图中的filters的计算公式可以理解为:default box形状数量*(分类类别+四个位置信息)。

 

三 模型训练

matching规则

为了训练网络,需要把网络提出的default box(也可以叫做priors)与标记好的ground truth进行一个比对。如果满足标准就真为是match,那么这个priors就是 一个positive 样本,否则就是negative样本。这个标准是IoU,可以理解为priors与ground truth两个box 的交并比,阈值为0.5.

训练目标(损失函数)

网络的损失函数:

其中:

 l is predicted box  

N is the number of matched default boxes

g is ground truth

位置损失函数:

注意这部分的位置损失只计算经过match的正样本,即i属于positive。

g(由ground truth计算出来的):d是priors的w,h,g是ground truth的w,h

l是由feature map经过卷积计算出来的

其中smooth L1的计算方法如下:(参考https://blog.csdn.net/jningwei/article/details/78853669

类别损失函数:

这部分损失函数既考虑正样本也考虑负样本。

   be anindicator for matching the i-th default box to the j-th ground truth box of category p.如果x为1说明两者match,否则就是0࿰

评论 55
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值