Mixture of counting cnns: Adaptive integration of cnns specialized to specific appearance for crowd

在人群统计方面,目前使用一个预测器的方法不能够很好地处理密度和规模不断变化的人群。基于此,作者提出使用多个专门用于特定人群表面的CNN,这些CNN在多场景图片训练中被学出来,并且具有很好地鲁棒性。与单CNN和固定权重的聚合CNN相比,此方法具有更低的错误率。

Mixture of counting cnns: Adaptive integration of cnns specialized to specific appearance for crowd_第1张图片

上图是MoC-CNN (Mixture of CountingCNNs)的框架图,它由两种类型的CNN构成,专家CNN提取不同人群表面特征,而门CNN根据目标表面特征从而挑选专家CNN。一方面专家CNN预测目标图片的人数,另一方面门CNN预测专家CNN的概率,然后这些概率作为对专家CNN加权的权重。

MoC-CNN计数

MoC-CNN预测目标图片中的人数,主要是通过下列方程:


在这里K是专家CNN的数目, 是第k个专家CNN的输出, 是第k个门CNN的输出并作为专家CNN的权重,y最终预测的群体人数。举例来说,如果图片中出现密集人群,此时门CNN就会增加第一个专家CNN的权重,而第一个专家CNN的输出结果又会反映到最终的统计结果y上,这比单CNN更具鲁棒性。

MoC-CNN训练

训练专家CNN使用下列损失函数:

这里,Nmini-batch的尺寸, 是第n个是图片的预测值, 是第n个图片的真实值,损失函数就是预测值和真实值的均方差。

下面是门CNN的损失函数:

这里作者解释了为什么专家CNN和门CNN的损失函数不同呢?原因如下:通常一个训练集会包含许多相似的图片,训练初始阶段,这些相似的图片被门CNN送到一个专家CNN中,很少的图片会被送到其他专家CNN中,因此专家CNN之间的不同性就会显现出来,由于门CNN是以低计数错误率为原则进行挑选,所以只有那些具有很多图片输入的CNN才获得较强的泛化能力。于是门CNN不断选择多训练图片的专家CNN,最终网络挑选出的专家CNN只有一种。

上式前一项和专家CNN的损失函数相同,后一项是方差正则化,其目的是最小化门CNN的输出, 是门CNNn个训练样本输出的均值,是损失和方差正则化之间的折中参数,如果门CNN选择一种专家CNN,方差就会变大,反之方差就会变小,因此最小化方差可以防止网络只选择一种专家CNN

下面两式是专家CNN和门CNN的输出层更新:

下式是专家CNN损失函数梯度,它解释了不同专家CNN与具体人群表面特征相匹配的原因。

式中门CNN输出 就像是一个学习率,如果第k个专家CNN被门CNN挑选,那么 就会变大,因此第k个专家CNN就会很好地对训练图片进行学习。

网络具体设置

下图是MoC-CNN的结构图:

    Mixture of counting cnns: Adaptive integration of cnns specialized to specific appearance for crowd_第2张图片

由于专家CNN所学习的图片都是门CNN分配给它的,所以不需要学很多图片,因此结构也较为简单。首先根据实验经验,设置专家CNN的个数为10,由2个卷积2个池化和一个全卷积组成,其中2*2核尺寸的最大池化在第一个卷积层的后面,3*3的池化在第二个卷积层的后面。另外,这里在每个卷积层后面使用批归一化和ELU。门CNN是一个多分类器,所以其结构与专家CNN相比稍显复杂,滤波器的数目比专家CNN要多,池化层的核尺寸和专家CNN的一致,批归一化和RELU也同样被使用,门CNN的分类单元由两个全连接层组成,在第一个全连接层后面应用Dropout,在输出层后应用Softmax。输入图片的大小是72*72像素,大于这个像素尺寸的把它分割成若干个72*72像素单元,小于这个像素尺寸的空缺部分用外围区域的像素补充上去。真实的计数个数用密度图计算出来。

你可能感兴趣的:(Mixture of counting cnns: Adaptive integration of cnns specialized to specific appearance for crowd)