人群计数之MCNN

笔者从CSDN平台迁移至简书:https://blog.csdn.net/Autism_/article/details/84112223(CSDN链接)

人群计数: 目的在于统计场景中的人群数目。人群计数在视频监控、交通监测、公共安全、城市规划以及建设智能商超等方面有着广泛应用,如监控某个人群易聚集区域的人群数目,防止由于人群密度过大,导致人群失控发生踩踏等事件。

Multi-column Convolutional Neural Network:本文章是使用深度学习中的卷积神经网络实现人群计数。上海科技大学Yingying Zhang等人将多列卷积神经网络应用于单张图像人群计数问题上(Single-Image Crowd Counting via Multi-Column Convolutional Neural Network)。

论文:Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

官方代码:official code

(由于笔者接触这个人群计数任务时的第一篇论文就是MCNN的,因此在这里选择这篇文章来讲述。而关于这个任务,在此之前也有不少论文,在此之后也是刷得很厉害,有很多更好的模型)

笔者复现代码(Tensorflow version):my code


一、人群计数方法分类

1 基于目标检测的方法 这类方法就是通过对图像上每个行人或这人头进行定位与识别,再根绝结果统计人数。优点在于可以做到准确的行人或者人头位置,但缺点在于对高密度的人群图像来说,其检测效果差;

2)基于回归的方法:这类方法可以叫做人群数目估计,没有精确定位行人位置,而是对大概的人群数目给出个估计值;优点在于对高密度人群图像来说,其效果是比基于目标检测方法的好,但缺点没有精确的定位。

        基于回归的方法分为两类:

        1)直接回归:如在深度学习的卷积神经网络中输入人群图像,直接输出一个人群数目估计值;

        2)密度图回归:密度图回归的意思是(已知的数据集是这样的,每一张人群图像中的每个人头所在近似中心位置的坐标作为人工标注),根据已知的每个人头位置,再估计该位置所在人头的大小,这样可以得到该人头的覆盖区域,通过一种方法(MCNN中采用几何自适应高斯核),将该区域转化为该区域内可能为人头的概率,该区域概率和为1(或者表示每个像素可能有多少个人),最终我们可以得到一张人群密度图。

二、密度图如何表示

        密度图表示经过两个步骤:人群图像标注表示,人群图像标注转换为人群密度图(这里的描述语言是自己编的,为了更易于理解)

1. 人群图像标注表示

        如图1所示,19*19大小方格表示人群图像(绿色外层方格表示坐标),该图像包含3个人,以左上角为坐标原点,坐标(3, 6), (12, 9), (17, 15)表示标注的人头中心点位置(在图1中表示为方格对应坐标的值为1)

图1 人群图像标注表示

2. 人群密度图转换表示(人群图像标注转换为人群密度图)

        假设在图像中每个人头大小都是3*3像素(当然这只是示例假设,MCNN中用几何自适应高斯核来估计图像中每个人头的大小并转换为密度图,这是后话了,这里我们想讲述的是什么是密度图,以及转换为密度图的方法之一

图2 人群密度图表示

         图2就是我们作为卷积神经网络进行人群计数的Ground Truth,各个人头区域的概率之和为1,得到对完整人群图像的密度图后,对其进行积分(求和)就是人群数目。

图3 Matlab fspecial('gaussian',[3,3],0.3)函数所得二维高斯核,其中[3,3]表示参数二维高斯核大小,0.3表示参数二维高斯核标准差\sigma


图4 人群密度图示例

        图4是人群图像及其密度图的示例,用热力图来显示人群密度图就是右侧对应的Ground Truth。

三、MCNN

        这里我们先来描述MCNN具体的标签密度图生成方法,再来描述MCNN的网络结构和损失函数、训练方式、评价指标。

1. 标签密度图生成方法

        步骤ax_{i} 表示人头中心坐标位置,用\delta (x-x_{i} )函数表示,对于一张有N个人头标注的人群图像来说可以表示为H(x)函数(其实得到的就是如图1的人群图像标注表示):

H(x)=\sum_{i=1}^N\delta (x-x_{i} )

        步骤b.  转化为连续密度函数,其中G_{\sigma _{i}} 所表示的就是高斯核,\sigma _{i}为高斯核标准差,\beta 是个定值,论文里取0.3,\bar{d} ^i=\frac{1}{k}\sum\nolimits_{k}^jd_{j}^i  表示图像中该人头距离其k邻近人头的欧式距离和的平均,\bar{d} ^i也是用于表示估计的人头大小(在图2人群密度图表示的时候,使用二维高斯核时,需要设定高斯核大小用以表示估计的人头大小):

F(x)=\sum_{a}^b \delta (x-x_{i} )\ast G_{\sigma _{i} } ,    \sigma _{i} = \beta \bar{d} ^i

        若人群分布密集,所计算的\bar{d} ^i值能够相对准确用于估计人头大小;但若人群分布稀疏,其k近邻人头距离过远,\bar{d} ^i值就会非常大,人头估计误差大,因此将\bar{d} ^i限制在100像素内。

2. MCNN网络结构

        MCNN网络结构如下图5所示,使用的是多列卷积神经网络。

图5 MCNN网络结构

        MCNN的多列主要体使用了三列卷积神经网络,表示为

        L列(使用大尺度卷积核:( 9\times9), (7\times7), (7\times7), (7\times7)

        M列(使用中等尺度卷积核: ( 7\times7), (5\times5), (5\times5), (5\times5)), 

        S列(使用小尺度卷积核: ( 5\times5), (3\times3), (3\times3), (3\times3)

        其目的在于使用多种尺度的卷积核来适应不同尺度的人头大小。最后将L,M,S三列卷积神经网络进行合并,得到网络生成的密度图。同时MCNN也是比较轻量级的,网络参数少。

        从图5中可观察到,MCNN实际的下采样l累积系数为4,因此网络输出的密度图也是原图宽高的1/4,在制作其作为训练数据的标签密度图时,除了要制作为原图1/4的密度图外,几何自适应高斯核相关的的限制,也要相应为1/4,将限制在100/4=25个像素之内。

3. 损失函数

        MCNN采用的如下公式的损失函数,L2范数的平方:

L(\Theta )=\frac{1}{2N} \sum_{i=1}^N \vert \vert F(X_{i};\Theta ) -F_{i} \vert  \vert _{2}^2

4. 训练方式

        在训练方式主要想提的是:

        1)MCNN需要先对三个单列神经网络进行预训练,再合并训练才能达到更好的效果其数据处理的方式;

        2)MCNN对原始数据集的每张训练集图像随机裁剪9次,得到9张图像子块,每个图像子块为原图的1/4。

        (这样的图像子块训练有其优点a. 图像尺寸变小,加快网络训练速度;b. 通过局部图像块的训练完成对完整图像的训练,同样能达到很好的效果)

5. 评价指标

MCNN所采用的评价指标如下,平均绝对误差MAE与均方误差MSE(实际应该是均方根误差RMSE):

 MAE=\frac{1}{N} \sum_{i=1}^N \vert z_{i} - \hat{z} _{i}\vert      MSE=\sqrt{\frac{1}{N} \sum_{i=1}^N ( z_{i} - \hat{z} _{i})^2 }

关于用于实验的数据集、及实验结果这里暂时不提及。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容