HAVE FUN! THANKS

3,031  0

[略读]Sequence Transduction with Recurrent Neural Networks

RNNT原文下载地址 Abstract 很多模型都进行的是转换任务,例如语音识别、机器翻译、蛋白质二级结构生产、文字转语音等。在时序转换任务中,有一个关键挑战是寻找一种在收缩、拉伸、平移下有序列不变性的方式表示输入和输出序列。 Introduction 例如在语音识别中,需要面对由不同的音色、可变的说话速率、背景噪声等造成的明显失真。语言模型在输出序列时也需要使用先验知识来保持在缺失字符、发音、非语言字符时的鲁棒性。RNN网络是目前的通用解法,因为高维多变量内部状态和非线性状态动力学的结合比传统的序列算法(如隐马尔可夫模型)能提供更多的表现力。尽管RNN早期时候被难以训练所困扰,但近期的结果证明RNN在现实任务中达到了SOTA,此外,这些结果还证明了远期记忆的作用,例如在多个中间字符后关闭括号,或者使用延迟笔触从笔迹中识别手写字符。训练RNN必须提前知道输入与输出之间的对应关系,RNN的CTC层只能用于输出小于等于输入的情况,在面对输出大于输入的情况时(文字转语音任务),CTC无法建模输出之间的依赖关系。本文所提出的传感器(transducer)是一种时序判别模型,通过定义输出序列在所有长度上的分布并且联合建模输入-输出和输出-输出依赖关系,扩展了CTC的能力。transducer与CRFs有一定的相似性,但RNN拥有从raw数据中提取特征以及潜在的无限依赖范围的转换结构,与CRFs的手工输入特征和成对输出势能形成鲜明对比。 Recurrent Neural Network Transducer 详解视频 https://www.youtube.com/watch?v=L519dCHUCog RNNT比CTC好,但明显比attention差,适合在线任务,在小于十万小时数据量的情况下,非常依赖预训练,难以训练 参考资料https://blog.csdn.net/JackyTintin/article/details/81251591https://zhuanlan.zhihu.com/p/97472054https://zhuanlan.zhihu.com/p/62050647https://github.com/awni/transducer/blob/master/ref_transduce.py

2,434  0

[工具]希腊字母读法

Α α:阿尔法 AlphaΒ β:贝塔 BetaΓdu γ:伽玛 GammaΔ δ:德尔zhi塔 DelteΕ ε:艾普西龙 EpsilonΖdao ζ :捷塔 ZetaΕ η:依塔 EtaΘ θ:西塔 ThetaΙ ι:艾欧塔 IotaΚ κ:喀帕 Kappa∧ λ:拉姆达 LambdaΜ μ:缪 MuΝ ν:拗 NuΞ ξ:克西 XiΟ ο:欧麦克轮 Omicron∏ π:派 PiΡ ρ:柔 Rho∑ σ:西格玛 SigmaΤ τ:套 TauΥ υ:宇普西龙 UpsilonΦ φ:fai PhiΧ χ:器 ChiΨ ψ:普赛 PsiΩ ω:欧米伽 Omega

3,333  0

[翻译]Joint CTC/attention decoding for end-to-end speech recognition

Abatract 当前系统严重依赖围绕传统技术发展起来的复杂遗留架构的脚手架。存在的问题有: 目前的HMM+GMM+DNN方法,训练声学模型(语音[/latex]gt;音素)、语言模型(音素[/latex]gt;单词)、词典模型(单词[/latex]gt;句子),由于上述模块是单独优化的,因此这种因式分解形式也产生局部最优 为了很好地分解声学模型和语言模型,系统需要基于词典模型的语言知识,而词典模型通常基于手工制作的语音词典来映射单词和音素序列 除了发音词典问题之外,一些没有明确的词边界的语言(中文、日文)还需要语言特定的标记模块(分词功能)来建模语言 必须通过集成所有模块来执行推理/解码,导致复杂的解码。因此,对于非专家来说使用/开发ASR系统相当困难 端到端系统使用深度学习尝试解决上述问题,目前有两种主流方法:基于attention的方法使用attention生成语音帧和识别符号的映射,基于CTC的方法使用Markov假设和动态规划解决序列问题。我们提出CTC/attention混合架构,该方法将网络结构扩展,执行单通/重打分的联合解码,即基于attention的ASR预测结果使用CTC输出的评估进行增强。 From DNN/HMM to end-to-end ASR (略) Joint CTC/attention decoding Attention-based decoding in general 基于attention的ASR由于其灵活的对齐特性,可以关注编码器状态序列的任何部分来预测下一个标签,因此容易包括删除和插入错误。由于attention是由解码网络产生的,会产生两个问题: 即使它没有关注所有的encoder帧结果,也可能提前输出结束符号,使得输出结果过短。 它在预测下一个字符时,有很高的几率关注之前帧注意的位置,导致输出重复字符,使得输出结果过长。如附录C所示: Conventional decoding techniques 目前已有一些解决方法: 加入惩罚项缓解长度对齐问题,Loss=Loss+γ|C|,其中|C|为句子长度 为防止循环,我们使用coverage(术语:覆盖期限)来计算已收到累积attention大于η的帧数,Loss=Loss+γ|C|+η·coverage(C|X)。在编程中,每次beam search后,使用所有注意力权重计算coverage。参考文献《Towards better decoding and language model integration in sequence to sequence models》 但对于不同ASR任务来说,很难找到合适的超参数γ,η,τ,以及min/max长度。 Joint decoding CTC概率强制执行单调对齐,不允许相同帧进行大的跳变或循环。可以不依赖覆盖期限、长度惩罚或最小/最大长度,来产生具有更好对齐的假设,并排除不相关的假设。attention decoder产生输出与标签的同步,CTC产生帧同步。 Resocring 训练时使用两步方法,首先仅使用基于attention得到的概率序列进行beam search,然后混合两种方式得到概率序列。 One-pass decoding 推理时使用单步方法解码,α(h,X)=λα{ctc}(h,X)+(1−λ)α{att}(h,X) Experiments

