crowd counting_[crowd_counting]-MANet_arxiv1901
1.Contribution
主要是研究了segmentation的mask如何作用于counting,会获得更好的效果
2.Model
(1)backbone
Part1:
C(1, 64, 3)-C(64, 64, 3)-MP-C(64, 128, 3)-C(128, 128, 3)-MP-C(128, 128, 3)
C(输入通道,输出通道,卷积核尺寸),MP代表max pooling
Part2:
part2是两个串联起来的模块,模块结构就是上图的(b)
(2)mask prediction和density map prediction
mask prediction的结构就是两层卷积C(256, 256, 3)-C(256, 1, 1). density map分支由于mask作用的策略不同,而不同。
(3)关于mask分支的ground truth的制作
本文对counting分支的ground truth采用的是固定高斯核的方法,而mask分支的ground truth就是把counting的ground truth非0的值都变成1,变成一个分割的ground truth
3.5种使用mask的方案
结构说明,a1代表backbone产生的feature map,有256层,b1代表mask分支产生的feature map 256层,最后通过一个1x1的卷积产生1层的mask,c1跟b1一样,是通过跟mask分支一样结构的counting分支产生的256层的feature map,也要经过一个1x1的卷积产生1层的density map,d1和e1在方案四中解释
5种方案:
①方案一
train时,直接用ground truth作为mask作用于counting分支,test时,才用mask分支predict的二值化mask作用于counting分支
②方案二
train时,将mask分支输出的,还没有经过二值化的mask作用于counting分支,两个map点乘的,获得组后的density map,这样好处在于mask的作用比二值化来的smooth,同时counting分支的反向传播可以更新mask分支
③方案三
同方案二,唯一的不同在于predict的mask经过二值化再去作用于counting分支,但是由于二值化问题,counting分支的loss无法传播到mask分支,所以中间加了个STE操作,STE的解释要看paper:
《Estimating or propagating gradients through stochastic neurons for conditional computation》
这样的话,counting分支的loss依旧可以反向传播到mask分支
④方案四
不直接将mask乘到density map上,而是将mask通过C(1,256,1)转化为与a1一样256层的feature map,即d1,然后与a1 concat起来,变成512层的feature map,最后经过C(512, 256, 3)-C(256, 256, 3)-C(256, 1, 1),变成1层的density map输出
在train时,直接用segmentation的ground truth作为mask去产生256层feature,test时,用的是mask分支产生的二值化的mask去转化为256层的feature
⑤方案五
结构同方案四,只是train时用的不是ground truth,而是用mask分支预测的没有二值化的mask去转化为feature,预测时,也是如此。
4.Experiment
(1)loss
Lm是mask分支分割用的loss,为每个点作为二分类的BCEloss,Lr是density map的loss,就是MSE, α没说是多少
(2)训练细节
Adam,lr=1e-5,Adam训练11个epoch后,转用SGD,每20个epoch,lr*0.1。采用固定size的patch,随机从training data中crop出来,同时采用镜像对称护理
(3)5种方案的实验结果对比
baseline1是只有backbone+counting分支
baseline2是更深版本的baseline1
可以发现方案1用二值化的mask,效果反而变差了,方案2说明mask是有用的,方案3效果差是因为采用二值化的mask,尽管counting的loss可以传播到mask分支,但是二值化后传播效果也不好,方案4说明尽管采用了二值化的mask,但是转化为feature的方式要更好,方案5则进一步说明了不用二值化的mask,以及转化为feature的效果
(4)mask分支的作用
为了排除不是因为双路网络结构,而确实是因为mask的作用,所以设置了这个实验,baseline3跟方案5的结构很像,但是取消了segmentation的训练,整个网络就是一个单纯的双路网络,上面实验证明,加了mask的训练是有用的
(5)公开数据集上的结果
①ShanghaiTech
②UCF_CC_50
③WorldExpo'10
④MALL
5.Comment
本文最大的贡献在于探究了mask如何作用于counting是最好的,也证明了相比于直接将mask和density map相乘,将mask转化为feature map要更好
crowd counting_[crowd_counting]-MANet_arxiv1901相关推荐
- crowd counting_[Crowd_Counting]-PGCNet-ICCV2019
1.contribution 本文主要的idea是对于不同人头scale的地方,实际上是需要用不同感受野的卷积核去感知人头的,人头小的地方,感受野小一点就能看到整个人头了,人头大的地方,感受野需要大一 ...
- crowd counting_[crowd_counting]-SFCN-CVPR2019amp;amp;GCC dataset
1.Contribution (1)主要是提出了基于GTA5的GCC数据集 数据集下载地址: https://gjy3035.github.io/GCC-CL/gjy3035.github.io ( ...
- crowd counting_[crowd_counting]-SFANet-arxiv1902
1.Network 图1 模型结构总览 (1)backbone用了VGG16,用了BN (2)整个结构跟UNet很像,上采样没说用的什么 (3)T和H的结构如下: 通过1x1的卷积来减少参数量 图2 ...
- 在caffe 中添加Crowd counting 数据层
#目录 [TOC] 一.简介 Crowd counting一般以人群图像作为输入,网络回归该图像对应的密度图.以往做法是先在matlab中根据图像的label(人头位置)生成密度图,然后将输入图像及密 ...
- [CAN] [CVPR2019]:Context-Aware Crowd Counting论文+代码解读
1.论文 论文链接:https://arxiv.org/pdf/1811.10452.pdf 代码链接:GitHub - weizheliu/Context-Aware-Crowd-Counting: ...
- 135套代码,图片人群计数模型crowd count model code repositoty
2017_Switch-CNN 2017_cite=848_CVPR_Switching convolutional neural network for crowd counting val-iis ...
- 人群密度估计--Structured Inhomogeneous Density Map Learning for Crowd Counting
Structured Inhomogeneous Density Map Learning for Crowd Counting https://arxiv.org/abs/1801.06642 针对 ...
- 人群密度估计--Leveraging Unlabeled Data for Crowd Counting by Learning to Rank
Leveraging Unlabeled Data for Crowd Counting by Learning to Rank CVPR2018 https://github.com/xialeil ...
- 人群密度估计--Crowd Counting Via Scale-adaptive Convolutional Nerual Network
Crowd Counting Via Scale-adaptive Convolutional Nerual Network https://arxiv.org/abs/1711.04433v2 Co ...
最新文章
- “掘金”金融AI落地,英特尔趟出一套通关攻略
- 在云中利用开源软件进行开发以提高创新能力
- 2022年斯坦福AI Index公布:中美主导跨国研究,专利、投资金额暴增
- String与NSString关系
- 背包九讲之四(混合三种背包问题)
- 【Linux部署】Greenplum数据库6.13.0单机版【重启实录】(5次报错问题及解决的避坑指南+日志文件查看方法)
- 浅析JAVA_HOME,CLASSPATH和PATH的作用
- float double 的存储方式
- 读取Exchange的用户未读邮件数的几种方法
- java视频上传,播放预览,解决苹果手机视频无法预览的问题
- 销毁session的三种方式
- html 小喇叭图标,找回丢失的小喇叭图标
- 由syms生成函数,求该函数在某些点的数值
- linux重装xorg,菜鸟恢复xorg.conf的菜方法
- 深度学习及并行化实现概述
- 高版本Chrome网页直接播放海康威视大华RTSP流方案,不需服务器转码转流,支持H.265、H.264及2K/4K高清视频
- 阿里北京裁员,首批员工3.28之前告别大文娱
- 机器学习笔记——支持向量机SMO算法完整版代码分析
- Palabos流固耦合算法Multi-Direct Forcing Scheme IB-LBM应用在鱼的流动上实例
- 冒险岛私人服务器详细架设教程
热门文章
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)...
- 使用jqprint插件完成页面打印
- 支付宝支付-常用支付API详解(查询、退款、提现等)-转
- ASP.NET GetPostBackEventReference
- Excel图表横坐标设置怎么做?(亲测)
- Redis的Errorlog或者启动日志(错误日志)的配置
- MongoDB 分片的原理、搭建、应用
- PHP类实例教程(七):析构函数与PHP的垃圾回收
- PHP无刷新上传面向对象写法iframe
- fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...