点击上方“蓝字”,关注我们吧!

目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[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等工具包哦~

层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...相关推荐

  1. 多尺度特征融合的目标检测算法-论文解读

    1.论文声称的创新点   论文中的创新点主要体现在网络结构的创新上,作者提出了一种基于SSD多尺度特征融合(Multi-scale Feature Fusion Single Shot Detecto ...

  2. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

  3. 基于haar特征的adaboost算法_目标检测算法介绍

    什么是目标检测 目标检测是指从图像中找出目标,包括检测和识别两个过程,现实中由于环境的复杂性以及各类物体的形状.外观以及光照,遮挡等因素的干扰,所以目标检测一直也是计算机视觉最常见的挑战之一. 目标检 ...

  4. 病虫害模型算法_基于深度学习的目标检测算法综述

    sigai 基于深度学习的目标检测算法综述 导言 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像 ...

  5. 基于激光雷达点云的3D目标检测算法—端到端多视图融合

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Rubicon007@知乎 来源丨https://zhuanlan.zhihu.com/p/44 ...

  6. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)

    太多的公众号每天的文章是否让你眼花缭乱?刷了好多文章,发现大都是转来转去?今天我在全网公众号里为大家精选主题为深度学习目标检测算法的文章12篇,其中包括综述,R-CNN,SPP-Net,Fast R- ...

  7. 双目立体视觉建立深度图_从单幅图像到双目立体视觉的3D目标检测算法

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  8. 笔记《基于无人驾驶方程式赛车的传感器融合目标检测算法研究及实现》

    论文结构 关键字:无人驾驶方程式赛车,相机,激光雷达,目标检测,传感器融合 一.绪论 1. 感知技术研究现状 1.1.1 基于相机的目标检测技术研究现状 1.1.2 基于激光雷达的目标检测技术研究现状 ...

  9. python成绩统计及格学平成_基于深度学习的目标检测算法综述

    导言目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是机器视 ...

最新文章

  1. 商汤被曝已获准在香港上市,计划筹资逾10亿美元
  2. MXD文档保存和地图浏览
  3. css实现web前端最美的loading加载动画!
  4. gitlab bash_如何编写Bash一线式以克隆和管理GitHub和GitLab存储库
  5. c#访问各数据库的providerName各驱动
  6. 吴恩达《机器学习》第十五章:异常检测
  7. python是脚本语言_Python 脚本语言
  8. JavaScript如何给Table行设置颜色?
  9. ssh 根据指定端口登录远程服务器
  10. tensorflow配置默认工作路径
  11. Photoshop裁剪工具隐藏技巧
  12. 因子主成分分析,因子载荷矩阵、因子解释度 因子得分-在基金净值和主要金融因子分析上的应用
  13. UEFI服务器PXE网络安装CentOS7.5
  14. snapchat忘记账户_如何恢复忘记的Snapchat密码
  15. jquery对cookie进行读取、写入和删除
  16. 第四届橙瓜网络文学奖《元尊》的排行竟然比《剑来》低?
  17. 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》
  18. HTML页面之间传递Json格式数组的方式
  19. 是谁毁了GIS应届毕业生
  20. 【水果识别】基于matlab GUI苹果分级系统(带面板)【含Matlab源码 1827期】

热门文章

  1. 云计算设计模式(五)——计算资源整合模式
  2. 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
  3. MySQL - 触发器
  4. 如何获取 OSS AccessKeyId、AccessKeySecret
  5. java和C++之单例类双重检查加锁
  6. linux 路由表设置 之 route 指令详解
  7. (上)python3 selenium3 从框架实现代码学习selenium让你事半功倍
  8. 幼儿园调查过程怎么写_深圳全托幼儿园哪个好 幼儿园寄宿怎么报名
  9. element vue 上传模板_vue+element 文件上传
  10. 计算机与交通工程论文,交通工程论文.doc