• 啃人群计数论文,第二篇!

2019年了,本着写一篇综述的心情(决心?),看一下2015年的论文,这时期还没有采用深度学习的方法,所以性能不好不说,设计也很复杂。脑壳痛

论文思路:把一张图片分成很多块(文中称之为patch),然后学习" patch的特征 "与 "patch之中物体相对位置 "的映射,然后再通过 高斯核密度估计 来生成patch的密度图,然后计数。

该文有3个创新点:

  1. 基于patch的方法,即将场景分块进行研究
  2. 随机森林的应用
  3. 提出半自动的训练方法

先简述一下现存分析方法:

  1. 基于检测
  2. 基于聚类
  3. 基于回归

在面对高密度人群时,前两种方法都傻了眼,所以,回归赛高。

整个骨干流程图如下:

说人话就是:先进行图片分块,然后提取每块的特征,然后通过随机森林和聚类的方法得到预测的标签,接着估计每块的密度,然后计算全局。

本博客讲述流程:随机森林----聚类模型预测----密度估计----更具鲁棒性的模型----半自动训练

**

一、随机森林

**

目的:分类,应用多棵由粗到精通的树,在每一个叶子节点训练一个分类函数,将patch中的特征进行分类,使得最后每一个叶子节点里的特征都比较 “纯”。

一个定义 : lable L 作为为一组位移向量,这些向量从patch 的中心出发,指向该patch内所有目标的位置P_j . 如下公式所示:

树形图如下:

采用随机森林带来一个很明显的优点,如论文中所说,It requires small memory space to build
and reserve the forest, as it contains only vector labels at its leaf nodes。即省内存,这样以便于有可能部署在一些嵌入式设备上。

来看看它具体是怎么分类的:
先把所有的样本集合set {(vi , li)} 都置于根节点,然后开始向下分类,分类根据是下面的阈值函数:


在每个节点 j ,随机的选取f_j (v) , f_j (v) and t_j 是特征向量V的测试函数,我们的目标是寻找一个函数f_j (v),使得样本被正确分类,这便是我们要求的 prediction function。
回归对象是向量的标签,这不同于求取位移向量和他们的空间分布—只有一个分裂标准(对于随机森林来说)不够。所以我们在不同的节点应用不同的分裂标准(上部分层和下部分层不一样)。

对于树的上部分层,prediction function是基于他们的空间分布信息,如下 :

H表示直方图(柱状图),是由这个点周围的目标位置信息计算而来的。

H0是表示节点处空间位置信息的直方图(Ground_truth),Hl 和 Hr 是代表该节点分割后左右子集的直方图,|| . ||是L2范数,这个函数的目标就是拟合图中的空间分布信息。

对于树的下部分层,prediction function的分类标准是基于类不确定度(信息熵的差值):

H(s) 是S中标签大小分布的信息熵,该函数的目标是使得每个叶子节点都更纯。即最后每个叶子节点中的标签几乎相同。

**

二、聚类模型预测

**

此刻,每个叶子节点里的标签都比较纯了,对其中的不同标签类型(视为不同簇)进行计数,只取其中最大的簇,其余视为噪声。将最大的簇应用K聚类,得到K个位移向量,这K个向量就代表了这个patch 的特征。所以,显而易见,占用memory很少。

此时,每棵树的叶子节点里都是对应的位移向量,那么,如何由这些向量生成密度图尼?咱们开始进行密度估计吧。

**

三、密度估计

**

上述生成的这些位移向量,都有一个投票权,即一个叶子节点里有K张票(每个节点的这个K不一样),他们投出来的,是每个patch的密度图。

每一票都是通过高斯核进行一个过滤,即最后将所有位移向量转换为密度图。(详细操作与高斯核的卷积有关)

但是,不能直接用刚才产生的密度图作为最后的结果,因为这个误差有点大。这个误差是因为错误的预测产生的,用NMS(非极大值抑制)也解决不了,所以,本文引用了一种方法:

neighbour smoothing :通过预估邻近像素点的值来增加该点预测的准确度,因为图片大都是平滑过渡的。
这样,便有效减少了预测失误的问题。

然后,是每个patch 里的密度图的生成过程:


求和之后就是总的密度图了:

由上诉两个式子可以知道,采用的都是平均算法,这也一定程度上抑制了误差。

**

更具鲁棒性的模型

**

以前都是生成2种模型,分别检测高低密度,现在,我们想要基于图片整体,生成一个密度覆盖范围更广的检测器。

**该检测器有3个提升:

  1. increasing accuracy with a crowdedness prior —高准确度
  2. speeding up estimation by an effective forest reduction method —更快计数
  3. decreasing annotation work by semi-automatic training —省钱省力**

提升准确度:

一个概念:先验拥挤度prior—用于更加准确的预测下一个patch的密度。

让这个式子说人话就是:当前 patch 的预测人数 与 前一个patch的人数应该是有关联的(因为现实中,相邻patch之间的人数确实变化不太),这个关联就是:当前patch 的人数应该是前一个patch在密集场景情况下和非密集场景情况下的加权和。

