『写在前面』
目标计数模型新SOTA。将分治策略引入目标计数问题,思路新奇,表现极佳。
作者机构:Haipeng Xiong等,华中科技大学.
论文出处:ICCV 2019.
文章标题:《From Open Set to Closed Set: Counting Objects by Spatial Divide-and-Conquer》
原文链接:https://arxiv.org/abs/1908.06473v1
相关repo:https://github.com/xhp-hust-2018-2011/S-DCNet; https://github.com/xhp-hust-2018-2011/SS-DCNet
目录
摘要
目标计数任务是一个天然的开集(Open Set)问题,其预测范围是. 而实际中,采集到的图像和图像中的目标数量是有限的,这就意味着我们观测到的只能是一个小的封闭集合(Closed Set)。
现有的大多数方法使用回归的思路来做目标计数,但受限于封闭集合的局限性,当面对超出训练集合的情形时,表现欠佳。
进一步思考,计数任务其实是一个可拆解的任务,不论是一张拥有多少目标的开放场景,我们总可以将其分解为多个子区域,使得每个子区域变为我们在训练集上所见过的封闭集合中的某种情况。
本文将分治策略引入计数问题,提出S-DCNet,其从封闭子集上学习,并泛化到开放集合中去。
为了避免重复计算子区域的卷积特征,S-DC选择在特征图上进行计算,而不是对输入图像直接进行计算(类似Faster R-CNN中RPN的思想-复用特征图),这提高了S-DCNet的效率。
1 介绍
目标计数是一个开集问题,而实际中从数据集中观测到的只是一个封闭子集。所以,
灵魂拷问1:现有的计数网络在面对超出这个封闭子集的情况时还能保持work吗?
将Shanghai Tech Part-A Dataset 分割成64×64的图像块集合,统计分析其中各图像块中包含样本数量情况,如下图所示,作者还将CSR-Net的结果同步绘制其中。可以发现,稀疏的图像块占大多数,且随图像块大小变大,rMAE也变大。所以,
灵魂拷问2:是否有必要使网络去回归这一maximum count,即使纵观数据集这些大数目样本很稀少且回归困难?
实际中, 计数问题具有独特的属性——空间可分解性。
例如我们只训练网络计数0~20的部分,当遇到一张目标很密集的图像时,我们可以将图像进行分解,直到每个子图像中包含的目标个数不超过20,然后再进行计数和合并计算结果。下图直观展示了这种算法思想(也就是S-DCNet的算法思想)。
下一个面临的问题是如何确定划分计数。最直接的思路是对图像进行上采样,再进行切分,feed到同一个网络中进行预测,但这样一方面会使图像变模糊,另一方面计算量暴涨。受RoI Pooling启发,如下图所示,S-DC对feature map进行解码和上采样,然后对feature map进行后续预测和计数。
基于以上思路,本文提出S-DCNet,其共包含四大部分:
1)VGG-16 backbone作为Encoder;
2)UNet型Decoder;
3)Counting Predictor,基于分类器的计数预测器;
4)Division Decider,划分判决器,判断哪个子区域需要被划分,合并不同level的子区域的计数结果。
2 相关工作
现有的基于CNN的目标计数方法大多基于回归的思想,根据回归的目标进行划分,主要分为两类:密度图回归和局部数量回归。
就密度图回归方式而言,现有的网络旨在生成高质量的密度图,然而密度图本身也是一个开放集合中的情形;另外,局部数量回归比较直接,就是去直接回归每个局部图像块包含的目标数量,但就单一图像块而言,目标含量多的样本数量相对还是较少,所以回归大数也很困难。
S-DCNet中使用的是分类的思想去预测图像块中的目标个数。一般而言,回归指的是估计连续值的方法。在某些情况下,如年龄预测、深度估计等,将回归重新建模成序数回归或分类问题,效果更佳。S-DCNet将目标计数转化为分类问题,通过对数量进行离散化处理,而后对数量间隔进行分类。
3 S-DCNet(空间分治网络)
3.1 数量量化
对目标计数问题,一张图像中包含的目标数量为.
S-DCNet的做法是,将其分隔成个子区间,对应0th到Mth类,如
实际中,的取值不应该超过训练集中能观测到的最大局部计数。
在恢复计数时,使用每个子区间的中位数,如果落在了最后一个区间上,就使用. 显然,恢复计数过程中会产生系统误差,该误差可以通过S-DC来减轻,后续试验结果证明了这一观点。
3.2 Single-Stage S-DC
S-DCNet的整体结构如上图所示,一个VGG16特征编码器,一个UNet型解码器,一个计数间隔分类器,和一个划分判决器。其中,分类器和划分判决器的结构如下表所示,注意首个AvgPooling层均为stride=2,所以最终进入预测的size均是原图的1/64. 这里只以64×64输入为例,实际上因为模型整体是FCN结构,所以任意输入大小均可。
几点说明:
① Conv5是VGG16去掉FC层后的输出,也就是输入图像下采样32倍输出的feature map. Conv5的输出直接通过分类器,预测出C0. C0表示的也就是当前输入图像整体的目标计数所属类别,因为C0的预测没有用到S-DC,所以C0其实也就是先前其他方法的最终输出结果。
② F1是第一个通过S-DC的feature map. F1被划分后,送入共享的计数分类器,产生划分计数
. 具体地,F1是F0通过UNet型模块上采样生成的,C1中的4个元素,每个代表着对应原图相应区域(32×32)的目标计数。
③ division decider 用来决定在哪里进行划分。以F1为例,输入F1,输出W1(size同C1)。W1中的每个元素w均在0至1之间,w=0表示在对应位置处不需要进行进一步的细分,w=1表示初始的预测需要被C1中对应信息所替代。
因为C1和W1的size都是C0的两倍,所以需要对C0进行上采样,具体做法就是除以4,然后填充到相应位置。综合C0/C1/W1,我们可以根据下式和下图计算对应的first stage的划分结果:
3.3 Multi-stage S-DC
S-DC的策略很容易推广到多个stage中,比如如果我们需要进行最大4次的划分,那么可以使用2个stage。在多级S-DC中,第i个stage的输出可以通过下式递归得出:
基于上述公式,多级S-DC整体算法流程如下图所示:
3.4 S-DCNet的Training Loss
训练S-DCNet所用到的损失函数主要由两部分组成:
1)监督不同级别的分类输出的多个交叉熵损失;
2)监督最终划分输出的L1-loss
.
S-DCNet的训练遵循多任务网络的训练方式,即总的loss为上述两部分之和:.
注意,是必需的,它隐式地指导着W的学习。
4 自制数据小实验
为了对比从Closed Set中学习到的模型能不能很好地推广到Open Set中,作者基于自己合成的cell数据集进行了3组对比实验:1)backbone + regression;2)backbone + classifier;3)S-DCNet。
试验结果如上图所示,1)和2)在图像块包含样本数量变多时,MAE明显增大,而S-DCNet表现良好。
5 实验结果分析
5.1 实现细节
间隔划分 提出了两种划分方式,第一种One-Linear Partition使用0.5作为步长;第二种Two-Linear Partition在单线性分区的基础上,对首个[0, 0.5)的区间进一步按照0.05的步长来划分,这么做是因为第一个区间一方面决定了一个图像块里有还是没有目标,另一方面还为了兼顾该图像块中可能包含某个较大目标的很小一部分时的量化问题。
5.2 消融研究
直接上结论:
- S-DCNet对Cmax具有较强的鲁棒性,侧面证明S-DCNet对Cmax引发的系统误差有一定的减轻作用;
- 双线性分区方法优于单线性分区方法;
- Cmax的选取并不是越大越好;
- 将regression建模成classification有好处,可能使模型优化更加加单,并且相比于回归任务,分类任务对样本不平衡的问题较不敏感;
- stage数的选择并不是越多越好,实验结果表明two-stage足矣;
- Loss方面,第二项
作用非凡,它指导了网络去思考何时该进行区域的拆分,而不是为该区域预测一个>Cmax。
综上所述,S-DCNet的标准配置为:Cmax的大小选为数据集图像块包含目标数量的95%分位数,分区方法选择双线性方法,stage数设为2.
附录
1 关于Open Set问题和密度图
密度图的生成依赖于目标分布和高斯核的选取,所以密度图的估计也属于一个Open Set问题,作者在自制cell数据集上对CSRNet(一种基于密度图估计的计数方法)进行了试验,结果也证明了这一观点。
此外,密度图无法应用在S-DCNet中,因为密度图存在空间不可分性,这是由其物理含义决定的。但是,S-DCNet中使用的局部数量是可以的进行空间划分的。
2 如何生成Ground Truth?
训练过程中通过对各图像块的积分图进行积分来生成Ground Truth。只使用点注释的话,无法考虑图像块边界处目标被切分的情况。
3 如果W1的某个位置为0,则意味着不应替换初始预测结果,而在这种情况下,W2的对应位置有可能预测为1吗?
理论上,W1和W2的预测是独立进行的,所以出现这种情况是有可能的。但实际中作者没有看到这种情况,并且即使真的遇到这种情况,也不用担心,相当于W1没预测准,W2给了第二次划分的机会来纠正结果。
4 为什么C2的性能要比C1和C0差的多?
C0, C1和C2是在模型中联合训练的,并且受影响很大。W2专注于高密度的图像块,说明
推动C2对这种情况作出更好的预测而忽略了其他情况,但是纵观全局,这种高密度的情况毕竟是少数。这也间接说明了为什么3-stage/4-stage的表现不如two-stage。