21.1 SSD模型设计
-
单发多框检测模型的设计:它主要由一个基础网络块和若干个多尺度特征块串联而成。
21.2 预测层
- 设目标的类别个数为q。
- 每个锚框的类别个数将是q+1,其中类别0表示锚框只包含背景。
- 在某个尺度下,设特征图的高和宽分别为h和w,如果以其中每个单元为中心生成a个锚框,那么需要对hwa个锚框进行分类。
- 如果使用全连接层作为输出,很容易导致模型参数过多。
- 网络中的网络(NiN)使用卷积层的通道来输出类别预测的方法。
- 单发多框检测采用同样的方法来降低模型复杂度。
- 类别预测层
- 具体来说,类别预测层使用一个保持输入高和宽的卷积层。
- 这样一来,输出和输入在特征图宽和高上的空间坐标一一对应。
- 考虑输出和输入同一空间坐标(x,y):
- 输出特征图上(x,y)坐标的通道里包含了以输入特征图(x,y)坐标为中心生成的所有锚框的类别预测。
- 因此输出通道数为a(q+1),其中索引为i(q+1)+j(0≤j≤q)的通道代表了索引为i的锚框有关类别索引为j的预测。
- 边界框预测层
- 边界框预测层的设计与类别预测层的设计类似。
-
唯一不同的是,这里需要为每个锚框预测4个偏移量,而不是q+1个类别。
- 结多尺度的预测
- 单发多框检测根据多个尺度下的特征图生成锚框并预测类别和偏移量。
- 由于每个尺度上特征图的形状或以同一单元为中心生成的锚框个数都可能不同,因此不同尺度的预测输出形状可能不同。
- 高和宽减半块
- 为了在多尺度检测目标
- 基础网络块
- 基础网络块用来从原始图像中抽取特征
- 完整模型
- 包含5个模块,每个模块输出的特征图既用来生成锚框,又用来预测这些锚框的类别和偏移量。
- 第一模块为基础网络块
- 第二模块至第四模块为高和宽减半块
- 第五模块使用全局最大池化层将高和宽降到1。
21.3 损失函数
-
目标检测有两种损失
- 首先是锚箱类损失
- 可以使用的交叉熵损失函数
- Focal loss
- 第二个损失是正锚箱偏移量损失
- 使用1范数损失
- 首先是锚箱类损失
-
将预测偏移量用到的L1范数损失替换为平滑L1范数损失。
-
它在零点附近使用平方函数从而更加平滑,这是通过一个超参数σ来控制平滑区域的:
当σ很大时该损失类似于L1范数损失。
-
当它较小时,损失函数较平滑。
-
在类别预测时
-
设真实类别j的预测概率是pj,交叉熵损失为:
-
还可以使用焦点损失(focal loss):给定正的超参数γ和α,该损失的定义为:
21.4 SSD预测
- 怎样得到预测的检测结果?
- 最后分别在所选的特征层上使用3x3卷积核预测不同锚框所属的类别分数及其预测的边界框location。
- 由于对于每个box需要预测该box属于每个类别的置信度(假设有c类,包括背景,例如20class的数据集合,c=21)和该box对应的预测边界框的location(包含4个值,即该box的中心坐标和宽高),则每个box需要预测c+4个值。
- 所以对于某个所选的特征层,该层的卷积核个数为(c+4)x 该层的锚框个数.最后将每个层得到的卷积结果进行拼接。
- 对于得到的每个预测框,取其类别置信度的最大值,若该最大值大于置信度阈值,则最大值所对应的类别即为该预测框的类别,否则过滤掉此框。
-
对于保留的预测框根据它对应的先验框进行解码得到其真实的位置参数(这里还需注意要防止预测框位置超出图片),然后根据所属类别置信度进行降序排列,取top-k个预测框,最后进行NMS,过滤掉重叠度较大的预测框,最后得到检测结果。
大数据视频推荐:
腾讯课堂
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通