简单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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础组件总结(以Element UI组件库为例)

一般对一个组件的使用方式: 每一个组件都有被绑定的数据, (1)首先会对组件的数据初始化(a.data中赋初值 b. 在生命周期函数created或mounted中为变量赋予初值) (2)由于不同组件的…

C语言扫雷小游戏

以下是一个简单的C语言扫雷小游戏的示例代码&#xff1a; #include <stdio.h>#include <stdlib.h>#include <time.h>#define BOARD_SIZE 10#define NUM_MINES 10int main() { int board[BOARD_SIZE][BOARD_SIZE]; int num_flags, num_clicks; int …

threadlocal - 黑马程序员

目录 1、ThreadLocal介绍1.2 ThreadLocal基本使用1.2.1、常用方法1.2.2 使用案例 1.3 ThreadLocal类与synchronized关键字 2、运用场景_事务案例3、ThreadLocal的内部结构4、 ThreadLocal的核心方法源码5、ThreadLocalMap源码分析5.2 弱引用和内存泄漏 课程地址&#xff1a; ht…

Blender学习笔记:小车狂奔动画

文章目录 路旁小树汽车尾气移动 教程地址&#xff1a;八个案例教程带你从0到1入门blender【已完结】 小车建模 路旁小树 1 添加摄像机&#xff0c;在小车下面拉一个平面&#xff0c;覆盖到摄像机的观察视窗。复制一层平面&#xff0c;收窄变成小车两侧的路面&#xff0c;编辑…

【设计模式-4.3】行为型——责任链模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;责任链模式&#xff1b; 审批流程 责任链模式属于行为型设计模式&#xff0c;关注于对象的行为。责任链模式非常典型的案例&#xff0c;就是审批流程的实现。如一个报销单的审批流程&#xff0c;根据报销单…

力扣每日一题day26[42. 接雨水]

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

一站式自动化:Ansible Playbook的全面学习之旅

1 Playbook介绍 1.1 Playbook介绍 playbook 是由一个或多个play组成的列表 Playbook 文件使用YAML来写的 1.2 YAML 1.2.1 介绍 是一种表达资料序列的格式&#xff0c;类似XML Yet Another Markup Language 2001年首次发表 www.yaml.org 1.2.2 特点 可读性好 和脚本语言交…

RPG项目01_新输入输出

基于“RPG项目01_脚本代码”&#xff0c;本次修改unity的新输入输出系统。本次修改unity需要重启&#xff0c;如果一直跟着做教学项目&#xff0c;请先保存项目&#xff0c;再继续修改unity为新输入输出系统。 向下翻&#xff0c; 向下翻&#xff0c; 选择both加入新输入输出系…

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin

Android把宽高均小于给定值的Bitmap放大到给定值&#xff0c;Kotlin 假设拉伸放大到SIZE2048 fun scaleSize(image: Bitmap): Bitmap {val w image.widthval h image.heightvar newW: Intvar newH: Intif (w > h) {newW SIZEnewH (SIZE / w.toFloat()) * h} else {newW …

qt 动态生成柱状图

cpp文件 #include "mform.h" #include "ui_mform.h" #include <QBarSeries> #include <QBarSet> #include <QtCharts> #include <QPushButton> #include <QtCharts/QChartView> #include <QtCharts/QPieSeries> #inc…

浅学指针(5)sizeof和strlen的进阶理解

系列文章目录 文章目录 系列文章目录前言1. sizeof和strlen的对⽐1.1 sizeofsizeof不是函数&#xff0c;是运算符 1.2 strlen1.3 sizeof 和 strlen的对⽐ 2. 数组和指针笔试题解析• sizeof(数组名)&#xff0c;sizeof中单独放数组名&#xff0c;这⾥的数组名表⽰整个数组&…

51单片机应用从零开始(九)·数组

目录 1. 用字符型数组控制 P0 口 8 位 LED 流水点亮 2. 用 P0 口显示字符串常量 1. 用字符型数组控制 P0 口 8 位 LED 流水点亮 C语言中的字符型数组是一种数据类型&#xff0c;它是一个由字符组成的序列&#xff0c;以空字符\0结尾。在声明字符型数组时&#xff0c;需要指…

Git【成神路】

目录 1.为啥要学git啊&#xff1f;&#x1f615;&#x1f615;&#x1f615; 2.版本控制软件的基本功能 &#x1f91e;&#x1f91e;&#x1f91e; 3.集中式版本控制 &#x1f936;&#x1f936;&#x1f936; 4.分布式版本控制&#x1f60e;&#x1f60e;&#x1f60e; …

一款自动帮你生成UI界面和代码的AI神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 只要描述你想要的UI是什么样的&#xff0c;它就能帮你生成&#xff0c;是不是很神奇&#xff1f; v0使用 AI 模型根据简单的文本提示生成用户界面和代码&#xff…

利用STM32内置温度传感器实现温度监测系统

STM32微控制器是一款强大的嵌入式处理器&#xff0c;具有广泛的应用领域。其中&#xff0c;一些STM32微控制器内置了温度传感器&#xff0c;可以方便地实现温度监测功能。本文将详细介绍如何利用STM32内置温度传感器实现温度监测系统&#xff0c;并提供相应的示例代码。 一、硬…

智慧灯杆系统平台架构设计需要考虑的几个要点

智慧灯杆是一种集成了各种先进技术的道路照明设施。它不仅提供照明服务&#xff0c;还可以具有物联网技术、视频监控、环境监测、广播通讯、无线网络覆盖等多种功能。这些智能功能可以通过互联网进行控制和管理&#xff0c;从而实现智慧城市的建设。智慧灯杆能够提升城市的智能…

Wpf 使用 Prism 实战开发Day07

待办事项页面设计 效果图: 一.布局设计 页面主要分上下布局&#xff0c;分2行进行设计&#xff0c;使用 Grid.RowDefinitions 将页面分上下2行 例如&#xff1a; <Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition/> </Gri…

创意项目开源,文生图、排序/优选等...,持续开源更新!!

热烈欢迎大家在git上star&#xff01;&#xff01;&#xff01;冲鸭&#xff01;&#xff01;&#xff01; 1.dalle1在厨房家具中文场景上训练。 GitHub - leeguandong/DALLE1: dalle1在中文家具场景的微调&#xff0c;效果并不好dalle1在中文家具场景的微调&#xff0c;效果…

MYSQL报错 [ERROR] InnoDB: Unable to create temporary file; errno: 0

起因 服务器的mysql不支持远程访问&#xff0c;在修改完相关配置后重启服务出错。 2023-12-03T10:12:23.895459Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe (mysqld 5.7.22-log) starting as process 15684 ... 2023-12-03T10:12:23.908886Z 0 [Note…

nodejs基于vue的社区物业缴费报修管理系统7vwc6

运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架&#xff1a;Express/koa 前端:Vue.js 数据库&#xff1a;mysql 开发软件&#xff1a;VScode/webstorm/hbuiderx均可 数据库用MySQL,后台用vue框架 基本要求&#xff1a; 1. 对项目进行详细实际的需求分析。 2. 在网…