2,526  0

[翻译]Online Hybrid CTC/Attention Architecture for End-to-end Speech Recognition

# 摘要 混合CTC/注意端到端自动语音识别(ASR)将CTC ASR系统和注意ASR系统组合成一个单一神经网络。尽管混合CTC/注意ASR系统在训练和解码方面同时兼顾了CTC和注意架构的优点,但其注意机制、CTC前缀概率和双向编码器等特点,仍难以应用于流式语音识别。本文提出一个稳定的单调区块方向注意(sMoChA)流化其注意分支,截断CTC前缀概率(T-CTC)流化其CTC分支。在声学模型方面,我们利用延迟控制的双向长短期存储器(LC-BLSTM)来流化其编码器。在联合CTC/注意力机制译码侧,我们提出动态等待联合译码算法(DWDJ)来收集来自CTC和注意分支的译码假设。通过以上方法的结合,我们在没有大量的误字率下降的情况下,实现了混合CTC/注意ASR系统的流化。 ## Introduction 端到端的语音识别系统在大规模语音识别(ASR)任务上与传统的混合系统具有较强的竞争力。端到端系统集成了声学模型、词汇和语言模型,直接将声学特征转化为目标标签。两种主流的语音识别框架应用于端到端语音识别领域。一个特征是帧同步预测,即每个输入帧有一个目标标签。连接式时间分类(CTC) [1]损耗函数一直被用于训练帧同步模型。另一种是标签同步预测,即ASR模型决定何时输出目标标签。基于注意的编码器-解码器体系结构[2, 3]被广泛地用于这种框架,其中注意力机制决定了哪些编码器特性应该被注意。 到目前为止,已经提出了一些改进,以提高CTC框架和基于注意的编解码器框架的性能。为了消除CTC的有条件独立性假设,有些尝试已经在CTC的框架中纳入了注意机制[4,5,6]。听和拼写(LAS)应用金字塔BLSTM[7],使人们更容易关注从次抽样特征中建模更广泛的输入上下文。此外,还介绍了多头注意[8,9]、自注意网络[10,11]和其他复杂的注意。最近,混合CTC/注意力体系结构被提出[12],将CTC和注意力框架组合成一个单一神经网络。在这种结构中,CTC分支将引导注意力机制执行单调对齐,因此CTC和注意的结合可以产生高质量的假设。 目前,大多数有竞争力的端到端ASR系统由于双向编码器网络和全局注意力机制,不适合在线ASR任务。在混合CTC/注意架构方面,CTC和注意力分支在联合CTC/注意力解码中都以离线方式执行[13]。幸运的是,已经有一些工作侧重于低延迟双向声学建模[14, 15]和在线关注,如单调注意力[16]和单调Chunkwise注意力(MoChA)[17],另外最近一些在线端到端ASR模型[17,18,19]也提出建议。 这项工作是首次尝试将混合CTC/注意体系结构流化。首先,我们发现标准MoChA在系统中是不稳定的,因此我们提出了一个稳定的MoChA(sMoChA) ,它改变了关注权重的计算方式,从而取代了全局关注。其次,我们利用基于CTC的网络对音频进行分段,在分段的音频上计算T-CTC前缀概率,而不是在完整的音频上计算T-CTC前缀概率。在同时流化CTC和注意分支后,我们设计了动态等待联合译码算法,以解决波束搜索中这两个分支预测标签异步的问题。最后,本文实现了在线混合CTC/注意力体系结构,并在LibriSpeech进行了实验。与离线混合CTC/注意架构相比,我们的在线混合CTC/注意架构在test-clean/test-other上退化的绝对错误率为1.8%/3.3%。 # Related works ## Hybrid CTC/attention architecture L = λlogPctc(Y|X) + (1−λ)logPatt(Y|X), where λ is a hyperparameter satisfying 0 ≤ λ ≤ 1 ## Monotonic Chunkwise Attention (MoChA) 记: – 编码器特征 H = {h1,…,hu} – 隐状态向量 S = {s0,..,si,..} – 输出标签 Y = {y1,..,yi,..} – 注意力向量 C = {c1,…ci,..} – ti 输出yi时的指针 – pi 为了yi选择hi的概率 ##

2,447  0

[Trick]标签平滑

