IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【论文阅读】GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition -> 正文阅读

[人工智能]【论文阅读】GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition


论文信息:

作者:Hanqing Chao, Yiwei He, Junping Zhang, Jianfeng Feng,复旦大学

AAAI 2019

也是步态识别方向的突破性大进展之一,用步态集合取代了之前广为使用的步态能量图GEI等


摘要

本文提出的GaitSet,从集合中识别行人信息。从集合的视角,就可以不受到画面排列的影响,将不同场景下拍摄的不同视频的画面自然整合在一起,比如不同的角度,不同的穿着和携带物品等。在CASIA-B和OU-MVLP步态数据集上都取得了最好的效果。


Intro

现有的步态识别方法:

  • gait template: 丢失时间信息和细粒度的空间信息。
  • gait sequence: 3D-CNN这种包含时序信息的网络,比使用GEI等方法更难训练。必须保存不必要的序列约束,导致失去了步态识别的灵活性。

本文提出的方法是把步态看成一个步态轮廓的集合,作者的逻辑是这样的:步态可以在一个简单的周期中被表示,在一个周期内,即使轮廓的外貌被打乱,实际上我们也仍然可以通过轮廓外貌进行重新排序。这样步态序列的位置信息就不需要了,因为轮廓本身已经包含了顺序信息。

模型的输入是一个步态序列的集合,首先,使用一个CNN去提取帧级别的特征;之后,使用集合池化层去把帧级别的特征综合为一个集合级别的特征。因为这个操作是在高级别的feature map上而不是原始的轮廓上,因此可以比步态能量图等保存更多的时序和空间信息。最后,使用水平金字塔去把集合级别的特征映射到一个有区分度的空间内,以获取最终的表示。

模型特点:

  • 灵活:输入无约束,可以是任何视角、任何行走状态,任意数量的非连续轮廓。
  • 快速:模型直接学习步态的表示,而无需计算一对能量图等的相似度,因此,每个模板的表示只需被计算一次,然后计算不同样本之间的欧氏距离就可以完成识别。
  • 有效:数据集上的识别准确率被大大提高,有了很强的鲁棒性和泛化能力。

GaitSet

问题公式描述

把gait作为一个集合,给定N个人的数据集 y i y_i yi? ,假设某个人的步态轮廓图服从分布 P i P_i Pi? ,一个人的或轮廓序列就可以被描述为 X i = { x i j ∣ j = 1 , 2 , … , n } X_i=\{x_i^j|j=1,2,…,n\} Xi?={xij?j=1,2,,n} ,这里 x i j ~ P i x_i^j\sim P_i xij?Pi?

在这个假设下,我们对于步态识别的任务可以描述为三个步骤:
f i = H ( G ( F ( X i ) ) ) f_i=H(G(F(X_i))) fi?=H(G(F(Xi?)))
F是从轮廓中提取帧级别的特征,G是置换不变函数,用来把结合中的帧级别特征转换为集合级别的特征,使用SP(Set Pooling)层,H用于从集合级别的特征中学习有区分度的 P i P_i Pi? 表征,使用水平金字塔映射(Horizontal Pyramid Mapping. HMP), X i X_i Xi? 是一个四个维度的张量:集合、图像通道、图像高度、图像宽度。

Set Pooling

这里需要解释一个置换不变函数(permutation invariant function),在深度学习中,它指的是 特征之间没有空间位置关系 ,如多层感知机,改变像素的位置对最后的结果没有影响: f ( ( x 1 , x 2 , x 3 ) ) = f ( ( x 2 , x 1 , x 3 ) ) = f ( ( x 3 , x 2 , x 1 ) ) f((x_1,x_2,x_3))=f((x_2,x_1,x_3))=f((x_3,x_2,x_1)) f((x1?,x2?,x3?))=f((x2?,x1?,x3?))=f((x3?,x2?,x1?))

SP的目的是综合步态信息在集合中,就是将维度(n,c,h,v)聚合成(1,c,h,v),将帧级别的特征转换为集合级别的特征,需要有两个约束条件:

  1. 置换不变

  2. 显示中,步态轮廓的数量可以是任意的,因此函数G应该能取任意基数的集合

为了满足约束不变性,SP需要在集合的维度利用一些统计函数,本文研究了max、mean、median.

以及两种连接上述三个统计函数的方法,1_1C是指1*1的卷积层,(4)是(3)的提高版本,因为可以从卷积层中学习到三个统计方法的权重。

另外还使用了注意力机制去提高SP的性能,这个结构可以集成到整个网络中去实现端到端训练,把原始的特征和经过1*1卷积之后的特征计算注意力,最后再在优化过的帧级别的feature map上经过一个max层即可。

Horizontal Pyramid Mapping

文献中有把feature map分成条带以用于行人重识别任务,提到了HPP,它有4个规模,因此可以帮助深度网络处理局部和全局信息,本文将HPP的思想应用于步态识别任务中,这里放一个HPP:

