crowd counting_[crowd_counting]-SFCN-CVPR2019amp;amp;GCC dataset

b98d11425f183fb37e2dfde220f4050b.png

4d8cd37334f9dc3e05a916263bf638d6.png

1.Contribution

(1)主要是提出了基于GTA5的GCC数据集

数据集下载地址:

https://gjy3035.github.io/GCC-CL/​gjy3035.github.io

(2)提出了在如何在GCC上train,然后在传统的通用数据集上test的迁移学习方案,方案基于Cycle GAN,提出了SE Cycle GAN

(3)也提出了他们自己的counting模型SFCN,不过该模型本身不是亮点

2.GCC dataset

提出GCC数据集的目的是当前已经有的数据集图片数量太少,很容易overfitting,基于GTA5场景制作出的GCC数据集,拥有丰富的场景,大量的图片。

6895c64de63d165c52d54292f012f9c6.png

(1)场景的选择

基于GTA5,选择了100个地点,然后每个地点通过改变相机的位姿,最终获得400个场景,然后通过不同的ROI获得不同的图片

(2)人模型的设计

选择了265个人的模型,每个人的模型有不同的肤色,性别,形状,然后又衣服,发型等6个不同的外观参数,在场景中采用随机的动作

(3)场景合成

原始GTA5每个场景不超过256人,为了产生人多的图片,需要进行场景合成,就是将不同场景下的人拼到一块儿

be88f4bd4d72edde521395b5cf424eff.png

最终人数分布如下:

1c11532f23cbba2fe0627ea085e0f8ab.png

(4)添加了不同环境因素

通过设置不同的时间因素,以及天气因素,产生不同的环境:

efad32f878ecfa8a52c316767f1e9bc4.png

(5)如何利用GCC数据集

962ffea8e3af7fe25c05ec7e181cd426.png

①先在GCC在pretain,然后在其他数据集上进行fine-tune,有点在利用在ImageNet上pretrain模型的意思

②在GCC上train,然后直接在其他数据集上,不过中间利用了SE CycleGAN去将GCC的图片色调改成了测试数据集的风格,才去train,和test

3.SFCN

(1)模型配置

为了进行counting,本文也提出了自己的counting模型SFCN(Spatial FCN):

a4b72375fce054ac958cd25517d0a210.png

就是一个简单的单列全卷积,encoder-decoder的结构

625e3aaa58e8582f9867d94b8fb7f8f9.png

提出了采用两种不同backbone的模型,这里有个特殊的部分为Spatial Encoder结构,是《Spatial as deep: Spatial cnn for traffic scene understanding》这篇paper中提出的,具体看那篇paper

基本上backbone+Dilation conv+spatial encoder+upsample4个结构

采用1e-5的lr,Adam+MSE

(2)ablation study

①在GCC上训练的情况,采用了三种不同的训练集测试集划分方法:

194669d387259e1b40fac7274e731f69.png

第一种是75%train,25%test,第二种是每个场景(共4个相机),1个相机用来test,其他3个用来train,第三种是以场景为单位,75个场景做train,25个场景做test

②在GCC上pretrain,在其他数据集上fine tune

6c1f3804807164bd528f5001d8eacbea.png

感觉如果不用ResNet做backbone,效果不如用了ImageNet的CSRNet

4.SE CycleGAN & DA

DA是domain adaption,就是领域自适应,有点像迁移学习,要在让在数据集A上train的模型,更好地在数据集B上test,本文要做到的就是如何在GCC上train,然后在其他数据集上获得更好的效果

之所以要提到DA这个概念是因为GTA的图片太卡通了,相比于实际场景,有一定Gap

(1)SE Cycle GAN

本文采用SE CycleGAN,其实就是给CycleGAN添加了SSIM的loss

e431e00f18d5de08481f4d28a79cfa60.png

根据CycleGAN的原理,GCC的图片要通过一个Generator,产生于另一个数据集风格相似的图片,并让对应的distriminator去判断,然后又用另一个Generator转变回来,期望转变过去又转变回来的图片跟原来的图片越相似越好,

同理,另一条路是从另一个数据集转变到GCC的风格,再转变回去,采用的loss如下:

e6b9e3ca202870969f6fcfdf7b8c92f8.png

