简单3D姿态基线模型网络架构与验证【SIM】

在这篇文章中,我们将回顾 ICCV’17 上提出的 Simple 3D  Pose Baseline ,即用于 3d 人体姿势估计的简单而有效的基线,也称为 SIM。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎

1、模型简介

大多数估计单个人的人体姿势的工作都使用单个图像或视频。 SIM模型还估计单个人的人体姿势。 作者着手构建一个系统,在给定 2d 关节位置的情况下预测 3d 位置,以便了解误差来源。 在这项工作中,作者实现了一个轻量级且快速的网络,能够每秒处理 300 帧。 相对简单的深度前馈网络在 Human3.6M 上的性能比最佳报告结果高出约 30%。

2、网络设计

图 1:方法图

系统的输入是一组 2d 关节位置,输出是一系列 3d 关节位置。 在提取二维关节位置后,作者使用了一个简单的神经网络,该网络具有少量参数且易于训练。 网络的构建块是一个线性层,后面是批量归一化、dropout 和 RELU 激活。 该构建块重复两次,并且这两个块被包裹在残差连接中。 具有两个块的外部块重复两次。

3、实验评估

作者提出了两种类型的评估方案。

3.1 协议#1

协议 #1 是在根关节对齐后,计算所有关节和摄像机的地面实况与预测之间的平均误差(以毫米为单位)。 协议#1下的详细结果如下:

3.2 协议#2

协议 #2 使用严格变换后计算的误差。 在数学中,刚性变换(也称为欧几里德变换)是欧几里德空间的几何变换,它保留每对点之间的欧几里德距离。协议#2下的详细结果如下:

作者还给出了 Human3.6M 测试集的示例输出。 左边的图是 2d 观察结果,中间的图是 3d 基本事实,右边是 3d 预测:

4、模型实现

在这个存储库的帮助下,我使用 PyTorch 实现了模型,因此我想分享结果。

4.1 下载数据集

Human3.6M 是用于 3D 人体姿势估计任务的最大数据集之一。 它拥有 360 万个 3D 人体姿势和相应图像。 该数据集包含 11 名专业演员(6 名男性,5 名女性),每个主题有 15 个动作。 提供 2d 关节位置和 3d 地面实况位置。

对于数据预处理,作者根据相机的逆变换旋转和平移 3D 基础事实,使用工具程序来处理 human3.6m 的摄像头。

要做的第一件事是下载数据集。 尽管 Human3.6M 在官方网站上可用,但确认我的注册需要时间。 我在这里下载了预处理的数据集。 预处理后的数据集如下:

  • train_2d.pth.tar:2D 训练数据集
  • train_2d_ft.pth.tar:使用堆叠沙漏检测进行 2D 训练数据集
  • train_3d.pth.tar:3D 训练数据集
  • test_2d.pth.tar:2D 验证数据集
  • test_2d_ft.pth.tar:使用堆叠沙漏检测进行 2D 验证数据集
  • test_3d.pth.tar:包含 3D 验证数据集
  • stat_3d.pth.tar:2D 输入和 3D 输出的 main/std,用于对数据进行非标准化并计算 MPJPE

4.2 训练

我首先下载数据集并将存储库放入我的谷歌驱动器中。 设置目录后,我运行 main.py。 你可以从 opt.py 更改运行选项:

# ===============================================================
#                     Running options
# ===============================================================
self.parser.add_argument('--use_hg',         dest='use_hg', action='store_true', help='whether use 2d pose from hourglass')
self.parser.add_argument('--lr',             type=float,  default=1.0e-3)
self.parser.add_argument('--lr_decay',       type=int,    default=100000, help='# steps of lr decay')
self.parser.add_argument('--lr_gamma',       type=float,  default=0.96)
self.parser.add_argument('--epochs',         type=int,    default=200)
self.parser.add_argument('--dropout',        type=float,  default=0.5, help='dropout probability, 1.0 to make no dropout')
self.parser.add_argument('--train_batch',    type=int,    default=64)
self.parser.add_argument('--test_batch',     type=int,    default=64)
self.parser.add_argument('--job',            type=int,    default=8, help='# subprocesses to use for data loading')
self.parser.add_argument('--no_max',         dest='max_norm', action='store_false', help='if use max_norm clip on grad')
self.parser.add_argument('--max',            dest='max_norm', action='store_true', help='if use max_norm clip on grad')
self.parser.set_defaults(max_norm=True)
self.parser.add_argument('--procrustes',     dest='procrustes', action='store_true', help='use procrustes analysis at testing')

我训练了 200 个 epoch,在 Google Colaboratory(Pro+) 上大约需要 10~15 个小时。 训练后,创建检查点文件并使用 ckpt_best.pth.tar 进行测试。

4.3 测试

我通过加载 ckpt_best.pth.tar 测试了训练后的模型。

%run 'main.py' --load ('.\\test\\ckpt_best.pth.tar') --test

原始版本的错误平均值是 45.5,我得到的是 44.4。

各个动作的错误如下:


原文链接:3D Pose Baseline实现 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pandas进阶:拼接 concat 使用方法

1.处理索引和轴 假设我们有2个关于考试成绩的数据集。 df1 pd.DataFrame({ name:[A,B,C,D],math:[60,89,82,70],physics:[66, 95,83,66],chemi…

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204]

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204] 1.python uf函数1.1 NXOpen.UF.Part.New1.2 NXOpen.UF.Part.Save1.3 NXOpen.UF.Ui.OpenListingWindow1.4 NXOpen.UF.Ui.IsListingWindowOpen1.5 NXOpen.UF.Ui.WriteListingWindow1.6 NXOpen.UF.Ui.SaveListingWin…

