姿态识别+康复训练矫正+代码+部署

2024-08-26 15:20

本文主要是介绍姿态识别+康复训练矫正+代码+部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

YOLO-NAS姿势模型是对姿势估计领域的最新贡献。今年早些时候,Deci凭借其开创性的目标探测基础模型YOLO-NAS获得了广泛认可。在YOLO-NAS成功的基础上,该公司现在推出了YOLO-NAS Pose作为其Pose Estimation对应产品。这个姿势模型在延迟和准确性之间提供了一个极好的平衡。

姿态估计在计算机视觉中起着至关重要的作用,涵盖了广泛的重要应用。这些应用包括在医疗保健中监测患者的运动,分析运动员在运动中的表现,创建无缝人机界面,以及改进机器人系统。

  1.  YOLO-NAS姿势模型体系结构
  2. YOLO-NAS姿势的运行推断
  3. YOLO-NAS姿势vs/s YOLOv8姿势
  4. 姿势模特是如何训练的?
  5. YOLO-NAS姿势损失函数
  6. 训练超参数
  7. 结论
  8. 工具书类

YOLO-NAS姿势模型体系结构

传统的姿态估计模型遵循以下两种方法之一:

  1. 检测场景中的所有人,然后估计其关键点并创建姿势。两阶段自上而下的过程。
  2. 检测场景中的所有关键点,然后生成姿势。两阶段自下而上的过程。

与传统的姿势估计模型相比,YOLO-NAS姿势做的事情不同。它可以在一个步骤中一次性检测并估计出人及其姿势,而不是先检测出人然后再估计其姿势。

YOLO-NAS体式结构——骨干和颈部设计

Pose模型建立在YOLO-NAS目标检测体系结构。目标检测模型和姿势估计模型具有相同的骨架和颈部设计,但头部不同。YOLO-NAS姿势的头部是为其多任务目标设计的,即检测单个类别的物体(如人或动物)并估计物体的姿势。

这一令人印象深刻的组合是Deci专有的神经架构搜索(NAS)引擎AutoNAC的结果。它在广阔的建筑搜索空间中导航,并返回最佳的建筑设计。以下是用于搜索的超参数:

  • 姿势和长方体回归路径的Conv BN Relu块的数量。
  • 两条路径的中间通道数
  • 姿势/方框回归的共享主干或不同主干之间的决定

结果不言而喻

 Yolo NAS姿势估计

COCO Val 2017数据集的YOLO-NAS态势评估

YOLO-NAS姿势模型根据COCO Val 2017数据集进行评估。该模型的准确性和延迟是最先进的。纳米模型是最快的,在T4 GPU上可以达到425fps的推断速度。同时,大型模型可以达到113 fps。

如果我们看看边缘部署,nano和medium模型仍将分别以63fps和48fps的速度实时运行。但当我们看看Jetson Xavier NX上部署的中型和大型模型时,速度开始下降,分别达到26fps和20fps。这些仍然是一些可用的最佳结果。

YOLO-NAS姿势的运行推断

YOLO-NAS Pose模型、培训管道和笔记本可在SuperGradientsDeci开发的基于PyTorch的开放源码视觉库。您可以安装 超级坡度通过管道。

pip install 超级的-梯度

为了运行推断,我们将导入以下Python模块:

  • torch:导入 PyTorch公司框架。其基础是SuperGradients已生成
  • os:对于系统命令和目录操作很有用。
  • pathlib:用于获取文件路径和路径操作。
  • super_gradients:YOLO-NAS Pose模特的故乡。
import火炬
import操作系统
import 路径库
from超梯度训练import模型
from超梯度通用对象名称import模

现在我们需要一些图像来进行推断wget .

urls =[" http://upload.wikimedia.org/wikipedia/commons/4/4/B_B.jpg "," http://i.img.com/736x/5a/8a/5c/5a8a5c4cd658580ae4719e5c96043541.jpg ","https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/4d222729493563.55f6420cd3768.jpg "
]
downloaded_files =[]
for索引,urlin列举(urls, start=1 ):操作系统(f"wget {url} -O pose-{index}.jpg" )downloaded_files.append(f"pose-{index}.jpg" )

我们在列表中添加一些图像URL,然后循环遍历列表并使用下载和重命名每个文件wget,并将文件路径附加到新列表下载的文件 .

接下来,我们得到了YOLO-NAS姿势模型。

model =models.get(“yolo-nas-pose-l”, pretrained_weights="coco_pose" )
device ='cuda'如果torch.cuda.is_available() 其他的'cpu'
model.to(device)

使用函数get()我们下载模型。传递模型名称,然后传递权重文件的路径。在我们的案例中,我们使用NAS Pose大型模型具有COCO预处理权重 .

然后,将此模型加载到GPU设备(如果可用)。这将大大加快推理速度。

