目标检测(下)

目标检测的主流算法分为两种类型:

  • two-stage:RCNN系列。通过Selective Search或者RPN产生稀疏的候选框,然后对这些候选框进行分类和回归。
  • one-stage:YOLO和SSD。不做候选区域的选择,而是均匀地在图像不同位置进行密集采样,直接对所有可能的区域进行分类与回归,整个过程只需要一步。

一、SSD特点

1.使用不同尺寸的特征图用于检测
 大的特征图检测小目标,小的特征图用来检测大目标。

2.使用不同尺寸的Anchor框
 每个单元设置尺寸或者长宽比不同的先验框,用来检测不同形状的物体,预测的边界框是以这些先验框为基准的,在一定程度上减小了训练难度。

3.用卷积层进行预测
 SSD网络模型是全卷积网络,没有全连接层,直接使用卷积层做预测。
 1)卷积层做预测:使用图像特征提取卷积层的输出(VGG16去掉最后一层全连接层),预测anchor框包含的物理类别、框的位置及大小
 2)使用不同卷积层的输出预测不同尺寸的物体

4.端到端的训练

二、SSD网络结构

SSD网络模型是全卷积网络:没有全连接层,使用卷积层做预测。

  • 卷积层输出的通道个数 == 每个位置anchor框的个数*(4个位置信息+所有类别个数)
  • 卷积层不同通道输出的值 == 每个位置不同宽高比的预测值(包含4个位置信息+所有类别的概率)
SSD网络结构(1).png
SSD网络结构(2).PNG

三、SSD网络结构

1.SSD网络结构详解

SSD网络结构.png
  • SSD是一个没有全连接层的网络
  • 在VGG-16网络模型的基础上,将VGG-16的第一个卷积层FC6和第二个卷积层FC7,替换为卷积层conv6和conv7
  • 去掉最后一个用于分类的全连接层FC8
  • 加上了4组卷积层:conv8、conv9、conv10、conv11

2.SSD卷积层做预测

 普通神经网络结构是在最后一层使用全连接层做预测,而SSD网络是使用多个卷积网络直接做预测。

SSD预测.PNG

四、SSD网络原理

1.卷积如何做预测?

 通过设置卷积核的个数(即通道数),得到预测值的信息。每个卷积核都代表一个待预测的信息,比如位置信息x、y或者属于某一个类别的概率值p。

  • 预测目标所属类别
卷积层做预测.PNG
  • 预测目标边界框
卷积层预测多个值.PNG
预测值的数量为:
  • 每一个位置需要预测(4+类别总数)个值
  • 每个位置又有k个anchor框,需要预测k*(4+类别总数)个值
  • 每个特征图又有m*n个像素,所以需要预测m*n*k*(4+类别总数)个值

五、SSD损失函数

SSD损失函数.png

N:与真实边界框配对的anchor的数量
x:如果一个anchor与真实边界框配对,值为1,否则为0
c:真实物体的预测值
l:预测的边界框中心位置和长、宽
g:真实边界框中心位置和长、宽

1.定位损失函数

  • 边框位置的预测使用相对值
    因为绝对值的范围比较大,边框的长宽可能是几十个像素,而神经网络的输入需要归一化后的值,效果才会好,所以边框的预测是使用(0~1)之间的相对值。
边框预测.png
  • Smooth L1损失函数
    结合了L1的优势:随着x的值增大,梯度的增长是恒定的
    结合了L2的优势:当x特别小的时候,梯度迅速减小,减少震荡
Smooth损失函数.png

2.分类损失函数

分类损失函数.png

六、anchor的框选择

1.anchor大小计算公式

 假设最后选择m个特征图做预测,那么每一个特征图对应的anchor大小按照如下公式进行选择:

  • anchor大小计算案例:
anchor大小计算.PNG

备注:
○ k=1时,anchor尺寸 = 原图*0.1
○ k=m时,anchor尺寸 = 原图*0.95
○ 即,anchor框的尺寸与特征图的大小有关,越靠后的特征图尺寸越小,anchor框占特征图的比例越大。这也就解释了,为什么前面大的特征图适合检测小物体,后面小的特征图适合检测大物体。

2. anchor框比例选择

anchor框的比例.png

3.anchor中心位置计算公式

anchor的中心位置.PNG

七、生成负样本

生成负样本.png

八、空洞卷积

空洞卷积.png

你可能感兴趣的:(目标检测(下))