人群密度检测CSRNet论文解读

  • 论文标题:CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes
  • 论文链接:https://arxiv.org/abs/1802.10062v4

改文章为存货文章,目前很多场景下已经有了更好的解决方案,大家请带入当时的环境和观点进行阅读

该网络解决了哪些问题

  • 是一个拥挤场景识别网络,可以理解高度拥挤的场景,执行准确的计数估计,并提供高质量的密度地图,相较于前一代的SOTA网络产生了更好的效果。
  • 解决了密集场景估计中网络复杂,准确率低,密度图质量不好的问题。
  • 解决了MCNN中这种多列的网络结构需要更长时间训练的问题,同时通过实验证明了不同列中间学习到的信息并没有显著的差异
  • 这些工作花费大部分参数进行密度等级分类,以标记输入区域,而不是将参数分配给最终密度图生成。由于MCNN中的分支结构效率不高,因此缺少用于生成密度图的参数会降低最终精度。考虑到上述所有缺点,我们提出了一种新的方法,专注于编码拥挤场景中的更深层特征并生成高质量密度图

和我的项目相关之处

  • 提出了能增大感受野的膨胀卷积的概念,也因此可以代替池化层,可以在今后的网络设计中参考这个思路

研究内容

1.文章主要结论

在这篇论文中,作者提出了一个能够进行密集计数和生成密度图的全新端到端网络,改论文中采用膨胀卷积的结构聚合多尺度的上下文信息,并且能够在不损失分辨率的情况下扩张感受野。在四个密集场景的数据集中都超越了前代SOTA网络。扩展到车辆数据集中也得到了最好的准确率。

2.研究/实验方法

  1. 作者设计了一组对比实验,将采用传统卷积,池化和上采样生成的特征图与通过膨胀卷积生成的特征图进行对比,结果表明,膨胀卷积处理后的特征图的信息更具有细节。

  2. 作者设计了四个不同膨胀系数的膨胀卷积作为网络后端,vgg16的卷积层作为网络的前端进行试验,采用了控制变量的方法对膨胀系数的匹配度进行了实验,得出膨胀系数为2的膨胀卷积最为适合当前场景的结论。

  3. 作者通过实验的方法来权衡vgg16前端网络的资源消耗和准确度,最后采用了vgg16的前10层作为CSRnet的前端网络。

  4. GT准备: 在生成Ground Truth的事务中,采用几何自适应核来对密集场景进行处理,通过使用高斯核(归一化为1)对每个头部标注进行模糊处理,考虑每个数据集所有图像的空间分布,生成Ground Truth。几何自适应内核 F ( x ) = ∑ i = 1 N δ ( x − x i ) × G σ i ( x ) , w i t h σ i = β d ˉ i F(x)=\sum_{i=1}^N \delta(x-x_i) \times G_{\sigma_i}(x),\quad with \quad \sigma_i = \beta \bar d_i F(x)=i=1Nδ(xxi)×Gσi(x),withσi=βdˉi,对于ground truth δ中的每个目标对象xi,我们使用 d ˉ i \bar d_i dˉi表示k个最近邻的平均距离(knn)。为了生成密度图,我们将δ(x−xi)与参数σi(标准差)的高斯核进行卷积,其中x是像素在图像中的位置。在实验中,我们令β = 0.3, k = 3。对于人群稀疏的输入,我们将高斯核适应于平均头部大小,以模糊所有的标注。
    在这里插入图片描述

  5. 数据扩展: 研究人员在每个图像的不同位置裁剪9个小块,大小为原始图像的1/4。前4个patch包含图像的4 / 4,没有重叠,其余5个patch从输入图像中随机裁剪。在那之后,我们对补丁进行镜像,这样我们的训练集就加倍了。

  6. 训练方法: 网络的前10个卷积层是根据已经训练过的VGG-16进行微调的。对于其他层,初始值来自0.01标准差的高斯初始化。用随机梯度下降法(SGD),学习速率固定在1e-6。我们先将密度图宽高转为原来1/8,这样网络输出的结果(pred)的shape 就和密度图(truth)的shape一样了,都为(x/8,y/8,1)同样,我们选择欧几里德距离来测量我们生成的估计密度图与Ground Truth的差值。损失函数为: L ( Θ ) = 1 2 N ∑ i = 1 N ∣ ∣ Z ( X I ; Θ ) − Z i G T ∣ ∣ 2 2 L(\Theta) = \frac {1}{2N} \sum_{i=1}^N ||Z(X_I;\Theta)-Z_i^{GT}||_2^2 L(Θ)=2N1i=1N∣∣Z(XI;Θ)ZiGT22
    其中 Z ( X I ; Θ ) Z(X_I;\Theta) Z(XI;Θ)为输出, Z i G T Z_i^{GT} ZiGT为输入的Ground Truth

  7. 对ShanghaiTech Part A数据集进行了消融实验研究,以分析我们的模型配置,结果显示,膨胀系数为2的卷积效果最好。在消融实验中也尝试使用dropout来防止潜在的过拟合问题,但没有明显的改善。所以在网络中并没有包含dropout层。

  8. 拥挤场景解析的发展从简单的人群数值估计到人群密度图估计,生成准确的人群分布图挑战性比较大。
    其中一个主要的困难就是离散化的问题,人在图像中不是只占用一个像素,密度图需要保持局部邻域的连续性。其他的困难包括场景的多样性,相机角度的多样性。