引用自 https://blog.csdn.net/sinat_36618660/article/details/100166957 why 在深度学习样本训练的过程中,我们采用one-hot标签去进行计算交叉熵损失时,只考虑到训练样本中正确的标签位置(one-hot标签为1的位置)的损失,而忽略了错误标签位置(one-hot标签为0的位置)的损失。这样一来,模型可以在训练集上拟合的很好,但由于其他错误标签位置的损失没有计算,导致预测的时候,预测错误的概率增大。为了解决这一问题,标签平滑的正则化方法便应运而生。 how 先举个没有标签平滑计算的例子Example1:假设有一批样本,样本类别总数为5,从中取出一个样本,得到该样本的one-hot化后的标签为0,0,0,1,0,假设我们已经得到了该样本进行softmax的概率矩阵pp,即p=[p1,p2,p3,p4,p5]=[0.1,0.1,0.1,0.36,0.34]则我们可以求得当前单个样本的lossloss,即loss=−(0∗log0.1+0∗log0.1+0∗log0.1+1∗log0.36+0∗log0.34)计算结果为:loss=−log0.36=1.47 再举一个标签平滑的例子Example2Example2:假设还是上面那批样本,样本类别总数仍为5,我们还是取出刚才的那个样本,得到该样本的one-hot化后的标签为0,0,0,1,0,仍假设我们已经得到了该样本进行softmax的概率矩阵pp,即p=[p1,p2,p3,p4,p5]=[0.1,0.1,0.1,0.36,0.34],对于进行标签平滑该怎么做呢?我们先设一个平滑因子为ϵ=0.1,进行如下平滑,y1=(1−ϵ)∗[0,0,0,1,0]=[0,0,0,0.9,0]y2=ϵ∗[1,1,1,1,1]=[0.1,0.1,0.1,0.1,0.1]y=y1+y2=[0.1,0.1,0.1,1.0,0.1]yy就是我们经过平滑操作后得到的标签,接着我们就可以求平滑后该样本的交叉熵损失了loss=−y∗logp=−[0.1,0.1,0.1,1.0,0.1]∗log([0.1,0.1,0.1,0.36,0.34])计算结果为:loss=2.63 code def cross_entropy_loss(preds, target, reduction): logp = F.log_softmax(preds, dim=1) loss = torch.sum(-logp * target, dim=1) if reduction == ‘none’: return loss elif reduction == ‘mean’: return loss.mean() elif reduction == ‘sum’: return loss.sum() else: raise ValueError( ‘`reduction` must be one of \’none\’, \’mean\’, or \’sum\’.’) def onehot_encoding(labels, n_classes): return torch.zeros(labels.size(0), n_classes).to(labels.device).scatter_( dim=1, index=labels.view(-1, 1), value=1) def label_smoothing(preds, targets,epsilon=0.1): #preds为网络最后一层输出的logits #targets为未one-hot的真实标签 n_classes = preds.size(1) device = preds.device onehot = onehot_encoding(targets, n_classes).float().to(device) targets = onehot * (1 – epsilon) + torch.ones_like(onehot).to( device) * epsilon / n_classes loss = cross_entropy_loss(preds, targets, reduction="mean") return loss

3,281  0

[小结]Bottom-Up Higher-Resolution Networks for Multi-Person Pose Estimation

项目地址 https://github.com/HRNet/Higher-HRNet-Human-Pose-Estimation 总结 用高分辨率网络完成Bottom-Up姿态识别。聚合关节点使用Hourglass中的聚合方法,扩大特征图使用反卷积,热图损失使用MSE,都没有做创新。 简介 本文关注到为了使用热图,对图像尺度进行缩放的过程中,产生了误差导致网络能力下降。因此使用高分辨率网络保持较高尺度的热图输出(原图的1/4尺度),并用反卷积+一些结构输出1/2尺度热图,对于本文名称的Higher,er就在于这个结构,通过concate、追加resblock、双热图均值做输出,将网络AP提升了3.1。网络结构如下图,左侧为Hrnet,右侧为er结构。 结果

4,908  1

[小结]Distribution-Aware Coordinate Representation for Human Pose Estimation

项目地址 https://ilovepose.github.io/coco/ 总结 因整数导致回归目标有偏,对网络效果有较大影响。 简介 对于单人姿态估计的监督方法有两种,回归关节点坐标、回归关节点热图。而回归热图因为能更利于网络归回,有效防止过拟合,是目前的主流。因此在这个过程中有两个问题,且都会产生一定的误差: 训练时需将关节点坐标转换为关节点热图,会导致带小数坐标被转换到临近的整数位置; 应用时需将关节点热图转换回关节点坐标,这会导致得到的关节点是整数,与真实标注产生误差。同时因为计算量的关系,热图尺寸通常会比输入图片缩小n倍,因此会将误差放大。在本文提出之前,使用的方法是取最高峰位置m和第二高峰位置s(因为网络生成的热图会有多峰如下图),输出位置p=m+0.25(s-m),即将第二高峰位置作为小数补充。本文通过高斯估计,得到中心位置μ,获得了更好的效果。 本文贡献1 通过一种估计方法,从热图中获得更精确的坐标,具体步骤如下: 对热图使用高斯核平滑(参数与训练时使用的高斯核相同) 使用本文方法估计坐标位置 其中D表示在m位置的一阶、二阶导数,m为最高点位置,具体推导过程原文有推。 本文贡献2 相应的修改关节点坐标[/latex]gt;热图的生成方式,使得转换方法无偏。 结果 对于关节点热图转换回关节点坐标,三种方法的结果。 对于修改训练时关节点坐标转换为关节点热图的方式,与不同的转回方式结合的结果。 最好效果 引申 在Anchor Free领域同样存在本文所提出的问题,目前主流方法都是用高斯核卷积生成热图,这也会造成一个问题,即热图区域超出目标范围;同时对于本文所提出的无偏问题,也有一篇文章做了相关研究《The Devil is in the Details: Delving into Unbiased Data Processing for Human Pose Estimation》

4,514  0

[翻译] Deep High-Resolution Representation Learning for Human Pose Estimation

