无限想象空间,用Python玩转3D人体姿态估计
前言
姿态估计,一直是近几年的研究热点。
它就是根据画面,捕捉人体的运动姿态,比如 2D 姿态估计:
再比如 3D 姿态估计:
看着好玩,那这玩应有啥用呢?
自动驾驶,大家应该都不陌生,很多公司研究这个方向。
自动驾驶里,就用到了人体行为识别。
通过摄像头捕捉追踪人体的动作变化,根据肢体动作或变化角度判断人体动作行为,可用于无人车、机器人、视频监控等行为分析需求场景。
而这些的基础,就是人体的姿态估计。
再比如,虚拟形象。
通过真人驱动,让虚拟形象具备类比真人的肢体动作,并支持与3D人脸特效、手势识别等功能结合应用,让虚拟形象更加灵活生动,可用于虚拟IP驱动、肢体驱动类游戏、远程授课或播报等场景。
姿态估计,无疑有着巨大的应用价值。
但今天,咱们说的这个算法,比上文提到的,还要酷炫一些!
它就是 FrankMocap。
FrankMocap
FrankMocap 是港中文联合 Facebook AI 研究院提出的3D 人体姿态和形状估计算法。
不仅仅是估计人体的运动姿态,甚至连身体的形状,手部的动作都可以一起计算出来。
算法很强大,能够从单目视频同时估计出 3D 人体和手部运动,在一块 GeForce RTX 2080 GPU 上能够达到 9.5 FPS。
缺点就是,速度有点慢,计算量较大,达到实时性有一定难度。
不过随着硬件的快速发展,这都不是问题,「老黄刀法」很给力。
FrankMocap 算法就在这几天,刚刚开源,有 Python 和深度学习基础的朋友,不容错过。
项目地址:
https://github.com/facebookresearch/frankmocap
算法使用 SMPL-X 人体模型。
给定一张彩色图片,通过两个网络模块分别预测手部姿态和人体姿态。
然后再通过整合模块将手和身体组合在一起,得到最终的3D全身模型,整个流程如下图所示:
在具体的各个模块的实现,那就涉及具体的数学公式了。
本文就不多做扩展了,感兴趣的小伙伴,可以直接看论文。
论文地址:
https://arxiv.org/pdf/2008.08324.pdf
论文对每个模块的公式,记录的很详细。
FrankMocap 算法怎么玩?
这里有详细的安装教程:
https://github.com/facebookresearch/frankmocap/blob/master/docs/INSTALL.md
除了常规的第三方库,还需要 Detectron2 用于手部动作捕捉,以及 Pytorch3D 做姿态渲染。
推荐使用 Anaconda 配置,环境配置完毕,就可以开始体验了。
使用方法很简单:
如果只做身体姿态捕捉,可以运行如下命令:
# using a machine with a monitor to show output on screenpython -m demo.demo_bodymocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)xvfb-run -a python -m demo.demo_bodymocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
运行效果:
如果只做手部姿态捕捉,可以运行如下命令:
# using a machine with a monitor to show outputs on screenpython -m demo.demo_handmocap --input_path ./sample_data/han_hand_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)xvfb-run -a python -m demo.demo_handmocap --input_path ./sample_data/han_hand_short.mp4 --out_dir ./mocap_output
运行效果:
全身的姿态估计,使用如下指令:
# using a machine with a monitor to show outputs on screenpython -m demo.demo_frankmocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)python -m demo.demo_frankmocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
运行效果:
总结
3D 人体全身运动姿态捕捉,可以做很多有意思的事情。
看到这项技术,你最先想到的,是能做个什么好玩的应用呢?
更多精彩推荐
打通语言理论和统计NLP,Transformers/GNNs架构能做到吗?
自拍卡通化,拯救动画师,StyleGAN再次玩出新花样
干货!高频手撕算法合集来了
放弃 Windows 后 ,开源操作系统能成为主流桌面系统吗?
起底 ARM:留给中国队的时间不多了
相关文章:

