1.Contribution
这是一篇我看到现在为数不多的通过统计学思想来做counting的,看的有些难受,感觉需要回去复习数理统计的知识了,本文的motivation就是不确定性度量,就是认为只输出一个density map存在不确定性,使得模型变成多输出,然后取平均,会降低不确定性,所谓DUB是指Decomposed uncertainty using bootstrap
2.Uncertainty estimation
(1)不确定性种类
本文提出了传统单输出的方法存在两种不确定性:
①epistemic uncertainty
主要是指模型本身的不确定性,也就是说假如模型预测一个点的密度为0.7,那么由于不确定性的存在,这个点可能预测为0,0.5~0.8的区间,存在一个波动,
②aleatoric uncertainty
主要指数据本身存在的不确定性,比如一张图片,由于遮挡,有些地方看着又像一个人,又像2个人
(2)如何度量不确定性
文章描述了传统度量不确定性的两种方法
①Bayesian neural network
这里涉及到大量统计学的背景知识,不多展开,文中提到这种方法的弊端在于计算复杂度很高
②Bootstrap ensemble
核心思想是将原始数据集采样成K个自数据集,才每个数据集上训练结构相同的模型,得到K个模型
然后进行预测时,随机选择一个模型的预测结果
这相当于认为模型参数也服从一定分布,然后我们对分布进行随机采样了
但是由于要训练K个模型,且每次预测时,K个模型都要跑,所以计算代价比较大,文中也采用Bootstrap ensemble的思想,但是不去训练独立的K个模型,而是采用前端共享一个backbone,然后输出K个head的方式
3.模型结构
(1)很明显,模型结构前端用了CSRnet的结构,后面加上了K个head,去预测K个density ,map,同时预测不确定性σ2
(2)训练方法
设置K=10,Adam with lr=1e-5,ground truth采用的是geometry adaptive kernel,训练方法如下:
就是每次随机选择K个输出之一去作为预测值,结合不确定性Sn去计算loss
(3)test方法
test时,要取K个输出的平均作为输出,同时统计方法
E(y)代表均值
4.Experiment
(1)ablation study
Epistemic only应该指的是采用K个输出,但是不预测不确定性σ2,为了计算loss,σ2采用了固定值,但是也没说是多少,loss如下:
Aleatoric only指的不采用K个输出,只输出一个density map,和误差预测σ2分支:
以下是density map预测结果和不确定性预测结果:
我还是不是很明白,这里的Epistemic Uncertainty是怎么算出来的,是指多个输出之间的方差吗?
(2)公开数据集
①ShanghaiTech
②UCSD
③UCF_CC_50
④UCF-QNRF
5.comment
本文最主要的贡献就是通过多输出取平均,以及加上不确定性度量的map去规避一些不确定性因素的影响,最后对网络效果有一些略微的提升,不过多输出取平均的思想或许可以借鉴