c1 and c2 denote the crowded and non-crowded condition.
C1 and C2可以分开训练。

做到了在不增加计算成本的情况下,提高了模型准确度。

关于随机森林的提升

这个模型的速度,取决于用到的决策树的数量,以及采样步长(划分前的信息熵–划分后的信息熵。表示向纯度方向迈出的“步长”),数量多,步长小,速度就慢,但是准确度应该会有提升,所以,矛盾了。

解决方案: permutation of decision trees(排列组合决策树)

即减少决策树的类别数量,通过决策树的来回置换来减少森林面积。将原始森林划分为几个子森林(通常是4个),并在移动到下一个补丁时循环移动这些子森林。外表看起来森林面积不变。

每个patch的公式如下:

其中,T i,1是置换的第一个子森林。

半自动训练

即使到了2019,数据集也不见得那么富裕,所以2015更是活的艰苦。

该论文提出了一个方法来增大数据集,原话是这样的:synthesize training images from a large set of segmented human regions and the target scene background----合成、分割图片

这样的好处是节省了大量的人力财力,同时还创造了一些新的场景。

分割对象:PETS2009-S2 dataset which including 795 images with bounding-box annotations,

分割方式: the GrabCut method

终于写完了,,,手都打软了。。。

如果你也对人群计数感兴趣的话,不妨关注走一波?(虽然我菜,但是我积极啊),后期会继续更新相关论文。

人群计数:COUNT Forest: CO-voting Uncertain Number of Targets using Random Forest for Crowd Density相关推荐

  1. 人群计数最全代码、数据、论文合集

    2021.11.19更新: 人群计数 /Crowd Counting Rethinking Counting and Localization in Crowds:A Purely Point-Bas ...

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

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

  3. 图片人群计数模型代码运行指南

    PaperWithCode 八大数据集模型排名:https://paperswithcode.com/task/crowd-counting 搜索关键词 "人群计数"(crowd ...

  4. ICCV19 (Oral) | 基于贝叶斯损失函数的人群计数

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文作者:洪晓鹏 https://zhuanlan.zhihu.co ...

  5. 人群计数--Cross-scene Crowd Counting via Deep Convolutional Neural Networks

    Cross-scene Crowd Counting via Deep Convolutional Neural Networks CVPR2015 本文主要使用深度学习来完成跨场景人群计数 cros ...

  6. 人群计数--Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

    Single-Image Crowd Counting via Multi-Column Convolutional Neural Network CVPR2016 https://github.co ...

  7. 人群计数经典方法Density Map Estimation,密度图估计

    (3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regressi ...

  8. 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets

    Crowd Counting数据集汇总 视频监控=video surveillance https://github.com/gjy3035/Awesome-Crowd-Counting/blob/m ...

  9. 人群计数 MCNN 解析 PGCNet

    人群计数研究的发展 传统的:直接回归计数法--- input(图片)-->outout(人数)  参考 目前深度学习主流的: input(图片)-->output(密度图)-->估计 ...

最新文章

  1. 网络嗅探软件全接触(1)
  2. 安装cuda时出现 non 7z achive. 报错解决办法 安装文件损坏
  3. 移动端网页打印代码_WEB移动端怎么是实现Console.log打印
  4. Scala模式匹配:条件守卫
  5. [洛谷P2124] 奶牛美容
  6. Java:用POI读写Excel
  7. 庐山真面-Oxite的HelloWorld
  8. AtCoder ZONe Energy Programming Contest 题解
  9. JS面向对象——Object对象的方法补充、原型继承关系图
  10. java seek指针 换行符_Java网络编程探究|乐字节
  11. CNN实操记录(goal:一日一更新)
  12. MySQL入门之创建、修改、删除、查看数据库
  13. 基础IO(文件接口、安装内核源码超详细步骤图解、静态库与动态库)
  14. 天津大学计算机专硕_「20考研」计算机考研专业课变动汇总
  15. ffmpeg 转换VC工具已经可以生成工程文件
  16. tensorboard 可视化 projector
  17. html页面设置document类型,htmldocument类型
  18. 笔记本双系统Windows10/Deepin15.11体验记录【Deepin15.11体验记录】第一天
  19. 吴恩达深度学习总结(15)
  20. Banner图片轮播器实现ViewPager图片切换效果及下方小圆点

热门文章

  1. 创新计算机学校杨,丰都【****的职高】_重庆市涪陵创新计算机学校
  2. oracle中的itl
  3. 非科班、无实习、拿到腾讯华为提前批offer,C++学习路线及项目分享
  4. 前端导出word(包含图表)
  5. 研究:武功与性欲的关系
  6. 第三方SnapChat客户端遭入侵,上万张、近13G私照泄露
  7. 搜索引擎优化(seo)有哪些需要注意的细节?从图片、文章、网站内容这三方面来告诉你
  8. Keyboard Ghosting Explained!(什么是键盘冲突)
  9. 在含量中php是什么意思,ar测量是什么意思
  10. 微调电位器命名规则_vishay电阻命名规则知多少