Abstract 在本文中,我们对人体姿势估计问题感兴趣,重点是学习可靠的高分辨率表示。大多数现有方法分辨率从高到低再从低到高恢复。相反,我们提出的网络在整个过程中都保持高分辨率表示。 我们将高分辨率子网作为网络第一部分,然后将由高到低分辨率的子网逐步添加到网络中,然后将多分辨率子网并行连接。我们进行反复的多尺度融合,以便每一个高到低分辨率的表示都反复从其他并行表示中接收信息,从而获得丰富的高分辨率表示。因此最终预测的关键点热图可能更准确,空间上更精确。我们通过在两个基准数据集(COCO关键点检测数据集和MPII Human Pose数据集)上得到更好的姿态估计结果,证明了我们网络的有效性。此外,我们在PoseTrack数据集上显示了我们的网络在姿势跟踪中的优越性。代码开源 1 Introduction 二维人体姿势估计已成为计算机视觉中的一个基本但仍具有挑战性的问题。目标是定位人体解剖学要点(例如肘部,腕部等)或部位。它具有许多应用,包括人类动作识别,人机交互,动画[6, 26, 32, 38, 46, 55, 40, 45, 17, 69]等。本文对单人姿势估计感兴趣,它是其他相关问题的基础,例如多人姿势估计,视频姿势估计和追踪[48, 70]等。 最近的研究表明,深度卷积神经网络已经实现了最先进的性能。现有的大多数方法都通过网络(通常由串联的高到低分辨率子网组成)传递输入,然后再提高分辨率。例如,沙漏[39]通过对称的从低到高的过程来恢复高分辨率。SimpleBaseline[70]采用一些转置的卷积层来生成高分辨率表示。此外,空洞卷积还用于扩张高至低分辨率网络(例如VGGNet或ResNet)后面的层[26,74]。 我们提出了一种新颖的架构,即高分辨率网络(HRNet),它能够在整个过程中保持高分辨率表示。我们从高分辨率子网开始作为第一阶段,将高到低分辨率子网逐个添加以形成更多阶段,并并行连接多分辨率子网。我们通过在整个过程中一遍又一遍地在并行多分辨率子网中交换信息来进行重复的多尺度融合。我们估算网络输出的高分辨率图像的关键点。网络最终结构如图1所示。 我们的网络相比目前广泛使用的网络有两大优势。(1)我们的模型并行连接由高到低分辨率的子网络而不是目前方法的序列模式。因此我们的模型能一直保持高分辨率而不用从由低到高的过程中恢复高分辨率,因此预测的热力图可能在空间上更精准。(2)大多数现有方案融合网络的底层和高层表达。相反,我们在同深度和相似级别下低分辨率表示的帮助下,进行重复的多尺度融合来提高高分辨率表示,使得高分辨率表示也富有动作信息。因此我们预测的热力图会更准确。 我们在两个基准数据集上经验性证明了我们方法有更好的关键点检测表现: the COCO keypoint detection dataset 和 the MPII Human Pose dataset。此外,我们展示了我们的模型在PoseTrack数据集上视频姿态跟踪方面的优越性。 2 Related Work 3 Approach 人体姿态估计,又称关键点检测,是指从大小为W×H×3的图像I中检测出K个关键点或身体部位(如肘部、腕部等)的位置。当前SOTA方法把问题转变成了估计K个W’xH’的热力图,每个图Hk表示第k个关键点的位置置信度。 我们遵循广泛采用的方式使用卷积网络预测人体关键点,然后接两个降低分辨率的跨步卷积组成的分支,一个输出与其输入特征图具有相同分辨率的特征图,一个估计热图的回归器,在该热图中选择并转换了关键点位置 达到完整的分辨率。 我们专注于主体的设计,并介绍我们的高分辨率网络(HRNet)。 Sequential multi-resolution subnetworks 串行多分辨率子网络 现有的姿态估计网络是通过将高分辨率的子网络串联到低分辨率的子网络而建立的,每个子网络组成一个阶段,由一系列卷积组成,并且相邻子网络之间存在一个向下采样层将分辨率减半.Nsr 表示第s阶段的子网络,r是分辨率索引N11 → N22 → N33 → N44 Parallel multi-resolution subnetworks 并行多分辨率子网络 我们从高分辨率子网开始作为第一步,逐步将高到低分辨率子网逐个添加,形成新的阶段,然后将多分辨率子网并行连接。结果,下一级并行子网的分辨率包括前一级的分辨率和一个较低的分辨率。如下图(2) Repeated multi-scale fusion 反复多尺度融合 我们介绍了并行子网的交换单元(exchange units),以便每个子网络重复地从其他并行子网接收信息。这是交换方案结构的示例。我们将第三阶段分为几个(例如3个)交换块,每个块由3个并行卷积单元组成,跨并行单元的交换单元如下图(3)所示。r表示分辨率序号,b表示第b个块,s表示第s阶段,ξ是交换单元。我们在图3中说明了交换单元,并在下面介绍了该公式。为了方便讨论,我们将下标s和上标b删除。ξ的输入是S个响应映射{X1…Xs},输出是s个响应映射{Y1…Ys},若跨尺度则输出是s+1个映射。它们的分辨率是相同的。每个Y是响应映射X的聚集,Yk = ∑a(Xi,k)。 函数a(Xi,k)由从i到k的分辨率上采样或下采样Xi组成。下采样使用3×3卷积核实现,例如使用一个步长为2的3×3卷积核进行2x下采样,使用两个连续的步长为2的3×3卷积核进行4x下采样。对于上采样,我们使用简单近邻采样,后接一个1×1卷积核对齐通道数。若分辨率相同,则为恒等连接。 Heatmap estimation 我们仅根据最后一个交换单元输出的高分辨率表示来回归热图,实验效果标明效果很好。定义为均方误差的损失函数用于比较预测的热图和真值热图。热图采用2D高斯在每个关键点的真值位置上以1个像素为中心的标准偏差来生成。 Network instantiation 我们通过遵循ResNet的设计规则实例化网络以进行关键点热图估计,以将深度分布到每个阶段,并将通道数分布到每个分辨率。 HRNet主体包含四个带有四个并行子网的阶段,其分辨率逐渐降低到一半,因此宽度(通道数)增加到两倍。 第一级包含4个残差单元,其中每个单元与ResNet-50相同,由宽度为64的瓶颈形成,然后是一个3×3卷积,将特征图的宽度减小为C。 第三,第四阶段分别包含1、4、3个交换块。 一个交换块包含4个残差单位,其中每个单位在每个分辨率中包含两个3×3卷积,并且在分辨率之间包含一个交换单位。 总之,总共有8个交换单元,即进行了8次多尺度融合。 在我们的实验中,我们研究了一个小网和一个大网:HRNet-W32和HRNet-W48,其中32和48分别代表了最后三个阶段中的高分辨率子网的通道数。其他三个并行子网的宽度为HRNet-W32的64、128、256和HRNet-W48的96、192、384。

3,699  0

[翻译] RepNet: Weakly Supervised Training of an Adversarial Reprojection Network for 3D Human Pose Estimation

