论文题目:CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes
网址:https://arxiv.org/pdf/1802.10062.pdf
CVPR2018
主要观点:
1。MCNN的多列设计没有显著作用:
以前的拥挤场景分析工作主要基于multi-scale architectures.他们在该领域取得了很高的性能,但是当网络变得更深时,它们使用的设计也带来了两个显著的缺点:大量的训练时间和无效的分支结构(例如:MCNN),本文设计了一个实验来证明mcnn与表1中更深入的常规网络相比表现不佳。
如我们先前所知,MCNN的每列专用于某一级别的拥塞场景。但是,使用MCNN的有效性可能并不突出。论文在图2中展示了MCNN中三个独立列(代表大,中,小的感受野)所学习的特征,并用ShanghaiTech PartA数据集进行评估。该图中的三条曲线与具有不同拥塞密度的50个测试案例共享非常相似的模式(估计的错误率),这意味着这种分支结构中的每个列学习几乎相同的特征。它违背了MCNN设计的初衷,用于学习每列的不同功能。
2。膨胀卷积优于反卷积
已经在分割任务中证明了膨胀卷积层,其精度得到显著提高,并且它是池化层的良好替代方案。尽管池化层(例如,最大和平均池化)被广泛用于维持不变性和控制过度拟合,但是它们还显著地降低了空间分辨率,这意味着丢失了特征映射的空间信息。反卷积层可以减轻信息的丢失,但额外的复杂性和执行延迟可能并不适合所有的情况,膨胀卷积是一个更好的选择,它使用稀疏内核来交替汇集和卷积层。其在不增加参数数量(或计算量)的情况下扩大了感受野(例如,添加更多卷积层可以产生更大的感受野但引入更多操作)。
为了保持特征图的分辨率,与使用卷积+池化+反卷积的方案相比,膨胀卷积显示出明显的优点,我们在图4中选择一个例子用于说明,输入是人群的图像,并且它分别通过两种方式处理以产生具有相同大小的输出。
在第一种方法中,输入由具有因子2的最大池化层进行下采样,然后将其传递到具有3×3 sobel内核的卷积层。由于生成的特征图是原始输入的1/2,因此需要对其进行上采样。
在另一种方法中,我们尝试膨胀卷积并使用相同的3×3sobel内核,同时具有因子=2步幅的膨胀内核。输出与输入共享相同的维度。最重要的是,膨胀卷积的输出包含更详细的信息。
CSRNet以VGG-16为前端,具有很强的迁移学习能力。VGG的输出大小是原始输入大小的1/8。CSRNet还在后端使用膨胀的卷积层。
什么是膨胀的卷积?可以参考以下图像
使用膨胀卷积的基本概念是在不增加参数的情况下扩大核,所以,如果膨胀率是1,我们取核并将它转到整个图像上。然而,如果我们将扩展率提高到2,内核就会像上面的图像所示的那样扩展(按照每个图像下面的标签),它可以替代汇集图层。
背后原理:
假设我们有一个输入x(m,n),一个滤波器w(i,j),以及膨胀率r。输出为y(m,n):
我们可以用(k*k)核推广这个方程,其扩张率为r.内核扩展到:
因此,每一幅图像都产生了一个对应的特征图。在给定的图像中,每个人的头部都是用高斯核模糊的。所有的图像都被裁剪成9个补丁,每个补丁的大小是图像原始大小的1/4。其中,前4个补丁分为四个1/4,其他5个补丁随机裁剪。最后,每个补丁的镜像被取为训练集的两倍。
简而言之,这就是CSRNet背后的体系结构细节。
下面我们来看下其训练细节(含评估指标)。
训练采用了随机梯度下降法,在训练期间,固定学习率设置为le-6,损失函数被认为是欧几里德距离,以便测量真实标注与网络预测之间的误差
其中N是训练批次的大小(batch?).CSRNet中使用的评估标准是mae和mse.即平均误差和均方误差。其计算公式为:
其中,C_i是网络预测值,网络的预测值本质是一个维度为M*N的矩阵Z(可以理解为密度图),则C_i的计算公式为:
网络模型将首先预测给定图像的密度图。如果没有人在场,网络预测矩阵(密度图)元素值的和为0。