CornerNet-Lite: Efficient Keypoint Based Object Detection
目录
- 摘要
- 介绍
- 算法
-
Saccade
- 预估物体位置
- 检测目标
- 检测精度与计算效率
- 去除多余的目标位置信息
- 主级网络
- 训练策略
- 预估物体位置
-
Squeeze
-
- 概述
- 从SqueezeNet和MobileNets得到的构思
- 训练细节
-
摘要
在物体检测领域中
介绍
略
算法
Saccade
CornerNet-Saccade 检测出的小区域位于图像潜在的对象区域附近。\n\n该方法将整个图像缩小以生成注意力图和粗略边界框; 其中注意力图和粗略边界框均预估了潜在的目标位置。\n\n随后,在高分辨率下对该区域进行精确的目标定位。\n\n此外,在处理过程中可以通过设定每块区域的最大目标数量来优化计算效率
预估物体位置
CornerNet-Saccade 的第一步旨在识别图像中潜在的目标位置。 为了获得目标候选区域及其尺度信息,在此阶段我们对输入图像进行尺寸缩减处理以生成两个不同尺度版本:一个尺寸对应于图像长边255像素(记为P5),另一个对应于192像素(记为P4)。 为了使缩减后的不同尺度张量能够在同一网络架构中高效处理,在P4版本中使用零填充的方式将其扩展至与P5张量相同的空间维度。 这种设计选择有两个主要考虑因素:第一,在此阶段操作不会显著增加推理时间;第二,该过程有助于网络更高效地提取图像背景信息以便生成目标候选区域及尺度信息。 在这一过程中,我们分别从三个不同尺度下生成对应的注意力图:其中用于检测小型目标的对象候选区域及其尺度信息对应于P4级别的低分辨率数据;而用于检测大型目标的信息则对应于较高分辨率的空间位置信息。 在此过程中, 我们根据实际检测到的目标框大小自动调节其候选区域的位置与尺度参数, 从而实现对不同类型目标的有效定位与缩放适应性
检测物体
该算法通过缩小图像获取的位置来决定处理区域。 仅凭缩小后的图像裁剪区域可能导致较小的目标难以精确检测。 因此,在第一步的基础上结合更高分辨率的信息进行后续定位会更加合理。 依据注意力机制推导出的目标定位位置能够提供更为丰富的尺度信息:s_s表示用于放大小型目标的比例因子;s_m对应中型目标;s_l则为大型目标所使用的缩放比例;其中s_s>s_m>s_l这一原则需通过实验确定具体的数值取值范围。 在每一个候选点(x,y)处进行图像缩放操作并结合CornerNet-Saccade模型进行特征提取与分析:其中缩放因子s_i\in\{s_s,s_m,s_l\}的选择依据是目标物体在初步识别阶段所对应的尺度特征。 为了进一步提高检测效率与计算性能,在实际应用中建议将候选区域按照一定规则划分为若干子块并分别处理以减少冗余计算负担的同时也能有效提升整体算法运行效率
准确率与效率
通过设定每个图像处理中对象位置的数量上限来优化处理效率是一个有效的方法。为了在准确率与效率之间取得良好的平衡目标,在获取到目标物体的位置信息后,我们会按照其置信度分数对他们进行排序,并优先选择来自边界框定位的高概率目标点。在裁剪后的后续处理中最大数量设定为k_{max}值,在这一基础上我们将前k_{max}个最优的目标点用于物体检测任务的预测过程
抑制冗余的对象位置
当多个目标彼此接近时, 我们可以生成彼此高度重叠的区域. 在处理这些区域时, 希望避免在处理任一区域时误检测到其他目标. 我们模仿NMS算法的方式去除冗余位置. 首先根据检测结果排序, 在满足一定条件的前提下优先选择边界框定位的结果, 其次则参考注意力机制定位的结果. 然后选择最优的目标点, 并移除与之邻近的其他目标点. 最后持续执行上述步骤直至所有目标点均被消除为止.
主网络
我们开发出了一种新型的沙漏网络架构,并将其作为CornerNet-Saccade的核心组件使用。该架构包含三个独立的沙漏模块组件,在设计上具有54层的整体深度。传统的Hourglass-104结构由两个核心模块构成,并具有104层深度。与传统的Hourglass-104相比,在Hourglass-54中每个模块的参数量显著减少,并且整体深度有所降低。采用与Hourglass-104相同的特征缩减策略,在特征缩减过程中采用了stride值为2的方法,在每个下采样层之后以及每个跳跃连接节点处均接入一个残差学习机制。经过三次特征缩减过程后,经过一次上采样处理后通道数量逐步提升至(384,384,512)。在此架构设计中,在每一步前均对输入图像进行二次缩小时处理程以保证数据完整性的同时又降低了计算复杂度。为了提高模型泛化能力在训练过程中采用了常规的方法进行模型优化并在此基础上增加了残差块以进一步提升模型性能。在测试期间只使用来自网络中的最后一个沙漏模块的预测结果即可达到预期效果
训练细节
我们采用了Adam算法来优化注意力图与目标检测任务的损失函数,并借鉴CornerNet设置相同的训练超参数设置。输入分辨率设定为255×255像素,在推理过程中保持一致。为了提高模型效率,在四块1080Ti GPU上以批量大小48进行模型训练。为防止模型过拟合,在数据预处理阶段采用CornerNet所采用的技术手段进行增强处理:当我们在物体周围随机裁剪一片区域时,对象要么随机放置在其周围区域边缘附近,要么在中心位置添加一定偏移量(约±10%宽度和高度),这使得无论是在训练还是测试阶段都能围绕物体中心位置进行统一化的区域裁剪处理
Squeeze
概述
与其专注于特定像素子集以减少计算开销的CornerNet-Saccade不同,Cornet-Squeeze提出了一种替代方案来降低每个像素所需的计算资源. 在Cornet体系中,大部分计算资源都投入到了 Hourglass-104.该残差块由两个连续的 3×3 卷积层以及中间的一个跳跃连接构成残差模块. 尽管 Hourglass-104 在性能上表现优异,但在参数规模与推理速度等方面付出了一定代价. 通过融合 SqueezeNet的核心思想与 MobileNets lightweight 设计理念,在沙漏架构的基础上构建出一种轻量化的设计方案以进一步优化性能.
从SqueezeNet和MobileNets得到的构思
SqueezeNet提出了三种降低网络计算复杂度的方法:第一种方法是以1×1尺寸的卷积层替代原有的3×3卷积层;第二种方法是缩减了3×3卷积滤波器的数量;第三种方法是将降采样操作置于后续处理之后。 fire模块由squeeze层和expand层组成:squeeze层通过1×1内核降低了输入的空间维度;expand层则结合了1×1卷积与标准的3×3卷积来进一步提升特征表示能力。根据SqueezeNet的设计方案,在CornerNet-Squeeze中我们采用了fire模块替代残差模块以简化网络架构。此外,在第二层我们采用了深度可分离卷积结构以替代标准的三维卷积操作从而降低了推理时间成本表1详细列出了CornerNet残差模块与CornerNet-Squeez中的fire模块之间的性能对比
训练细节
我们采用了相同的训练损失指标和超参数配置来训练CornerNet-Squeeze模型。主要改动仅体现在 批量大小上。在沙漏模块之前对图像尺寸进行了再次缩减处理,并与采用相同 图像分辨率的CornerNet-Squeeze对比分析表明…内存占用减少幅度达4倍。我们能够在此设置下训练出批量大小为55的网络,在四个配备1080Ti显卡的GPU集群中运行(其中主GPU负责处理13个独立样本,剩余三个GPU每个均处理14个样本)
