发布于: Oct 14, 2022

在本文中,我们将介绍一款机器学习性能调优工具——Amazon Inferentia,首先我们将使用 Amazon Neuron 编译一套开源的 TensorFlow 版本的 OpenPose,然后针对基于 Amazon Inferentia 的实例对推理性能进行调优。与基于 GPU 的实例相比,我们需要在本演练中设置基准测试环境、衡量图像处理管道的吞吐量,并量化该系统的性价比改进情况。

人体姿态估计,属于一类机器学习(ML)与计算机视觉(CV)相结合的技术应用方向,可用于支持行人意图预估、AR 和体育赛事中的运动跟踪等多种用例。姿态估计的核心在于识别图像(关节与关键点)的具体坐标,将这些坐标串连起来以构成一个人的骨骼表示。对身体姿态的准确表达,将成为机器人交互设计乃至运动姿态量化等应用目标的实现前提。

目前市面上存在诸多可用于人体姿态估计的方法,其中 OpenPose 采取深度学习凭借自下而上的方法(由卡耐基梅隆大学认知计算实验室于 2018 年发布)吸引到众多拥趸。OpenPose 是一种多人 2D 姿态估计模型,其中采用一种称为“部位亲和域”(PAF)的技术对身体各部位进行关联,并借此在图像上建立起多个单独的骨架结构。在这种自下而上的方法中,模型能够识别出各个关键点,并据此将骨架结构拼凑在一起。

为了实现这一目标,OpenPose 使用了两步式流程。首先,它使用 VGG-19 模型提取图像特征,并将这些特征传递至并行运行的一对卷积神经网络(CNN)当中。

其中一套 CNN 负责计算置信度图,借此检测图像中的各个身体部位。另一套 CNN 则计算 PAF,并将各个部分合并起来,构成人体骨骼结构。您可以多次重复这些并行分支,借此完善置信度图与 PAF 预测结果。

下图所示,为来自 VGG 的特征 F,此特征被馈送至 OpenPose 模型的 PAF 与置信度图分支当中。(来源:使用部位亲和域进行实时多人 2D 姿态估计)

原始 OpenPose 代码依赖于 Caffe 模型与预统计的 C++ 库。出于使用便捷性与可移植性的考虑,我们在本轮演练中使用 GitHub repo 中的 tf-pose-estimation 基于 TensorFlow 1.15 重新实现了 OpenPose 的神经网络。此 repo 还提供 ML 管道脚本,大家可以用 OpenPose 对图像及视频进行预处理与后处理。

在本轮演练中,您需要准备一个有权访问 Amazon Web Services 管理控制台的 Amazon Web Services 账户,同时保证有权限使用公开 IP 创建 Amazon Elastic Compute Cloud (Amazon EC2)实例和创建 Amazon Simple Storage Service Amazon S3)存储桶。

另外,如果您熟悉如何使用 Amazon Deep Learning AMI 与 Jupyter notebooks 中的 Conda 环境则更好,但并非硬性要求。

Amazon Inferentia 芯片是一款由 Amazon Web Services 定制构建,旨在提供更高推理性能的芯片方案,能够立足云端实现最低推理成本,并帮助大家轻松将 ML 集成至标准应用程序功能当中。

Amazon Neuron 是一款软件开发套件(SDK),由编译器、运行时以及配置文件工具共同组成,这些工具可进一步优化 Inferentia 芯片的 ML 推理性能。Neuron 已经与 TensorFlow、PyTorch 以及 MXNet 等流行 ML 框架顺畅集成,且预装在 Amazon Deep Learning AMI 当中。在 Amazon Inferentia 上部署深度学习模型的具体方式,与其他平台上的类似环境无甚区别,您可以轻松享受到这款芯片带来的性能提升与成本优化。

在 Amazon Neuron GitHub 上发布的最新 Neuron 版本,增加了对更多模型(包括 OpenPose)的支持选项,我们将在后文中重点加以介绍。此外,Neuron 新版本还将 Neuron PyTorch 升级到最新稳定版(1.5.1),允许大家在 Amazon Inferentia 上编译并运行更多模型。

 

相关文章