【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks

1. 论文题目
《Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks》
中文:通过辅助任务上自训练的半监督人群计数
2. 作者以及研究单位
作者分别来自四川大学、阿德莱德大学、伍伦贡大学和大连理工大学。
3. 摘要
一两句话概述全文。
本文从特征学习的角度处理人群计数的半监督,只利用未标注数据训练一个通用的特征提取器而不是整个网络。
4. 简介:(1)这篇论文针对什么问题展开的研究(2)已有工作是如何解决这些问题的(已有工作存在什么不足)(3)这篇论文是如何做的(如何弥足已有工作的不足)(4)这篇论文作者宣称的几个贡献。
(1)本文针对人群计数任务中数据标注量大而繁琐的问题展开研究。
(2) 针对人群计数的半监督问题,传统的方法是对未标记数据生成一个伪标签,然后监督整个网络的训练。但是,在输出和未标记数据之间构造一个半监督学习的损失比较困难,相比之下,学习一个特征提取器未标记数据产生的噪声监督更健壮也更具有鲁棒性;特征提取器在密度图预测中起到比较重要的作用,如果有一个好的特征提取器,才能更好地训练密度图回归器;学习特征提取器的方法有很多中,甚至可以从其他任务中学习。
(3)本文提出,使用未标记数据学习人群计数的通用特征提取器,而不是用伪标签的方式训练整个网络。
(4)本文贡献:1、从一个新的特征学习的角度来研究半监督人群计数问题,通过引入代理任务,将原问题转化为一组半监督分割问题。2、开发了一种新的自训练方法,充分利用多个二元分割任务之间的相互关系。
5. 相关工作:
相关工作包含三个方面:Traditional Crowd Counting Methods、CNN-based Crowd Counting Methods和Semi-/Weakly/Un-Supervised Crowd Counting Methods。
(1) Traditional Crowd Counting Methods:基于检测的方法使用检测器进行计数,对于及其拥挤的场景预测效果不佳。基于回归的方法能够解决拥挤场景的问题,但是忽略了人群的空间分布信息,不能准确地预测总人数。
(2) CNN-based Crowd Counting Methods:利用基于CNN的方法回归密度图,对密度图求和得到总人数。
(3) Semi-/Weakly/Un-Supervised Crowd Counting Methods:半监督、弱监督、无监督等方法主要解决标注工作繁琐的问题。[33]搜集了大量的无标注数据作为额外训练数据,并基于预测密度图构建了一个rank loss;[34]使用总的count作为弱监督信息;[35]提出一个自动编码结构进行无监督训练;还有的方法使用合成数据训练模型,然后使用基于GAN的方法进行合成数据到真实数据之间的域适应。这些方法减少了数据标注的工作量,但是不能获得比较好的计数性能,因为监督噪声会误导密度回归器。
6. 本文方法:(1)problem setting,或者 formulation,如何使用符号、公式化描述本文研究的问题(已知什么,求解什么)(2)本文方法的总体框图(3)如何优化求解所提方法
标注数据: L = { I i l , D i } L=\{I_i^l,D_i\} L={Iil,Di};未标注数据: U = { I i u } U=\{I_i^u\} U={Iiu}

Using Unlabeled Data for Feature Learning:
一般来说,一个网络可以分为一个特征提取器和一个特定任务的预测器。前者将原始图像转换为特征图,后者进一步将他们转化为期望输出。现有的半监督方法同时学习这两个部分,然后对未标记数据构造损失项。本文提出通过不同的任务和损失来学习特征提取器和特定任务预测器。考虑到以下三个因素:
(1) 对未标记数据构建鲁棒的半监督回归损失项比较具有挑战性(也是目前半监督方法所面临的问题),而且未标记数据的损失项带来的监督噪声可能会污染特定任务的预测器,从而导致较差的性能;
(2) 特征提取器在无监督学习、半监督学习和少样本学习中都发挥着重要作用,一个好的特征提取器能够减少训练中对大量标注数据的需求,在人群计数中,若能或得更鲁棒的特征提取器,则能减少注释工作。
(3) 特征提取器可以通过多种方式学习,这样在设计用于特征学习的半监督算法时会有更高的自由度。一般是从原始密度图回归问题中找替代任务,用于训练特征提取器。
所以,未标记数据只用于训练特征提取器。具体的示意图如下所示:
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
Constructing Surrogate Tasks for Feature Learning:
本文将替代任务定义为:预测一个像素点的密度值D(i,j)是否超出给定的阈值。数学公式表示为:
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
其中,(i,j)是像素的坐标,ϵ是预定义的阈值。对于标注数据,ground truth D是已知的,因此M是已知的。对于未标注数据,D和M都是未知的,但是仍然可以为它构造损失来监督M的预测。通过这种方式,实际上是将原始的半监督人群计数问题重铸为半监督分割问题(M只取0和1)。
而在本文中,作者使用多个阈值并生成多个替代任务的target {Mk}来考虑具有不同密度级别的像素。对于阈值的设置,作者把所有标注图像的非零密度值升序排序,将这些阈值选择为排序为r_k×N处的值,其中r_k∈[0,1] k=1,…,c,N是非零值的总数,c是替代任务的数量。同时,创建多个附加到特征提取器的分割预测分支,这些分割预测分支是和密度回归器并列的,如下图所示:
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
Inter-Relationship-Aware Self-Training (IRAST) for Semi-supervised Training on Surrogate Tasks:
生成第k个Seg Predictor伪标签的规则:假设有c个Predictor,根据阈值的降序进行排序,使用算法1生成伪标签:
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks

