PSDDN Point in, Box out: Beyond Counting Persons in Crowds
Yuting Liu, Miaojing Shi, Qijun Zhao, Xiaofang Wang
四川大学计算机科学学院,Univ Rennes, Inria,2019
在论文作者里看到了自己认识的人。真的是大牛啊,高山仰止,景行行止~
目前人群计数工作基本都预测密度图,虽然计数精度已经很高了,但无法知道每个人的具体位置。而已有基于检测的方法都需要限位框的标注,这在人群计数的应用场景里非常昂贵。这篇论文则是只需要人头点标注,即可预测人头限位框。
Introduction
图1比较了PSDDN与基于回归和基于检测的方法。论文的贡献主要有3点:
- 提出了一个从像素标注生成伪gt限位框标注,并在训练中逐渐更新的方法
- 提出了一个带局部约束的回归loss,使局部带状区内预测的限位框有相似的尺寸
- 提出了一个课程(curriculum)训练策略,先训练相对准确而简单图片,其难度由图中每个头与最近头的距离的分布定义
Model
模型结构见图2,是一个基于anchor的检测框架。backbone为ResNet0101的4个残差块。B3、B4残差块的特征图都会通过各自的$1\times1$卷积进行检测,输出$N\times N \times T \times (1+4)$的检测结果,anchor数量T为25,是在数据集上对人头与最近的一个的距离的聚类得到的。Pred2上采样后与Pred1相加(为何要相加,为何可以相加),得到的final Pred计算分类和回归loss。
Pseudo ground truth initialization
初始化方法很简单,已知人头中心点坐标,使用与之最近的人头的距离$d\left(g, \mathrm{NN}_{\mathrm{g}}\right)$作为尺寸,使用具有与其最接近的尺寸的anchor作为初始化,称为伪gt。密集场景伪gt更接近真实,而稀疏的适合通常过大
Pseudo ground truth updating
根据与伪gt的IoU,将anchor分为正负样本进行训练。用$g^0$记做epoch 0时某个位置的gt限位框。对尺寸小于$d\left(g, \mathrm{NN}_{\mathrm{g}}\right)$的预测,使用score最高的替代$g^0$,作为下一个epoch的gt。因为anchor设置得很密,所以能保证伪gt能逐渐被合适的预测更新(所以每个点有25个anchor)。如果g太小无法找到positive anchor时,训练中忽略它。
另外训练中还使用了[9, 40]中的OHM。
Locally-constrained regression loss
回归loss中使用了很常见的限位框transform:
a指预测的anchor。
但现在使用的gt是推测的,只有中心是准确的,所以中心xy的loss如常。对于尺寸,我们注意到一个现象:人群场景里,同一水平线的限位框尺寸应相似。这是因为人群图中经常出现的perspective distortion透视变形:同一行的透视值相等,并从下向上递减。只要摄像头没有严重旋转而且地面平整,上面的观察就成立。
让$g_{i j}=\left(g x_{i j}, g y_{i j}, g w_{i j}, g h_{i j}\right)$记做特征图上ij处的伪gt。先计算一条窄带$($ row $: i-1 : i+1 ;$ column: $1 : W)$中的所有限位框(gt的?)的宽/高的均值和标准差,W为特征图宽度,统计如下:
,其中$G_i$为窄带中的gt集,$\left|G_{i}\right|$为集的基数(元素个数)。
我们采用three-sigma法则,如果预测的限位框宽度$\widehat{g w}_{i j}$,大于$\mu w_{i}+3 \sigma w_{i}$或小于$\mu w_{i}-3 \sigma w_{i}$,则将被惩罚。其loss函数为:
Curriculum learning
稀疏人群的初始化伪gt通常过大,而极密集场景尺寸又过小,很难检测。这两种情况对于训练都很不利。故采用先简单后困难的训练流程。
首先是度量难度的方法,对训练集的所有$d\left(g, \mathrm{NN}_{\mathrm{g}}\right)$计算均值和标准差,并利用高斯密度函数$\Phi\left(d_{g} | \mu, \sigma\right)$计算伪gt框的得分(概率),尺寸适中的框会得到更高的分。计算每张图的得分$\frac{1}{|G|} \sum_{g \in G} \Phi\left(d_{g} | \mu, \sigma\right)$,其中G为每张图的得分,则一张图片的训练难度定义为:
按照图片的难度分,将训练集分割为多个部分,先训练最简单的,跑一定的epoch后,开始训练最简单和次简单的,依次递推直到训练整个数据集。
Implementation details
随机4种rescale(0.5, 1, 1.5, 2),并随机crop 500像素进行训练。测试同样进行4种尺度并合并结果。IoU超过0.7的anchor作为正样本,低于0.3的作为负样本。