计算机视觉论文速递(三)YOLO-Pose:《Enhancing YOLO for Multi Person Pose .....》实时性高且易部署的姿态估计模型

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 现有的基于Heatmap的两阶段方法并不是最优的,因为它们不是端到端训练的,且训练依赖于替代L1损失,不等价于最大化评估度量,即目标关键点相似度(OKS)。

a7691446656046b7ab14cec84b9de847.png


YOLO-Pose论文:Enhancing YOLO for Multi Person Pose Estimation Using Object Keypoint Similarity Loss


代码已开源:https://github.com/TexasInst…


1. 简介


 本文介绍了YOLO-Pose,一种新的无Heatmap联合检测方法,是基于YOLOv5目标检测框架的姿态估计。


 现有的基于Heatmap的两阶段方法并不是最优的,因为它们不是端到端训练的,且训练依赖于替代L1损失,不等价于最大化评估度量,即目标关键点相似度(OKS)。


 YOLO-Pose可以进行端到端训练模型,并优化OKS度量本身。该模型学习了在一次前向传递中联合检测多个人的边界框及其相应的二维姿态,从而超越了自上而下和自下而上两种方法的最佳效果。


 YOLO-Pose不需要对自底向上的方法进行后处理,以将检测到的关键点分组到一个骨架中,因为每个边界框都有一个相关的姿态,从而导致关键点的固有分组。与自上而下的方法不同,多个前向传播被取消,因为所有人的姿势都是局部化的。


 YOLO-pose在COCO验证(90.2%AP50)和测试开发集(90.3%AP50)上获得了新的最先进的结果,在没有翻转测试、多尺度测试或任何其他测试时间增加等Trick的情况超过了所有现有的自底向上的方法。本文中报告的所有实验和结果都没有任何测试时间的增加,而不像传统的方法使用翻转测试和多尺度测试来提高性能。


2. YOLO-Pose方法


 YOLO-Pose与其他Bottom-up的方法一样,也是一种Single Shot的方法。然而,它并不使用 Heatmaps。相反,YOLO-Pose将一个人的所有关键点与Anchor联系起来。


3b9f2bbd9fc14a7d905fbdb8a3677336.png


 YOLO-Pose基于YOLOv5目标检测框架,也可以扩展到其他框架。YOLO-Pose也在YOLOX上在有限程度上进行了验证。图2说明了具有用于姿态估计的总体架构。


2.1 总览


 YOLOv5在精度和复杂性方面都是一个非常不错的检测器。因此,选择它作为搭建的基础,并在其之上构建。YOLOv5主要关注于80个类COCO目标检测,Box head预测每个Anchor的85个元素,分别对应于80个类的边界框、目标分数和置信度得分。而对应于每个网格位置都有3个不同形状的Anchor。


 对于Human Pose Estimation可以看作为一个单类的Person detection问题,每个人有17个相关的关键点,每个关键点有再次识别的位置和可信度:。所以,与一个Anchor关联的17个关键点总共有51个元素。


 因此,对于每个Anchor,Keypoint Head预测51个元素,Box head预测6个元素。对于具有n个关键点的Anchor,总体预测向量定义为:


18d0b32dd139427c9df57c3d4d57eb92.png


 关键点置信度是基于关键点的可见性标志进行训练的。如果一个关键点是可见的或被遮挡的,那么Ground Truth置信度设置为1,否则,如果关键点在视场之外,置信度设置为0。


 在推理过程中要保持关键点的置信度大于0.5。所有其他预测的关键点都被屏蔽的。预测的关键点置信度不用于评估。然而,由于网络预测了每个检测的所有17个关键点,需要过滤掉视场之外的关键点。否则,就会有置信度第的关键点导致变形的骨架。现有的基于Heatmap的Bottom-up方法不需要这样做,因为视野外的关键点一开始就不会被检测到。


 YOLO-Pose使用CSP-darknet53作为Backbone,用PANet来融合来自Backbone的不同尺度的特征。接下来是4个不同尺度的Head。最后,有2个Decoupled Heads用于预测box和keypoints。


 在这项工作中将YOLO-Pose的复杂性限制在150个GMACS之内,在这个范围内,YOLO-Pose能够实现具有竞争力的结果。随着复杂性的进一步增加,可以进一步弥补与Top-down方法的差距。然而,YOLO-Pose并不追求这条道路,因为YOLO-Pose的重点是实时模型。


