CornerNet-Lite: Efficient Keypoint Based Object Detection
Hei Law, Yun Teng, Olga Russakovsky, Jia Deng
Princeton University, 2019
CornerNet的作者带来的CornerNet升级版。CornerNet的准确率很不错,但其速度的缓慢使其难以应用。因此作者基于两个方向对其进行了优化:降低像素处理量和降低每个像素的处理量,得到了CornerNet的两个升级版:CornerNet-Saccade和CornerNet-Squeeze。前者通过注意力机制降低处理的像素量,超越了基于关键点的SOTA准确率,后者通过SqueezeNet结构降低每个像素的处理量,在准确率、速度上均超越了YOLOv3。代码与模型已开源。
CornerNet-Saccade
CornerNet-Saccade的处理流程如下图。它使用缩小的全图预测注意力热图和粗糙的限位框,然后在高分辨率下在以该位置为中心的区域进行检测。可以通过控制每张图的最大位置处理数,来进行精度和速度的权衡。
Estimating Object Locations
CornerNet-Saccade的第一步是利用缩小的图片预测注意力热图,指示物体位置和该位置的物体大概尺度。将输入图片缩小为两个尺度,分别令长边为255和192像素。192像素的图片通过zero padding到255,使它俩能并行处理。使用低分辨率的原因处理防止此步骤成为速度瓶颈以外,还让网络更容易使用图片上下文信息来预测注意力热图。
CornerNet-Saccade会为每张缩小的图片预测3个注意力热图,分别对应大、中、小的物体。物体尺度划分依据为限位框长边的像素数:32和96。为不同尺度的物体分别进行位置预测能让我们更好地控制后续在每个位置缩放的比例。
注意力热图的预测是在backbone的不同尺度的特征图上完成的。Backbone是一个Hourglass网络,网络每个Hourglass模块有多个卷积和下采样层,然后用多个卷积和上采样层将特征图还原到输入尺寸。上采样层的特征图被用于预测注意力。对每个特征图使用一个$3\times3$ Conv-ReLU和一个$1\times1$ Conv-Sigmoid得到注意力热图。测试时仅处理分数大于t的点,实验时t为0.3。
网络在缩小图上是有可能检测到一些物体,并为它们生成限位框的。这样获得的限位框可能会不准确,因此还需要在高分辨率下检测次区域,以获得更佳的限位框。
训练中将每个限位框中心位置在注意力图上设置为positive,其余设置为negative,并使用$\alpha=2$的focal loss进行训练。进行注意力预测的卷积层的biases设置按照[31]的方法。
Detecting Objects
CornerNet-Saccade通过在缩小的图片上获得的位置来决定在哪里进行处理。但如果直接在下采样的图片上裁切区域的话,物体可能会太小而难以检测。因此需要基于第一步获得的尺度信息在更高的分辨率上检测这些区域。
对于不同物体大小,其缩放尺度不同:$s_{s}>s_{m}>s_{l}$,它们分别为4、2、1。在每个可能的位置都使用系数s放大,然后以其为中心的255矩形窗输入网络。
原文的这一段理解的不是特别明白,前文使用的32、96像素分类应该是指训练样本怎样分布到3个热图。但这里的缩放后的限位框长边24、64、192进行3个尺度的分类,没有明白目的。
The locations obtained from the bounding box predictions give more information about the object sizes. We can use the sizes of the bounding boxes to determine zoom-in scales. The scale is determined such that the longer side of the bounding box after zoom-in is 24 for a small object, 64 for a medium object and 192 for a large object.
在可能的位置检测物体后,使用Soft-NMS合并、舍弃限位框。但图3中的红框因为与完整物体重叠低,无法被NMS消除。因此直接移除触碰到crop边界的限位框。
如图4,当两个物体相近时,生成的区域可能高度重叠。用了一个类似NMS的流程来移除重复位置。
Backbone Network
新的Hourglass由3个module组成,共54层,相比CornerNet里的由两个module组成的104层的Hourglass-104,新的Backbone称为Hourglass-54。
Hourglass-54里的每个module都比104里浅、参数少。下采样的步长为2。每个Hourglass模块会下采样特征图3次,并按(384,384,512)来增加通道数。模块中有一个512通道的残差模块。
CornerNet-Squeeze
SqueezeNet共使用了3中策略来降低网络复杂度:(1) 使用$1\times1$替换$3\times3$ (2) decreasing input channels to $3\times3$ kernels (3) 晚一点下采样。
在CornerNet-Squeeze中使用了fire模块替代残差块。受MobileNet的启发,我们把第二层的$3\times3$标准卷积替换为$3\times3$depth-wise separable 卷积。与CornerNet的对比见表