人群计数:Bayesian Loss for Crowd Count Estimation with Point Supervision
基于点监督的人群计数问题的贝叶斯损失
学习链接:ICCV19 (Oral)|基于贝叶斯损失函数的人群计数和拒绝 高斯热图 作为假gt | Bayesian Loss for Crowd Count Estimation with Point Supervision
问题所在以及问题解决:
问题所在:高斯核平滑过后的密度图作为真实值,这样像素级别的严格的监督,CNN模型的准确率很大程度上依赖于这个“伪真实值”的质量。然而,由于遮挡、不规则的人群分布、物体大小、形状、密度等的巨大变化,通过将假设的高斯核应用于点注释而获得的“地面实况”密度图很难达到最高质量。
各种方法的缺点:
1.基于检测:因为重合等问题不好进行标注,检测框/分割所需蒙版耗费体力,麻烦;
2.回归:没有充分的利用点监督
3.密度图评估:方法的性能很大程度上依赖于生成的“真实值”密度图的质量;
4.混杂训练(Hybrid training.):多模型或者多损失函数,相较于这个吗,贝叶斯损失的单损失更加简单,更加有效。
问题解决:提出贝叶斯损失,基于标记点构建密度贡献概率模型,每个标记点的计数可以用整幅图中每个像素对这个点的贡献概率(后验概率)与预测的密度图中对应位置像素的预测密度的乘积并求和得到,并由真实值(也就是1)监督,提出的训练损失监督每个注释点的计数期望,真实值也就是1,与这个对应的期望做损失函数值的计算。不再将高斯平滑后的标记点图作为真实值(这样不准确,是“伪真实值”),而是将标记点图作为监督。
Background and Motivation
一般论文的方法:利用高斯核生成“真实值”密度图,然后“”真实值“密度图与预测生成的密度图之间的损失函数进行学习与训练。
由于重合、不规则的人群分布、透视效果等的存在,使得高斯核的大小不能是固定的常数,因此选用自适应高斯核,但前提是假设人群是均匀分布的。一些其他方法利用诸如相机参数之类的特定信息来获得更准确的透视图,但通常这样的信息是不可用的。
贝叶斯损失认为标记点可以作为弱标签,将其看作先验概率或者可能性而不是学习目标。一般的方法的损失函数,这种像素级别的监督并不总是能够提高准确性,因为那让模型去学习了不准确的、错误的信息。
贝叶斯估计/贝叶斯公式:学习视频:贝叶斯公式b站讲解
Bayesian Loss 贝叶斯损失
x:表示空间位置信息的随机变量
y:表示标记人头的点的随机变量
给定标签
y
n
y_n
yn的
x
m
x_m
xm的似然函数:
p
(
x
=
x
m
∣
y
=
y
n
)
=
N
(
x
m
;
z
n
,
δ
2
1
2
×
2
)
p(x=x_m|y=y_n)=\mathcal{N}(x_m;z_n,\delta^{2}1_{2\times 2})
p(x=xm∣y=yn)=N(xm;zn,δ212×2)
即,仍然以高斯函数作为似然函数,其物理意义为:已知第
n
n
n个人在图上,其出现在
x
m
x_m
xm位置上的概率;
根据贝叶斯理论公式,给定在密度图上的像素位置
x
m
x_m
xm,后验概率(
x
m
x_m
xm处存在标签
y
n
y_n
yn的概率,物理意义为:已知点
x
m
x_m
xm有人, 他是第
n
n
n个人的概率)可以由下面公式计算得出(等式二分母变换由全概率公式得出):
对应的先验概率为
p
(
y
n
)
=
1
N
p(y_n)=\frac{1}{N}
p(yn)=N1,也即标记人头标签的概率分布,在
x
m
x_m
xm出现
y
n
y_n
yn的概率。上面上面推导中第三个等式成立是因为假设每个类标签的先验概率相等,也即
p
(
y
n
)
=
1
N
p(y_n)=\frac{1}{N}
p(yn)=N1.
基于后验标签概率
p
(
y
n
∣
x
m
)
p(y_n|x_m)
p(yn∣xm)和预测生成的密度图
D
e
s
t
D^{est}
Dest(也即在某个位置出现人的概率密度图),
c
n
m
c^{m}_n
cnm:是在
x
m
x_m
xm位置上对人头
y
n
y_n
yn出现贡献的概率数值,
c
n
c_n
cn:是整幅图中与人头
y
n
y_n
yn相关的总计数,
那么整幅图中人头
n
n
n出现的期望为(理应是1):
也对应了前文中的每个标记点(从1到
n
n
n)的计数可以用整幅图中每个像素对这个点的贡献概率(后验概率)与预测的密度图中对应位置像素的预测密度的乘积并求和得到。
因为每个标记点的人头数的真实值对应的是1,与上面求出的期望作损失函数,可得损失函数如下:其中
F
(
⋅
)
\mathcal{F}(\cdot )
F(⋅)本文中使用的
L
1
L1
L1距离:
对于图像中没有人头的特殊情况,直接强制将密度图的求和为0。
整个训练计算过程如下图所示:
在推理预测test阶段,不需要提前知道后验概率,因为
p
(
y
n
∣
x
m
)
p(y_n|x_m)
p(yn∣xm)对N求和恒为1,因此对预测的概率密度图进行整体求和就是整幅图的人头总数,后验概率可以由此消除,如下面的公式所示。
背景哑元
对于远离人头标记点的背景像素点位置,不需要把他们分配给人头
y
n
y_n
yn,也就是原理上这些背景像素点对于人头的后验概率的贡献应该为0,(然而他们实验中却发现不是如此,反而背景的后验概率有时很大,)因此引入背景哑元,利用背景哑元,可以“吸收”远离人群的背景区域像素的“贡献”,(也就是将这些远离人头的背景像素点的位置 分配给/贡献给 背景哑元标签点)从而更为准确的计算背景区域的似然及最终的后验概率。
为了更好地对背景像素进行建模,引入了一个额外的背景标签
y
0
=
0
y_0=0
y0=0,并假设
p
(
y
n
)
=
p
(
y
0
)
=
1
N
+
1
p(y_n)=p(y_0)=\frac{1}{N+1}
p(yn)=p(y0)=N+11,由此后验概率的计算公式可以写成:(也就是多加了
y
0
y_0
y0)
同样,将
n
n
n换成
0
0
0就可以得到:
和
那么,整幅图像的人头期望→对整幅密度图求和
∑
m
=
1
M
D
e
s
t
(
x
m
)
\sum_{m=1}^{M}D^{est}(x_m)
∑m=1MDest(xm)就由
∑
n
=
1
N
E
[
c
n
]
\sum_{n=1}^{N}E[c_n]
∑n=1NE[cn]加上背景计数
E
[
c
0
]
E[c_0]
E[c0],因为背景中人头计真实值为0,人头标记点的真实值为1,所以可以得到贝叶斯损失的计算公式为:
公式(9)中背景的似然函数的计算由背景哑元相关得出.
其中,背景哑元的计算公式如下:
(下图中的
z
n
m
z_n^m
znm是相对于位置
x
m
x_m
xm最近的人头标记点,
z
0
m
z_0^m
z0m则是背景哑元,将远离人头的背景位置像素点
x
m
x_m
xm贡献给背景哑元而不是人头标记点,其中
d
d
d是控制人头标记点和背景哑元之间间隔的参数)
同样也使用高斯核来计算背景哑元的似然函数,也即公式(9)中的分子→似然函数:
熵映射图
熵映射指的是通过对概率分布进行变换,将其转换为熵的形式。这种变换可以帮助我们理解数据的不确定性和信息的量。具体来说,熵越高,表示概率分布越不确定,包含的信息量也就越大。在不同条件下对概率分布进行熵映射,我们可能会发现某些条件下熵较高,表示该条件下的数据更加不确定或包含更多的信息。
通过建立熵映射图衡量一个像素
x
m
x_m
xm属于某个标签的不确定性,对比不同设置下的熵映射图得出结论;
1、后验概率可以大致找到人与人之间的界限;
2、人群密集区域比稀疏区域熵值更高;
3、通过比较b和c,参数
σ
\sigma
σ控制了后验标签概率的柔和性,越小边界越清晰/尖锐,越大越模糊;
4、通过比较b和e,背景哑元可以更好的处理远离人群的像素;
5、通过比较e和f,参数d控制人头与背景之间的间隔大小。
实验
评价指标:MAE,MSE
数据集:UCF-QNRF,UCF_CC_50,ShanghaiTech Part A,Part B。
网络结构:基于VGG19,后面接有通道数分别为256和128的卷积层,外加1*1的卷积层生成密度图,该结构与DM-count中的网络结构相同。
训练设置:数据增强方式为随机裁剪和水平翻转,对于UCF_QNRF数据集将图像的短边限制在2048像素,为了统一尺寸;对于 ShanghaiTech A和UCF_CC_50数据集随机裁剪图像大小为256*256,对于ShanghaiTech B和UCF_QNRF随机裁剪图像大小为512*512;设置高斯参数
σ
\sigma
σ为8,以及距离参数
d
d
d为图像短边长度的15%。
实验结果:
1、贝叶斯+结果最好,贝叶斯+提高了贝叶斯约3%的性能,贝叶斯和贝叶斯+均比baseline的结果好。
2、预测的密度图可视化结果比较:(看特写的部分)在密集的人群中,baselie经常产生异常值,而在稀疏的区域,它不能很好地定位每个人,贝叶斯(+)分别给出了更准确的计数估计和定位。
消融实验
-
高斯 σ \sigma σ参数的影响
本文中 σ \sigma σ控制了后验标签概率的柔和性,然而在baseline中直接决定了密度图分布,在数据集UCF-QNRF上使用不同的 σ \sigma σ进行实验,结果如下:
从图中看出在不同的参数大小 σ \sigma σ下,贝叶斯表现更好,且更稳定,baseline表现更敏感。
-
距离参数 d d d的影响
本文中参数d控制前景与背景之间的间隔,下图中横坐标为参数 d d d对应的大小,也即占图片大小(长度)的比例,从图中可以看出,很大部分贝叶斯(+)表现更好,并且从3%到100%,贝叶斯+均比贝叶斯表现好, d d d的大小不能被头的大小超过,因此不能太小。
-
对标记误差的鲁棒性
通过添加均匀随机噪声来作为人工标记误差,并测试不同损失函数的表现。图中横坐标为噪声所占图片高度的百分比,贝叶斯比baseline表现好,即使是参数 σ \sigma σ为1的时候,也是贝叶斯表现好。
-
泛化能力
在UCF-QNRF数据集上训练,在UCF_CC_50、sahnghaiA和shanghaiB上测试,通过下图可以看出贝叶斯(+)在所有数据集上的结果都比baseline好。
-
限制图片分辨率
因为UCF-QNRF数据集的图片的分辨率变化很大,将图片分辨率限制在2048像素并以此作消融实验,限制之后结果更好,且贝叶斯(+)都比baseline好。
-
不同的网络结构
使用VGG19和AlexNet做对比,在两个网络结构中,贝叶斯(+)比baseline的表现都好。