论文阅读Bayesian Loss for Crowd Count Estimation with Point Supervision
代码:https://github.com/ZhihengCV/Bayesian-Crowd-Counting
本文是ICCV 2019口头展示(Oral)文章.
传统的方法往往以从点标注生成的伪标签进行监督,进行直接的密度回归,
论文采用了一个全新的思路,不再依赖从点标注生成不完美的伪标签,而是直接采用数据库所提供的点标注作为(弱)监督信号,为了是监督信号格式匹配,作者从估计得到的概率密度图的基础上又多进行了一步"期望"操作,利用"离散"的概率密度期望值与"离散"的点标注设计损失函数并进行期望值意义上的回归估计,
论文方法与传统方法在技术路线和思路上有显著区别.请注意两种方案中监督信号作用点的不同,传统方法需要从点标注生成全图"伪真值标签",我们则放弃了这个带来显著噪声和虚假信号的做法,改为从估计的概率密度图上进行期望计算,直接与真值点标注进行回归估计.
训练过程
所提方法的训练过程示意图如下所示:
论文提出贝叶斯损失,根据点标注构造密度贡献概率模型,提出的损失不约束密度图中的每个像素点的值,而是对每个标注点的期望计数采取更可靠的监督.
将问题理解为基于图像中某个点的位置,该点存在一个人(head point)的概率,因此人群计数的期望等于该后验概率与密度图的内积.基于高斯核的密度图变换表示为:
代表二维空间的位置,给定每个点的label
,
的似然函数为:
问题:这个不是跟上面的高斯变换的密度图一样吗?
首先,从某个人出现在某个位置的概率问题用贝叶斯估计去代入,由贝叶斯公式:
表示density map上某个位置,yn表示第n个人,总共是N个人,观测值是
,表示
处观测到一个人,然后p(yn|xm()在
处观测道德人是yn的概率,
处观测到的人可能是N个人中的任意一个,所以先验分布p(yn)用均匀分布1/N表示,然后
表示yn出现在
处的概率,那么这个概率好表示,文中用了2D的高斯分布表示
zn表示yn这个人所在的坐标,也就是说距离yn越远,那yn出现在这里的概率就越小.以上P(yn|xm)就是xm处要是存在一个人,那么这个人是yn的概率,然后利用期望,求了yn这个人出现在整张图上的概率.有了后验概率和密度图,则图像中的人群数目的期望表示为:
其中表示为空间位置
对于其标注
的贡献,或者说,某一空间位置可能存在人头的概率大小.然后将该概率向量与密度图求内积,得到整张图片的人群数量期望.预测的密度图有M个点,然后每个点的值代表该点处存在一个人的概率,然后结合后验概率p(yn|xm)的概念,上面的公式表示yn这个人在整张密度图上出现的概率,当然他是存在的,且应该是1,所以ground truth就是1,所以loss可以表示为如下所示:(一般地,在每个位置,只会标注一个人)
这就是本文的核心,即贝叶斯loss,F在这里表示L1的loss,即绝对误差,因此本文是在根据预测的密度图,来推测每个标注了的人存在的概率,期望每个标注了的人存在的概率接近于1.
问题,这个表示的是某个点处的人数吗?
答:表示yn这个人在整张density map上出现的概率.
在前向时,没必要知道该后验概率,图像中人群数量估计为:
对于背景点位置,没必要给他们分配标注,因此给他们一个背景标注
则
我们希望前景的期望趋于1,背景的期望趋于0,因此该贝叶斯loss改为:
为每个像素构造一个虚拟像素点,是人头标注点,d控制了标注人头与虚拟背景点的距离.如果一个位置离人头比较远,那么为之分配一个虚拟背景点.同样可以哦嗯高斯核来计算背景点的似然
问题:这个d是如何确定的呢?