EvoPose2D论文阅读

Source


论文链接: https://arxiv.org/pdf/2011.08446v1.pdf
GitHub: https://github.com/wmcnally/evopose2d.

摘要

在计算机视觉的多个领域中,神经体系结构搜索已经被证明在设计高效,特定任务的卷积的神经网络中非常有效。然而在2D人体姿态估计中,其应用受到高计算需求的限制。假设神经体系搜索在2D人体姿态估计中具有巨大的潜力,作者提出了一种新的权重转移机制,该方案可以放松保留函数的突变(relaxs function-preserving mutation?),从而使作者能够灵活地加速神经进化。该方法产生的2D人体姿态网络设计比最新的手工设计网络更有效,更准确。实际上,产生的网络可以使用较少计算来处理高分辨率的图像,这使得作者能够突破2D人体姿态估计的界限。作者使用神经进化设计的基准网络,称之为EvoPose2D-S,可提供与SimpleBaseLine的相当的准确性,同时使用的浮点数运算减少了4.9倍,参数减少了13.5倍。最大的网络(EvoPose-L),在Microsoft COCO关键点基准测试上实现了SOTA的准确度,同时使用的运算量比最接近的竞争对手少了2.0倍,参数减少了4.3倍。

一、介绍

名词解释:神经进化是一种神经结构搜索,利用进化算法来搜索最优网络结构。
本文提出的方法仍是基于自顶向下的方法,对常用通道的后一阶段进行研究(关键点检测网络)。最近,通过一种被称之为神经结构搜索(NAS)的处理,使用机器来帮助设计CNN的结构已经引起了越来越大的兴趣1。这些方法消除了人为的偏差,并允许自动探索超越人直觉的各种网络体系结果,从而提高准确性和计算效率。作者将NAS用于2D人体姿态估计上。
大致流程:首先,作者提出了一个新的权重转移,用来减少神经进化的代价;然后,利用这个权重转移方案,在高带宽的TPUs上进行大批量训练,来加速面向2D人体姿态估计的定制搜索空间的神经进化。在实验中,作者的方法生成了一个设计相对简单的二维人体姿态网络,同时取得了SOTA的效果,如图一。
效果图
主要贡献

  • 提出了一种新的权重转移方案来加速神经进化。与之前方法对比,该方法不受完全函数保留的限制。放松了该约束后,通过实验表明,作者提出的方案所满足的函数足够提供适应度收敛,从而简化神经进化并使其更具有灵活性。
  • 提出的经验证据表明,大批量训练可以和Adam 优化器一起使用,用于加速2D人体姿态网络的训练而不损失准确性。在神经进化过程中,通过最大限度地提高训练吞吐量,获得了大批量训练的好处。
  • 设计了一个有利于二维人体姿态估计的搜索空间,并利用上述贡献在一个实际的时间框架内运行了二维人体姿态网络的全面神经进化。

二、相关工作

记录一下神经进化部分的相关工作:
神经进化是一种神经结构搜索,利用进化算法来搜索最优网络结构。作者关注神经进化,是因为与其他方法相比,神经进化具有灵活性和多样性,如:强化学习,一次性NAS或者基于梯度的NAS。
由于架构搜索空间大,而且采样的架构需要经过训练以适应评估其性能的事实,NAS需要大量的计算量,事实上,最初的一些实现需要GPU几年的时间。这不可避免地导致了一个旨在通过减少搜索时间来实现使用性的研究分支。网络形态和函数保留突变(function-preserving mutations)是神经进化中用来解决这一问题的技术。从本质上来说,这些方法迭代地突变网络和转移权值,使得网络的函数在突变时候完全保持不变,即突变网络的输出和父网络的输出相同。因此,与从随机初始化状态进行训练相比,突变的子网络只需要相对较少的步骤。因此,这些技术能够将搜索时间缩短到GPU只需要几天的时间,然而,函数保留突变实现起来有挑战性,而且很有限制(例如:复杂性不能被降低)。
NAS算法主要是在小尺度数据集上开发和评估的,在更复杂的视觉识别任务中使用NAS仍是有限的,这在很大程度上是因为计算要求使其不可行。对于二维人体姿态估计来说尤其如此,训练一个单一的模型需要好几天的时间,尽管如此,在设计二维人体姿态网络中使用NAS已被尝试过几个案例,尽管由于具有较少的参数和操作,一些产生的网络提供了优越的计算效率,但皆有一个能够在精确度上超越手工搭建的网络。

三、方法

Neuroevolution of2D Human Pose Networks