2.2 Anchor based multi-person pose formulation


 对于给定的图像,与一个人匹配的Anchor将存储其整个2D pose和bounding box。bounding box的坐标被转换为Anchor中心,而bounding box的尺寸则根据Anchor的高度和宽度进行规范化。同样,关键点位置将w.r.t转换为Anchor中心。然而,关键点并没有与Anchor的高度和宽度进行标准化。Key point和box都被预测在Anchor的中心。


 由于YOLO-Pose的改进与Anchor的宽度和高度无关,所以YOLO-Pose可以很容易地扩展到Anchor Free的目标检测方法,如YOLOX, FCOS。


2.3 IoU Based Bounding-box Loss Function


 大多数目标检测器优化了IoU Loss的变体,如GIoU、DIoU或CIoU Loss,而不是Distance-based Loss,因为这些损失是尺度不变的,并直接优化了评估度量本身。而YOLO-Pose使用CIoU Loss来进行bounding box监督。对于在位置和scale s上的第k个Anchor所匹配的Ground Truth bounding box,损失定义为:


image.png


image.png为第 k个 Anchor 在位置 ( i , j )和scale s的预测框。在 YOLO-Pose 中, 每个位置有 3 个 Anch or, 并且预测发生在 4 个cale上。


2.4 Human Pose Loss Function Formulation


 OKS是评估关键点的比较常用的指标。传统上,Heat-map based Bottom-up方法使用L1损失来检测关键点。然而,L1损失并不一定适合获得最佳的OKS。同样,L1损失并没有考虑目标的尺度或关键点的类型。由于Heat-map是概率图,因此在基于纯Heat-map的方法中不可能使用OKS作为损失。只有当回归到关键点位置时,OKS才能被用作损失函数。耿等人使用尺度归一化L1损失进行关键点回归,这是迈向OKS损失的一步。


 因此,作者直接将回归的关键点直接定义为Anchor中心,于是便可以优化评估度量本身,而不是一个surrogate loss。这里将IoU损失的概念从box扩展到关键点。


 在出现关键点的情况下,目标关键点相似度(OKS)被视为IOU。OKS损失本质上是尺度不变的,比某些关键点更重要。例如,一个人头部上的关键点(眼睛、鼻子、耳朵)比他身体上的关键点(肩膀、膝盖、臀部等)受到的惩罚更多。


 基于YOLOv5的Yolo姿态架构。输入图像通过CSP-darknet53主干,生成不同尺度的特征图{P3、P4、P5、P6}。PANet用于跨多个尺度融合这些特征图。PANet的输出被输入到检测头。最后,每个检测头分支到Box Head和关键点Head。


 与标准的IoU损失不同,IoU损失在不重叠的情况下,其梯度会消失,而OKS损失永远不会。因此,OKS损失更类似于DIoU损失。


 对应于每个边界框,存储整个姿态信息。因此,如果一个GT边界框在位置和scale s上与Anchor相匹配,将预测相对于Anchor中心的关键点。对每个关键点分别计算OKS,然后求和,给出最终的OKS损失或关键点IOU损失。


image.png


d n = Eucledian distance bwteen predicted and

ground truth location for n th keypoint

k n = Keypoint specific weights

s = Scale of an object

δ ( v n ) = visibilty flag for each keypoint


 对应于每个关键点, 学习一个置信参数, 显示那个人是否存在一个关键点。在这里, 关键点的 可见性标志被用作GT。


image.png


 其中超参数: λ cls  = 0.5 , λ box  = 0.5 , λ k p t s = 0.5 , λ k p t s − c o n f = 0.5  。主要是用来平衡损失。


2.5 Test Time Augmentations


 所有用于姿态估计的SOTA方法都依赖于测试时间增强(TTA)来提高性能。翻转测试和多尺度测试是两种常用的测试技术。翻转测试增加了2X的复杂度,而多尺度测试在三个尺度{0.5X, 1X, 2X}上运行推理,增加复杂度(0.25X+1X+4X)=5.25X。随着翻转测试和多尺度测试的进行,复杂性将增加5.25*2x=10.5X。


 除了增加计算复杂度外,准备扩充数据本身也很昂贵。例如,在翻转测试中,需要翻转图像,这会增加系统的延迟。类似地,多尺度测试需要对每个尺度进行调整大小操作。这些操作可能非常昂贵,因为它们可能不会加速,不像CNN的操作。融合各种前向传播的输出需要额外的成本。对于嵌入式系统来说,在没有任何TTA的情况下,能够获得具有竞争力的结果才是最重要的。


 因此,YOLO-Pose的所有结果都没有任何TTA。


2.6 Keypoint Outside Bounding Box


 top-down的方法在遮挡下表现很差。与top-down的方法相比,YOLO-Pose的优势之一是:关键点没有限制在预测的边界框内。因此,如果关键点由于遮挡而位于边界框之外,它们仍然可以被正确地识别出来。然而,在top-down的方法中,如果人的检测不正确,姿态估计也会失败。在YOLO-Pose方法中,遮挡和不正确的框检测在一定程度上减轻了这些挑战,如图3所示。