82bf02dcd67e68758088650f1a8a18da.png

2d38c92bca1361f1ca91478578b2f026.png

LGAN是Discriminator判断的loss,Lcycle是转变过去又转变回来的比较相似度的loss,λ是多少没说

因为要比较图像相似度,参考SANet采用SSIM作为loss,本文引入了SSIM作为loss,将CycleGAN转变为SE CycleGAN:

0ccdf7076704e830b7e6c7a7db278636.png

02e3960a8ddaae1d4c3cb45d0491b86e.png

μ设置为1

用了SE CycleGAN风格转换结果如下:

3d711d3c1c0e753d8deed02e114cf16f.png

(2)Density/Scene Regulation

Density Regulation,为了防止density map某些点预测了很大的值这种现象,本文设置了density map每个点出值得上限,超过这个上限,就把这个点设为0

Scene Regulation是对于不同的测试数据集,比如WorldExpo10,其人数不超过500,那么在GCC中也要选择少人数的场景图片进行train

(3)ablation Study

①用不用CycleGAN进行风格转换的对比

952a5b2aeb76673058e3224988fd5ad9.png

296216b9db0acc0c34091f23e38003e8.png

发现如果没有Density/Scene Regulation,加了GAN反而效果变差了,可能是因为加了GAN导致图像变模糊,带来了一些细节的丢失

5.评价

本文最大的亮点在于提出了GCC数据集,在这上面pretrain是否能取代ImageNet,似乎持保留意见,不过对于容易overfitting的counting社区来说,确实是一个不错的数据集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清

本文首发于:行者AI 在工作中会遇到批量给图片添加文字,随机码等需求,当数据码数量较大时,UI的工作量就会非常大,这时候我们可以用python来帮我们提高工作效率。1. 需求分析我们有这样一张图片,我们需要将一…

hash地址_redis中的hash扩容、渐进式rehash过程

背景: redis字典(hash表)当数据越来越多的时候,就会发生扩容,也就是rehash对比:java中的hashmap,当数据数量达到阈值的时候(0.75),就会发生rehash,hash表长度变为原来的二…

是什么牌子_水晶项链什么牌子好

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以免费收到最新内容了。每天都有分享,完全是免费订阅,请放心关注! …

iframe异步加载_5种延迟加载图像的方法以帮助你提升网站性能与用户体验

英文 | https://www.sitepoint.com/five-techniques-lazy-load-images-website-performance/翻译 | web前端开发(ID:web_qdkf)由于图像是Web上最流行也是必不可少的内容类型之一,因此网站上的图片页面加载时间很容易成为一个问题。即使进行了适当的优化&…

springframework报错_应对报错信息的必杀技!

今天遇到了一个错误,一般的错误提示会很明显,一看就知道是什么问题。今天遇到的这个说实话真的不好找原因,一般在这种情况下该怎么解决呢?分享下我的思路吧,不一定是最好的,至少有用。直接上图吧&#xff0…

电脑运行卡顿怎么处理_【众点学】电脑运行PS卡顿?可能是你的虚拟内存没设置好!...

不少小伙伴都遇到过这样的烦恼明明自己的电脑拥有大内存PS用着用着就卡顿了经过教体君的仔(bai)细(du)研(yi)究(xia)发现原来电脑的 虚拟内存 只有2G当我们用大型软件或玩大型游戏电脑越用越卡时该怎么做?今天【众点学】我们一起来看看Win7和Win10系统下分别如何设置…

线程池拒绝策略 开发中常用什么策略_面试官:说说你知道多少种线程池拒绝策略...

往期文章为什么阿里Java规约要求谨慎使用SimpleDateFormathttps://www.toutiao.com/i6696127929048367629/为什么我强烈推荐你用枚举来实现单例模式https://www.toutiao.com/i6696861933687013901/为什么不要在MySQL中使用UTF-8编码方式https://www.toutiao.com/i6697966437727…

css html 双面打印_从 Linux 命令行进行打印 | Linux 中国

导读:在 Linux 命令行进行打印的内容比单单一个 lp 命令多得多,让我们来看一些可用选项。       本文字数:4305,阅读时长大约:5分钟https://linux.cn/article-13012-1.html作者:Sandra Henry-stocker译…

