[论文笔记 ECCV2020] Learning to Count in the Crowd from Limited Labeled Data
论文地址:https://arxiv.org/pdf/2007.03195.pdf
摘要 Abstract
最近的人群计数的方法取得了很好的性能,但是大多数的方法都是基于全监督式的学习同时需要依赖大量的标注。获取这些标注是非常耗时费力的,成本较高。因此本文提出一种从有限的标注样本中学习计数的网络(同时利用了大量的无标注的数据),旨在减少标注成本。使用基于高斯过程的迭代学习机制用于对无标注样本的伪标签进行评估,然后将其作为监督信息使用监督式的方法来训练网络。
首先用高斯过程来对带有gt的标注样本的隐空间向量和没有标注样本的隐空间向量建立关系得到没有标注样本的伪标签,然后对比一下上一轮GP建模的无标注输入的伪标签,之后就可以用这个伪标签来使用监督式的方法在没有标注的数据集上进行训练。
贡献 Contributions
-
我们提出了一个在训练过程中基于高斯过程的框架来有效地探索无标注的数据,用来提升整体性能。所提出的方法包括了迭代式地同时训练标注的和无标注的数据。对于无标注的数据,在标注阶段使用高斯过程来评估伪标签。
-
提出的框架在半监督和迁移学习表现有效,通过消融实验,证明了提出的模型是能够泛化到不同网络结构的。
Model Architecture(GP-based iterative learning)
网络是用一个encoder和decoder结构组成的,提出的框架与encoder网络无关,实验阶段表明其可以很好地泛化到像VGG16,ResNet50和ResNet101上去。decoder由一组两个conv-relu层组成。输入图片 x x x经过encoder网络得到隐空间向量 z z z,这个隐空间向量 z z z经过decoder网络得到密度图输出 y y y。
整个训练过程分为两个阶段
1. labeled training stage
在这一阶段,我们使用有标注的数据集,用监督损失函数(比如L2 loss)去学习网络模型的参数。
2. unlabeled training stage
在这一阶段,使用高斯过程对无标注的数据点生成伪标签,然后使用监督学习的方式进行训练。
Labeled Stage
使用L2 loss来训练网络,只训练有标注数据的那部分数据样本。
L
s
=
L
2
=
∣
∣
y
l
p
r
e
d
−
y
l
∣
∣
2
L_s = L_2 = ||y^{pred}_l - y_l||_2
Ls=L2=∣∣ylpred−yl∣∣2
y l p r e d = g ( z l , ϕ d ) y^{pred}_l = g(z_l,\phi_d) ylpred=g(zl,ϕd)表示的是模型的输出, y l y_l yl是ground truth, z = h ( x , ϕ e ) z = h(x,\phi_e) z=h(x,ϕe)是隐空间向量,值得注意的是,需要额外保存中间过程的隐空间向量矩阵 F z l = { z j i } i = 1 N l F_{z_l} = {\{z^i_j\}^{N_l}_{i=1}} Fzl={zji}i=1Nl。这个矩阵用于后续计算无标注数据的伪标签。矩阵的维度是 N l × M N_l \times M Nl×M,这里 M M M是隐空间向量 z l z_l zl的维度 64 × 32 × 32 = 65536 64 \times 32 \times 32 = 65536 64×32×32=65536。
Unlabeled Stage
在无标注数据的训练阶段,我们使用高斯过程来生成伪标签作为监督信息用于训练网络结构。在有标注数据的训练阶段,我们使用隐层空间向量
F
z
l
F_{z_l}
Fzl来建模隐层空间向量与输出密度图之间的映射关系
y
=
t
(
z
)
y=t(z)
y=t(z)。
通过高斯过程,利用标注数据和无标注数据的隐空间向量来联合建模函数
t
(
⋅
)
t(·)
t(⋅)的分布。
P
(
t
(
z
)
∣
D
L
,
F
z
l
,
T
y
l
)
∼
G
P
(
μ
,
K
(
F
z
l
,
F
z
l
)
+
σ
ϵ
2
I
)
P(t(z)|D_L, F_{z_l},T_{y_l}) \sim GP(\mu, K(F_{z_l}, F_{z_l}) + \sigma_\epsilon^2I)
P(t(z)∣DL,Fzl,Tyl)∼GP(μ,K(Fzl,Fzl)+σϵ2I)
这里
μ
\mu
μ是通过高斯过程计算出来的函数值,
σ
ϵ
2
\sigma_\epsilon^2
σϵ2设置成1,
K
K
K是核函数,基于此,对于第
k
k
k个无标注样本
x
u
k
x_u^k
xuk的隐空间向量
z
u
k
z_u^k
zuk的条件联合分布就可以表示如下:
P
(
t
(
z
u
k
)
∣
D
L
,
F
z
l
,
T
z
l
)
=
N
(
μ
u
k
,
Σ
u
k
)
P(t(z_u^k)|D_L, F_{z_l}, T_{z_l}) = N(\mu_u^k, \Sigma_u^k)
P(t(zuk)∣DL,Fzl,Tzl)=N(μuk,Σuk)
这里的
μ
u
k
\mu_u^k
μuk和
Σ
u
k
\Sigma_u^k
Σuk分别是:
μ
u
k
=
K
(
z
u
k
,
F
z
l
)
[
K
(
F
z
l
,
F
z
l
)
+
σ
ϵ
2
I
]
−
1
T
y
l
\mu_u^k = K(z_u^k, F_{z_l}) [K(F_{z_l}, F_{z_l})+\sigma_\epsilon^2I]^{-1}T_{y_l}
μuk=K(zuk,Fzl)[K(Fzl,Fzl)+σϵ2I]−1Tyl
Σ
u
k
=
K
(
z
u
k
,
z
u
k
)
−
K
(
z
u
k
,
F
z
l
)
[
K
(
F
z
l
,
F
z
l
)
+
σ
ϵ
2
I
]
−
1
K
(
F
z
l
,
z
u
k
)
+
σ
ϵ
2
\Sigma_u^k = K(z_u^k,z_u^k) - K(z_u^k, F_{z_l}) [K(F_{z_l},F_{z_l})+\sigma_\epsilon^2I]^{-1}K(F_{z_l},z_u^k)+\sigma_\epsilon^2
Σuk=K(zuk,zuk)−K(zuk,Fzl)[K(Fzl,Fzl)+σϵ2I]−1K(Fzl,zuk)+σϵ2
K
(
Z
,
Z
)
k
,
i
=
K
(
z
u
k
,
z
l
i
)
=
<
z
u
k
,
z
l
i
>
∣
z
u
k
∣
⋅
∣
z
l
i
∣
K(Z,Z)_{k,i} = \mathcal{K}(z_u^k, z_l^i) = \frac{<z_u^k,z_l^i>} {|z_u^k| \cdot |z_l^i|}
K(Z,Z)k,i=K(zuk,zli)=∣zuk∣⋅∣zli∣<zuk,zli>
考虑到随着有标注数据的样本
N
l
N_l
Nl慢慢地增大,对于
K
(
F
z
l
,
F
z
l
)
K(F_{z_l},F_{z_l})
K(Fzl,Fzl)的维度也会变得很大,对于计算和存储是一个挑战。因此不是所有的有标注样本的隐空间向量都要用,具体来说就是只选择与无标注样本的隐空间向量相似的且最近的
N
n
N_n
Nn个有标注样本的隐空间向量来计算那个矩阵
F
z
l
,
n
F_{z_l,n}
Fzl,n, 直接使用
μ
u
k
\mu_u^k
μuk来作为第
k
k
k个无标注样本的伪标签,即
y
u
,
p
s
e
u
d
o
k
=
μ
u
k
y_{u,pseudo}^k = \mu_u^k
yu,pseudok=μuk,然后使用
L
2
L_2
L2距离来优化模型,更新encoder和decoder的参数。
进一步,还要最小化使用高斯过程计算出来的
z
u
k
z_u^k
zuk和其最近的
N
n
N_n
Nn隐空间向量之间的方差
Σ
u
,
n
k
\Sigma_{u,n}^k
Σu,nk得到最终的损失
l
o
s
s
=
L
u
n
loss = \mathcal{L}_{un}
loss=Lun。
L u n = 1 ∣ Σ u , n k ∣ ∣ ∣ y u , p r e d k − y u , p s e u d o k ∣ ∣ 2 + l o g Σ u , n k \mathcal{L}_{un} = \frac{1}{|\Sigma_{u,n}^k|} ||y_{u,pred}^k - y_{u,pseudo}^k||_2 +log\Sigma_{u,n}^k Lun=∣Σu,nk∣1∣∣yu,predk−yu,pseudok∣∣2+logΣu,nk
总的 l o s s loss loss
L f = L s + λ u n L u n \mathcal{L}_f = \mathcal{L}_s + \lambda_{un}\mathcal{L}_{un} Lf=Ls+λunLun
实现细节 Implementation Details
使用Adam优化器,学习率为1e-5,momentum=0.9, batchsize=24,使用Nvidia Titan Xp GPU
training: random crop size = 256
×
\times
× 256,
MAE和MSE作为评价指标。
实验结果 Results&Ablation Study
消融1:选择有标注数据的比例为5%,对比有无利用无标注样本及高斯过程的结果性能差异
- 100% labeled dataset
- 5% labeled
- 5% labeled + 95% unlabeled + Ranking Loss
- 5% labeled + 95% unlabeled + Gaussian Process
消融2:有标注样本的比例分别从5%到75%的性能差异
- No-GP(labeled dataset only)
- GP (labeled and unlabeled dataset)
效果图
消融3:不同的网络结构作为encoder的性能对比
伪标签分析:
It can be observed that the pseudo-GT errors are concentrated in the lower end of the error region as compared to the prediction errors. This implies that the pseudo-GTs are more closer to the GTs than the predictions. Hence, the pseudo-GTs obtained using the proposed method are able to provide good quality supervision on the unlabeled data.
大致意思就是说这个用高斯过程生成的伪标签是有效的,能够提供好的监督信息来训练网络。
消融4:可迁移性
- No Adapt
- Cycle GAN
- SE Cycle GAN
- Proposed Method