人群密度估计 CrowdCount
最近在看人群密度估计方面的东西,把博客看到的一些方法简单总结一下,后续继续添加。
1.论文《CrowdNet: A Deep Convolutional Network for DenseCrowd Counting》2015CVPR
论文采用了两个网络(3x3和5x5)的融合,可以理解为不同的网络提取的特征不同,上面 Max Pool 对边缘特征(细节)提取较好,下面的 Shallow Net 采用 Avrg Pool 对于整体特征描述较好,两个网络通过一个 concat 进行连接,然后1*1的conv进行降维。
实验结果表明多个网络进行融合的方法要比单一的网络融合效果要好。
网络架构为:

论文地址:https://arxiv.org/pdf/1608.06197v1.pdf
github地址:https://github.com/davideverona/deep-crowd-counting_crowdnet
2.论文《Single-Image CrowdCounting via Multi-Column Convolutional Neural Network》2016CVPR
论文也采用的是多个网络架构融合的思想,分成(5x5,7x7,9x9)三种网络结构,最后再融合三个网络的特征图,论文在各个数据集上都取得了state-of-the-art的效果。
多列架构的原因是:三列对应于不同大小的感受野(大,中,小),使每个列卷积神经网络的功能对由于透视或不同的图像分辨率造成的人/头大小变化是自适应的(因此,整体网络是强大的)。
网络架构为:

github地址(非官方):https://github.com/svishwa/crowdcount-mcnn
简单梳理一下论文中2. Multi-column CNN for Crowd Counting关于生成密度图时采用脉冲函数卷积高斯核的方式来定义密度图。假设标注点的位置为xi,那么具有N个头的标签可以被表示为:
这里把它与高斯函数做卷积变成一个连续的函数。但是这种密度函数假设每个xi在图像空间中是独立的。然而事实上,每个xi是在3D场景中一个人群密度的样本,并且由于透视失真,不同样本xi相关的像素与场景中区域的不同尺度一致。于是为了精确估计群体密度,需要考虑透视变换。如果假设在一个人头区域的周围,人群的密度是均匀的,它的最近邻给出了一个对于几何形变的合理的估计。 为了使得密度图能够更好地与不同视角(不同人头大小)且人群很密的图像对应起来,作者对传统的基于高斯核的密度图做了改进,提出了基于几何适应高斯核的密度图,由下式表示:
(通俗理解就是:密度图是由delta脉冲函数与一个高斯函数卷积得来,这里先卷积再求和。)


注:其实
delta函数是一个简单的脉冲函数,在范围内积分求和值为1,N个人头再求和即得N个人头的标签;
对于每一个人头的xi点,给出了k个近邻距离的的平均值di,于是,与xi相关的像素对应于场景中地面上的一个区域,这个区域的半径与di成正比。于是,为了估计像素xi周围的人群密度,为我们需要把H(x)卷积一个自适应的高斯核的,这个高斯核的的方差σi是可变的并且和di成比例。
总结就是把标签H和一个自适应核的高斯核函数进行卷积,这个高斯核函数的方差为β与xi的K个最近邻平均距离的乘积。在程序中的体现就是从ground truth中提取xi点,做高斯卷积,高斯卷积的sigma是K=2时近邻的平均距离。
(原文内容:Interesting we found that usually the head size is related to the distance between the centers of two neighboring persons in crowded scenes.所以实验中K=2.)
3.论文《Switching Convolutional Neural Network for Crowd Counting》2017CVPR
针对人群密度估计问题提出了一个 Switch-CNN网络,大的思路就是根据图像块的内容信息来选择合适的CNN网络进行人群密度估计。
首先将图像分成3*3=9 个图像块,然后使用一个 CNN网络对每个图像块进行分类,看它适合使用哪个CNN网络来进行密度估计,这里提供了3个CNN网络来进行密度估计。
对于图像中的人群密度,有的区域密度大,有的区域密度小,这里我们对图像进行分块处理。
Switch-CNN网络架构:

这里的三个CNN网络设计R1,R2,R3 和 第二篇CVPR2016年论文中的 MCNN 是一样的。 对于 switch classifier 我们以 VGG16网络为基础
github地址:https://github.com/val-iisc/crowd-counting-scnn
看到一篇非常nice的博客:http://m.blog.csdn.net/u011285477/article/details/51954989
人群密度估计 CrowdCount的更多相关文章
- 人群密度检测MCNN+CSRnet
MCNN(简单理解): 三列卷积神经网络,分别为大中小三种不同尺度的卷积核,表示为L列(使用大尺度卷积核: 9*9, 7*7, 7*7,7*7), M(使用中等尺度卷积核: 7*7, 5*5, 5*5 ...
- MCNN多层神经网络论文笔记
论文原文 https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Zhang_Single-Image_Crowd_Coun ...
- 跑caffe过程中的备忘
1*1卷积比如一张500*500且厚度depth为100的图片在20个filter上做1*1卷积,那么结果大小为500*500*20 只有池化改变图片的大小 一个大的全连接层可以理解为一个神经网络,这 ...
- 【转】用深度学习做crowd density estimation
本博文主要是CVPR2016的<Single-Image Crowd Counting via Multi-Column Convolutional Neural Network>这篇文章 ...
- 泡泡一分钟:Geometric and Physical Constraints for Drone-Based Head Plane Crowd Density Estimation
张宁 Geometric and Physical Constraints for Drone-Based Head Plane Crowd Density Estimation 基于无人机的向下平面 ...
- 腾讯QQ内测群新功能:QQ万人群即将袭来!
4月6日早晨有人爆出QQ群正在内部测试QQ万人群的消息,此消息一出,网友们都不蛋定了,各种议论纷纷,可是唯独腾讯没有做出任何有关这方面的解释. QQ是要准备让上万个人在一个群聊天吗? 那不会被刷屏刷死 ...
- 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)
RT,使用消息队列,信号量和命名管道实现的多人群聊系统. 本学期Linux.unix网络编程的第三个作业. 先上实验要求: 实验三 多进程服务器 [实验目的] 1.熟练掌握进程的创建与终止方法: 2 ...
- IT行业歧视40岁以上人群为找工作还要谎报年龄[转]
IT行业歧视40岁以上人群为找工作还要谎报年龄(这样不好) http://www.aliyun.com/zixun/content/2_6_616161.html [赛迪网讯]4月5日消息,许多40多 ...
- 非参数估计:核密度估计KDE
http://blog.csdn.net/pipisorry/article/details/53635895 核密度估计Kernel Density Estimation(KDE)概述 密度估计的问 ...
随机推荐
- javascript DOM 常用方法
前端HTML+CSS+JS流程导图:https://www.processon.com/view/link/5ad1c2d0e4b0b74a6dd64f3c HTML+CSS+Javascript+j ...
- FangDD Java编程规范
我们采用<Oracle/Sun原生的Java编程规范>和<Google Java编程规范> Google Java编程风格指南 January 20, 2014 作者:Haws ...
- python locust 性能测试:locust 关联---提取返回数据并使用
from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehav ...
- docker启动后忘记挂载nvidia-docker-volume的解决方法
进入 docker 目录 删除 volumes 下的所有文件 重新启动docker 运行nvidia-docker run XXX 来生成volume 修改所有 docker目录下containers ...
- 在vue项目中 如何定义全局变量 全局函数
如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数 定义全局变量 原理: 设置一个专用的的 ...
- double保留两位小数
public static String format(double dValue, int lScale) { // ////负数,则装化为正数后进行四舍五入 boolean bFlag = fal ...
- WDCP面板Web环境安装redis与phpredis扩展应用方法
http://www.ctyun.cn/bbs/thread-2882-1-1.html根据网友的要求需要在WDCP面板环境中安装人人商城程序,但是这个程序需要支持redis与phpredis扩展.根 ...
- Vue基础进阶 之 过渡效果
进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...
- Mysql 集合链接查询
MySQL NULL 值处理 需求:我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...
- ffmpeg 图像转视频 视频转图像
ffmpeg使用 以下两条可使用,具体可参考:https://blog.csdn.net/pkueecser/article/details/8555261pic to video:ffmpeg -f ...