Motivation:

  步态可被当作一种可用于识别的生物特征在刑侦或者安全场景发挥重要作用。但是现有的方法要么是使用步态模板(能量图与能量熵图等)导致时序信息丢失,要么是要求步态序列连续,导致灵活性差。这篇文章是将步态当成包含独立帧的集合,不要求帧的排列顺序甚至可以把不同场景下的视频帧整合在一起。

Method: 

  问题定义:给定一个有N个人的数据集$y_{i}, i \in 1,2,...,N$, 我们假定某个人的步态遮罩属于分布$\mathcal{P}_{i}$,这是个只与行人身份有关的量。因此,某个人的一个或者多个序列的所有遮罩可以视为$n$个剪影的集合$\mathcal{X}_{i}=\left\{x_{i}^{j} | j=1,2,...,n\right\}$。这里的$x_{i}^{j} \sim \mathcal{P}_{i}$。

  在前面这种假设下,我们通过三步解决步态识别任务,可以公式化为:

$f_{i}=H\left(G\left(F\left(\mathcal{X}_{i}\right)\right)\right)$

  这里的$F$是一个用来提取帧级特征的卷积神经网络。公式$G$是一个置换不变函数来将frame-level特征变成set level特征,具体是通过下面提到的$Set Pooling$来实现的。$H$则是从set-level特征中提取有区分力的表达$\mathcal{P}_{i}$,是通过$HPM$(水平金字塔映射)实现的。输入$\mathcal{X}_{i}$则是一个四维张量,也就是set维,通道维,高度,宽度。

  放一张网络框架图:

 Set Pooling:

  Set pooling的目的是将集合中的步态信息整合在一起,也就是$z=G(V)$,这里$z$表示set-level特征,$V=\left\{v^{j} | j=1,2, \ldots, n\right\}$表示frame-level特征。Set Pooling接收set作为输入,是一个排列不变函数,公式化为:

$G\left(\left\{v^{j} | j=1,2, \ldots, n\right\}\right)=G\left(\left\{v^{\pi(j)} | j=1,2, \ldots, n\right\}\right)$ 

这里的$\pi$是任何一种排列。因为现实场景下,人物步态遮罩数目是任意的,函数$G$应该能够处理任意任意基数的set。

1.统计函数:为了满足前面的要求也就是排列不变,数目容量可变,在set维使用统计函数是一个自然的选择。本文是使用了$max()$,$mean()$,$median()$三种。

2.联合函数:也就是前面三者的结合,可以分为两种:1)$G(\cdot)=\max (\cdot)+\operatorname{mean}(\cdot)+\operatorname{median}(\cdot)$,2)$G(\cdot)=1_{-} 1 \mathrm{C}(\operatorname{cat}(\max (\cdot), \operatorname{mean}(\cdot), \operatorname{median}(\cdot)))$。

这里cat表示的是通道维拼接,$1_{-} 1 C$表示1*1卷积。

  作者也使用了注意力机制来提高SP的表现,motivation是利用全局信息来学习元素级注意力图来修正frame-level特征。全局特征先通过左侧的统计函数获取,之后将它输入进$1*1$卷积层同原始特征图计算注意力。最终的set-level级特征是通过在修正后的全局特征上应用MAX得到。采用了残差结构来加速与稳定收敛。

水平金字塔映射(HPM):

  在行人重识别任务中经常把特征划分为水平块,这里也是借鉴了这个做法。$HPM$有4个不同尺寸能够帮助神经网络聚焦到不同的局部特征和全局特征。下图描述得比较清楚,假设共有$S$个尺寸,在s这个尺寸,特征在高度维上进行切分被分成了$2^{s-1}$块,所以总共是可以分成$\sum_{s=1}^{S} 2^{s-1}$块。接着利用全局池化($Global Pooling$)来将划分得到的$3D$块变成$1D$的$f^{\prime}$。最后对$f^{\prime}$使用不同的$FC$层做映射得到有区分力的$f$。

Multilayer Global Pipeline :

  简单来说越深的层有着越大的感受野,浅层关注的是局部和精细化特征,而深层关注全局和粗粒度特征。同理不同深度上SP得到的特征也是有这个特性的。为了利用不同深度的特征就提出了Multilayer Global Pipeline(MGP),和主pipline的流程是差不多的,就是把不同层的set-level特征加到MGP中。最后MGP也是通过前面的HPM划分为$\sum_{s=1}^{S} 2^{s-1}$个块。MGP后面的HPM和主pipline的HPM是不共享参数的。
  

 训练和测试:

  训练损失:网络的输出是$2 \times \sum_{s=1}^{S} 2^{s-1}$的d维向量。在这里使用的是批三元损失。使用了$p \times k$的采样策略。$p$是人物数,$k$是一批中每个人的样本数,这里的每个样本其实包含了从序列中采集的多个遮罩图。

  测试:给定查询$\mathcal{Q}$,步态识别的目标是从图库集合$\mathbb{C}$中查询获得该人物所有序列。测试时先将$\mathcal{Q}$输入到GaitSet产生多种尺寸的特征然后concatenate到一起获得最终表达$\mathcal{F}_{\mathcal{Q}}$。同理我们对图库中的样本$\mathcal{G}$也进行这个操作得到$\mathcal{F}_{\mathcal{G}}$。最后计算$\mathcal{F}_{\mathcal{Q}}$与每个$\mathcal{F}_{\mathcal{G}}$的欧式距离作比较计算Rank 1识别率。

