论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》

CVPR2019   主页: https://gjy3035.github.io/GCC-CL/index.html  

才发现之前一直看的人群计数总结也是这位作者的: https://github.com/gjy3035/Awesome-Crowd-Counting#GWTA-CCNN  ,很赞!

解决问题:真实场景中存在多变的环境、更拥挤的人群,现存的方法不能很好解决问题;除此之外,因为数据的稀缺,许多方法都存在不同程度的过拟合现象。

提出办法:作者从数据和方法两个角度解决问题;首先是数据方面,开发了一个数据收集和标注器,可以生成并标注合成的数据集(这个挺有意思的,是从游戏中获取的图片);其次是方法,提出两类方法,一个是将网络在游戏数据集上预训练之后,再用真实数据微调;二是从域适应的角度提出一个人群计数方法,从而避免大量数据标注工作;

创新点:看了项目主页,虽然现在还没全弄懂代码,个人认为创新点一是数据集的处理,文中也提到,尽管前人工作也利用GTA5数据集,但是受限于GTA5的特性(同一场景下最多256人),因此作者设计了一个策略构造出拥塞场景(分割出几个不重叠区域,在不重叠区域放置人群,最后将多个区域拼接成一个场景);创新点二是方法中的第二类域适应方法。

结论:第一类方法取得SOTA的结果;第二类方法虽然没那么卓越的性能,实验结果也在接受范围内;

CV需要海量数据集,但是数据的获取很困难,同时现有的部分数据标注也存在一些错误,那么可否考虑使用不带标签的数据集,作者基于游戏中的虚拟图像场景,得到合成数据集,合成数据集的人数、场景分布情况见下方,从这个分布情况来看,这份数据集更贴近真实场景的情况,表中列出与其他数据集的比较:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第1张图片论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第2张图片

方法一:监督式人群计数

网络结构基于FCN

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第3张图片

实验部分对数据集的处理采取三种不同的训练策略:(1)随机切分:75%作为训练集,25%作为测试集;{2}跨相机分割数据集:对于一个特定位置,随机选择一个相机作为测试,其余作为训练;(3)跨场景分割:随机选择75%场景作为训练,25%作为测试。

下表是不同方法在GCC数据集上预训练的性能比较:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第4张图片

下表是SOTA和提出方法在真实数据集上的性能比较,可以看到性能基本都提升了:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第5张图片

方法二:通过域适应进行人群计数

解决问题:怎么在不同领域数据集中迁移学习到有效的特征——domain adaptation

提出方法:基于Cycle GAN,嵌入SSIM,从而实现合成图像到真实图像的迁移工作;之后把迁移后的数据放到SFCN中训练,图示流程见下图:

 

 

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第6张图片

Cycle GAN:

我对GAN不是很了解,就简单的从对文章的理解角度讲下这部分,有讲错的地方麻烦指正~首先关于损失函数的定义:下方式(1)是cycle-consistent loss,GAN的两个重要角色是生成器和判别器,生成器在这里分别是G_{R\rightarrow S}   作用是学习合成图像S迁移到真实图像域R的映射函数;G_{S\rightarrow R} 则相反; 那么我们想要生成的合成图像尽量和原来的合成图像接近,目标便是:i_S \rightarrow G_{S\rightarrow R}(i_S) \rightarrow G_{R\rightarrow S}(G_{S\rightarrow R}(i_S))\approx i_S.

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第7张图片

除此之外,还有两个判别器D_R,D_S分别对应生成器G_{S\rightarrow R},G_{R\rightarrow S},比如D_R想鉴别这个图像是来自真实图像还是合成图像生成的”假真实图像“,损失定义如下:

最终损失定义为:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第8张图片

SSIM

之前在CSRNet和SANet中看到过,作者利用SSIM进行图像重建质量评估,从局部特征角度计算两张图的相似性,该值越大越能说明图像之间差别小,值范围在[-1,1],损失定义如下:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第9张图片

最终SE Cycle GAN损失定义为:

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第10张图片

在此作者还提出了一个正则化方法:因为发现真实数据中的分布可能存在一些异常,比如图片中的背景被预测为极大的值,解决办法是定义一个值上界,超过该上界的值都被置为0。

论文理解《Learning from Synthetic Data for Crowd Counting in the Wild》_第11张图片

 

你可能感兴趣的:(crowd,count,transfer,learning)