经典论文阅读--CSRNet

CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes

前言

本次阅读的文章是人群密度估计领域的经典作品,也是发表在CVPR2018的顶会文章《CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes》。

Paper link: https://arxiv.org/abs/1802.10062
Official Pytorch(0.4) code: https://github.com/leeyeehoo/CSRNet-pytorch
Pytorch(>=1.0) code: https://github.com/Yuuchuin/C3_V2

文章首次将空洞卷积与VGG16网络结合,在人群密度估计的主流数据集中都达到了SOTA的水平。展示了深层网络和大感受野在视觉领域的强大优势。

背景

在密集人群密度估计任务中,严重遮挡、透视变形、超高的人群密集度、不规则的人群聚集是最常见的挑战。传统方法应对不了上述的挑战,于是乎,在视觉领域大获成功的深度网络就成为人们的研究对象。在此文之前,用于密集人群估计的模型大多是基于多列多尺度的卷积神经网络,不过这种multi-column based 网络模型存在明显缺点:训练时间长、多列结构的参数冗余。作者设计了两个简单的实验:1.简单的深层次的网络可以超越MCNN的性能, 2.拥有不同感受野的分支网络学习到的特征其实很相近。以此证明深层网络的性能和多列结构的冗余。

方法

网络结构

CSRNet的结构比较简单,即舍弃了VGG16的全连接层,仅使用VGG16的前13层作为前端(front-end)。作者在这前13层的基础上,又额外添加了六个卷积层,即所谓的后端(back-end)。后端网络中使用了空洞卷积,作者设置了四组实验,结果显示当空洞率为2时,网络的性能最好。

经典论文阅读--CSRNet
经典论文阅读--CSRNet
可以看到,后端添加了空洞率为2的空洞卷积的网络性能最好。不过相较于CSRNet A, CSRNet B的的性能提升有限,主要的性能还是由主干网络贡献。

密度图的生成

在生成密度图部分,SHHA和UCF50使用了自适应核,其它数据集均使用了固定尺寸核,具体如下。
经典论文阅读--CSRNet

损失函数

本文采用的损失函数也是该任务中最常见的欧式距离损失函数:
经典论文阅读--CSRNet

未来的改进

Hybrid Dilation Convolution(HDC)

来自论文《Understand Convolution for Semantic Segmentation》https://arxiv.org/pdf/1702.08502.pdf
标准的CSRNet采用相同空洞率的空洞卷积层堆叠方案,这种方案会出现"gridding"现像,即卷积核捕捉到的信息不连续导致部分信息丢失。使用一组扩展率卷积串接一下构成block,可扩大感受野的同时减轻"gridding"弊端。
经典论文阅读--CSRNet