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相关推荐

  1. crowd counting_[Crowd_Counting]-PGCNet-ICCV2019

    1.contribution 本文主要的idea是对于不同人头scale的地方,实际上是需要用不同感受野的卷积核去感知人头的,人头小的地方,感受野小一点就能看到整个人头了,人头大的地方,感受野需要大一 ...

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

    1.Contribution (1)主要是提出了基于GTA5的GCC数据集 数据集下载地址: https://gjy3035.github.io/GCC-CL/​gjy3035.github.io ( ...

  3. crowd counting_[crowd_counting]-SFANet-arxiv1902

    1.Network 图1 模型结构总览 (1)backbone用了VGG16,用了BN (2)整个结构跟UNet很像,上采样没说用的什么 (3)T和H的结构如下: 通过1x1的卷积来减少参数量 图2 ...

  4. 在caffe 中添加Crowd counting 数据层

    #目录 [TOC] 一.简介 Crowd counting一般以人群图像作为输入,网络回归该图像对应的密度图.以往做法是先在matlab中根据图像的label(人头位置)生成密度图,然后将输入图像及密 ...

  5. [CAN] [CVPR2019]:Context-Aware Crowd Counting论文+代码解读

    1.论文 论文链接:https://arxiv.org/pdf/1811.10452.pdf 代码链接:GitHub - weizheliu/Context-Aware-Crowd-Counting: ...

  6. 135套代码,图片人群计数模型crowd count model code repositoty

    2017_Switch-CNN 2017_cite=848_CVPR_Switching convolutional neural network for crowd counting val-iis ...

  7. 人群密度估计--Structured Inhomogeneous Density Map Learning for Crowd Counting

    Structured Inhomogeneous Density Map Learning for Crowd Counting https://arxiv.org/abs/1801.06642 针对 ...

  8. 人群密度估计--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 ...

  9. 人群密度估计--Crowd Counting Via Scale-adaptive Convolutional Nerual Network

    Crowd Counting Via Scale-adaptive Convolutional Nerual Network https://arxiv.org/abs/1711.04433v2 Co ...

最新文章

  1. “掘金”金融AI落地,英特尔趟出一套通关攻略
  2. 在云中利用开源软件进行开发以提高创新能力
  3. 2022年斯坦福AI Index公布:中美主导跨国研究,专利、投资金额暴增
  4. String与NSString关系
  5. 背包九讲之四(混合三种背包问题)
  6. 【Linux部署】Greenplum数据库6.13.0单机版【重启实录】(5次报错问题及解决的避坑指南+日志文件查看方法)
  7. 浅析JAVA_HOME,CLASSPATH和PATH的作用
  8. float double 的存储方式
  9. 读取Exchange的用户未读邮件数的几种方法
  10. java视频上传,播放预览,解决苹果手机视频无法预览的问题
  11. 销毁session的三种方式
  12. html 小喇叭图标,找回丢失的小喇叭图标
  13. 由syms生成函数,求该函数在某些点的数值
  14. linux重装xorg,菜鸟恢复xorg.conf的菜方法
  15. 深度学习及并行化实现概述
  16. 高版本Chrome网页直接播放海康威视大华RTSP流方案,不需服务器转码转流,支持H.265、H.264及2K/4K高清视频
  17. 阿里北京裁员,首批员工3.28之前告别大文娱
  18. 机器学习笔记——支持向量机SMO算法完整版代码分析
  19. Palabos流固耦合算法Multi-Direct Forcing Scheme IB-LBM应用在鱼的流动上实例
  20. 冒险岛私人服务器详细架设教程

热门文章

  1. 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)...
  2. 使用jqprint插件完成页面打印
  3. 支付宝支付-常用支付API详解(查询、退款、提现等)-转
  4. ASP.NET GetPostBackEventReference
  5. Excel图表横坐标设置怎么做?(亲测)
  6. Redis的Errorlog或者启动日志(错误日志)的配置
  7. MongoDB 分片的原理、搭建、应用
  8. PHP类实例教程(七):析构函数与PHP的垃圾回收
  9. PHP无刷新上传面向对象写法iframe
  10. fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...