CornerNet-Lite: Efficient Keypoint Based Object Detection

摘要

在物体检测中,基于关键点是一种相对较新的的方法,不需要anchor boxes 并简化了检测框架。基于关键点的CornerNet 在单阶段检测器中有不错的精度。但是,这种准确性的代价是大量的计算(基本框架是用于语义分割的Hourglass)。因此引入了CornerNet-Lite,通过关键点高效处理物体检测。CornerNet-Lite将CornerNet的两个有效变体:CornerNet-Saccade 和CornerNet-Squeeze 组合起来。CornerNet-Saccade,使用注意力机制来避免穷举处理图像的所有像素;CornerNet-Squeeze,引入了一种新的紧凑框架。这两个变体共同解决了两个关键问题:在不牺牲准确性的情况下提高效率;改进实时效率的准确性。 CornerNet-Saccade适用于线下处理,将CornerNet的效率提高6.0倍。 CornerNet-Squeeze适用于实时检测,提升了流行的实时探测器YOLOv3的效率和准确性(CornerNet-Squeeze的34.4%AP为34ms,相比之下,COCO上的YOLOv3在39ms时为33.0%AP。)这些成果首次共同揭示了基于关键点的检测对于需要处理效率的应用的潜力。

介绍

算法

Saccade

CornerNet-Saccade 检测的小区域是位于图像中可能的对象位置周围。 它将完整图像缩小,以预测注意力图和粗略边界框; 两者都预测可能的对象位置。然后,CornerNet-Saccade 在高分辨率上通过检测这些对象位置中心来检测物体。它还可以通过控制每个图像处理的对象位置数量上限来提高效率

预估物体位置

CornerNet-Saccade 的第一步是获得图像中可能的对象位置。 我们将完整图像缩小来预测注意力图,其指示位置处的对象的位置和粗略的尺度。给定图像,我们通过调整大小将其缩小到两个比例:图像的长边为255和192像素。 大小为192的图像用零填充到255的大小使得它们可以并行处理。 使用如此低的分辨率图像有两个原因。 首先,这一步不应该是推理时间的瓶颈。 第二,网络应该轻松利用图像上下文信息来预测注意力图
对于尺寸缩小的图像,CornerNet-Saccade 预测3个注意力图,一个用于小物体,一个用于中型物体,一个用于大型物体。 如果一个对象边界框的长边小于32,则为小物体,如果介于32和96像素之间,则为中等,如果大于96为大。 针对不同的物体尺寸单独预测位置可以让我们更好地控制CornerNet-Saccade 应该在每个位置放大多少。 我们可以在小物体位置放大更多在中等对象位置少一点
我们在不同的尺度下使用特征图预测注意力图。 特征图来自沙漏网络CornerNet-Saccade 中的骨干网络。 网络中的每个沙漏模块都应用几个卷积和下采样层缩小输入特征图的尺寸。 然后它通过多个卷积和上采样层将特征上采样回原始输入分辨率。 来自上采样层的特征图用于预测注意力图。 较精细尺度的特征图用于较小尺度的物体,粗糙尺度的特征图用于较大的物体。对每个特征图,我们用3×3 Conv-ReLU模块后跟1×1 Conv-Sigmoid模块来预测注意力图。 在测试期间,我们只处理分数高于阈值t的区域,在我们的实验中,我们设置t = 0.3
当CornerNet-Saccade 处理缩小尺寸的图像时,它可能会检测到一些物体图像并为它们生成边界框。 从缩小尺寸的图像获得的边界框可能不准确。 因此,我们也考察高分辨率以获得更好的边界框
训练时,我们将相应注意力图上每个框的中心位置设置为正,其余为负数。 然后我们使用α= 2的焦点损失。预测注意力图的卷积层中的偏差按照 Focal loss for dense object detection 中设定

检测物体

CornerNet-Saccade 使用从缩小图像中获得的位置来确定处理的位置。 如果我们直接从缩小的图像中裁剪区域,则某些对象可能变得太小而无法准确检测。 因此,我们应该根据第一步中获得的尺度信息用更高分辨率检查区域
对于从注意力图获得的位置,我们可以确定不同对象的不同放大尺度: s s s_s ss代表小物体, s m s_m sm代表中物体, s l s_l sl代表大物体。 一般来说, s s > s m > s l s_s>s_m>s_l ss>sm>sl因为对较小的对象我们应该放大更多,所以我们设置 s s = 4 s_s=4 ss=4 s m = 2 s_m=2 sm=2 s l = 1 s_l=1 sl=1。在每个可能的位置 ( x , y ) (x,y) (x,y),图像以 s i s_i si的尺度缩小,我们再将其放大,其中 i ∈ { s , m , l } i\in\{s,m,l\} i{s,m,l}取决于粗略对象尺度。 然后我们在该位置为中心的255×255窗口使用CornerNet-Saccade
从边界框预测中获得的位置提供了有关对象大小的更多信息。 我们可以使用边界框的大小来确定放大尺度。 确定尺度使得长边对于小对象,放大后的边界框为24,对于中型对象为64,对于大型对象为192
为了高效使用处理器还有一些重要的实施细节。 首先,我们批处理区域以更好地利用GPU。其次,我们保留GPU内存中的原始图像,并在GPU上执行调整大小和裁剪来减少CPU和GPU之间的图像数据传输的开销
在可能的对象位置处检测到对象后,我们合并边界框并用Soft-NMS删除多余的边框。 当我们裁剪区域时,在裁剪边界处可能包括部分对象,如图3所示。检测器可能会为这些对象生成边界框,这些边框可能无法被Soft-NMS筛掉,因为它们可能与完整对象的边界框重叠较低。 因此,我们删除了与裁剪区域有接触的框。 在训练时,我们用和CornerNet相同的训练损失来训练网络,包括预测热力图,TAG和偏移