应该思考这个方法的每一步操作怎么做,每一步什么目的,每一步为了解决什么样的小问题,有什么难点,作者是如何解决的?

3.研究结论

  • CSRnet采用的膨胀卷积的设计来聚合拥挤场景中的多尺度上下文信息,在当时超过了很多SOTA的网络方案。
  • 在一定程度上证明了多列的网络结构在该场景下并没有发挥出多列的优势,每一列学习到的特征并没有明显的区别。
  • 通过实验结果(见精读部分)展示了膨胀卷积与传统卷积提取的信息相比,膨胀卷积提取出的特征图更加具有细节
  • 在训练阶段CSRnet与多列结构相比更容易实现和部署。

4.研究结果(数据)

在这里插入图片描述
多列结构的网络每一列学习到的特征并没有明显的区别,没有达到设计之初的目的。
在这里插入图片描述
在UCSD这样的稀疏场景数据集中,也达到了不错的效果,在该数据集中为了生成高质量的密度图,将238x158的小分辨率采用双线性插值的方法将其调整到了952x632的方式
在这里插入图片描述
在这里插入图片描述

作者实验验证了采用 multi-column 表现的效果没比没采用 multi-column 的要好,该实验设计了一个具有相似数量参数的更深入,更规则的网络(表中A deeper CNN)。
在这里插入图片描述
该图显示了,对shanghaitech part_A数据集进进行消融实验,结果显示采用膨胀系数为2的CSRNetB效果最好,所以余下实验均采用系数为2的膨胀卷积进行操作
在这里插入图片描述

在World Expo数据集中CSRnet在4/5的场景下都展现出最佳的准确度
在这里插入图片描述

作者得到的每一张图标结果,都说明了什么?

5.网络结构

在这里插入图片描述

网络中所有的卷积都通过padding来达到和前一层相同的尺寸,卷积层的格式为‘conv-{kernel size}-{个数}-{膨胀系数}’,最大池化层在2 × 2像素窗口上进行,步长为2

6.论文中的引用了哪些,引用对于论文作者的主要帮助?

Fisher Yu and Vladlen Koltun. Multi-scale context aggregation by dilated convolutions. In ICLR, 2016.
L. C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs. IEEE Transactions on Pattern Analysis and Machine Intelligence, PP(99):1–1, 2017.
Liang-Chieh Chen, George Papandreou, Florian Schroff, and Hartwig Adam. Rethinking atrous convolution for semantic image segmentation. CoRR, abs/1706.05587, 2017.
以上三篇激发了作者对于膨胀卷积的思路,使CSRNET的后端网络采用膨胀卷积的的方式

Karen Simonyan and Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556, 2014.
当接收域的大小相同时使用小卷积核和更多的层数的网络将比大卷积核和更少的层数的网络更有效率


摘抄

  • 膨胀卷积:将输入通过因子为2的最大池化层向下采样,然后将其传递给3×3的卷积层。由于生成的feature map仅为原始输入尺寸的1/2,需要通过反卷积层(双线性插值)进行上采样。而使用步长为2的膨胀卷积层的设计,输出和输入共享相同的维度(这意味着不需要池化层和上采样层),最重要的是,膨胀卷积的输出包含了更详细的信息。
    在这里插入图片描述

  • 通过删除完全连接的层,我们试图确定需要从vg -16中使用的层数。最关键的部分依赖于准确性和资源开销(包括训练时间、内存消耗和参数数量)之间的权衡。实验表明,VGG-16的前10层只保留3层池化层,而不是5层池化层,可以抑制池化操作对输出精度的不利影响。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值