服务器内存超限问题_服务器内存爆满最佳处置方案

内存爆满截图:分析:内存持续飙升,应该是有大量内存一直没有释放,考虑僵尸对象,僵尸进程,最简单的就是重启服务器,但是就无法找到罪魁祸首了。验证:top命令查看活跃进程的资源使用情况…

js map对象遍历_何时使用 Map 来代替变通的 JS 对象

JS 普通对象 {key: value} 用于存放结构化数据。但有一件事我觉得很烦:对象键必须是字符串(或很少使用的 symbol)。如果将数字用作键会怎样?在这种情况下不会有错误:const names { 1: One, 2: Two,};Object.keys(names); // > [1, 2]JS 会隐式地将…

mysql怎么显示结果窗口_mysql8中窗口函数

在以前的MySQL版本中是没有窗口函数的,直到MySQL8.0才引入了窗口函数。窗口函数是对查询中的每一条记录执行一个计算,并且这个计算结果是用与该条记录相关的多条记录得到的。1.窗口函数与聚合函数窗口函数与聚合函数很像,他们都是在一组记录而…

log4jdbc mysql_[简单]log4jdbc-log4j2配置简记_MySQL

log4jdbc-log4j2,就不多说了,不了解的可以谷歌,附上log4jdbc-log4j2的官方链接:https://code.google.com/p/log4jdbc-log4j2/ ,上面有非常详细的介绍。简单的贴下配置文件,其他的见附件:databas…

vb实时错误6 溢出_java内存溢出系列(6): Out of swap space?

本文是java内存溢出系列第6小篇。JVM启动参数指定了最大内存限制。如 -Xmx 以及相关的其他启动参数. 假若JVM使用的内存总量超过可用的物理内存, 操作系统就会用到虚拟内存。错误信息 java.lang.OutOfMemoryError: Out of swap space? 表明, 交换空间(swap space,虚拟内存) 不…

java备份还原mysql数据库_Java备份还原Mysql数据库

///实体类package com.ews.util;/*** 系统备份展示对象** */public class DataFile {private String fileName;//备份文件的名称private String fileDate;//备份文件的日期private String filePath;//备份文件的地址private String fileSize;//备份文件的大小public String get…

mysql 查看锁_别吵吵,分布式锁也是锁

Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订单,看着属下们尽心尽职地工作,完成人类的请求,Tom…

php解析js的 arraybuffer_JS的所谓的第七种数据类型Symbol

首先,为什么说叫所谓呢?因为在2007年之前Js给予我们typeof解析数据类型的一共有六种(一直有争议,但是我们暂时就按typeof来算)functionNumberObjectbooleanStringundefined但当我们去 typeof Symbol () 的时候,会惊奇的发现&#…

Ubuntu系统如何安装和卸载CUDA和CUDNN

背景 最近在学习PaddlePaddle在各个显卡驱动版本的安装和使用,所以同时也学习如何在Ubuntu安装和卸载CUDA和CUDNN,在学习过程中,顺便记录学习过程。在供大家学习的同时,也在加强自己的记忆。本文章以卸载CUDA 8.0 和 CUDNN 7.05 …

session.merge 缓存不更新_如何保证缓存与数据库双写时的数据一致性?

在做系统优化时,想到了将数据进行分级存储的思路。因为在系统中会存在一些数据,有些数据的实时性要求不高,比如一些配置信息。基本上配置了很久才会变一次。而有一些数据实时性要求非常高,比如订单和流水的数据。所以这里根据数据…

java替换图片中文字_Java 添加、替换、删除Word中的图片

文档中,可以通过图文混排的方式来增加内容的可读性,相比纯文本文档,在内容展现方式上也更具美观性。在给文档添加图片时,可设置图片的文本环绕方式、旋转角度、图片高度/宽度等;另外,也可对文档中已有的图片…

kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?

我们暂且不考虑写磁盘的具体过程,先大致看看下面的图,这代表了 Kafka 的核心架构原理。Kafka 分布式存储架构那么现在问题来了,如果每天产生几十 TB 的数据,难道都写一台机器的磁盘上吗?这明显是不靠谱的啊!所以说,这…