配合OpenPose、AlphaPose等网络先提取2D骨骼点,再使用RepNet估计3D骨骼点,并进行姿态估计,目前SOTA。 Abstract 本文解决了从单张图像进行3D人体姿势估计的问题。在很长一段时间内,通过最小化重投影误差来对人体骨骼进行参数化及拟合观察,如今研究人员直接使用神经网络从观测中推断出3D姿态。但是,这些方法大多数都忽略了重投影约束需要最小化且其对过拟合敏感的事实。我们通过忽略2D到3D对应来解决过拟合问题。这有效地避免了简单地存储训练数据,并允许进行弱监督训练。所提出的重新投影网络(RepNet)的一部分使用对抗训练方法来学习从2D姿势分布到3D姿势分布的映射。网络的另一部分估计相机参数,使定义的网络层执行3D姿势向2D的重新投影的估计,从而产生重新投影损失函数。 1 Introduction 从单眼图像估计人的姿势是计算机视觉中非常活跃的研究领域,具有许多应用,例如电影、医学、监视或人机交互。最近的研究能够从单眼图像中以高质量推断3D人体姿势[27、8、21、23、28、32、24、20、19、31]。 但是,最近的大多数方法都使用经过严格训练的神经网络,从输入到输出数据都经过严格分配,例如 [27、8、21、23、28、32、24、19]。这会在相似数据上产生令人惊讶的令人印象深刻的结果,但是一般在推广到未知动作和不同摄像机位置时是有问题的。本文提出了一种使用经过弱监督的对抗学习方法训练的神经网络来克服此问题的方法。我们通过训练鉴别器网络(在生成对抗网络GAN[9]中广泛使用)以学习3D人的姿势分布,来放松训练数据中每个图像都具有特定3D姿势的假设。第二个神经网络从判别器网络学习从检测到的2D关键点的分布(由[25]获得)到有效3D人体姿势的3D关键点的分布的映射。从生成对抗网络的角度来看,这可以看作是生成器网络。为了迫使生成器网络生成与2D观测值匹配的3D姿态,我们建议添加第三个神经网络,该网络根据输入数据预测相机参数。推断的摄像机参数用于将估计的3D姿势重新投影回2D,从而使该框架的名称为:Reprojection Network(RepNet),如图2。另外,为了进一步加强运动学约束,我们建议采用一种易于计算和实现的描述符,以描述受Wandt等人的运动学链空间KCS(kinematic chain space)启发的关键点长度和角度[41]。 与其他工作相比,我们提出的方法在强力解决了特定数据集的过度拟合。我们的实验进一步证实了这一说法,该网络甚至可以推断出不在训练集中的人体姿势和摄像头位置。即使存在强烈的变形或异常的相机姿势,我们的网络也能取得良好的效果,如图1的攀岩图像所示。这导致我们得出的结论是,鉴别器网络并不是从训练集中记住所有姿势,而是学习到了人类能做出的姿势的有意义表达。正如我们将要展示的那样,将KCS包含在鉴别器网络中,对鉴别器的质量起着重要作用。 我们在三个数据集Human3.6M[13]、MPI-INF-3DHP[21]和Leeds Sports Pose[16]上评估我们的方法。在所有数据集上,我们的方法均达到了最好的结果,甚至优于大多数监督方法。此外,我们提出的网络可以在标准硬件上在0.1毫秒内预测人体姿势,当与最新的2D关节检测器(例如OpenPose[5])结合使用时,可以构建一个实时姿态估计系统。我们将开放源码。总结我们的贡献: 3D人体姿势的对抗训练方法 基于2D重新投影的估计神经网络(RepNet) 没有2D-3D对应镜头数据集和未知摄像机下的弱监督训练 同时进行3D骨骼关键点估计和相机姿势估计 运动链表示网络层,包括有骨骼长度和关节角度信息 一个姿势回归网络,可以很好地推广到未知的人类姿势和相机 2 Related Work 与我们的工作最相关的方法可以大致分为两类。第一组由基于优化的方法组成,其中将3D人体模型变形以使其满足重投影误差。第二组包含尝试直接从图像或检测到的关键点直接估算3D姿势的最新方法。 2.1 Reprojection Error Optimization 早期从单幅图像进行人体姿态估计的工作可追溯到1985年的Lee和Chen [18]。他们使用已知的骨长和二元决策树来重构人体姿态。一些作者[15、11、6]建议在大型姿态数据库中搜索3D姿态,以便最好地解释2D观察结果。为了从这些数据库压缩知识,一种广泛使用的方法是使用主成分分析(PCA)或另一种词典学习方法来学习3D人体姿势的完整字典。通常,对通过主成分分析获得的最佳线性碱基组合进行优化[7、43、49、50]。为了限制优化,提出了一些先验条件,例如关节角度限制[1],物理合理性[46]或人体测量学正则化[30、33、42]。其他作品在视频序列[40、2、41、46]中执行时间相干性,或使用其他传感器[37、39、38]。 2.2 Direct Inference using Neural Networks 最近,许多研究人员致力于使用深度神经网络从图像数据或2D检测直接回归3D姿态。几项工作试图构建一个从图像数据中提取3D姿势的端到端系统[27、8、21、23、28、32、19、17、26、29、36、45]。Moreno Noguer [24]学习了从2D到3D距离矩阵的映射。Martinez[20]在2D关节检测上训练了一个深度神经网络,以直接推断3D人体姿势。他们训练了他们的网络,以在基准数据集Human3.6M [13]上实现出色的性能。但是,与Human3.6M训练集中的姿势相比,该网络的参数要多得多,这可能表明该训练集的简单记忆。尽管我们提出的姿势估计网络具有相似数量的参数,但我们的实验表明,我们的对抗训练方法可以避免过度拟合。Hossain等[31]通过使用递归神经网络扩展了[20]的方法,但几乎没有考虑弱监督的特殊情况。Kanazawa泽等[17]提出了一种方法,也可以在没有2D到3D监督的情况下进行训练。与我们的方法相反,他们使用完整的图像信息来训练端到端模型,以重建人体的体积网格。Yang等[45]训练一个多源鉴别器网络来建立一个端到端模型。 3 Method 所提出方法背后的基本思想是,通过学习从输入分布(2D姿势)到输出分布(3D姿势)的映射,使3D姿势从2D观测值回归出来。 在标准的生成对抗网络(GAN)训练中[9],生成器网络学习从输入分布到输出分布的映射,该映射由另一个称为鉴别器网络的神经网络评估。鉴别器经过训练,可以区分数据库中的真实样本和生成器网络中创建的样本。在训练生成器创建被鉴别器预测为真的样本时,鉴别器参数是固定的。生成器和鉴别器是经过交替训练的,因此彼此竞争,直到它们都收敛到最小。 3.1 Pose and Camera Estimation 姿势和摄像机估计网络分为两个分支,一个用于姿势回归,另一个用于估计摄像机参数。接下来,X∈R{3×n}表示3D人体姿势,其中每一列都包含人体节点的xyz坐标。在神经网络中,此矩阵被写为3n维向量。相应地,如果要重建n个节点,则姿势和相机估计网络的输入为2n维矢量,包含图像中检测到节点的坐标。 姿势估计部分由两个连续的残差模块组成,其中每个块具有两个有1000个紧密连接神经元的隐藏层。对于激活功能,我们使用leaky ReLU[12],因其在我们的实验中产生了最好的结果。最后一层输出一个3n维向量,该向量包含3D姿势,并且可以reshape为X。摄像机估 计分支与姿态估计分值具有相似的结构,输出是包含摄像机参数的6维向量。在这里,我们使用只需六个变量定义的弱透视相机模型。取得相机矩阵将输出矢量整形为K∈R{2×3}。 3.2 Reprojection Layer 重投影层采用3D生成器网络的输出姿态X和摄像机估计网络的摄像机K。 然后可以通过以下方式将投影重新投影到2D坐标空间中:W’ = KX。W’在下文中称为2D重投影,这允许定义重投影损失函数:,其中W是输入的2D姿态观察矩阵,其结构与W’相同。||*||F表示Frobenius范数。请注意,重投影层是仅执行重投影且没有任何可训练的参数的单层。 为了处理遮挡,可以将未检测到的节点所对应在W和X中的列设置为零。这意味着它们将不会对损失函数的值产生影响。根据critic network,姿势生成器网络将使丢失的关节产生幻觉。实际上,产生二维节点检测结果的堆叠式沙漏网络[25]不能预测脊柱关节。因此,在所有实验中,我们将W和X中的相应列设置为零。 3.3. Critic Network图2中的完整网络与critic network交替训练。critic network最后一层的损失是Wasserstein损失函数[3]。critic network的明显选择是结构类似于姿势回归网络的全连接网络。但是,这样的网络难以检测人体姿势的属性,例如运动链、对称性和关节角度限制。因此,我们遵循Wandt等人[41]的想法,并将他们的运动链空间(KCS)添加到我们的模型中。我们开发了一个KCS层,其中包含一个连续的全连接网络,该网络与全连接路径并行添加。critic network中的这两个路径在输出层之前合并,如图3。 KCS矩阵表示包含关节角度和骨骼长度的人体姿势,并且只能通过两个矩阵乘法来计算。定义内容见上图。因为Ψ中的每个条目都是两个骨骼向量的内积,所以KCS矩阵在其对数上具有骨骼长度,而在其他项上具有(比例)角度表示。与欧几里得距离矩阵[24]相比,KCS矩阵很容易通过两个矩阵乘法计算,这很适合作为附加层。通过给鉴别器网络一个附加的特征矩阵,它不需要自己学习关节长度计算和角度约束。实际上,在我们的实验中,如果没有KCS矩阵,就不可能在身体的左侧和右侧之间实现可接受的对称性。第4.1节显示了添加额外的KCS层如何使3D重建受益。在我们的实验中,在KCS层之后添加卷积层或完全连接的层之间没有区别。接下来,我们将在KCS层之后使用两个完全连接的层,每个层包含100个神经元。结合并行的全连接网络,即图3中的critic结构。 3.4 Camera 由于图2中的相机估算子网络可以产生任何6维向量,因此我们需要强制网络产生描述弱透视相机的矩阵。如果3D姿势和2D姿势以其根关节为中心,则根据等式1相机矩阵K将X投影到W’。弱透视投影矩阵K具有性质 其中s是投影的比例,I2是2×2不变矩阵。由于标度s是未知的,我们推导了一种计算有效的方法来计算s。标度s等于K的最大奇异值(或ℓ2-范数,这两个奇异值相等)。由于的轨迹是奇异值平方的总和,有,损失函数可以被定义为 ,其中,||*||F表示Frobenius范数。注意,仅需一次矩阵乘法即可计算二次标度。 3.5 Data Preprocessing 摄像机估计网络推断弱透视摄像机的参数。这意味着相机矩阵包含旋转分量和缩放分量。为了避免相机和3D姿势旋转之间的歧义,应删除3D姿势中的所有旋转和缩放分量。这是通过将每个3D姿势与模板姿势对齐来完成的。为此,我们通过procrustes对齐计算相应肩部和髋部节点的理想旋转度和比例。生成的变换将应用于所有关节。 根据图像中人的大小,二维节点检测可以具有任意比例。为了去除比例分量,我们将每个2D姿态矢量除以其标准偏差。请注意,使用这种缩放技术,同一个人可以根据相机和3D姿势而具有不同大小的2D姿势表示。但是,所有可能的2D姿势的值都受到限制。其余的比例变化由相机比例组件补偿。与[20]不同,我们不需要知道训练集的均值和标准差,这样可以轻松地将我们的方法转移到2D姿势的不同领域。 3.6 Training 我们实施了[10]的改进的Wasserstein GAN训练程序。根据我们的经验,与使用二进制交叉熵或类似损失函数的传统Wasserstein GAN[3]和标准GAN训练[9]相比,这种方法可以实现更好更快的收敛。我们使用0.001的初始学习速率,每10个周期以指数衰减。 4 Experiments 在不针对特定训练集时,网络效果能达到当前比较好的水平;在针对特定训练集训练后,网络能达到sota。2D节点生成器的误差是错误率的主要原因。 4.6 计算时间 当前的2D骨骼节点检测器在普通机器上能达到100ms/图,我们的网络对每张图额外增加0.05ms,可以说是毫无影响。 5 Conclusion 本文介绍了RepNet:一种用于3D人体姿势估计神经网络的弱监督训练方法,该方法可从单个图像中的2D关节检测推断出3D姿势。我们建议使用额外的相机估计网络和新颖的重投影层,将估计的3D姿态投影回2D。通过利用神经网络研究中的最新技术,例如改进的Wasserstein GAN [10]和运动链空间[41],我们能够开发一种不需要2D到3D对应的弱监督训练程序。这不仅优于以前的弱监督方法,而且避免了网络对有限数量的训练数据的过度拟合。即使与大多数监督方法相比,我们仍在基准数据集Human3.6M上实现了最先进的性能。使用在Human3.6M 上训练的网络从MPI-INF-3DHP数据集的未知数据预测3D姿态,显示出比所有其他方法都有改进。我们还对LSP数据集进行了主观评估,即使在姿势和视角不常见的图像上也能获得良好的重建效果。

