一般的人群计数
- 基于目标检测的方法: 这类方法就是通过对图像上每个行人或这人头进行定位与识别,再根绝结果统计人数。优点在于可以做到准确的行人或者人头位置,但缺点在于对高密度的人群图像来说,其检测效果差;
- 基于回归的方法:这类方法可以叫做人群数目估计,没有精确定位行人位置,而是对大概的人群数目给出个估计值;优点在于对高密度人群图像来说,其效果是比基于目标检测方法的好,但缺点没有精确的定位。
基于回归的方法分为两类:
- 直接回归:如在深度学习的卷积神经网络中输入人群图像,直接输出一个人群数目估计值;
-
密度图回归:密度图回归的意思是(已知的数据集是这样的,每一张人群图像中的每个人头所在近似中心位置的坐标作为人工标注),根据已知的每个人头位置,再估计该位置所在人头的大小,这样可以得到该人头的覆盖区域,通过一种方法(MCNN中采用几何自适应高斯核),将该区域转化为该区域内可能为人头的概率,该区域概率和为1(或者表示每个像素可能有多少个人),最终我们可以得到一张人群密度图。
密度图转换
MCNN人群计数
当图像中人群密度分布极不均匀,利用多阵列(Multi-Column)的卷积神经网络(Convolutional Neural Network,CNN)来实现提取不同尺度的人头特征。
挑战:
· 任意视角图片,所以前景分割是要去除的,因为前景分割本身不准确而且不好的效果不可逆转。
· 密度和人群分布重要,因为有大的遮挡。
· 大小变化大,要使用不同尺度的提取特征。
MCNN做法:
· 使用多阵列(大、中、小)学习特征
· 使用1x1卷积代替全连接,所以输入图片可以是任意大小
· 收集并创造了新的数据集
人群估计的label通常情况下,需要带有标签的人头图像转换为人群密度图,假设一幅图像有N个人头,则其原始label表示为:
其中δ为冲激函数,xi表示人头在像素中的位置,δ(x-xi)表示图像中人头位置的冲击响应函数,N为图像中人头总数。
为了使得密度图能够更好地与不同视角(不同人头大小)且人群很密的图像对应起来,作者对传统的基于高斯核的密度图做了改进,提出了基于几何适应高斯核的密度图,由下式表示:
其中 :
其中 dij为距离xi人头最近m个人头与该人头的平均距离(通常情况头部的大小与两个相邻的人在拥挤的场景中的中心之间的距离有关, (di平均) 在人群较密的情况下近似等于人头大小),实验验证β=0.3效果最好,这样生成的密度图在人头小/大的位置高斯核的方差小/大(较集中/分散),能够更好地表征人头大小的特征。
经过了两次下采样,所以预测出人群密度图的分辨率变为原来的1/4。
使用融合可以获得比单一网络更好的性能,同时由于网络结构比较宽,作者借鉴了RBM的思想,分别预训练单一网络,最后用3个训练好的单一网络对融合网络进行权值初始化,再进行finetune,得到了更好的效果。
作者在论文中还对各种损失进行了对比分析,一般来说,训练这样的网络的损失,很自然是可以想到2种,一种是基于density map的L2 loss,另一种就是王小刚的一个论文Cross-scene Crowd Counting via Deep Convolutional NeuralNetworks中的global count loss。单纯使用一种Loss的话,L2也许是更好的选择,但是如果使用2种Loss进行互补训练的话,也许会更好。
仅需要对模型最后几层进行微调,便可以将模型轻松迁移到目标问题,验证了模型的鲁棒性。