但本文没有使用HPP中的卷积层,而是用了一个全连接层,共有S个规模,每一层有 2 s ? 1 2^{s-1} 2s?1 个条带,因此共有 ∑ s = 1 S 2 s ? 1 \sum_{s=1}^S2^{s-1} s=1S?2s?1 个条带。之后使用在池化层使用全局池化和平均池化, f s , t ′ = m a x p o o l ( z s , t ) + a v g p o o l ( z s , t ) f_{s,t}'=maxpool(z_{s,t})+avgpool(z_{s,t}) fs,t?=maxpool(zs,t?)+avgpool(zs,t?) ,最后一步是使用FC全连接层去将f’映射到有区分度的空间内(下图里没有FC)。这里每个尺度的不同条带描绘了不同空间位置的特征。

Multilayer Global Pipeline

在大pipeline中的上面MGP部分,卷积网络的不同层有不同的感受野,集合级别的特征通过在不同层使用SP来提取,被相加之后放入MGP中。它的网络结构与卷积网络结构几乎相同。这里两路网络最后的HPM参数不会共享。


训练和测试

【这里为了弥补我永远看不懂的损失函数,做个补充…

(来自:https://blog.csdn.net/u013082989/article/details/83537370

首先是 triplet loss ,是一个学习embedding用的损失函数,不用 softmax 的原因是它的类别是确定的,而 triplet loss 能够学到一个更好的embedding。

它的输入是一个三元组:<a,p,n>

  • a: anchor
  • p: positive,与a是同一个类别的样本
  • n: negtive,与a是不同类别的样本

公式: L = m a x ( d ( a , p ) ? d ( a , n ) + m a r g i n , 0 ) L=max(d(a,p)-d(a,n)+margin,0) L=max(d(a,p)?d(a,n)+margin,0) ,所以最后的优化目标是拉近a和p之间的距离,拉远a和n之间的距离。

  • easy triplets : L = 0 L=0 L=0 ,即 d ( a , p ) + m a r g i n < d ( a , n ) d(a,p)+margin<d(a,n) d(a,p)+margin<d(a,n) ,这种情况说明a和p之间本身距离很小不需要优化;
  • hard triplets : d ( a , p ) > d ( a , n ) d(a,p)>d(a,n) d(a,p)>d(a,n) ,a和n的距离过近;
  • semi-hard triplets : d ( a , p ) < d ( a , n ) < d ( a , p ) + m a r g i n d(a,p)<d(a,n)<d(a,p)+margin d(a,p)<d(a,n)<d(a,p)+margin ,即a和n距离仍然很近,但有一个margin。

其次是online训练方法,也是本文中用到的 Batch All Triplet Loss :是指从训练集中抽取B个样本, 然后计算B个embeddings,可以产生 B 3 B^3 B3 个triplets。

假设 B = P K B=PK B=PK 意思是P个身份的人,每个身份K张图片。

Batch All :计算一个batch_size中所有valid(hard tripletssemi-hard triplets )均值,得到loss

这里如果有很多easy triplets 的情况,会导致loss很小,所以是对valid取平均

总共可以产生 P K ( K ? 1 ) ( P K ? K ) PK(K-1)(PK-K) PK(K?1)(PK?K) 个triplets:

  • PK个anchor
  • K-1个positive
  • PK-K个negative

训练时的损失函数就是引用中所介绍的 Batch All Triplet Loss

测试使用的方法是,给定一个查询Q,检索gallery中所有与G。Q首先需要放入GaitSet网络中获取多尺度特征,然后将所有的特征连接到最终表示FQ中,在每个G上也应用相同的网络获得FG,最后使用欧氏距离将每个FQ与每个FG进行比较,计算排名第一的识别准确率。


实验

  • 对比了CASIA-B和OU-MVLP两个数据集上的结果

  • 另外做了消融实验:

    1. 使用相同的网络结构时,使用SET比使用GEI结果高出10%,比CL高出25%。原因有两个:1) SP基于高级的特征图提取集合特征,这样可以很好地保留时间信息,并充分处理空间信息。2) 将步态视为一个集合,可以扩大训练的数据量。
    2. SP与Attention结合后,几个统计函数中max效果最好。
    3. HPM处的参数不共享效果要更好。
  • 还考虑了GaitSet的实用性:

    1. 使用较少的轮廓数量。这里的实验逻辑感觉很好:1)随着轮廓数量的增加,精确度单调上升。2) 当样本包含超过25个轮廓时,精度接近最佳。这个数字与一个步态周期包含的帧数一致。
    2. 不同的视角。为消除轮廓数的影响做的处理:probe是10个单视角或双视角轮廓,而gallery中是有一个序列中的所有轮廓组成的。
    3. 不同的行走条件。对轮廓数的操作与(b)相同。BG和CL包含很多噪声,但种类不同,这使得二者互补,所以BG和CL组合可以调高准确率,而使用NM去替换上述二者中的任意一个都会降低精度。(“normal(NM)”、“walking with bag(BG)”、“wearing coar or jacket(CL)”)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:10:15  更:2022-04-06 23:11:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:38:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码