目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3]、视 频分析[4] 等各种视觉应用的先决条件.
近些年, 伴随着深度卷积神经网络的充分发展[5] 以及良好的数据集注释先验工作的积累[6] , 物体检测器 的性能得到了显著提高. 但是, 物体检测过程中的尺度变化仍然是所有检测器的关键挑战, 为了识别不同尺 度的物体, 早期大多数的检测器都是基于手工制作的 特征[7] , 并且利用图像金字塔. 考虑到内存和检测时间, 这些工作无论在计算还是花费上都是昂贵的. 得益于 卷积神经网络的发展, 手工设计的特征已逐渐被卷积 神经网络计算的特征所取代. 最近的检测系统[8,9] 利用 卷积神经网络 (ConvNets) 在单个输入尺度图像依次进 行运算, 获得不同尺度的特征图, 然后用最顶层特征图 来预测具有不同尺度和纵横比的候选边界框. 然而, 最 顶部的特征图具有固定的感受野, 与自然图像中的不 同尺度的物体冲突. 特别是小物体在最顶层上几乎没 有信息, 因此可能会损害物体检测性能, 尤其是小物体.
信息, 因此可能会损害物体检测性能, 尤其是小物体. 在解决多尺度问题方面, SSD 利用从下到上的特 征金字塔来适应各种尺寸的物体, 然而, SSD 算法的特 征金字塔形式未能利用深层特征图中强大的语义信息, 这对于小物体检测至关重要. 因为语义信息对于检测 视觉上困难的物体 (例如小的, 遮挡的物体) 是决定性 的, 为了克服 SSD 的缺点并使网络对对象尺度更加稳 健, 最近的工作 (例如 FPN[9] , DSSD[10] , RON[11] ) 建议将 低分辨率带有强语义信息的特征图同具有高分辨率但 带有弱语义弱信息的特征图通过自上而下的通道横向 连接.
与 SSD 中的自下而上的方式相比, 横向连接将 语义信息一个接一个地传递到浅层, 从而增强了浅层 特征的检测能力. 与传统检测器相比, 这些网络在精度 方面有着显著的提高. 但是我们注意到这些在最顶层 特征图中使用反卷积层的方法完全丢失了小物体的精 细细节. 本文致力于提高小物体的检测性能, 缓解 SSD 算法的尺度变化问题, 同时又不失实时检测速度. 通常, 较深层中的深层特征对于分类子任务更具辨别性, 而 较浅层中的浅层特征则对于物体位置回归子任务更有 利.
此外, 浅层特征更适合于具有简单外观的特征对象, 而深层特征适用于具有复杂外观的对象. 基于此, 本文 通过特征融合模块将具有语义信息的深层特征添加到 浅层特征中, 以获得具有丰富信息的特征图, 将来自不 同层次的不同尺度的特征图投影并连接在一起, 然后 用 BN[12] 层进行归一化处理, 最后附加下采样层以生 成新的特征金字塔, 此外, 添加了感受野模块 (RFM), 以加强从轻量级 CNN 模型中学到的深层特征, 使它们 有助于检测器快速准确. 与传统 SSD 相比, 本文算法 RF_SSD 主要选择 VGG16 作为骨干网络, 而不是更深 层次的 ConvNets (例如 ResNet[13] 或 DenseNet[14] ), 原 因是深层卷积神经网络 (ConvNets) 虽然对特征提取有 利但会加大计算量同时降低检测速度, 实验表明本文 所提出的结构在精度上比 SSD 算法有所提升.
本文的 贡献主要表现为以下几点:
(1) 提出了新颖的、轻量级的特征融合方式, 主要 是将不同层的特征图合并, 并生成特征金字塔, 降低了 重复检测一个对象的多个部分或者多个对象合并到一 个对象的检测概率, 同时小物体检测表现更好.
(2) 借鉴混合空洞卷积和 Inception 结构, 设计并添 加感受野模块来增强网络的特征提取能力, 同时在不 增加卷积参数的前提下增大卷积感受野, 加强轻量级 卷积神经网络学到的深层特征, 保证检测器的实时性.
(3) 在 PASCAL VOC 数据集上进行了定性与定量 的实验, 结果表明, 同传统 SSD 算法相比, 本文所提出 的算法在目标检测性能上有显著的提升, 同时以相对 低的速度损耗提高了小物体的准确率.
1 相关工作
在目标检测算法研究中, 无论是在单阶段检测器 还是两阶段检测器中, 相关研究者都投入了大量的工 作来改善目标检测中的尺度变化问题, 大致可分为两 种策略. 一种是图像金字塔, 通过图像的尺度变化来产 生具有语义代表性的多尺度特征, 然后用来自不同尺 度的图像的特征分别产生预测, 最后将这些预测放在 一起进行评估以给出最终预测. 在识别精度和定位精 度方面, 来自多尺寸图像的特征确实超越仅基于单尺 度图像的特征. 诸如 OHEM[15] 和 SNIP[16] 之类的方法 都采用了这种策略. 虽然性能得到了提升, 但这种策略 在时间和内存方面花销很大, 所以在实时任务中很难 得到应用. 另一种是利用网络内的特征金字塔以较低 的计算成本来模拟图像金字塔. 该策略比第一个策略 需要的内存和计算成本要少得多, 从而可以在实时网 络的训练和测试阶段中进行使用. 此外, 特征金字塔构 建模块可以很容易地修改, 并应用在最先进的基于深 度神经网络的探测器. MS-CNN[17] , SSD[8] , DSSD[10] , FPN[9] , YOLOv3[18] , RetinaNet[19] 和 RefineDet[20] 以不 同的方式采用了这种策略.
此外, MS-CNN[17] 提出了两个子网络, 并首先将多 尺度特征结合到用于物体检测的深度卷积神经网络中. 提议子网利用几种分辨率的特征图来检测图像中的多尺度物体. SSD 利用 VGG16 网络的后几层的特征图和 额外特征层进行多尺度预测. FPN 将高层特征与低层 特征相结合, 由最近邻居上采样和横向连接实现. DSSD 实现了反卷积层, 用于聚合上下文和增强浅层特征的 高级语义信息, RefineDet[20] 采用了两步级联回归, 在 保持 SSD 效率的同时, 在准确性方面取得了显著提高.
2 RF_SSD 算法
本节将在 SSD 框架基础上, 分析算法涉及到的特 征融合处理、感受野模块的设计以及算法的具体处理 过程.
S SD 采用不同尺度的特征图来检测物体, 以 VGG16[21] 作为骨干网络, 采用级联卷积的方式生成不 同尺度的特征图, 结合 YOLO 的回归思想和 FasterRCNN 的 Anchor 机制, 使用全图各个位置的多尺度区 域特征进行回归, 既保证检测速度又保持了精度. 同时 在对特征图预测时, 采用卷积核来预测一系列 Default Bounding Boxes 的类别和坐标偏移.
由于小物体不会在浅层中丢失太多的位置信息, 并且大物体也可以在较深层中很好地定位和识别, 所 以 SSD 算法使用浅层特征图检测小物体, 深层特征图 检测大物体这种策略是合理的, 但问题是由浅层产生 的小物体的特征缺乏足够的信息, 这将导致小物体检 测性能的不良. 此外, 小物体也严重依赖于上下文信息, SSD 网络结构如图 1 所示.
2.1 特征融合 (Feature Fusion)
针对传统 SSD 算法缺点, FPN 和 DSSD 利用顶层 特征的反卷积层, 经过验证, 这种方法可以大大提高传 统探测器的性能, 但却需要多个功能合并过程. 而且右 侧的新特征只能融合相应的左侧和更高层级的特征[9,10] .
此外, 潜在特征和大量特征的 element-wise process 过程也会消耗大量时间. 基于此, 本文提出了一种轻量 级和高效的特征融合模块来处理这项任务. 本文的动 机是以适当的方式一次融合不同级别的特征, 并从融 合特征生成特征金字塔. 传统的 SSD300 是基于 VGG16 的, 作者选择 Conv4_3, FC7 和新添加的 Conv8_2, Conv9_2, Conv10_2, Conv11_2 层特征图进行检测. 相应的特征图的大小为 38×38, 19×19,10×10,5×5,3×3 和 1×1. 本文认为大小小于 10×10 的特征图太小而几乎没有要合并的信息, 所以本文先 将 Conv8_2 的 stride 设为 1, 这样 Conv9_2 的大小为 10×10, 然后本文选择 Conv4_3, Conv9_2 融合为新的 特征图, 增强了浅层特征的语义信息, 同时也有很强的 几何细节信息表征能力. 在传统的处理方法中, 主要有两种方法合并不同 的特征图: concatenation 及 element-wise summation. Element-wise summation 要求特征图的通道相同, 这意 味着我们必须将特征图转换为相同的通道.
由于此 要求限制了融合特征图的灵活性, 所以我们选择用 concatenation 方式. 为了使 Conv4_3, Conv9_2 融合为 新的特征图, 需对 Conv9_2 进行上采样处理. 如图 2 所 示, 首先使用大小为 2×2, 通道数为 256 的反卷积核进 行上采样, 将输出通过 3×3 的卷积核映射至 BN 层, 然 后再到下一个反卷积核. Con4_3 通过 1×1 的卷积核直 接映射输出至 BN 层. 最终将 Conv4_3 通过 1×1 卷积 层的输出与 Con9_2 经过两层反卷积层的输出进行 concat 操作, 之后传入至 ReLU 层, 再通过 L2 Normalization 层做归一化处理, 同时增加模型的鲁棒性.
2.2 感受野模块
本模块采用多支路卷积形式, 其内部结构可以分 为两个部分: 多支路卷积层和空洞卷积层. 多支路卷积 层的结构和 Inception 相同, 模拟不同尺寸的感受野, 空 洞卷积层利用空洞卷积模拟不同尺寸感受野之间的关系[22] . 在卷积神经网络中, 卷积核的感受野大小和卷积 核的尺寸成正相关, 通过改变卷积核的尺寸可以获得 不同大小的感受野, 进而更加有效的利用特征信息. 本 文的设计借鉴了 Inception-V4 和 Inception -ResNet[23] , 结构如图 3 所示, 首先在每个分支结构中使用 1×1 的 卷积层, 减少特征图中通道数量, 用 2 个连续的 3×3 Conv 替代 Inception 模块中的 5×5 Conv, 从而实现网 络深度的增加, 之后将原有 3×3 的卷积核分解成两个 一维的卷积核 (1×3 和 3×1), 目的是加速计算, 同时网 络宽度增加, 增加了网络的非线性. 除此之外, 为了保 留更多的原始特征信息, 增加了一条剪接支路.
本算法感受野模块结构上借鉴了混合空洞卷积和 Inception, 混合空洞卷积 (hybrid dilated convolution) 由文献 [24] 提出, 通过叠加多个不同空洞率的空洞卷 积来避免网格效应和平衡不同尺寸感受野之间的关系, 解决了传统卷积神经网络采用池化层所造成的内部数 据结构遗失和小物体信息无法重建等问题, 同时协调 多支路卷积, 在很好的结合多支路卷积的同时提高了 算法的检测效率.
2.3 算法结构
本文算法是以 SSD 算法框架为基础构建的, 提出 新的特征融合模块来充分利用深层的特征信息以此提 高算法的检测精度, 同时改善小物体检测的效果, 另外, 通过在特征提取网络上添加感受野模块来提高特征的 提取能力. 无论特征融合模块还是感受野模块都比较 简单, 所以在极大程度上保留了 SSD 原有的网络结构, 保证了检测速度.
整体的算法结构如图 4 所示, 骨干网 络采用 VGGNet, 先对 Con9_2 层特征图进行尺寸调整, 后将调整尺寸后的 Con9_2 层特征图与 Con4_3 层特 征图传入 Feature Fusion 模块产生新特征图, 经 BN 层 后, 通过一系列下采样形成特征金字塔, 同时加入感受 野模块. 具体描述如下:
第一是将 Conv8_2 的 stride 设 为 1, 这样 Conv9_2 的大小为 10×10, 然后使用两层反 卷积核对 Conv9_2 进行上采样处理. 之后将输出和经 过 BN 层的 Conv4_3 进行 concat 操作, 之后传入至 ReLU 层, 再通过 L2Normalization 层做归一化处理.
第二, 对 新得到的特征图进行下采样 (包含一些 1×1 和 stride 为 2 的 3×3 的卷积层来改变通道数和特征图的大小), 形成新的特征金字塔, 同时利用新添加的感受野模块 对新的特征信息进行检测. 第三, 用 RFM 替换掉中间 两层卷积层, 考虑到最后两个卷积层的尺寸, 将最后两 层保持不变.
3 实验分析
3.1 数据增强
在进行训练之前, 可先通过数据增强的方式对数 据进行预处理, 以此提高数据集的多样性, 使模型有更 高的鲁棒性. 常用的数据增强方式如随机翻转、缩 放、颜色变化和裁剪等. 通过将数据增强方式应用到 训练当中, 可使模型学到旋转不变性和对称不变性.
3.2 网络训练策略
本文算法采用与 SSD 算法相似的训练策略, 都是 使用训练好 VGGNet 网络, 本文使用 PASCAL VOC 2007 和 PASCAL VOC 2012 数据集, 同时把与真实框 (ground truth) 的交并比 (IOU) 大于 0.5 的预测框认为 是正样本. 采用平均精度 (mAP) 作为评测算法性能的 度量, 帧速 (Frame Per Second, FPS) 作为目标检测速度 的评价指标. 训练阶段将输入图像的大小设为 300×300 像素.
训练时, 我们用 VOC 2007 trainvaland VOC2012 trainval (VOC07+12) 的联合数据集训练, 在 VOC 2007 test 测试集上测试. 本文的硬件环境为深度学习框架 Caffe, ubuntu16.04 系统, GPU 显卡型号为 NVIDIA 1080Ti, Batch size=16, 初始学习率设定为 0.001, max_epoch 设置为 180 K, 然后在步骤 100 K, 140 K 和 180 K 除以 10. 将权重衰减设置为 0.0005. 和 SSD 算法 一样采用动量为 0.9 的 SGD 来优化本文算法.
3.3 PASCAL VOC2007 测试结果分析
PASCAl VOC 是一个用于物体分类识别和检测的 标准数据集, 该数据集包括 20 个类别, 表 1 为 PASCAl VOC 具体类别.
不同目标检测算法在精度和速度上的分布如图 5 所示, Faster-RCNN, R-FCN, YOLOv2, DSOD, RSSD, DSSD 算法是在 Titan X GPU 上进行测试的, 而 SSD 和本文提出的算法是在 1080 Ti GPU 上测试的. 从图 5 中也可看出本文的算法在检测速度和精度上有着一定 的优势.
本文将传统的 SSD 算法和 RF_SSD 算法在每一 类目标检测的精度上进行比较, 结果如表 3 所示. 从表 中可知, 飞机, 自行车, 鸟, 船, 瓶子, 公交车等类别都有 显著的提升, 其中, 瓶子, 盆栽的检测精度较低, 虽然得 益于本文提出的网络结构, 相比于传统的 SSD 算法, 精确度有所提升, 但因物体相比于其他类别太小, 特征 提取较少, 导致相应检测精度不高.
但总体来说, 本文 算法相比于 SSD 算法 mAP 提高了 2.7%, 基本满足实 际需求, 同时也论证了本文算法思想的可行性. 同时本文对比了感受野模块对算法检测结果的影 响 (参见表 4), 通过实验可知添加感受野模块可提高算 法的准确率, 说明感受野对算法性能有一定的提升, 同 时由于感受野模块采用多个支路卷积, 提高了模型的 复杂度, 所以导致检测速度降低.
最后本文分析了不同卷积层融合后的结果, 结果 如表 5, 若融合 Conv3_3, Conv4_3, 和 Conv9_2, 则在 VOC2007 的 mAP 为 79.8%, 若去掉 Conv3_3, 则 mAP 为 80.2%, 表明 Conv3_3 对检测器的结果并没有 太大的影响, 原因在于 Conv3_3 卷积层提取的特征图 包含较多的背景噪声. 此外, 本文从 COCO 数据集中随 机挑选了几张照片, 测试结果如图 6 所示.
4 结论
本文基于 SSD 算法, 提出了一种新颖高效的目标 检测算法, 通过将不同层的特征图以轻量级的方式融 合在一起, 使新的特征图既有深层特征的语义信息, 同 时又有高分辨率, 然后采用下采样层生成特征金字塔, 之后设计添加感受野模块, 提高网络的特征提取能力, 提高了算法的整体精度, 也改善了小目标的检测效果. 本文的算法在精度上超越了传统 SSD 算法以及一系 列其他目标检测算法, 由于添加感受野模块, 增加了网 络特征的提取能力, 增加了精度, 但加深了深度和模型 复杂度, 导致检测速度降低, 虽以速度换取精度, 但基 本满足实时检测要求. 和大多数单阶段目标检测结构 一样, 本算法类别不平衡问题依旧未能得到解决. 未来, 将继续改进该算法, 使用 anchor-free 模型方法或进一 步修改目标损失函数改善类别不平衡问题, 设计轻量 型的特征提取和融合网络结构, 在不降低精度的同时 提高速度.
本文转载《计算机系统应用》期刊 2020年第29卷第9期
关注我们公众号,还可以获得PS AI等工具包哦~