概述
MatrixNet作者指出并尝试解决已有对象检测方法中存在的两个问题。
- 之前的对象检测算法都是使用3x3的卷积核在正方形的feature map上进行特征抽取,并且后一层对前一层输出的feature map在宽度和高度方向上的降采样率是一样的,这样的问题是当图片中对象的宽高比(apect ratio)并不接近1,尤其是比较极端时,比如像站立的人,在宽度和高度方向上使用相同的将采样率的话,会造成尺寸较小方向上的信息丢失很严重,从而影响预测效果。另外,如SSD或RefineNet这样的经典网络,都是使用3x3的卷积核在feature map上进行滑窗操作,从而预测不同宽高比对象的尺寸(box),作者认为这个是反直觉的,因为如果对象在每个方向的尺寸不同,就应该在每个方向上使用不同的感受视野(receptive field)获得(上下文)信息。直观的方法有两种,一种是使用非正方形的卷积核,如3x1或者5x2;另一种是对feature map的宽度和高度方向执行不同的降采样率。为了解决以上问题,作者给出的解决方法是使用第二种,使用固定的3x3方块过滤器并在两个方向使用不同的降采样率得到不同宽高比的feature map矩阵,即文中提出的matrix nets。
- 作者还指出了CornerNet存在的两个问题。一个是针对CornerNet中提出的corner pooling,作者指出虽然corner pooling可以帮助ConerNet获得较大对象的corner特征,但是由于corner pooling是max pooling操作,这样会丢失特征信息,所以CornerNet会输出很多false positive box。另外一个是CornerNet使用embedding对同一对象的top-left corner和bottom-right corner进行grouping。这种方法的缺点是grouping操作的复杂度与图片中对象的数量成平方关系,即当图片中的对象特别多的时候,grouping的运算操作将会呈平方增长,这样不利于模型的扩展。针对以上两个问题,作者指出,由于在提出的KP-xNet中使用了maxtrix net,而maxtrix net中的每个层只会负责预测一定尺寸范围的对象,这样的话就不必使用corner pooling来获得较大尺寸对象的corner特征,直接使用卷积操作便可。也因为同样的原因,直接回归出对象的中心位置也是比较方便的,作者便通过直接回归中心点,然后比较直接预测的中心点和预测box组合的中心点位置的方法来过滤掉不应该是一组的corner组合,作者分析该方法的运算复杂度与对象数量是线性关系,从而缓解了CornerNet的第二个问题。
个人认为作者提出的CornerNet的第一个corner pooling的缺陷并不是很合理,因为在CornerNet中,作者是将corner pooling操作后的feature map与pooling之前但经过卷积操作的feature map进行了逐像素相加,也就是说经过corner pooling module操作后的feature map只是增强了feature map的corner特征,并没有完全丢弃掉其他特征。个人认为CenterNet中解释的产生较多false positive box的原因比较具有说服力。
方法
1. matrix nets
matrix nets的大致结构如下面的论文截图所示,从图中可以看出网络结构具有以下特点。
- 网络使用多层特征作为预测box的输入特征,论文中将其简称为matrix layer。
- 所有的matrix layer可以排列成矩阵的形式,以(1,1)位置的matrix layer尺寸作为基准点,横向上越远离基准点的matrix layer在宽度上降采样越多,纵向上越远离基准点的matrix layer在高度上降采样越多,即非对角线上的matrix layer的feature map形状为矩形。对角线上matrix layer的feature map,由于在宽度和高度上降采样率一样,所以是正方形的。每向右或者向下一个位置,对应方向上的尺寸减半,即2倍降采样。例如(1,1)位置的尺寸为(24,48),那么(2,1)位置的尺寸为(24,24),横向上降采样操作与此类似。
- 最右上两个和最左下两个matrix layer由于长宽比太极端,出现这种形状的对象很少,为了节省计算,不采用这样的matrix layer。
- 降采样越多的方向上,感受视野也就越大。
为了实现高效可用的matrix layer并有效利用它,需要解决两个问题:用尽量少的参数产生matrix layer;确定每个matrix layer负责预测的对象尺寸范围。
生成高效的层
用尽量少的参数产生matrix layer,以降低模型的参数量,从而可以提高模型的训练和推理速度。作者的方法是先使用原来的卷积网络逐层在宽度和高度方向上都降采样的特点生成matrix中的对象线layer,然后对对角线上的layer进行相同方向的多次降采样,从而产生非对角线layer的feature map,如下图中(b)所示。这样便多次使用了对角线layer,从而降低参数数量。
确定每个层负责的对象尺寸
就像在SSD网络中,不同尺寸的feature map,感受视野不同,所以每个层负责不同尺寸(和长宽比)的对象,matrix layer的尺寸不同,所以也需要提前设计每个层需要负责预测的对象尺寸。作者指出,由于matrix layer是逐层降采样的,所以只需要确定matrix中(1,1)位置的layer负责预测的对象尺寸,剩下的层便可以根据自己与(1,1)的layer的降采样率提高负责预测的对象尺寸便可以。作者在论文试验中使用的(1,1)layer负责预测的对象尺寸范围为[24px48px]x[24px48px],即宽度尺寸范围为24到48像素,高度方向同样。作者还指出由于处于尺寸边界的对象容易造成模型训练不稳定,所以会将尺寸范围的下界和上界分别乘以0.8和1.3以缓和该问题(个人觉得这又会产生新的范围界限,不理解该方法是否真的有效)。
2. KP-xNet
作者将matrix net的思想应用到corner-based(也即Key-point方法)对象检测算法中,提出了新的网络结构KP-xNet(Key-point xNet)。KP-xNet采纳并改进了CornerNet,将box的预测分为三部分:top-left和bottom-right corner heatmap预测、corner相对原图的偏移量(offset)预测、center offset regression、对corner进行组划分。KP-xNet的网络结构如下截图所示。
corner heatmap预测
作者认为,由于引入了matrix net的思想,每个layer负责特定对象的box预测,而每个layer中对象的尺寸变化不是很大,所以每个层中都会获取到对象足够的上下文信息,也就是说经过局部卷积就可以获取到对象的corner特征,从而摆脱了对corner pooling的依赖。例如,对于CornerNet这样只依赖一个输出层特征的网络,传统的局部卷积并不能获得一个比较大的对象的corner特征,因为其并没有那么大的感受视野,所以需要使用corner pooling。然而,对于matrix net来说,大尺寸的对象一般会在感受视野更大的layer中负责预测,该对象的尺寸被降采样得足够多,以至于一个卷积核的感受视野就可以获取到它的corner特征。所以作者指出,在matrix layer的基础上,可以直接使用卷积操作生成corner的heatmap。与CornerNet相同,作者也使用Focal loss解决类别不平衡问题。
corner相对原图的偏移量(offset)预测
作者保留了CornerNet中预测corner的偏移量,从而减少误差。但是与上节“corner heatmap预测”中类似的原因,作者认为此处的偏移并不会特别严重,所以将偏移量预测的范围控制在(-0.5,0.5)之间(个人无法完全认同此处观点)。
center offset regression
即直接预测对象的中心点相对原图的偏移量,与上节“corner heatmap预测”中描述原因类似,预测中心点的位置也不再依赖像CenterNet中提出的center pooling,而是直接使用卷积操作回归中心点的偏移量。论文中作者说的是直接预测中心点的偏移,但个人认为不应该是直接预测偏移量,因为不是feature map上的每个位置都是中心点,所以必须得有一个center heatmap来指示哪些位置是对象的中心点,这样才方便对中心点相对原图的偏移量计算损失。方法类似于预测corner heatmap和corner的offset。
对corner进行组划分
文中对corner进行组划分的细节几乎没有,个人猜测由于去掉了embedding,所以组的划分就落在了center的身上,即根据预测的中心位置与根据corner对(pair)产生的center位置进行比较,过滤掉false positive box,这便是CenterNet中的方法。
实验结果
下面是论文的实验结果并与SOTA方法对比的截图:
个人观点
- 个人认为作者提出的matrix net思想很值得借鉴,这其实是从CNN基础网络的固有特点的方向解决对象检测任务中宽高比多变的问题,类似于使用层级的feature map解决多尺寸问题。matrix net从CNN网络层级特点和不同方向的降采样角度尝试解决多尺度问题,从而可以规避之前算法使用anchor box解决多尺度问题,当然这其实也引入了超参数,即每个层该负责预测对象的尺寸范围。
- 既然论文使用了基于matrix layer的层级预测机制,那么是不是可以将具有分辨率较低但是具有更高层语义信息的更高层feature map与具有较高分辨率但是欠缺语义信息的较低层结合,从而获得更好的效果? 如下面的RefineDet网络。