目标检测 Matrix Nets: A New Deep Architecture for Object Detection
Abdullah Rashwan, Agastya Kalra, Pascal Poupart
University of Waterloo, 2019
又一个CornerNet升级版,相对的优势在于参数量少、训练所需显存少、收敛快。
开篇放了一张图,将MatrixNet与其它算法在参数量和mAP两个维度上进行了比较。同参数量下表现很优秀,但用参数量而不是速度来做对比,说明在推理速度上优势不大。
图2对比了FPN结构和Matrix网络结构。FPN的5层其实就是Matrix里的对角线。
Matrix Nets
Matrix Net中的matrix是指layer形成的矩阵,不同layer正对不同的目标尺寸和宽高比。对于坐标为$(i,j)$的layer,其宽度会下采样$2^{i-1}$,高度会下采样$2^{j-1}$。左上角和右下角的layer对应的宽高比非常极端,这样的目标很稀少,因此可以剪枝掉。
Layer Generation
如何使用最少的参数生成这些layer?首先,对角线上的层可以从backbone上的不同stage获得,或者使用FPN backbone。上三角矩阵里的layer可以通过一系列参数共享的$3\times3$,步长为$1\times2$卷积获得。类似的,下三角矩阵里的layer可以通过一系列参数共享的$3\times3$,步长为$2\times1$卷积获得。
Layer Ranges
我们需要定义每个layer负责的目标的宽高范围,这一范围反应了layer的特征向量的感受野。因为每往右移动都会使水平方向的感受野翻倍,往下使垂直的翻倍。因此宽高范围也随之加倍。比如:layer $l_{1,1}$ is $H \in[24 p x, 48 p x], W \in[24 p x, 48 p x]$,那么layer $l_{1,2}$ will be $H \in[24,48], W \in[48,96]$。
尺寸处于range边界的目标会在训练中不稳定,因为它尺寸的微小变化会导致不同的layer匹配。为此放宽了每个layer的边界,实验采用了[0.8, 1.3]。
Advantages of Matrix Nets
作者认为核心优势在于MatrixNet允许正方形卷积核准确地收集不同宽高比的信息。过去的目标检测方法要求方形卷积核输出不同宽高比和尺度的限位框。这有点违背直觉,因为不同宽高比和尺度的限位框需要不同的context。在MatrixNet里,同一个方形卷积核可以用于检测不同宽高比和尺度的限位框,因为matrix里的每一layer的context都在变化。然后,因为每个layer内的目标尺寸几乎一致,因此回归物体的宽高也变得更容易优化。最后,MatrixNet可以作为任何目标检测架构的backbone。
Key-point Based Object Detection
CornerNet是第一个基于关键点的目标检测方法。它以一对角点的形式预测限位框:左上和右下。对每个角点,CornerNet会预测热图、offset和embedding。两个角点的候选从热图中选出,embedding用于配对属于同一目标的两个角点。offset用于提升限位框质量。但它有几大不足:
- CornerNet使用一个输出层来处理不同尺度和宽高比的目标。因此处理大物体就很困难,因为角点处通常信息很少。CornerNet引入了corner pooling层来在水平和垂直方向上取max值,来解决这一问题。实验确实证明了corner pooling稳定了模型,但max操作会丢失信息。比如两个物体有着同样的上边界,那么只有有最大特征值的物体会贡献梯度,本文作者认为这是CornerNet很多误检的原因。
- 角点的关联是通过embedding完成的,这有两个问题。首先,逐对距离需要在训练时优化,所以当图片里目标数量上升时,pair的数量会二次方上升,影响了向密集物体检测的扩展性。其次是学习embedding本身。它试图为每个corner学习特征,并且受制于对应的另一个corner的外观。而当物体过大时,两个角点的外观可能差异巨大,因此各自embedding差异也很大。同样,如果图片中有着多个相似物体,它们角点的embedding也会很相似,本文作者认为这是CornerNet经常合并行人、红绿灯的原因。
- 出于以上两个原因,CornerNet需要使用Hourglass-101作为backbone,来获得SOTA的性能。但这样参数量很大(200M)、缓慢、训练不稳定。需要10个12GB的GPU才能获得足够大的batchsize,保证稳定的收敛。
Key-point Based Object Detection Using Matrix Nets
图3是本文提出的目标检测架构 KP-xNet,它有4个阶段。a、b是前文提到的MatrixNet backbone。c使用了共享的输出子网络,为每个matrix layer输出左上、右下的热图、offset和物体center预测。d通过center预测结果匹配同一layer内的焦点,并通过NMS合并所有layer的输出,得到最终结果。
Corner Heatmaps MatrixNet的使用保证了层内物体所需context受感受野范围限制,因此不再需要corner pooling操作。与CornerNet一样,采用了focal loss来平衡不同的类。
Corner Regression 同样采用offset来提升受下采样影响的焦点位置。offset取值限制在[-0.5, 0.5],并使用smooth L1优化。
Center Regression 因为匹配是在同一layer中进行的,物体宽高在一定范围内,因此物体center回归变得简单。CornerNet中的center范围过大,因此在一个输出层上回归center会失败。获得center后,就可以用center和一对角点对应center进行比较来完成匹配。训练时,center回归量与物体数量呈线性关系。使用smooth L1优化。
Experiments
训练参数如下:
We train all of our networks on a server with Titan XP GPUs. We use a batch size of 20, that requires 3 GPUs for resnet50-X, and 4 GPUs
for resnet101-X, and ResNeXt101- X. For our final ResNeXt101-X
experiment we train on an AWS p3.16xlarge instance with 8 V100 GPUs to
allow for a larger batch size of 55. This improves performance by 0.7%
mAP. During the training, we use crops of sizes 512x512, and we use
standard scale jitter of 0.6-1.5 and a custom cutout [1]
implementation. For optimization, we use the Adam optimizer and set an
initial learning rate of 5e-5, and cut it by 1/10 after 60 epochs,
training for a total of 80 epochs. For our matrix layer ranges, we set
l1,1 to be [24px48px]x[24px-48px] and then scale the rest as described
in Section 2.2. At test time, we resize the image so that the max side
of the image is 900. We trained our model on MS COCO ’trainval35k’ set
(i.e., 80K training images and 35K validation images), and tested on
the ’test-dev2017’ set. Using this setup, we achieve 41.7, 42.7, 44.7
mAP single scale, and 43.9, 44.8, and 47.8 mAP multi-scale.
比较:
文中也提到了还有一个优点是收敛快,仅需80epoch。