weight tranfer

假设,一个父网络是表示为一个函数 P = ( x ∣ θ ( P ) ) P=(\textbf{x}|\theta^{(P)}) P=(xθ(P)),其中 x \textbf{x} x是网络的输入, θ ( P ) \theta^{(P)} θ(P)是它的参数。神经进化网络的基础在于一个过程,参数 θ ( C ) \theta^{(C)} θ(C)在突变子网络 C C C是从 θ ( P ) \theta^{(P)} θ(P)继承得来的,例如 C = ( x ∣ θ ( C ) ) ≈ P = ( x ∣ θ ( P ) ) C=(\textbf{x}|\theta^{(C)})\approx P=(\textbf{x}|\theta^{(P)}) C=(xθ(C))P=(xθ(P))。也就是说,变异子网络的输出或“函数”与父网络相似,但不一定相等。为了实现快速的神经结构搜索,父亲函数的被保留程度必须足够允许 θ ( C ) \theta^{(C)} θ(C)去被训练到收敛在一个小部分的步骤中,训练是从一个随机的状态开始。
为了形式化权重转移(weight transfer),用 W ( l ) ∈ R k p 1 ∗ k p 2 ∗ i p ∗ o p W^{(l)}\in\mathbb R^{k_{p1}*k_{p2}*i_{p}*o_{p}} W(l)Rkp1kp2ipop作为权重在父网络的 l l l层使用, V ( l ) ∈ R k c 1 ∗ k c 2 ∗ i c ∗ o c V^{(l)}\in\mathbb R^{k_{c1}*k_{c2}*i_{c}*o_{c}} V(l)Rkc1kc2icoc作为在变异子网络中对应层的权重;其中k表示kernel的尺寸,i表示输入的通道数。为了简单起见,考虑了特殊情况,当 k p 1 = k p 2 = k p , k c 1 = k c 2 = k c k_{p1}=k_{p2}=k_{p},k_{c1}=k_{c2}=k_{c} kp1=kp2=kp,kc1=kc2=kc并且 o p = o c o_{p}=o_{c} op=oc,但是下面的定义可以轻松的扩展到 k p 1 ≠ k p 2 , k c 1 ≠ k c 2 k_{p1}\neq k_{p2},k_{c1} \neq k_{c2} kp1=kp2,kc1=kc2或者 o p ≠ o c o_{p}\neq o_{c} op=oc,继承的权重 V W V_W VW可以得出,如下:
在这里插入图片描述
其中 p = 1 2 ( k p − k c ) p=\frac{1}{2}(k_{p}-k_{c}) p=21(kpkc) V W V_W VW被转化为 V V V,并且 V V V中剩余的非继承权重被随机初始化。
图2展示了两个卷积层之间权重转移的示例,原则上,本文提出的去权重转移可以用于任何类型的卷积(一维或者三维卷积),并且允许在不同核大小,步长、扩张、输入通道和输出通道的卷积操作之间进行。更一般地来说,可以应用到任何具有可学习参数的操作,包括批处理归一化和密集的层。
在这里插入图片描述
从本质上说,所提出的权重转移方法放松了施加的函数保持约束。在实践中,作者发现提出的权重转移保留了深度网络突变后的大部分函数。这使得能够在保持良好的参数初始化的同时,以一种简单而且灵活的方式进行网络突变,结果,密集的网路可以用更少的迭代来训练,加速了神经进化。

Search space

关于搜索空间的决策是特别重要的,因为搜索空间包含了优化问题的所有可能的解决方案,它的大小与彻底探索空间所需的计算量相关。因此,通过利用先验知识来减小搜索空间的大小,并确保采样的架构对手头的任务进行适配。
基于simplebaseline结构的简洁和优雅,使用了2 启发的搜索空间来搜索最佳主干。具体来说,搜索空间包含一个单分支层次结构,该结构包含串联堆叠的七个模块。每个模块由链式反向残差嵌段3组成,这些嵌段使用六倍的膨胀比和挤压激发。对于每个模块,搜索最佳内核大小,反向残差块素和输出通道。根据在2D人体姿态网络中的更深层中空间分辨率的重要性,作者另外搜索了最后三个模块的最佳步幅。作者的搜索空间能够产生 1 0 14 10^{14} 1014个唯一的主干。为了完成网络,在七个模块之前有一个具有32个输出通道的初始卷积层,并使用三个内核大小为3*3,步幅为2以及128个输出通道的转置卷积来构造网络头。

Fitness