c0129f0891974a1db696006398e22186.png


2.7 ONNX Export for Easy Deployability


 YOLO-Pose中使用的所有ops都是标准深度学习库的一部分,并且与ONNX兼容。因此,整个模型可以导出到ONNX中,这使得它很容易跨平台部署。这个独立的ONNX模型可以使用ONNXRUNTIME执行,以图像为输入,并推断图像中每个人的边界框和姿势。没有其他top-down的方法可以端到端地导出到中间的ONNX表示。


3. 实验


3.1 消融实验


1、OKS Loss vs L1 Loss

d9be579409664b23af4d514b271bdf5e.png


2、Across Resolution

cd7e41cb452249db8533cb33a1f9727c.png


3、量化操作


89e4d474c50f4f24b0424468267b1a0e.png


YOLOv5模型是sigmoid-weighted linear unit (SiLU)。Liu等观察到,像SiLU或HardSwish这样的无界激活函数对量化不友好,而具有ReLUX激活的模型由于其具有有限性,对量化具有鲁棒性。


因此,用ReLU激活对模型进行了重新训练。我们观察到从SiLU到ReLU的活化降低了1-2%。我们称这些模型为YOLOv5_relu。


3.2 COCO结果


d8022705efda40a39ca47c1ef468b4d0.png


相关素材来自于【集智书童】公众号

目录
相关文章
|
2月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
2月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。
|
2月前
|
机器学习/深度学习 人工智能 测试技术
AI计算机视觉笔记二十五:ResNet50训练部署教程
该项目旨在训练ResNet50模型并将其部署到RK3568开发板上。首先介绍了ResNet50网络,该网络由何恺明等人于2015年提出,解决了传统卷积神经网络中的退化问题。项目使用车辆分类数据集进行训练,并提供了数据集下载链接。环境搭建部分详细描述了虚拟环境的创建和所需库的安装。训练过程中,通过`train.py`脚本进行了15轮训练,并可视化了训练和测试结果。最后,项目提供了将模型转换为ONNX和PT格式的方法,以便在RK3568上部署。
|
2月前
|
机器学习/深度学习 人工智能 计算机视觉
AI计算机视觉笔记二十三:PP-Humanseg训练及onnxruntime部署
本文介绍了如何训练并使用PaddleSeg的人像分割模型PP-HumanSeg,将其导出为ONNX格式,并使用onnxruntime进行部署。首先在AutoDL服务器上搭建环境并安装所需库,接着下载数据与模型,完成模型训练、评估和预测。最后,通过paddle2onnx工具将模型转换为ONNX格式,并编写预测脚本验证转换后的模型效果。此过程适用于希望在不同平台上部署人像分割应用的开发者。
|
4月前
|
自然语言处理 监控 自动驾驶
大模型在自然语言处理(NLP)、计算机视觉(CV)和多模态模型等领域应用最广
【7月更文挑战第26天】大模型在自然语言处理(NLP)、计算机视觉(CV)和多模态模型等领域应用最广
194 11
|
3月前
|
机器学习/深度学习 人工智能 前端开发
AI计算机视觉笔记三:WEB端部署YOLOv5
本文档介绍了如何将YOLOv5目标检测模型部署到Web端的方法,包括基于Flask和Streamlit两种实现方案。首先创建Python虚拟环境并安装必要的依赖库。接着详细展示了Flask方案下的前端HTML页面与后端Python逻辑代码,该方案利用Flask框架搭建服务器,处理实时视频流,并显示检测结果。随后介绍了Streamlit方案,该方案更简洁直观,适合快速开发交互式的机器学习应用。通过`streamlit run`命令即可启动应用,支持图像、视频及实时摄像头的目标检测演示。两种部署方式各有优势,Flask灵活性高,适用于复杂项目;而Streamlit则易于上手,便于快速原型设计。
|
3月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二:基于YOLOV5的CPU版本部署openvino
本文档详细记录了YOLOv5模型在CPU环境下的部署流程及性能优化方法。首先,通过设置Python虚拟环境并安装PyTorch等依赖库,在CPU环境下成功运行YOLOv5模型的示例程序。随后,介绍了如何将PyTorch模型转换为ONNX格式,并进一步利用OpenVINO工具包进行优化,最终实现模型在CPU上的高效运行。通过OpenVINO的加速,即使是在没有GPU支持的情况下,模型的推理速度也从约20帧每秒提高到了50多帧每秒,显著提升了性能。此文档对希望在资源受限设备上部署高性能计算机视觉模型的研究人员和工程师具有较高的参考价值。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
64 1
|
6月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
610 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
122 0

热门文章

最新文章