【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
对于有冲突的像素点,伪标签中设置为无效像素,其余有效像素的伪标签均为0或1。
Loss Function:
标注数据:密度图估计任务中的MSE损失+c个辅助任务的交叉熵损失
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
未标记数据:c个辅助任务的交叉熵损失
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
7. 实验验证:(1)数据集(2)实验设置,evaluation protocol(3)实验方案,从几个方面进行论证实验的有效性,baseline如何选择,sota方法有哪些,有哪些需要设计的消融实验,能不能可视化分析
(1)数据集:ShanghaiTech、UCF-QNRF、WorldExpo’10
(2)实验设置:特征提取器使用CSRNet,默认使用三个辅助分割任务,对应的阈值选择为{0, 0.5N, 0.7N},segmentation predictors和density map regressor保持相同的网络结构。Batch size=1,使用Adam优化器,初始学习率为1e-6,tp=0.9。
(3)***对比实验:***baseline是只使用标注数据训练,这也是所所有半监督方法的baseline。此外,还和四种半监督方法进行对比:Learning to Rank(L2R)、Unsupervised Data Augmentation(UDA)、Mean teacher(MT)、Interpolation Consistency Training(ICT)。
下面三个表分别为在三个数据集上的对比结果。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
图4为在UCF-QNRF数据集上的可视化对比
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
消融实验:
Varying the Number of Labeled Images
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
该实验中,横轴为标记图片的数量,从120增加到480,固定未标记图片数量为481,虚线为使用981张标注样本全监督的结果,可以发现,随着标注数据增加,本文方法的效果也越来越好,均优于baseline,说明了本文方法的鲁棒性,当标注样本达到50%时,本文方法性能接近全监督方法。
IRAST on Labeled set为了证明性能的提升来自半监督学习而不是多任务学习,本文还使用标记数据训练了整个IRAST,可以看出比Label-only性能有了一定的提神,但是和IRAST的提升相比还是有一定的差距,说明多任务学习是有一定作用的,但是性能的提升更多来自于对于未标记数据的使用。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
Other Alternative Surrogate Task作者选择其他的辅助任务,即多类分割预测MSST进行了实验,结果如下表所示:
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
作者提出,MSST的效果不如IRAST是因为其在生成伪标签的时候没有错误纠正机制,而本文方法使用多个二分割任务之间的内在联系在生成伪标签时使用了错误纠正机制。
The Importance of Considering the Inter-Relationship:该实验证明了利用多个辅助任务之间的内在关系生成伪标签的重要性。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
The Impact of Changing the Prediction Confidence Threshold:改变置信度的阈值tp进行实验,可以发现不同的tp对最终实验结果的影响不大,也能说明本文方法的鲁棒性。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
Change of the Feature Extractor:将特征提取器分别设置为CSRNet和SPN进行实验,结果如下表所示,当特征提取器换为SPN后,整体性能有了很大的提升,可以说明人群计数的好的网络体系结构可以很好地应用于本文方法中。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks
The Effect of Varying the Number of Surrogates Tasks:探索辅助任务数量对于实验结果的影响。
【论文笔记】Semi-Supervised Crowd Counting via Self-Training on Surrogate Tasks