3,753  0

[翻译] CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark

这是来自上海交通大学的最新一篇(CVPR2019)姿态估计论文,基于AlphaPose的思路进一步提升了在拥挤状态下的人体姿态识别水平,同时提供了拥挤状态下的姿势数据集。 Abstract 多人姿势估计是许多计算机视觉任务的基础,并且近年来取得了重大进展。然而很少有先前的方法探讨拥挤场景中的姿势估计问题,尽管在许多情况下它仍然具有挑战性和不可避免。与此同时,当前的基准无法对此类情况进行适当的评估。在本文中,我们提出了一种新颖有效的方法来解决人群中的姿势估计问题,并提出了一个新的数据集来更好地评估算法。我们的模型由两个关键部分组成:候选点的单人姿势估计(SPPE)和全局最大节点关联算法。通过使用图形模型对每个联合和全局关联进行多峰预测,我们的方法对于在拥挤场景中不可避免的干扰具有鲁棒性,并且推理效率很高。所提出的方法比CrowdPose数据集的最新方法高5.2 mAP,而MSCOCO数据集的结果证明了该方法的泛化能力。源代码和数据集可在 https://github.com/Jeff-sjtu/CrowdPose 获得。 Introduction 估计图像中的多人姿势在计算机视觉领域起着重要作用。它在动作理解、人机交互识别、human parsing等方面的广泛前景已经引起研究人员极大关注和关注。也有一些工作关注三维人体姿态估计。当前,大多数二维方法可大致分为两类:i)自上而下的方法,该方法首先检测每个人,然后执行单人姿势估计;ii)自下而上的方法,先检测每个关键点,然后将其组合为一个完整的人。 为了评估多人姿势估计算法的性能,研究人员建立了一些公共基准库,例如MSCOCO,MPII和AI Challenger。在这些基准中,图像通常是从日常生活中收集的,那里拥挤的场景出现的频率较低。因此这些基准标记中的大多数图像在人类之间几乎没有相互遮挡。 例如,在MSCOCO数据集(人员子集)中,67.01%的图像没有重叠的人员。当前的方法在这些数据集上获得了令人鼓舞的成功。 但是,尽管当前方法在以前的基准上已经取得了良好的性能,但我们发现在拥挤的情况下它们的性能明显下降。 如图1所示,对于自下而上和自上而下方法的当前最先进方法[40、27、23、26],其性能会随着人群水平的提高而急剧下降(如图3)。很少有旨在解决拥挤场景中姿势估计问题的方法,并且尚未为此目的建立公共基准库。同时,在许多情况下拥挤的场景是不可避免的。 在本文中,我们提出了一种新颖的方法来解决人群中的姿势估计问题,使用全局视图来解决干扰问题。我们的方法遵循自顶向下框架,该框架首先检测单个人,然后执行单人姿势估计(SPPE)。我们提出了一个节点候选SPPE和一个全局最大节点关联算法。与以前仅预测输入人体区域的目标节点的方法不同,我们的联合候选SPPE输出每个节点的候选位置列表。候选列表包括目标节点和干涉节点。然后我们的关联算法利用这些候选集建立人与人之间的联系图。最后,我们使用全局最大节点关联算法解决了该图模型中的节点关联问题。此外,我们的图优化算法的计算复杂度与常规NMS算法相同。 为了更好地评估拥挤场景中的人体姿态估计算法并促进该领域的发展,我们收集了拥挤人体姿势的数据集。 我们定义了一个拥挤索引来衡量图像的密集水平。我们数据集中的图像在拥挤索引中具有[0,1]均匀分布,这意味着只有在不拥挤和拥挤的场景中都能表现出色的算法才能在我们的数据集中获得高分。 综上所述,本文的主要工作如下:i)提出了一种解决拥挤的姿态估计问题的新方法。ii)我们收集了一个新的拥挤人体姿势数据集,以更好地评估拥挤场景中的算法。我们对提出的方法进行实验。当使用相同的基于ResNet-101的网络骨干网时,我们的方法在数据集上比所有最新技术都高5.2mAP。此外,我们使用模块将SPPE和后处理步骤替换为最新方法,并在MSCOCO数据集上带来了0.8mAP的改进。也就是说,我们的方法可以在不拥挤的场景中正常使用。 Related Work 3 Our Method 我们提出的方法的流程如图2所示。人体检测器获得的人体边界框提议被送入联合候选(JC)单人姿势估计器(SPPE)。 JC SPPE在热力图上找到具有不同响应分数的联合候选者(第3.1节)。然后,我们的联合关联算法将获得这些结果,并建立人-节点连接图(第3.2节)。最后,我们解决了图匹配问题,以全局最大节点关联算法找到最佳的关节关联结果(第3.3节)。 3.1 Joint-Candidates SPPE JC SPPE接收人体建议图像并输出一组热图以指示人体联合位置。尽管人体区域应该表明只有一个人类实例,但在拥挤的场景中,我们不可避免地需要处理来自其他人体实例的大量节点。 以前的工作使用SPPE来抑制干扰节点。但是,SPPE在拥挤的场景中失败了,因为它们的接受域受到输入的人体提议的限制。为了解决这个问题,我们提出有着依据更全局视野设计新损失函数的JC SPPE。 3.1.1 Loss Design 对于第i个人体区域Ri,热力图Pi,其中有两种节点,一种叫target joints 即属于此人体的节点,另一种叫 interference joints 干扰节点,即属于其他人体的节点。我们在损失模块中采用了热力图,该模块由于其像素级监督和完全卷积结构而在许多领域[29,28]中得到了广泛使用。我们的目标是增强target joints的响应并抑制干扰节点。但是,我们不会直接抑制它们,因为在当前区域的干扰节点可以被视为其他区域的target joints。因此,我们可以在干扰节点中以全局方式估计人体姿势和其他人体提议。因此,为了利用这两种候选节点,我们以不同的强度输出它们。 Heatmap Loss 3.1.2 Discussion 常规的SPPE取决于高质量的人为检测结果。它的任务是根据给定的人工提议来定位和识别目标节点。如果SPPE误将干扰节点用作目标节点,则将是无法恢复的错误。丢失的节点无法在诸如pose-NMS的后处理步骤中恢复。 我们提出的候选节点损失旨在解决此缺陷。此损失函数鼓励JC SPPE网络预测多峰热图,并将所有可能的节点设置为候选。在拥挤的场景中,尽管传统的SPPE很难识别目标关节,但JC SPPE仍然可以预测出候选关节列表并保证高召回率。我们将关联问题留给下一个过程,在那个过程中,我们可以从其他JC SPPE(根据其他人体建议)获得更多全局信息来解决该问题。 3.2 Person-Joint Graph 由于我们的候选节点机制和人体检测器的冗余人体提议,候选节点在数值上比实际联合号大得多。为了减少多余的节点,我们构建了一个人节点图,并应用最大人体节点匹配算法来构造最终的人体姿势。 3.2.1 Joint Node Building (合并同一节点的分身) 由于高度重叠的人体区域往往会预测出相同的实际节点(如图4所示),因此我们首先将这些可以组合的对象归为一组,它们代表与一个节点相同的实际节点。 由于高质量的关节预测,指示同一节点的候选节点始终彼此靠近。因此,我们可以使 用以下规则对它们进行聚类:对于第k个节点(身体各部位节点编号为1…k),给定两个位于p1和p2的候选关节,及控制偏差δ,如果p1-p2欧氏距离 ≤ min{u1, u2}δ,我们将它们标记为同一组。其中u1和u2是热力图上两个节点的高斯响应大小,由高斯响应偏差确定。δ是控制第k个关节偏差的参数,我们直接采用MSCOCO关键点数据集中的参数[15]。使用min{u1,u2}而不是恒定阈值的原因是为了确保只有在p1和p2同时落入彼此的控制域(半径分别为u1δ,u2δ)时,我们才将它们组合在一起。一个Node表示一组按上述标准聚集在一起的节点。 现在,通过将一个节点组合为一个Node,我们有了Node集 J={vkj:k∈{1…K},j∈{1…Nk}} ,其中Nk是身体部位k的关节节点数,vkj是身体部位k的第j个节点。J中的节点总数为∑Nk。 3.2.2 Person Node Building person nodes代表人体检测器检测到的人体区域。我们将person nodes表示为H={hi:∀i∈{1…M}},其中hi是第i个人节点,M是检测到的人体区域的数量。理想情况下,高质量人体区域会紧贴人类实例。但是,在拥挤的场景中,这种条件并不总是令人满意。人体检测器将产生许多多余的建议,包括截断和不紧凑的边界框。 在Sec 3.3中进行全局人关节匹配时,我们将消除这些低质量的人体区域。 3.2.3 Person-Joint Edge 在获得node和person nodes之后,我们将它们连接起来以构建我们的人节点图。对于每个人的节点hi,JC-SPPE将预测节点的多个候选结果。如果这些候选结果之一对node vkj有所贡献,我们将在它们之间建立一个边缘ekij。ekij的权重是该双参关节的反应评分,记为wkij。这样我们可以构造边缘集E={ekij:∀i,j,k}。人关节图可以写成:G=((H,J), E) 3.3 Globally Optimizing Association 从现在开始,我们估计人群中人体姿势的目标已转变为求解上述人节点图并最大化总边缘权重。我们的目标函数如下图,d表示是否保留边,Eq.5和6约束每个人体区域只能匹配1-K的节点各一个。 如方程式10所示,求解人节点图G中的全局分配问题在数学上等效于分别求解其子图Gk。Gk是由人体子集和第k个节点子集组成的二部图。 对于每个子图,应用更新的Kuhn-Munkres算法[1]以获得优化结果。通过分别求每个Gk,我们获得最终结果集R。 给定图匹配结果,如果dkij=1,则vkj的加权中心被分配给第i个人体提案的第k个节点。在此,加权中心表示vkj中的候选节点坐标的线性组合,权重是他们的热力图响应分数。以这种方式,可以构造每个人体区域的姿势。无法匹配任何节点的人员区域将被删除。 Computational Complexity 姿势估计的推理速度在许多应用中至关重要。我们证明了我们的全局节点算法与普通的贪婪NMS算法效率相同。 3.4 Discussion...