Mac中将delete键定义为删除键
在Mac中,delete键实际是退格键(Backspace),fndelete才是删除键。这也是从Windows转到Mac时不习惯的地方之一。 通过安装DoubleCommand软件可以解决这个问题。安装后,在System Preferences中找到DoubleCommand找打开在E…

CHIL-SQL-MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值。NULL 值不包括在计算中。 SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。 SQL MIN() 实例 我们拥有下面这个 "Orders&quo…
Google排名第一的语言,引数十万人关注:搞定它,技术大牛都甘拜下风
毋庸置疑,Python越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员,还是年薪百万的 BATJ 的大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 所以,很多程序员把Python当做第一语言来学习。 但对于Python…

CSS滤镜详解
CSS滤镜详解 简介〓 设置文字透明层次,模糊效果,给文字加光晕等这些本来要靠图片才能处理的效果,现在CSS可以既简单又快速的把它实现了……接着往下看就知道了。 〓正文〓 语法:STYLE"filter:filtername(fparameter1, fpa…

php实现单链表
<?php //单链表的存储结构 class Node{ public $data;//数据域 public $next;//指针域 指向下一个结点 function __construct(){ $this->data null; $this->next null; } } //单链表数据类型 class LinkList{ public $data; public $next; function _…

2017-2-23 C#基础 中间变量
用中间变量做这个题 1、“请输入年份:”(1-9999) “请输入月份:”(1-12) “请输入日期:”(要判断大小月,判断闰年) 判断输入的时间日期是否正确 2、计算输入的…

HTA的简单应用
HTA简介:HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C等程序语言所设计的软件没什么差别。下面是一个HTA的例子&…
300亿美元,AMD为什么要买Xilinx?
作者 | Just来源 | CSDN(ID:CSDNnews)自2015年5月,Intel(英特尔)以167亿美元收购FPGA生产商Altera后,半导体行业接连传出大整合。上个月,NVIDIA(英伟达)宣布以400亿美元收购芯片设计公司Arm&…

PIM-SSM简介
源特定组播(SSM:Source Specific Multicast)是一种区别于传统组播的新的业务模型,它使用组播组地址和组播源地址同时来标识一个组播会话,而不是向传统的组播服务那样只使用组播组地址来标识一个组播会话。SSM保留了传统PIM-SM模式中的主机显示…

MyBatis开发入门二:一对多连表查询
1. 步骤: (1). 加包(2). 编写db.properties;编写conf.xml,将db.properties加入到conf.xml;引入别名(3). 建立实体类(4). 编写sql操作对应的***Mapper.xml文件(5). 将sql操作对应的***Mapper.xml文件注册到conf.xml文件中(6). 编写…

ASP.NET里的事务处理
出自: http://blog.csdn.net/ycl111/ 事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库的一部…

JAVA的正则表达式语法
Java 正则表达式表达式意义:1.字符x 字符 x。例如a表示字符a\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义…
应届生失业率或继续上升?别怕,这份秋招指南请收好!
受疫情影响,今年的就业形势基本上没跑了:“各行各业,大小企业,全面缩招!”据国家统计局7月份的最新数据显示:20-24岁大专及以上人员(主要为新毕业大学生)失业率比去年同期高 3.3 个百…
微信小程序把玩(三十五)Video API
原文:微信小程序把玩(三十五)Video API电脑端不能测试拍摄功能只能测试选择视频功能,好像只支持mp4格式,值得注意的是成功之后返回的临时文件路径是个列表tempFilePaths而不是tempFilePath文档写的有点问题。 主要属性:…

使用.NET发送邮件
出自: http://blog.csdn.net/ycl111/如果你曾经使用过ASP来发送邮件,你大概会使用CDONTS,但是在.NET里,发送邮件的功能已经封装进 .NET Framework的System.Web.Mail的命名空间里了,使用这个命名空间下类,就可以很容易…
采摘工人月薪十万却无人应聘,英澳农场求助 AI
作者 | 神经小兮来源 | HyperAI超神经金秋时节,本是收获的季节,但是英国、澳大利亚等地的果农却愁容满面。眼看着日渐成熟的瓜果就要烂在地里,却还招不到采摘工人。缺人,成为果农们眼下急需解决的问题。虽然大型联合收割机早已普及…