准确率与效率

我们可以通过控制每个图像处理的对象位置数量上限来提高效率。 要实现良好的准确率和效率权衡,我们优先考虑更有可能包含对象的位置。 因此,在我们获得对象位置之后,我们按他们的分数对他们进行排名并优先考虑从边界框获得的位置。 裁剪后处理的最大数量
k m a x k_{max} kmax,我们用前 k m a x k_{max} kmax对象位置来预测物体

抑制冗余的对象位置

当对象彼此靠近时,我们可以生成彼此高度重叠的区域。在处理这两个区域时,不希望处理它们中的任何一个可能检测到其他对象
我们采用类似于NMS的方法来删除冗余位置。 首先,我们对对象位置进行排名,优先考虑来自边界框的位置,其次才是来自注意力图的位置。 然后我们保持最佳的对象位置并删除靠近最佳位置的位置。 我们重复该过程,直到没有任何对象位置

主网络

我们设计了一个新的沙漏网络能更好的用于CornerNet-Saccade。 新的沙漏网络由3个沙漏模块组成,深度为54层。CornerNet中的Hourglass-104由2个沙漏模块组成,深度为104。我们将新的沙漏模块记作Hourglass-54
Hourglass-54中的每个沙漏模块参数都比Hourglass-104少并且深度更浅。按照Hourglass-104的缩小特征方法,我们使用stride 为2来缩小特征尺寸。我们在每个下采样层之后和每个跳跃连接中用一个残差模块。 每个沙漏模块都会缩小输入特征尺寸3次,增加了通道数量
分别为(384,384,512)。 在沙漏模块中有一个512个通道的残差模块,还有每个上采样层之后也有残差模块。在沙漏模块之前我们也缩小了图像两次
按照训练沙漏网络的常规做法,我们还在训练中添加中间监督。 在测试期间,我们只使用
来自网络中的最后一个沙漏模块的预测

训练细节

我们使用Adam来优化注意力图和对象检测的损失,并使用CornerNet中的相同训练超参数。 网络的输入大小为255×255,这也是在推理时的输入分辨率。 我们以批量大小为48在四个1080Ti GPU上训练网络。 为了避免过拟合,我们采用CornerNet中使用的数据增强技术。 当我们随机裁剪一个物体周围的区域时,对象可以随机放置,也可以在中心加上一些随机偏移。 这确保了训练和测试时,以对象位置为中心裁剪区域进行检测保持一致

Squeeze

概述

与专注于像素的子集以减少处理量的CornerNet-Saccade相反,CornerNet-Squeeze找到了一种减少每像素处理量的替代方法。 在CornerNet中,大部分计算资源都用在了Hourglass-104。Hourglass-104 由两个3×3卷积层和一个跳跃连接组成的残差块构成。 虽然Hourglass-104实现了不错的性能,但是在参数数量和推理时间方面花费了昂贵的代价。 我们结合了SqueezeNet的想法和MobileNets设计轻量级沙漏架构来降低降低复杂性复杂性

从SqueezeNet和MobileNets得到的构思

SqueezeNet提出了三种降低网络复杂度的策略:(1)用1×1内核替换3×3内核;(2)减少 3×3 卷积的通道数; (3)将降采样后置。 SqueezeNet的构建块,fire模块,封装了前两个想法。 fire模块通过1×1内核构成的squeeze层来减少输入的维度。 然后,它通过1×1卷积和3×3 卷积混合的expand层对前面得到的结果进行处理
根据SqueezeNet提供的结果,在CornerNet-Squeeze中我们用fire模块替代残差模块。 此外,受MobileNets成功的启发,在第二层我们用3×3深度可分离卷积替代了3×3标准卷积,这进一步改善了推理时间。 表1表示CornerNet中残差模块和CornerNet-Squeez中的fire模块之间的详细比较
我们没有使用SqueezeNet中的第三个策略。 因为沙漏网络具有对称结构,延迟下采样导致在上采样期间产生更高分辨率的特征图。 在高分辨率特征映射上执行卷积在计算上是花销大,会妨碍我们实现实时检测
除了更换残差块,我们还做了一些修改。 我们通过在沙漏模块之前再添加一个下采样层来减少沙漏模块的最大特征图分辨率,并在每个沙漏模块中删除一个下采样层。 CornerNet-Squeeze相应地在沙漏模块之前将图像缩小三次,而CornerNet只将图像缩小两次。 在CornerNet预测模块中使用1×1卷积替代3×3卷积。 最后,我们将沙漏网络中上采样最近的层替换为4×4的转置卷积

训练细节

我们使用CornerNet相同的训练损失和超参数训练CornerNet-Squeeze。 唯一的变化是
批量大小。 在沙漏模块之前再次缩小图像尺寸,和CornerNet-Squeeze中的相同图像分辨率比较,将内存使用量减少了4倍 。 我们能够训练批量大小为55的网络,在四个1080Ti GPU上(主GPU上有13个图像,其余GPU的每GPU14个图像)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值