人群计数主流创新方向梳理

#「持之以恒」挑战赛-30天技术创作养成记!#

Crowd counting的定义:Crowd counting is known as technique to count or estimate the total crowd present in in an image or a video stream.

母任务:The goal of Object Counting is to count the number of object instances in a single image or video sequence.应用领域 It has many real-world applications such as surveillance, microbiology, crowdedness estimation, product counting, and traffic flow monitoring.

创新方向

寻找和建立适应video视频的 crowd counting的模型。(能做出这个,总创新点工作量的50%就有了,——这是毕业论文的最关键点!只要能做出这个就有了压舱石了,毕业就稳了——自己收集的、满足高质量条件的 自研数据集+自己做数据标注+数据预处理上的创新,创新点的25%就有了,把现在市面上最牛逼的模型改成能适应video,能在video下做计数,创新点就已经妥妥的了目前绝大多数人群计数的数据集都是针对照片做计数--大多数的这个模型用的数据集就是我列的那九个,只有一个是video,7个都是静态离散的照片做计数。——他们在图片的crowd counting上做的花活、trick、模型结构创新我搬三四个过来,博采众长--把他们的这些模型创新的优点第一次引入进video这个领域,并把他们的劣势地方做一点优化和改进,选出score最高的那个以前别人没在video上用过,我第一个用了,并且用了很多trick让模型最佳适配与于这个场景做了最佳的适配,我这也算创新了—(P2PNet、CSRNet、SANet)—,做——这些照片之间是毫不相关的,可能这张是某车站人群的照片,下一张是某广场的人群照片。但是我们做的任务是收集某购物街10分钟的录像,统计这个10分钟内出现在镜头里人有多少,这里面除了计数,追踪同一个人,还要对比不同画面出现人的相似度,最后去重,最后统计出走过去有多少人。从每帧的密度分析和人数统计变成video的人流量分析。(做这块的论文5篇:https://github.com/gjy3035/Awesome-Crowd-Counting/blob/master/src/Video.md)

用GAN对收集来的video做数据增强,生成更多的录像数据;用GAN的有三篇文章,你看看他们在模型的哪个位置,把GAN给引进来了,用的GAN的什么思想,解决的什么问题?

提供一个高质量的(比如:覆盖不同光照、天气下的人群计数录像),规模更大的video crowd counting数据集。

各司其职、分层营业——下列模型并行,最后做融合,所有的花哨技术全堆上去(1)detection用于识别出距离镜头近的位置的这些头——把最先进的detection技术拿过来,比如YOLO-v7,干本来该干的事,(2)距离镜头远的位置用 density estimation估计出来的这个人头数,(3)语义分割究竟起的什么作用,我还没看出来--把最先进的segmentation的方法拿过来干该干的事——结合其他方向的新潮花哨技术和trick:结合小目标检测(human pose的模型),语义分割,显著性检测,(问题可能在于,模型参数过多,数据量不足以训练好模型,导致泛华能力差,训练集过拟合,测试集score低与同类模型,)

object countin(数其他东西)方向的技术可以借鉴过来

引入花哨时髦的技术,让模型效果变得更好:attention transformer bert系列模型的东西你也可以拿来用

如果有可能的话,向着(1)模型蒸馏、剪枝、轻量级(Light-weight Model)这个方向发展(因为人家是部署到摄像头这种算力比较差的设备上)——【深眼有轻量化模型的论文领读,看完收获会很大】,尽可能(2)加速压缩模型预测时间,甚至做到具备实时性(Real-Time),或者通过消融实验,把一些对于score提高不多,但是是的预测时间大大变高组件移除,又或者选一些精度有所降低,但是使得模型大小变小很多或者预测时间变少很多。

标注方式,标签生成,网络设计,loss设计,都可以做创新

寻找和建立最适合中密度、低密度人流量统计的模型,在保证准确率达标的情况下,把模型餐数量、预测时间和显卡内存占用(计算资源的消耗)降下来。现在绝大多数模型都是针对人群极度密集的数据集而设计的。高密度人群计数的模型,往往模型的参数更多、模型更为复杂,这些成本的消耗对于公园、商圈这个场景的人流量统计都是没必要的。(有可能detection based method在我们的场景里效果更好)

寻找适合“”平视“”这个角度拍摄录像的“人群计数”模型:目前绝大多数的人群图片都是大概离地2米(甚至更高)向下俯视拍出的照片或者录像。因为拿得到或者学校的监控录像),但是我们做counting的场景是,在购物步行街或者公园,一台摄像机从地面1.7m左右的这个位置拍摄的,视角是平视。照片里的人的形状是和俯视拍出的人的形状是不同的。我们要挑选或者提出一种适应这个拍摄角度的模型。

各种容易造成识别错误的场景的数据,保证别识别错。下列场景可能,是人没算数,不是人却被算数了

  1. 一个雨伞一个人,该识别出来,没识别出来Umbrellas. Not a head but still a person.

  2. 人影子,不是人,识别出来是人Shadows. Around noon there can be some strong shadows resembling people.

  3. 冬季天黑,没有这个场景的数据。Winter Darkness. It gets much darker much sooner in November and December. Yet the model was trained predominantly with images of people in daylight.

  4. 冬季的雪吗,数据里没有这个场景Winter Snow. Training data never had snow, and now we have mistakes like this:

图片录像从二维走向三维,收集RGBD图(但是相机估计搞不到,搞到了也挺贵的)(二手的300块,一手的500到3000块)

还可以根据图像去识别,Pedestrian Attribute Recognition人是男的、女的;年龄上是儿童、青年、老年,提供人流量的用户画像,pose-estimation姿态估计—判断这个餐馆排队的人有多少,和路过的人区分开——这样如果发现这个分店平均排队人数是30人,另一个是10人,我扩大店面面积的肯定是30人那个店

别人怎么做创新?

Scale variation尺度变化,同一张图不同位置,人头的大小不同(近镜头近,远小);不同的图,人头的大小也不同

2016_MCNN:卷积神经网络,不同卷积核大小的CNN网络并行,然后融合

2018_CSRNet:(1)通过Dilated CNN在不减少输入size的情况,扩大了感受野(2)引入更深的网络提取特征VGG-16

2017_SwitchCNN :针对图中不同位置的人群密度不同,用一个switch layer将每个patch分成三类密度等级,高中低。将patch分配到所属的那个密度等级对应的网络中去couting出图中人数

2018_IG_CNN:Switch-CNN的升级版,不人为的设定密度等级,而是采用模型增长Growing Network思想,去自动的划分模型等级。过程类似于二叉树

2016_CrowdNet:两个网络并行,一个Deep Network捕捉距离镜头近的人脸信息(high-level semantic information),一个Shallow Network用于捕捉距离镜头远的很小的那种人头(head blob)(low-level features)

2019_SAANet:(1)多个density map配合多个attention mask做综合(2)优化了损失函数,使用 scale-aware loss,使得网络backbone前面的层产生的density map多注意小人头,backbone靠后面的层产生的density map多注意大人头(3)为了解决使用geometry-adaptive 方法,使得近处分散的人头偏大的问题,近处和远处采用两套确定人头半径的方法(4)用来attention head (5)上采样采用bilinear而不是反池化

2017_MSCNN :因为多列网络结构的计算量很大,所以作者希望在不使用多列结构的前提下,同时捕捉到多尺度特征,用的叫multi-scale blob(网络结构我没看懂)

2018_SANet :使用了类似inception架构的模块,每个卷积模块并行者多个卷积核大小不同的卷积,用这些并行卷积块提取多尺度特征,最后通过反卷积得到密度图

2019_AutoScale:将图中人群过于墨迹的部分取出来,自动学习一个放大的比例,将这一部分放大到和其他部分接近的程度,一起再去做counting

2019_L2SM:把远处的密集的人群图片放大来看,着先把预测的整张图的density map去分块,然后每一块根据平均密度去判别密度等级,对于高密度的块,进行放大,重新计算density map,再缩小了拼回去

2019_PGCNet:用变scale的gaussian blur+fix kernel conv去实现,这个变kernel的gaussian blur是基于perspective map来确定的,

2019_DSSINet:(1)CNN不同深度的层包含的信息不同,浅层的feature包含更多结构化的信息,而深层的feature包含更多语义的信息,这两者是可以互补的,U-Net这种直接把不同层的feature连起来,算是利用两者互补的一种方式,(2)用条件随机场CRF去融合不同层之间的feature(3)改进了SSIM这个loss,提出了Dilation和SSIM结合的dilated Multiscale Structural Similarity loss,即DMS-SSIM

2020_PDANet:(1)络利用注意力,金字塔尺度特征和两个分支解码器模块来进行密度感知人群计数。(2)用专用的密度感知解码器DAD解决了不同图像之间拥挤程度的变化(3)将低拥挤密度图和高拥挤密度图的总和视为空间注意力来生成总体密度图

引入attention和transformer的模型

2019_SAANet:有用attention head 将backbone输出的C通道的feature map转化为3通道(Q K V)的feature map

2019_SFANet :(1)模仿U-net的结构,先用VGG16一路下采样,上采样分为两支,一支attention Map Path,一支density map path(2)制作ground truth的时候使用了segmentation mask

2019_ADCrowdNet:通过attention去过滤掉复杂背景的影响,让density map估计的网络focus on在人群区域

2019_CAN:用了用attention去检测feature中的细节信息来表示图中人头大小的不同。

2019_RANet :用self-attention做特征融合,将feature map上不同位置的feature 加权平均融合起来

2018_DecideNet:用了attention

2019_Scale-Aware Attention :基于尺度感知的注意力网络,通过全局与局部注意力网络实现密集人群计数评估

2019_Sindagi:使用了注意力网络

2018_Kang :使用了注意力

2020_PDANet:使用了注意力

ground truth/density map的制作方式

2019_SAANet:远处:adaptive-geometry的counting ground truth的制作。近处:如果人头能检测到,有另行定义的公式

2019_SFANet:segmentation的ground truth的制作:对上面这个counting ground truth再进行高斯模糊

2019_PSDDN:(1)直接用pointd点标注来作ground truth;(2)利用最近邻人头间距来初始化box形式的ground truth;(3)ground truth updating然后再在训练过程中不断优化ground truth,来实现train

2019_Content-aware:提出一种新的ground truth的制作方法(1)用暴力搜索brute-force去找到最近的头,找出与最近邻的距离,用来弥补用k-d tree可能找到的不是最近的问题(2)通过Chan-Vese的轮廓生长方法,确定head的轮廓

2019_Adaptive_density_map:让density map的generation的过程变得可以learning,从而随着模型地训练,去不断微调density map,使得产生更为合理的density map.(1)采用一个refine density map的模块去在训练过程种微调density map(2)采用self-attention的model去从point annotation自适应地产生density map

2019_DADNet:从MCNN中获取多列的思想,从CSRNet中获取了dilated conv的思想,再加上Deformable Conv

损失函数的设计

一般就是多个损失函数加在一起

2019_SAANet:scale-aware loss尺度感知损失和MSE loss

2019_PSDDN:locally-constrained regression loss,

2018_ACSCP:合成的Loss 1,CSCP loss

BCE的分类loss,bounding box的regression loss;一个BCE的分类loss

2019_DSSINet:改进了SSIM这个loss,提出了Dilation和SSIM结合的dilated Multiscale Structural Similarity loss,即DMS-SSIM

2019_S-DCNet:loss采用了两种约束,一种是分类的cross-entropy的loss,一种是预测人数的L1 loss,

2019_SPANet:(1)提出了Maximum Excess over Pixels,即MEP loss(2)提出了一套不基于residual map,只是基于pred density map的迭代的方案

2018_SaCNN:引入了两个损失函数来联合地优化模型,一个是密度图损失,一个是相对计数损失

2021Generalized Loss Function:广义损失函数

其他模型创新

其他模型:引入attention和transformer;引入GAN,使用adversial loss去约束,使得density map不那么blur;引入Curriculum Learning 渐进式学习;引入无监督的方法训练auto-encoder模型;引入条件随机场去融合features

  2018_CSRNet:引入空洞卷积Dilated Convolution

  2017_Spatiotemporal:双向ConvLSTM模型

  2017_CP-CNN :使用了金字塔卷积

  2018_SANet:使用了Inception架构的模块

  2019_GWTA_CCNN:改进了基于WTA的autoencoder思想,提出了基于GWTA的autoencoder方法

  2019_AFN:利用条件随机场CRF的迭代更新机制,去实现不同层之间的feature的融合

  2019_Bayesian_loss:贝叶斯统计的知识引入

  2015_Liu:基于高斯过程的贝叶斯模型

  2019_PSDDN:使用了Curriculum learning。

  2019_SGANet:采用Inception-v3作为backbone,配上一个分割预测分支以及用Curriculum learning (CL),从简单到难地学习。

  2018_ACSCP:用了GAN,采用adversial loss去约束

  2017_CP-CNN :使用了adversarial loss,用生成对抗网络(generative adversarial net, GAN)[8]来克服欧氏距离损失函数的不足。

其他任务来辅助counting做:引入segmentation的方法;引入detection的方法;(把最新的技术拿过来用比如yolo-v7)

  2019_MANet:五种segmentation的mask应用于counting

  2019_-Focus for free:就是把segmentation,couting和classification三个任务去融合,利用segmentation为couting提供spatial attention,利用classification为counting提供channel attention,最终为了促进counting的精度。

  2017Cascaded-MTL:整个模型有两个子任务Two sub tasks: 一个是进行人数分类crowd count classification and一个是密度图估计 density map estimation。

  2018DecideNet:把已有的新技术并行着用,detection、regression method、attention,最后做融合(1)在人群密度小的时候,基于检测的方法效果更好。(2)在人群密度较大的时候,基于回归方法的效果比较好。 Quality net在中间调和 RegNet和DetNet

  2015_Cross-Scene:一个模型同时做两个任务,交替回归两个数字,该图像块的人群密度和人群总数。模型输出人群密度图+人数总数。

  2017_Zhao:基于语义分割框架 FCN来做计数

不好分类

2021_P2PNet:抛弃掉density map和bounding box这两个中间步骤,直接去预测人头所在的位置和概率值

2021_CCTrans :based on Vision Transformer;多尺度感受野回归头(不知道这是啥);优化三个损失函数

2019_MANet:研究了5种方式将segmentation的mask作用于counting,backbone用的scale aware layer,制作ground truth的过程中引入了mask。他提出了5种结构,对比了结果

2019_PSDDN :(1)用pointd点标注来作ground truth(2)resnet101去掉最后的全连接层,(resnet101是4个block串联的),拿到Resblock3和Resblkock4生成的feature map 然后处理一下,融合在一起,得到prediction(3)损失函数用了多种:BCE的分类loss,bounding box的regression loss(4)Ground Truth Updating(没看懂)(5)Curriculum Learning 渐进式学习,先学简单的,再学难的

2019_GWTA_CCNN:无监督+监督的方法,6层的神经网络,前面4层用无监督的方法训练,最后两层用监督方法训练,无监督的方法是改进了基于WTA的autoencoder思想,提出了基于GWTA的autoencoder方法

2018_ACSCP:(1)针对产生的density map低分辨的问题,采用了U-net的结构去upsample出与输入同分辨的density map(2)针对产生的density map比较blur的问题,采用adversial loss去约束(3)对于不同密度区域预测不连续的问题,采用了Cross-scale consistency的约束,即不同密度的patch产生的density map拼起来和整个图产生的density map要尽量一致

2019_PACNN:提出了如何计算Perspective map,以及如何将perspective map跟density map评估模型相结合,去获得更好的density map

2019_CAN:将人头大小不同这个信息反映到feature中,而不是使用不同kernel size的卷积核去实现不同的感受野。利用类似于显著性检测的方法,检测出feature中的细节信息作为attention,去优化feature,最终产生融合了scale信息的context-aware feature的

2019_RRSP:去学习2张图片之间的差异,来让模型获得更好的泛化能力,

2019_S-DCNet:(1)将一张图切成方形碎片,如果每个碎片的人数超过20人就会被分成四个正方形,直到每个patch的人数不大于20人,然后每个patch预测里面的人数,(2)VGG16作为backbone

2019_CCCNet:不仅仅是要数出图片中的人,还要判断不同姿态的人分别是多少人,比如本文就提出了一个数据集,其中将人分成了2类,站着的和坐着的

2019_DACC:运用风格迁移的思想,structure跟texture分离的思想,结合structure跟texture去重建,以求获得更好的风格迁移效果,然后在对synthetic风格迁移到real上之后,再进行普通的counting的training

2021_Cross-Modal Collaborative:RGBT图的热度图也引入进crowd counting

2018_SaCNN:在保证相同检测精度的同时,大大提升了速度,大大降低了网络结构的复杂程度。(1)单列模型,单一的网络结构,用小尺寸卷积核提取固定的特征用于之后不同卷积核的的训练(2)多尺度层共享了相同的低层次参数和特征表征,我们使得模型参数大大减少

2018_Liu:利用无监督的方法从没标记的数据集中学习

2021_Cross-View Cross-Scene:融合多角度视图下的照片

2017_Spatiotemporal:考虑时空信息和人群移动信息,双向ConvLSTM模型

2019_Sindagi:不同层级尺度的自顶向下与至底向上的特征融合、其中也融入注意机制

2017CP-CNN:上下文金字塔Contex Pyramid卷积神经网络计数模型。全局上下文估计器( global context estimator, GCE)和局部上下文估计器( local context estimator, LCE)分别提取图像的全局和局部上下文信息,密度估计器(density map estimator, DME)沿用了 MCNN 的多列网络结构生成高维特征图,融合卷积神经网络(fusion-CNN, F-CNN)则将前 3 个部分的输出进行融合,生成密度图,F-CNN 使用了一系列小数步长卷积层帮助重建密度图的细节。

2018_ic-CNN:将得到的密度图由低分辨率(Low Resolution, LR)密度图逐步细化到高分辨率(High Resolution, HR)密度图

技术难点Challenge

(1)Scale variation尺度变化,包括人群尺度(场景变化密集程度变化)和头部大小。目前主要有两种解决方案:多尺度特征融合和多尺度密度图融合。通过融合不同层次的特征或密度图,可以在一定程度上缓解尺度变化。

(2)occlusion problem遮挡。目前的研究大多利用卷积神经网络强大的特征提取能力和学习能力来缓解这一困难。

(3)人群分布不均匀,个体分布不均匀,人群密度分布变化较大。两种解决方案:利用注意力机制和基于patch的处理,注意力机制使得模型更加关注拥挤的区域。其他方法就是将输入图像分成多个patch,分别处理不同的patch,从而缓解分布不均的问题。

(4)角度变化

(5)Other数据集小、背景噪声大、光照差异大等

人群计数的用处

使管理人员可以在客流高峰期增加工作人员,提高服务质量,进而增加销售;在空闲时减少工作人员,避免出现人员浪费。

通过对不同楼层和不同区域的客流量统计,可以使管理人员统计各个区域的吸引率和繁忙度,从而对铺位进行合理分布,提高销售量。

通过每天不断的客流统计,可以得出一天、一周、一月、一年的客流变化规律,使管理人员能对未来活动进行准确规划,确定时间、人力和库存订货量等。

通过客流量的对比,有效评估所举行的推广活动,对营销和促销投资回报进行有效评估。

通过对客流量的统计,可以客观决定柜台、商铺租金价位水平。

显示当前客流状态和变化趋势,对流量较大的区域采取预防突发事件的措施,并可实时观察商场当前的停留人数,从而对电力、维护人员及安防人员等进行合理调整,控制商场运做成本

商圈人流量统计,确定什么地方要开店,什么地方要关闭店铺,什么地方是人流量很大但是运营的不好才出现营业额不高

什么公园、公厕人流量大,应该放置更多的垃圾桶、更多人清扫、更多的体育健身设备、更多的修缮资源

public safety:韩国梨泰院拥挤踩踏、如2015年上海外滩踩踏事件,,人流量统计,人流量大于一个阈值,只出不进,防止踩踏

新冠疫情,social distance,人不能密集,可以数人数来确定是否密集

上海迪士尼、北京环球影城,每个游乐项目都会排队半小时、一小时,如果可以用监控摄像头数出每个时刻在排队的人数,放到公众号上,就会让人们避免跑了一大圈结果发现人这么多/可以让游玩人数少的项目多些人去玩,游玩人数多的项目避免很多人去排队

确定超市每个时间的逗留人数find the number of people inside the store at a particular hour (dwell time) and 确定超市每一个货架旁边逗留的人数,比如可乐逗留的人数多,体育用品逗留的人数少,就增加前者的面积,缩小后者的面积the number of people at various sections (groceries, beverages, etc) inside the retail store with the help of CCTV footages.

  防止人群骚乱、踩踏现象的发生,对非预期的人员汇聚进行预警

  城市规划urban planning

  1、公共安全管理:人群计数重中之重的用途就是用于公共视频监控,实时输出每个场景中的人数,对密度过高的场景进行及时报告,让管理者及时反应,及时疏导,以避免诸如14年底外滩踩踏事件的再次发生。

  2、公共空间设计:对机场候机楼、火车站、商场等公共建筑等现有公共场所进行人群分析,可以从人群安全和方便的角度揭示出场景设计中的重要缺陷。这些研究可以用于改进公共空间的设计,来更好地保证安全和方便人们的出行活动。

  3、数据收集分析:可用于收集信息并进行进一步分析与推论。例如,在零售业,人群计数可以用于衡量人们对商店中产品的感兴趣程度,并根据该信息选择适当的产品进行放置。同样,人群计数也可以用来测量在不同时间段排队的人员数量,来进行流量调控,以优化等待时间。

  4、虚拟仿真设计:可用于了解潜在现象,从而使我们能够建立能提供精确模拟的数学模型。这些数学模型可进一步用于各种应用的人群现象模拟,如电脑游戏,在电影场景中插入视觉效果、设计疏散计划。

  5、辅助其他视觉任务:在一些群体事件中搜查嫌疑人和受害者,比如爆炸,枪击等事故场景。人群计数技术可以辅助人脸检测/识别任务,来使这些任务更加准确,更好地定位罪犯。

  6、作为其他视觉任务的基础:在体育场馆、旅游景点、购物中心和机场等场所、为安保和安全目的广泛部署了大量监控摄像机来监控人群。然而,由于设计上的限制,传统的视频监控方法无法处理高密度人群情况。在这种情况下,我们可以利用专门为人群分析相关任务设计的算法,如行为分析,拥塞分析,异常检测,事件检测

猜你喜欢

转载自blog.csdn.net/Albert233333/article/details/130433190