1. 引言
由于在人体姿态估计 [1] 中,往往需要高分辨率的表示以保证估计的准确性,所以目前的人体姿态估计算法绝大部分都是基于可见光的。2014年Jain等人 [2] 提出DeepPose,首次将深度学习中的卷积神经网络引入人体关键点检测。2016年从CPM [3] 开始,CNN已经可以把关键点特征表示以及关键点的空间位置信息建模进去。同年还出现了一个非常重要的MSCOCO数据集。2018年Xiao等人 [4] 提出Simple Baselines,使用转置卷积提高特征图的分辨率代替之前常用的线性插值方法,引起了对于如何得到高分辨率预测热图的思考。2019年SUN [5] 提出了高分辨率网络HRNet。考虑到在现实情况下,经常会有在低照度 [6] 条件下进行检测的需求;另外人体姿态估计是一项既需要准确性又需要效率的任务,特别是当它遇到资源有限的设备上的实时应用时,模型的参数量对于模型部署效率有很大影响。
基于以上问题,本文提出一种基于改进HRNet的人体姿态估计方法。结合一种无损通道剪枝模块在不显著影响准确率的情况下大幅减少参数的数量。并使用迁移学习方法克服红外图像数据较少的问题,本文用Microsoft COCO 2017数据集的灰度图像对网络进行预训练,再在改进的网络前加入一层瓶颈结构进一步提取特征,后用UCH-Thermal-Pose数据库在热域对其进行微调,从而训练得到优化后的模型。最后使用TensorRT对模型进行Jetson Xavier NX平台优化加速,采用上述系统实现基于嵌入式平台的红外人体姿态估计。
2. 人体姿态估计的关键算法
2.1. 基于迁移学习的人体姿态估计
由于目前能够收集到的用于红外图像的人体关键点检测的数据集通常很小,不能满足深度网络的训练要求,数据不足必然会遇到模型过拟合的问题,因此本文采用基于迁移学习的微调方法将提出的人体姿势估计方法从可见域扩展到热域。迁移学习预训练–微调 [7] [8] 的学习范式通常首先在大型数据集上对模型进行预训练,以获取更广泛的通用知识。本文利用灰度图像和红外图像数据格式都是单通道图像的特点为红外图像的人体关键点检测任务提供有效的解决方案,具体流程如图1。
为了使训练样本更接近红外图像的目标域,本文将COCO数据集中的图像进行标准灰度化处理,转换为和红外图像数据格式相同的灰度图像用来预训练P-HRNet,获得可用的预训练权值作为对该方法进行微调的基础。考虑到红外图像图像对比度低,细节信息不丰富等特点,本文又在P-HRNet网络前引入了一个残差模块,先降维聚焦关键信息,再升维恢复分辨率,在不改变特征层大小的情况下对红外图像进行进一步的特征提取。接着采用迁移学习微调的方法,使用UCH-Thermal-Pose数据集对加入了瓶颈结构的P-HRNet网络整体进行微调,得到最终基于红外图像的人体姿态估计模型。
2.2. P-HRNet结构
由于红外图像往往分辨率较低,细节信息有限,这要求检测模型可以维持图像分辨率,降低由于低分辨率图像信息表征能力弱带来的检测难度。而且红外图像中的目标轮廓和关键特征可能不如可见光图像清晰,针对这些挑战本文选择了在提取人体姿态估计的多尺度特征方面表现出卓越的能力的HRNet作为基础网络。HRNet的高分辨率处理能力可以最大限度地提取和利用有限的信息,从而在姿态估计中提供更高的准确性。而且考虑到后期的嵌入式部署,本文需要一个高效稳定的人体姿态估计网络,HRNet的并行子网络结构可以在不增加过多计算负担的情况下实现高性能的姿态估计且具有很好的鲁棒性。
![](//html.hanspub.org/file/13-1543251x9_hanspub.png?20240530094914192)
Figure 2. The overall structure of P-HRNet
图2. P-HRNet网络整体结构
如图2所示,P-HRNet网络一共生成四级的多尺度特征融合结构。首先将256 × 192 × 1的原始图像输入到由两个跨步的3 × 3卷积组成的Stem结构,将分辨率降低到1/4。接着图片将通过一系列改进的Stage结构,在图中蓝色框和红色框两部分组成一个Stage。蓝色框部分是每个Stage的基本结构,由多个branch组成,Stage1蓝色框使用的是P-Bottle Neck,其余Stage的蓝色框使用P-Basic Block。红色框部分是每个Stage的过渡结构,有Transition层和Fuse层。在Stage1的时候通过重复堆叠4次P-Bottle Neck提高各层之间梯度的传播能力,使特征图的通道数增多,接着Transition将图片通过并行两个卷积核大小为3 × 3的卷积层得到两个不同的尺度分支,即下采样4倍的尺度以及下采样8倍的尺度。后几个Stage结构类似,以Stage3为例进行说明。对于每个尺度分支都首先通过4个P-Basic Block,然后融合不同尺度上的信息,对于下采样4倍分支的输出,它是分别将下采样4倍分支的输出、下采样8倍分支的输出上采样2倍、下采样16倍分支的输出上采样4倍进行相加最后通过ReLU得到下采样4倍分支的融合输出。如此经过4个Stage以后便输出64 × 48 × 17的特征图,即17个身体部位关键点的heatmap。
2.3. 无损通道剪枝模块原理
对于人体姿态估计任务来说,随着模型深度的增加,网络的收敛性和模型规模大小也受到影响。因此,如何在不牺牲准确率的同时削减模型的规模是一个亟待解决的问题。ResRep [9] 是一种通道剪枝方法。它将CNN重参数化为两部分,分别用于保持模型性能 [10] 和修剪。它通过减少卷积层的宽度来精简CNN。受其启发,本文提出了一种不会显著影响精度的剪枝方法,将结构重参数化思想的剪枝方式融入人体姿态估计算法中。该模型在保证精度前提下,参数量大幅减少,模型复杂度更低。
![](//html.hanspub.org/file/13-1543251x10_hanspub.png?20240530094914192)
Figure 3. Residual module structure combined with pruning
图3. 结合剪枝的残差模块结构
如图3所示,为了在预测精度和计算成本之间取得平衡,本文提出P-Bottle Neck和P-Basic Block来替换Stage结构中的所有残差块,即对Stage结构中的Bottle Neck和Basic Block进行剪枝。P-Bottle Neck将修剪Bottle Neck的第一层(1 × 1)和第二层(3 × 3)卷积层,在其前两个卷积层经过BN以后各加一个1 × 1的卷积,这样减少了第一层第二层的输出通道和第二层第三层的输入通道,而对第一层的输入和第三层的输出没有影响,所以不影响残差。P-Basic Block则是融合通道剪枝的Basic Block,在其第一个卷积层(3 × 3)经过BN以后加上一个1 × 1的卷积,剪枝思路和Bottle Neck同理。
此操作意在将原CNN等价拆分成负责保持性能的部分和负责修剪的部分,前者通过初始化1 × 1卷积参数为单位矩阵,不改变原目标函数、保持精度不降低,后者通过去掉某些通道,取得更高压缩率、更少精度损失。然后将原始卷积和1 × 1的卷积线性组合成一个卷积,并且删除通道成一个更小的模型。具体剪枝过程如图4所示。
![](//html.hanspub.org/file/13-1543251x11_hanspub.png?20240530094914192)
Figure 4. Schematic diagram of pruning process
图4. 剪枝过程原理图
修剪Basic Block中3 × 3卷积层时,输入通道是Ci,输出通道是Co,加入的1 × 1的卷积输入通道和输出通道都为Co,对于卷积核大小为1 × 1的2D卷积,它的参数
可以转化为一个二维的矩阵
,W的行和列分别对应卷积的输入通道和输出通道,将W中某一行置零相当于对卷积对应的输入通道进行剪枝。为了确定W中每个通道的重要性,本文通过估计将某一参数(w)置0后对损失的影响来评价该参数的重要性。网络的输入为x,标签为y,损失函数为L。表示网络参数的集合。通常,网络的参数都处于0附近的小范围内,因此某一参数w置0后对损失L的变化可以有效地近似为损失L对w的一阶泰勒级数展开。计算方式如下:
(1)
其中T表示参数的重要性分数,T越大,将该参数置0后对损失的影响越大。即该参数越重要。
中输入通道p的重要性
可以表示为
(2)
用
表示网络中所有剪枝模块的
的值集合。因为本文使用的网络与传统剪枝方法针对的分类网络相比,参数量较小。对所有参数都添加正则化会导致模型欠拟合。所以不同于对所有权重都添加正则化的传统剪枝方法,本文只对分数最小的前Q个参数添加正则损失,而其他的参数不添加正则损失。则剪枝模块的参数在第t步更新方式如下:
(3)
(4)
其中
表示学习率,
是普通权重的衰减系数,
是根据优化器和损失函数计算的梯度项,
为掩码矩阵,用于选择是否对权重添加正则化损失。对于权重
中重要性高的通道,掩码矩阵
上的对应位置为0,在更新时不考虑正则化损失。对于
中重要性低的权重,掩码矩阵
上的对应位置为1,在更新时通过正则化损失使其逐渐降低为0。在训练阶段,如果W(t)中的某一个输入通道的参数之和小于阈值
,则将mask中的对应通道置零。
(5)
训练结束后,mask为0的位置对应W中需要被剪枝的通道。
表示W被剪枝后的结果。
对应的是输入通道为
,输出通道为
,卷积核大小为1 × 1卷积的权重
。在测试阶段,K × K的卷积和1 × 1的卷积共同转化成一个K × K的卷积,转换过程公式如下:
(6)
其中
表示卷积操作。因为
,所以变换后的
的参数小于
,从而减少了推理阶段的计算量。
3. 基于嵌入式的人体姿态估计系统
3.1. 系统组成及工作原理
针对在人体姿态估计时嵌入式应用成本高、检测速度慢难以满足实际应用需求等难点问题,本文设计了基于嵌入式Jetson Xavier NX平台的人体姿态估计系统,由Jetson Xavier NX开发板、显示屏、热红外摄像头以及鼠标键盘组成。如图5所示,Jetson Xavier NX是一款小巧而强大的人工智能开发平台 [11] 。尽管体积小巧,其计算性能却极为出色,在15W的功耗下,它能够达到每秒14万亿次的计算速度。这款开发板规模仅为103 mm × 90.5 mm × 34 mm,并且支持多网络的并行计算技术。此外,它还提供了HDMI和DP的视频输出接口,USB方面,它支持USB 3.1 (4端口)、以及USB 2.0 Micro-B (1端口)。
基于嵌入式Jetson Xavier NX平台的人体姿态估计系统首先利用红外摄像头传入的视频流作为输入,将视频流经过GStreamer框架处理,通过逐帧抽取图像作为实时检测系统的输入,采用多线程的设计策略增强嵌入式系统的实时性。以Jetson Xavier NX作为高性能嵌入式计算平台执行TRT推理引擎得到检测结果,并将检测结果通过屏幕进行可视化显示,实现在功耗低、体积小的嵌入式平台完成实时的基于红外视频的人体站坐躺行为检测。
![](//html.hanspub.org/file/13-1543251x42_hanspub.png?20240530094914192)
Figure 5. Jetson Xavier NX embedded platform
图5. Jetson XavierNX嵌入式平台
3.2. TensorRT优化及模型部署
在进行模型推理时,网络的不同层之间频繁调用函数会消耗很多时间 [12] 。我们通过采用TensorRT对人体姿态估计模型进行优化,可以提高大约15倍 [13] 的网络吞吐量,同时将功耗降低55% [14] 。本文的人体姿态估计模型中的所有张量以32位浮点数的形式表示,为了在确保人体关键节点检测精度的前提下,进一步提高处理能力,本文将模型通过TensorRT的量化方案,转换为FP16的精度。此外,进行模型结构的优化也是提升效率的重要手段,包括采用垂直和水平融合两种方式 [15] 。这样的优化操作可以缩减网络的深度和宽度,同时减少了在姿态估计模型中函数调用的数量,进而提升推理速度。
针对嵌入式设备对检测实时性的需求,本文采用了偏向底层语言的C++编程来加载TensorRT模型,加速实施人体姿态预估模型的部署。在对Pytorch训练出的模型启用TensorRT的推理加速前,先将Pytorch保存的模型文件转化为ONNX模型,流程如图6所示:
![](//html.hanspub.org/file/13-1543251x43_hanspub.png?20240530094914192)
Figure 6. ONNX-TensorRT model conversion flowchart
图6. ONNX-TensorRT模型转换流程图
在TensorRT解析了人体姿态预估模型后,就可以将模型和对应的层进行匹配。首先,创建engine类作为构建器,定义网络,然后创建ONNX的解析器并进行解析。接下来,配置网络构建参数,让TensorRT可以进行对应的模型构建和优化。有了网络定义和builder配置,就使用builder创建引擎。然后将模型序列化并保存,最后创建推理运行时runtime,并反序列化模型以获得推理engine,随后执行推理和后处理操作,在Jetson Xavier NX上编译项目,对性能进行优化。
4. 实验结果与分析
4.1. 数据集及评价指标
4.1.1. 数据集
COCO2017 [16] 数据集包含80类图像和大约25万个人类实例。整个数据集划分如下:训练集train2017包含57000张图像和150万个人类实例;测试集Test-dev2017包含20000个图像;验证集val2017包含5000张图像。
UCH-Thermal-Pose [17] 数据集由A和B两组组成,Set-A是通过收集不同公共来源的热图像并对其进行标注而构建的。由800张图像组成,包括室内和室外环境。其中600张图像用于训练集,其余200张用作验证集。B组使用由FLIR FC-690 S热像仪捕获的104幅热图像组成,分辨率为640 × 480,共有3个不同的相机角度。数据集的每张图像均使用LabelMe工具手动标注人体关键点。
4.1.2. 评价指标
关键点检测需要同时检测人体目标和定位人体关键点的坐标,这是一项检测和关键点估计同时进行的任务。本姿态估计模型采用对象关键点相似度(Object Keypoint Similarity, OKS)来计算真实关节点与预测关节点之间的相似度。一个人的真实关节点和预测关节点分别定义为:
(7)
(8)
其中N表示图像上关键点的个数。
和
是关键点的坐标。
为真实值的是否可见的标记。可以计算出每个人体实例关节点的真实值与检测到的关键点之间的欧几里得距离:
(9)
OKS的公式如下:
(10)
其中,
越大代表这个人体实例关节点标注难度越高。
为对象的因子,是第i个人体关键点的归一化因子,是通过计算数据集中所有真实值标准差而来的,可以反映出此人体实例关节点标注时候的标准差。本文性能指标遵循mAP,即OKS以0.05为间隔从0.5取到0.95,得到的所有的AP结果取平均。AP50和AP75是在0.50和0.75阈值下预测数据的评价平均精度。APM和APL分别表示中等尺度和大尺度下的AP值,计算方法与计算mAP类似,只是在计算每个尺度下的AP时使用了不同的框尺寸和长宽比。
4.2. 实验结果
本文使用Microsoft COCO 2017数据集对模型进行预训练。将图像转换为灰度,设置输入大小为256 × 192,每个图像将通过一系列的数据增强操作,包括随机旋转([−30˚, 30˚]),随机缩放([0.75, 1.5]),随机平移([−40, 40])以及随即翻转的操作。总训练回合数为300次,学习率LR初始设置为2e-3;在第200次衰变到1e-4;在第260次衰变到1e-5。在训练中设置Adam优化器计算热图损失。并将两者的损失权值分别设为1和1e-3,以平衡热图损失与分组损失的关系。在剪枝过程中随着权值衰减和剪枝率的增加,剪枝规模越大,但是随着迭代次数的增加,精度也会出现波动现象。当权值衰减为0.01,剪枝率为0.3时,精度曲线变化趋势比较平稳,在300个epoch时,实现了达到大约46%的剪枝规模的同时,仅有0.6%的精度下降。实验所使用的软硬件如表1所示,部分测试集检测结果可视化如图7。
![](Images/Table_Tmp.jpg)
Table 1. Hardware and software used in the experiment
表1. 实验使用的软硬件
![](//html.hanspub.org/file/13-1543251x53_hanspub.png?20240530094914192)
Figure 7. Prediction heatmap results on the UCH dataset
图7. UCH数据集上预测热图结果
COCO数据集上与其他经典轻量级HRNet算法精度对比如表2,可以看出本文的模型在精度上的显著优势。模型剪枝前后在COCO数据集上数据对比如表3,可以看出本文模型经过剪枝后虽平均精确率较原模型略有下降,但可以说优于同类型轻量级模型,且推理速度有大幅提升,参数量和模型体积甚至几乎仅有原模型的一半。
![](Images/Table_Tmp.jpg)
Table 2. Comparison of P-HRNet with other classic lightweight HRNet algorithms on the COCO dataset
表2. COCO数据集上P-HRNet与其他经典轻量级HRNet算法对比
![](Images/Table_Tmp.jpg)
Table 3. Comparison of model data before and after pruning on the COCO dataset
表3. 剪枝前后模型在COCO数据集上对比
预训练后使用来自UCH-Thermal-Pose Set-A的600张注释图像对改进后的模型进行微调。学习率LR设置为1e-3,对模型进行50个epoch的迭代训练。改进前后模型在UCH-Thermal-Pose set-A上的200张红外图像组成的验证子集上进行评估平均精度如表4。本文还将改进模型和其他优秀的人体姿态估计网络在相同的红外图像测试集上进行了对比,结果如表5。不难看出经过改进的模型在红外数据集上的表现优于原模型,与其他优秀算法对比优势明显,证明本文的可见域与热域迁移学习的策略不失为针对红外图像的关键点检测领域一种可靠的解决方案。
![](Images/Table_Tmp.jpg)
Table 4. Comparison of model accuracy on the UCH dataset before and after transfer learning
表4. 迁移学习前后模型在UCH数据集上的精度对比
![](Images/Table_Tmp.jpg)
Table 5. Comparison with other excellent algorithms on the UCH dataset
表5. UCH数据集上与其他优秀算法对比
4.3. Jetson Xavier NX上的结果与分析
在Jetson Xavier NX平台进行模型优化效果实验,环境配置如下:Ubuntu 20.04操作系统、CUDA 11.4、cuDNN 8.4、Jetpack 5.0.2、TensorRT 8.4.1.5、OpencV4.5.4,成功部署后的检测效果如图8。
![](//html.hanspub.org/file/13-1543251x54_hanspub.png?20240530094914192)
Figure 8. Detection performance on the Jetson Xavier NX
图8. Jetson Xavier NX平台检测效果
经过TensorRT优加速后,网络的单帧平均推理速度最高达到33 fps,优化后推理速度较原模型推理速度提高61%,在低功耗嵌入式平台的推理速度基本满足了嵌入式实时人体姿态估计的要求。
5. 结束语
本文设计了面向嵌入式平台的红外人体姿态估计系统。针对嵌入式平台人体姿态估计网络的实时效果,本文通过引入结合结构重参数化方法的剪枝模块,改进HRNet的网络结构,在对精度牺牲较小的情况下大幅减小模型体积。又针对目前人体姿态估计算法几乎都是基于可见光,低照度环境下的姿态识别效果不佳的情况,提出使用迁移学习方法先用COCO数据集的灰度图像训练,然后用加入了瓶颈结构的P-HRNet在UCH-Thermal-Pose数据库上进行热域的微调,实现了针对红外场景的人体姿态估计。接着进一步采用GStreamer视频流处理框架结合TensorRT对模型进行了优化和部署,使推理速度能够基本满足实时性需求。未来研究可以收集更丰富场景下的红外人体图像进行标注,提高模型精度并完善丰富嵌入式人体姿态估计系统功能。
基金项目
辽宁省教育厅项目(LJKZ0174)。
NOTES
*通讯作者。