实验:

  从作者的消融实验来看,其提出的几个模块是有效果的。带来效果比较突出的是使用set作为输入,以及使用独立FC和不同深度特征融合这几大点。

  作者做了几个有意思的实验,一个是遮罩数目对识别准确率的影响,可以看到1)精度随着轮廓数量的增加而单调增加;2)当样本包含25个以上轮廓时,精度接近最佳性能。这个数字与一个步态周期包含的帧数一致。

  下面的实验是将不同视角的遮罩放在一起组成查询(图库不变),比如第二行前几列是从两个相差一定角度间隔的序列中各采样5张,而最后一列Sigle view是从单个序列中选择10张。可以看到多视角的更好一点,这表明改模型能够利用多视角带来的平行以及垂直信息。

  作者同时还做了不同行走条件的影响,结果如下所示,表明增加遮罩数是可以带来效果提升的,即使是背包或者穿大衣这种带有噪声的遮罩。

步态识别《GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition》2018 CVPR的更多相关文章

  1. 记C# 调用虹软人脸识别 那些坑

    上一个东家是从事安防行业的,致力于人工智能领域,有自主人脸识别.步态识别的算法.C++同事比较称职有什么问题都可以第一时间反馈,并得到合理的处理,封装的DLL 是基于更高性能的GPU算法,可支持更多线 ...

  2. 基于安卓高仿how-old.net实现人脸识别估算年龄与性别

    前几段微软推出的大数据人脸识别年龄应用how-old.net在微博火了一把,它可以通过照片快速获得照片上人物的年龄,系统会对瞳孔.眼角.鼻子等27个“面部地标点"展开分析,进而得出你的“颜龄 ...

  3. Activity Recognition行为识别

    暑假听了computer vision的一个Summer School,里面Jason J. Corso讲了他们运用Low-Mid-High层次结构进行Video Understanding 和 Ac ...

  4. 第十八节、基于传统图像处理的目标检测与识别(HOG+SVM附代码)

    其实在深度学习中我们已经介绍了目标检测和目标识别的概念.为了照顾一些没有学过深度学习的童鞋,这里我重新说明一次:目标检测是用来确定图像上某个区域是否有我们要识别的对象,目标识别是用来判断图片上这个对象 ...

  5. face recognition[翻译][深度人脸识别:综述]

    这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...

  6. 使用OpenCV进行人脸识别

    不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ...

  7. 生物医学命名实体识别(BioNER)研究进展

    生物医学命名实体识别(BioNER)研究进展 最近把之前整理的一些生物医学命名实体识别(Biomedical Named Entity Recognition, BioNER)相关的论文做了一个Bio ...

  8. Appium自动化测试之微信h5元素识别和代码实战

    总会有人问微信的自动化测试怎么做.其实我不太明白,为啥你要对ta做自动化测试啊,除非你们公司产品是基于微信做的开发否则没必要.即使一个公众号我也觉得没必要做自动化测试,基本功能点下没问题就可以了,毕竟 ...

  9. (转载)人脸识别中Softmax-based Loss的演化史

    人脸识别中Softmax-based Loss的演化史  旷视科技 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Re ...

随机推荐

  1. GitHub 自动合并 pr 的机器人——auto-merge-bot

    本文首发于 Nebula Graph Community 公众号 背景 作为一款开源的分布式图数据库产品,Nebula 所有的研发流程都在 GitHub 上运作.基于 GitHub 生态 Nebula ...

  2. Go 语言接口及使用接口实现链表插入

    @ 目录 1. 接口定义 1.1 空接口 1.2 实现单一接口 1.3 接口多方法实现 2. 多态 2.1 为不同数据类型的实体提供统一的接口 2.2 多接口的实现 3. 系统接口调用 4. 接口嵌套 ...

  3. 基于mybatis的java代码生成存储过程

    问题: 项目中目前使用mybatis操作数据库,使用插件(mybatis-generator)自动生成代码,对于增改查,使用存储过程实现了一版本,方便使用. insert代码生成器用法: insert ...

  4. java基础4.19

    1.JAVA 的反射机制的原理. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方 ...

  5. 绕过 Docker ,大规模杀死容器

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | Connor Brewster 译者 | Sambodhi 策划 | Tina 要让 ...

  6. 干货 | 亿级Web系统负载均衡几种实现方式

    一个执着于技术的公众号 负载均衡(Load Balance)是集群技术(Cluster)的一种应用技术.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web ...

  7. linux篇-linux面试题汇总

    Linux经典面试题,看看你会几题? 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统 ...

  8. HCNP Routing&Switching之VRRP基础

    前文我们了解了链路高可用技术链路聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16279078.html:今天我们来聊一聊另一种高可用技术,网关高 ...

  9. Dubbo本地存根是什么,Dubbo本地伪装又是什么?

    真正的大师永远怀着一颗学徒的心 哈喽!大家好,我是小奇,一位程序员界的学徒 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 前言 书接上回,昨天打了 ...

  10. Cent OS8.0 及以上版本安装禅道教程

    Cent OS8系统下安装禅道需要搭建环境如下:httpd ,mariadb , php7.2 再运行禅道 一,环境说明: 运行环境推荐使用 Apache + PHP(7.0/7.1/7.2版本) + ...