Spring MVC学习随笔-文件下载和上传(配置文件上传解析器multipartResolver)

学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 学习视频:【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 六、SpringMVC 文件上传下载 6.1 文件…

LeetCode(49)用最少数量的箭引爆气球【区间】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 用最少数量的箭引爆气球 1.题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [x_start, x_end] 表示水平直径在 x_start 和 x_end之间的气球。你不知道气…

【WPF.NET开发】创建简单WPF应用

本文内容 先决条件什么是 WPF?配置 IDE创建项目设计用户界面 (UI)调试并测试应用程序 通过本文你将熟悉在使用 Visual Studio 开发应用程序时可使用的许多工具、对话框和设计器。 你将创建“Hello, World”应用程序、设计 UI、添加代码并调试错误。在此期间&#…

leetcode 142.环形链表2

我来更新 leetcode 题目了,接着上一次,这一次是上一道题目的提升(有点数学题的感觉) 142.环形链表2 题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表…

CCKS2023-面向上市公司主营业务的实体链接评测-亚军方案

赛题分析 大赛地址 https://tianchi.aliyun.com/competition/entrance/532097/information 任务描述 本次任务主要针对上市公司的主营业务进行产品实体链接。需要获得主营业务中的产品实体,将该实体链接到产品数据库中的某一个标准产品实体。产品数据库将发布在竞赛…

RK3568平台开发系列讲解(Linux系统篇) dtb 到 device_node 的转化

🚀返回专栏总目录 文章目录 一、dtb 展开流程二、dtb 解析过程源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 dtb 如何展开成 device_node 一、dtb 展开流程 设备树源文件编写: 根据设备树的基本语法和相关知识编写符合规范的设备树。…

工具类整理

常用工具类 在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子。 CollectionUtils 目前比较主流的是spring的org.springframework.util包下的CollectionUtils工具类。和apache的org.apache.commons.collections包下的Co…

根据豆瓣对《流浪地球》的短评数据进行文本分析和挖掘

1背景 2019年2月5日电影《流浪地球》正式在中国内地上映。该电影在举行首映的时候,口德好得出奇,所有去看片的业界大咖都发出了画样赞叹,文化学者能锦说:“中国科幻电影元年开启了。"导演徐峰则说,“里程碑式的电影&#xf…

实时流式计算 kafkaStream

文章目录 实时流式计算Kafka StreamKafka Streams 的关键概念KStreamKafka Stream入门案例编写SpringBoot 集成 Kafka Stream 实时流式计算 一般流式计算会与批量计算相比较 流式计算就相当于上图的右侧扶梯,是可以源源不断的产生数据,源源不断的接收数…

WEB服务器配置与HTTP分析

目录 实验目的: 实验要求: 实验原理: 实验步骤: 步骤1:创建拓扑 步骤2:为PC、Client和Server配置IPv4地址、子网掩码和域名服务器 步骤3:启动设备和服务器 步骤4:测试PC-1、C…

【Qt开发流程】之自定义语法高亮和使用HTML语法

描述 语法高亮(Syntax Highlighting)是一种在编辑器中突出显示代码语法元素的技术,使其更易于阅读和理解。 Qt提供了一个功能齐全的语法高亮框架,支持多种语言和格式,可以自定义颜色和样式。 对于使用Qt的开发人员来说…

HADOOP::Fsimage和Edits解析

NameNode被格式化之后,将在/opt/module hadoop-3.1.3/data/tmp/dfs/name/curent目录 中产生如下文件 fsimage_ 0000000000000000000 fsimage_ 0000000000000000000.md5 seen_txid VERSION (1) Fsimage文件: HDFS文件系统元数据的一个永久性的检查点&#xff0…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

机器学习决策树ID3算法

1、先去计算总的信息量 2、根据不同指标分别计算对应的信息增益 3、根据算出的信息增益来选择信息增益最大的作为根结点 4、天气中选择一个继续上述过程 5、决策树划分结束

solidity实现ERC20代币标准

文章目录 1、以太坊 - 维基百科2、IERC203、ERC204、Remix 编译部署 1、以太坊 - 维基百科 以太坊(Ethereum)是一个去中心化的开源的有智能合约功能的公共区块链平台。以太币(ETH 或 Ξ)是以太坊的原生加密货币。截至2021年12月&a…

克服.360勒索病毒:.360勒索病毒的解密和预防

导言: 在数字化的今天,数据安全问题变得愈发棘手。.360勒索病毒是当前网络空间的一场潜在灾难,对于这个威胁,了解应对之道和采取切实的预防措施至关重要。如果您正在经历勒索病毒的困境,欢迎联系我们的vx技术服务号(s…

华为手环配置技巧

前言 华为手环作为生活健康辅助设备发挥不可忽视的作用,但每次更换手环后需要重新配置。华为手环不仅有健康监测、消息通知、天气推送、离线支付、公交卡、运动锻炼、等功能,还有倒计时、计时器、手电筒、闹钟、等小工具。下文介绍如何进行配置。 配置…

C/C++学生选课/排课系统[2023-12-3]

问题描述:根据我校自动化专业的部分必修及选修课信 息,设计一个学生选课/排课系统。 基本要求: 1、从文件读入课程信息; 2、从键盘输入拟添加的选修课信息; 3、删除已选的选修课(1门或多门) ; 4、输出已…