人群密度识别 - [SANet] - [ECCV2018]

1.介绍

近年来CNN方法取得了很好的效果,使用不同大小滤波器的多尺度结构,来处理图片中的人像大小变化,其良好的效果说明多尺度表达很有价值。高分辨率密度图能包含更多信息。

现有方法中有两个缺点。多列结构的多尺度表达,使用几个子网络提取特征,但是尺度多样性被子网络数目限制。另一方面大多方法使用了欧式距离损失函数,这就包含了像素之间互相独立的假设,导致生成图像模糊,CP-CNN方法使用了对抗损失,但是密度图几乎没有什么高阶语义信息,额外的判别器网络增加了计算负担。为了解决这两个问题,作者提出了SANet,结构如图1所示,收到图像识别领域的Incenption结构启发,使用了尺度聚合模块提高表达能力和尺度多样性,解码器由卷积和转置卷积组成,可以生成与输入图片相同尺寸的密度图,使用欧式损失函数和局部一致性损失的结合。局部一致性由SSIM计算,衡量生成的和真实的密度图之间的一致性,消耗低,效果好。

使用了IN层,解决梯度消失问题,但是基于patch的模型,得到了非常差的效果,由于patch和原图统计特征上存在差异。因此使用了简单有效的patch训练和测试策略,减小patch和原图的统计特征差异。

  • 提出了新型网络
  • 解决了引入IN带来的统计差异问题
  • 提出了新的损失函数
  • state-of-art效果

2.相关工作

暂不详述

3.本文方法SANet

3.1结构

总体结构:
整体结构
着眼于多尺度特征表达,高分辨率密度图

由两部分组成,feature map encoder (FME) and density map estimator (DME)。FME聚合提取出的多尺度特征,DME融合特征生成高分辨率密度图。

FME
提出了特征聚合模块打破不同列之间的独立,通过cancat操作,如图所示
concat
这个模块可以拓展到任意数量的分支,本文使用的是1 × 1, 3 × 3, 5 × 5, 7 × 7四个分支,1 × 1是为了保留上一层的特征尺度,覆盖小目标,其他的感知野较大。这四个分支的输出channel数是一样的。在3,5,7前面增加了1卷积减少一半的特征维度(使用1×1卷积可以特征降维,增加非线性等,参考博客)。这些用于减少维度的1×1的层在第一个聚合模块中被移除。每个卷积层后面跟了一个ReLU。

FME是使用尺寸聚合模块stack得到,每个模块哦湖面有2*2最大池化,这个结构指数级的增加了特征可能的结合形式,增强了表达能力和尺度多样性。本文堆叠了4个模块,输出特征图的尺寸是1/8相较于输入。直觉上,FME可能代表一个不同大小感受域的集成,这个集成能捕捉到不同尺度的人像,有利于人群密度估计。

DME
尽管人群密度估计方法考虑到了空间信息,但是大多数输出的密度图分辨率低,丢失了大量细节。为了生成高分辨率的密度图,我们使用了和CP-CNN类似但更深的效果提升结构。DME由一系列卷积和转置卷积组成,使用4个卷积来逐步提升特征图的细节。三个转置卷积用来修复空间分辨率,每个把尺寸增加2倍(不确定是不是用通过加0的fractional strided conv)。每个卷积和转置卷积后跟一个ReLU。然后用1×1卷积层估计每个位置的密度值,由于每个位置的值都是非负的,应用了一个ReLU激活在最后一层卷积。最后DME生成和输入同尺寸的高分辨率的密度图。可以提供更好的空间信息来改善特征学习。

规范化层
我们观测到梯度消失的问题,导致训练过程中把DME和FME结合时不收敛。尝试使用BN和IN解决这个问题(译者加:BN和IN是常用的方法,随着网络层数加深,非线性部分如sigmoid或relu的输入容易向极大或极小靠拢,导致梯度越来越小。BN是把每一层的输入都强制转换为正态分布,从而使梯度不至于消失,IN是把每张图片进行规范化),但是得到了更差的结果,当使用BN会由于小batchsize产生不稳定的统计特征。最终使用了IN层,使用当前batch中每个例子的统计特征。然而用小patch训练的模型测试整张图时得到了糟糕的结果。应该是由于统计差异引起的(译者加:机器学习中一个重要的假设就是训练和测试集遵循iid,独立同分布)。考虑到最后一个1×1卷积层和IN层,对于一个d维的向量,输出是
公式1
其中w和b是卷积层的参数,r和B是IN层的参数,u和delta2是输入的均值和方差,输出是被IN层正则化的向量的加权组合。因此对于特征的量级很敏感(不太明白)。但是文章发现delta2的偏差相对比较大再某些特征维度中,当输入patch或原图时。偏差被平方根和倒数放大,最终导致错误的密度估计值。由于使用patch训练网络是必要的,考虑到速度和数据增强,文章使用了一种简单有效的patch训练和测试策略解决了统计差异的问题。

3.2损失函数

把SSIM和欧式距离结合。
使用SSIM衡量估计密度图和真实值之间的一致性/相似性,计算三个局部统计值,均值方差协方差。SSIM的值从-1到1,两个图片相同时值为1。使用11×11的正则化高斯核函数标准差维1.5来估计局部统计。使用卷积层实现,设定权重不变。这是一个类似于卷积的操作。SSIM使用如下方式计算
SSIM
C1和C2是小的常量,防止分母出现0。
局部一致性损失函数是
局部一致性损失
LC 衡量整张图片的一致性损失。
总的loss函数由两部分加权得到,LC 的系数为0.001.

4.实现细节

可以端到端进行训练

4.1训练

训练过程中,随机裁剪1/4原图大小的patch,随机翻转进行增强。标注位于行人的头部中间,密度图真实值的生成。使用了固定的高斯核函数参数。
训练从随机化参数开始,训练参数:Adam,1e-5,这样比带有动量的SGD收敛更快。

4.2 评价

由于IN层的统计差异问题,训练和测试输入需要保持一致。把每个测试样本裁剪为1/4大小,由50%的重叠(这个50%不太明白) 。对重叠部分的像素,只保留距离中心最近的密度值(不明白为什么既然只取一个值,还要有50%的重叠)。因为patch的中心部分,有更充足的邻域信息以确保准确的估计。
人群计数使用MAE和MSE评价,大体上,MAE衡量准确度,MSE衡量鲁棒性。

5.实验

5.1数据集

ShanghaiTech,UCF_CC_50,WorldExpo’10,UCSD
是state-of-art的效果

5.2对照实验

MCNN
FME
MCNN+DME
FME+DME

  • IN层有助于提升,防止陷入局部最小值
  • 测试中用patch比原图效果更好
  • 损失函数中局部一致性的加入,提高了准确性和鲁棒性,降低了对IN层带来的统计差异的敏感性。
  • 参数较少
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值