为了在计算效率和准确性之间取得平衡,作者以帕托(Pareto)优化作为基础,最小化多目标适应函数,包括验证损失和网络工作参数的数量。给出一个2D人体姿态网络表示为 N ( x ∣ θ ( N ) ) N(\textbf{x}|\theta^{(N)}) N(xθ(N)),对单一RGB输入图像的 I ∈ R h ∗ w ∗ 3 \textbf I \in \mathbb R^{h*w*3} IRhw3 和对应目标热图 S ∈ R h ′ ∗ w ′ ∗ K \textbf S \in \mathbb R^{h^{'}*w^{'}*K} SRhwK 给出了损失值如下:
在这里插入图片描述
其中 K K K是关键点的数量, v v v表示关键点是否可见的标志位。 S S S表示通过中心2D高斯进行定心,其标准差为 h ′ 64 \frac{h^{'}}{64} 64h像素值,在真实的关键点标注坐标中,其中 h ′ h^{'} h表示输出热图的高度。网络 N N N的适应度可定义为:
在这里插入图片描述
N N N为验证集中的样本数, n ( θ N ) n(\theta ^{N}) n(θN) N N N中的参数数量, T T T是参数的目标个数, Γ \Gamma Γ控制参数数量和验证损失之间的适应性权衡。最小化参数的数量而不是浮点运算的数量(FLOPs),让我们可以间接最小化FLOPs,而不惩罚突变导致下降步幅太严重。

Evolutionary strategy

进化策略如下,在0代,手工定义了一个公共祖先网络,并从头开始为 e 0 e_{0} e0时期进行训练。在第1代中,通过变异祖先网络产生 λ \lambda λ个孩子。在祖先和每个孩子中进行权重转移,然后孩子的权重被训练为了e次迭代( e ≪ e 0 e\ll e_{0} ee0)。在第1代的末期,从 ( λ + 1 ) (\lambda + 1) (λ+1)个网络池(子代+祖先)中最适合的网络成为下一代的父代。在第二代之后,重复进行---->突变权重转移---->训练过程,并且 ( λ + μ ) (\lambda + \mu) (λ+μ)网络(孩子+父亲)中的前μ个网络成为下一代中的父亲。演变过程一直持续到手动终止,通常是在适度收敛之后。

Compound scaling

最近的研究表明,将网络的分辨率、宽度(通道)和深度(层)一起缩放要比分别缩放其中一个尺度更有效。基于这一发现,作者使用以下深度(cd)和宽度(cw)系数将神经进化发现的基础网络扩展到不同的输入分辨率
在这里插入图片描述
其中 r s r_s rs表示这搜索分辨率, r r r是所需分辨率, α , β , γ \alpha,\beta,\gamma α,β,γ是尺度参数。为了方便,作者使用了一下尺度参数(也是借鉴其他文章)(α=1.2,β=1.1,γ=1.15),假设这些参数可以得到更好的结果。

四、实验结果

如图
在这里插入图片描述

五、结论

  • 主要解决了什么问题:将神经进化的方法应用到2D多人人体姿态任务上,同时为了解决高计算需求的限制。
  • 解决问题的方法:采用权重转移的方法,并将其与大批量训练结合使用,来加速2D人体姿态网络的神经进化。
  • 效果如何:论文中给出的EvoPose2D-L的最好结果为76.6,HRNet-w48的结果为76.3,HRNet-w32的结果为75.8
    对进化算法不太了解,有很多内容读的不太懂,这里暂时做一下记录,有空再仔细研读,第一次写博客,请批评指正。

六、引用


  1. 【1】Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. In ICLR, 2017. 1, 3
    【2】Bowen Baker, Otkrist Gupta, Nikhil Naik, and Ramesh Raskar. Designing neural network architectures using rein- forcement learning. In ICLR, 2017. 1, 3
    【3】Martin Wistuba, Ambrish Rawat, and Tejaswini Pedapati. A survey on neural architecture search. arXiv preprint arXiv:1905.01392, 2019. 1, 3 ↩︎

  2. 【4】Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, and Quoc V Le. Mnas- net: Platform-aware neural architecture search for mobile. In CVPR, 2019. 3, 4
    【5】Mingxing Tan and Quoc V Le. Efficientnet: Rethinking model scaling for convolutional neural networks. In ICML, 2019. 2, 3, 4, 5, 6, 8 ↩︎

  3. 【6】Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zh- moginov, and Liang-Chieh Chen. Mobilenetv2: Inverted residuals and linear bottlenecks. In CVPR, 2018. 4
    [40] ↩︎