现在,使用函数predict()对图像进行预测。

confidence =0.6
model.predict(downloaded_files[ zero], conf=confidence).show()

predict()接受图像和置信阈值作为输入,对模型进行推断。使用show()显示输出。

除了图像,predict()还接受以下内容作为输入:

SuperGradients也可以保存输出,而不是显示输出。

output_file =pathlib.Path(downloaded_files[ one]).stem +"-detections"+pathlib.Path(downloaded_files[ one]).suffix
model.predict(downloaded_files[ one], conf=confidence).save(output_file)

YOLO-NAS位姿估计预测

 这两种方法都会在输入图像或视频上绘制结果。如果您只想得到结果:

	
preds =model.predict(downloaded_files[ two], conf=confidence)

原始预测如下:

  • XYXY格式的边界框预测
  • 预测对象的检测得分
  • 17 XY格式的关键点预测
  • 每个关键点的置信度得分

初始后处理步骤应包括对方框检测和姿势预测应用非最大抑制,为您提供一组高置信度预测。然后选择匹配的框和姿势,它们一起构成模型输出。由于对模型进行了训练,以确保盒子检测和姿势预测发生在同一空间位置,因此保持了它们的一致性。

YOLO-NAS姿势vs/s YOLOv8姿势

YOLO-NAS姿势与YOLOv8姿势有效边界图绘制

上图是YOLO-NAS姿势和YOLOv8姿势模型。此空间也称为效率前沿。所有模型均在COCO Val 2017数据集和Intel Xeon第4代CPU上进行评估,具有1批大小和16位浮点操作。

所有YOLO-NAS姿势模型的准确性都高于YOLOv8姿势模型。这可以被认可为AutoNAC的头部设计。现在,让我们谈谈具体情况:

较小的YOLO-NAS Pose模型,即nano和small,虽然精度较高,但比YOLOv8 Pose模型慢。
较大的YOLO-NAS姿势模型,如中型和大型,在准确性和延迟方面都更好。
现在,如果我们想深入研究,这里是COCO Val 2017数据集上YOLO-NAS姿势和YOLOv8姿势模型的结果。

COCO Val 2017数据集上的YOLO-NAS姿势与YOLOv8姿势评估

YOLO-NAS姿势模型的准确性始终优于相应的YOLOv8姿势模型。让我们看看具体情况:

  • 相应模型的参数数量不相似。例如,NAS Nano有990万个参数,而v8 Nano有330万个参数。这是三分之一的差异。
  • 此外,推理运行硬件也不同。NAS在2018年9月发布的T4 GPU上发布了结果,而v8在更新的A100 GPU上公布了结果。

如果你想让我对这两个姿势模型进行比较分析,请留言。

姿势模特是如何训练的?
YOLO-NAS姿势损失函数
为了确保模型能够有效地学习这两项任务,Deci改进了培训中使用的损失函数。而不仅仅是考虑IoU(交叉路口)为指定的盒子打分,我们还将对象关键点相似性(OKS)分数,将预测的关键点与实际的关键点进行比较。这一变化鼓励模型对边界框和姿态估计进行准确的预测。

此外,使用了直接OKS回归技术,这超过了传统的L1/L2损失方法。这种方法有几个优点:

它在0到1的范围内运行,类似于方框IoU,表明姿势有多相似。
它考虑到在注释特定关键点时不同程度的困难。每个关键点都与一个独特的sigma分数相关联,它反映了注释和数据集细节的准确性。分数决定了模型因预测不准确而受到的惩罚程度。
使用与验证指标一致的损失函数,从而实现指标的目标确定和优化。
训练超参数
因为,YOLO-NAS姿势采用了与YOLO-NA模型相似的基础结构来自YOLO-NAS的预处理重量用于在进行最终训练之前初始化模型的主干和颈部。以下是训练超参数:

训练硬件:使用8个NVIDIA GeForce RTX 3090 GPU和PyTorch 2.0。
培训时间表:培训时间长达1000个时期,如果在过去100个时期内表现没有改善,则提前停止。
优化器:使用带余弦LR(学习率)衰减的AdamW,在训练结束时将LR降低0.05倍。
重量衰减:重量衰减系数为0.000001,不包括偏置层和BatchNorm层。
EMA(指数移动平均)衰减:EMA衰减使用50的β因子。
图像分辨率:图像经过处理,最大边长为640像素,并填充到640×640的分辨率,填充颜色为(127127127)。
马赛克数据增强、随机90度旋转和颜色增强等增强进一步将AP提高了2。

结论
YOLO-NAS Pose是目前最好的姿势估计模型之一。在本文中,我们简要介绍了各种模型,了解了YOLO-NAS Pose模型体系结构和AutoNAC,并使用SuperGradients进行推理。

这篇关于姿态识别+康复训练矫正+代码+部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108935

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制