好记性不如烂笔杆-android学习笔记二 Acitvity lifecycle 生命周期
7,//Acitvity lifecycle 生命周期/***1,一个Activity就是一个类,并且这个类要继承Activity*2,复写onCreate方法*3,每个Activity需要在Androidmanifest.xml文件中配置*4,为Activity添加控件*/ 1 public class Activity …

hdu5740
考验代码能力的题目,感觉网络流一要求输出方案我就写的丑 http://www.cnblogs.com/duoxiao/p/5777632.html 官方题解写的很详细 因为如果一个点染色确定后,整个图的染色也就确定了; 对于两个点u和v, 令它们之间的最短路是dis(u,v), 那么交换它…

xml操作类(转载)
作者:未知 请与本人联系 <%Class XMLDOMDocument Private fNode,fANode Private fErrInfo,fFileName,fOpen Dim XmlDom 返回节点的缩进字串 Private Property Get TabStr(byVal Node) TabStr"" If Node Is Nothing Then Exit Property …

对HDS AMS 2000+巡检案例
1. 使用工具:笔记本,网线一根, 2. 使用软件:vmware虚拟机(安装XP P2系统,最好为P3),HSNM2-1152-W-CLI-P01.exe(AMS 200管理软件),jre…
用Python实现坦克大战游戏 | 干货贴
作者 | 李秋键出品 | AI科技大本营(rgznai100)《坦克大战》是1985年日本南梦宫Namco游戏公司在任天堂FC平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题,属于策略型联机类。同时也是FC平台上少有的内建关卡…

SPU、SKU、ARPU是什么,我来记录一下我的理解
在电商系统里经常会提到“商品”、“单品”、“SPU”、“SKU”这几个词,那么这几个词到底是什么意思呢?既然不知道是什么,那么我们就查一下:SPU Standard Product Unit (标准化产品单元),SKUst…

用C#操纵IIS(代码)
using System;using System.DirectoryServices;using System.Collections;using System.Text.RegularExpressions;using System.Text;/*** author 吴海燕* email wuhy80-usualyahoo.com* 2004-6-25 第一版*/ namespace Wuhy.ToolBox{/// <summary>/// 这个类是静态类。…

linux 内核参数调整说明
linux 内核参数调整说明 所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的一些调优参数, 后面是它们的含义: 1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲。2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲。3. /proc/sys/net/ipv4…
Java 最高均薪 19015 元! 9 月程序员工资出炉,你拖后腿了吗?
在全员争当码农的时代,如果你也想学一门编程语言,那么,我要告诉你,Java 是编程语言中不可撼动的王者。有点难理解?先看个排行榜???? 来自权威开发语言排行榜 TIOBE 的数据(截止到 2020 年 4 月&#x…

java 基础知识八 正则表达式
正则表达式 是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式, 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为…

PHP中Session的使用
启用配置//修改php.ini中的session.auto_start 0 为 session.auto_start 1session_start();$_SESSION[username]"HM";

《Two Dozen Short Lessons in Haskell》学习(八)- Function Types, Classes, and Polymorphism
《Two Dozen Short Lessons in Haskell》(Copyright © 1995, 1996, 1997 by Rex Page,有人翻译为Haskell二十四学时教程,该书如果不用于赢利,可以任意发布,但需要保留他们的copyright)这本书是学习 Ha…
图神经网络快速爆发,最新进展都在这里了
译者 | 刘畅出品 | AI科技大本营(rgznai100)近年来,图神经网络(GNNs)发展迅速,最近的会议上发表了大量相关的研究论文。本文作者正在整理一个GNN的简短介绍和最新研究报告的摘要。希望这对任何准备进入该领…

css去掉a标签点击后的虚线框
outline是css3的一个属性,用的很少。 声明,这是个不能兼容的css属性,在ie6、ie7、遨游浏览器都不兼容。 outline控制的到底是什么呢? 当聚焦a标签的时候,在a标签的区域周围会有一个虚线的框,这个框不同于bo…