SMPL源代码实现和模型解读

2023-05-16

对于SLAM的工作已经告一段落了,传统的人体动态三维重建也要告一段落了,由于课题研究的方向是基于图像\视频的人体三维重建,三维shape、pose的恢复:所以今天和大家交流的是SMPL模型,对于SMPL模型的理论部分欢迎大家交流提问!!留言第一时间回大家的疑惑

(一)今天研究的是SMPL模型
SMPL模型的官网是:http://smpl.is.tue.mpg.de/ ,今天和大家交流的是基于源代码的实现和模型理解—当然目前对于SMPL有各种版本的实现,比如说基于tensorflow、pytorch、hmr、C++等的实现,等下次和大家分享tensorflow版本的,但是你只要理解了SMPL模型的原理,我相信不管是什么版本的,你都可以实现!!!!

(二) SMPL模型是一种参数化人体模型,是马普所提出的一种人体建模方法,该方法可以进行任意的人体建模和动画驱动。这种方法与传统的LBS的最大的不同在于其提出的人体姿态影像体表形貌的方法,这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷。因此可以避免人体在运动过程中的表面失真,可以精准的刻画人的肌肉拉伸以及收缩运动的形貌。

(三)在SMPL文章中介绍了SMPL的总体模型,这个模型是通过训练得到,就是一些参数, 该模型中β和θ是其中的输入参数,其中β代表是个人体高矮胖瘦、头身比等比例的10个参数,θ是代表人体整体运动位姿和24个关节相对角度的75个参数,β参数是ShapeBlendPose参数,可以通过10个增量模板控制人体形状变化: 具体而言:每个参数控制人体形态的变化可以通过动图来刻画,对于这个模型大家有什么不懂的随时留言交流,我会第一时间为大家解决SMPL模型中的问题,特别是文章中的理论部分

(四)源代码实现和解读:这个代码大家可以直接在官网上下载,记住下载代码的同时一定要把训练好的模型下载下来,以便于代码中调用训练好的模型----模型分成男士SMPL模型和女士SMPL模型

—整个代码的结构:下载下来的文件名字为smpl的文件夹
-------models文件夹:存放男女模型的文件夹
(1)女:basicModel_f_lbs_10_207_0_v1.0.0.pkl
(2)男:basicmodel_m_lbs_10_207_0_v1.0.0.pkl

-------smpl_webuser文件夹:整体的代码文件
—README.txt: 技术手册,方便实现查阅
—lbs.py: 线性蒙皮的实现
—posemapper.py: 旋转向量和旋转矩阵之间的转换模块
—serialization.py: 对于以上男女模型的保存和导入文件,导入之后就可以直接使用了
—verts.py: 关于网格模型顶点的转换模块

---------hello_world文件夹是模型测试文件:
(1)hello_smpl.py 是把SMPL模型保存成.obj格式的文件,可以用三维显示软件查看的obj文件
(2)render_smpl.py 显示SMPL模型的代码,通过给不同的shape pose参数就可以得到不同的SMPL模型,三维渲染显示

(五)SMPL源代码实现的具体步骤:
操作系统: ubuntu16 对于别人的项目代码的实现,我们一般是建立虚拟环境来实现的,这个好处就是,你在虚拟环境中安装任何的库和依赖对于外部的环境是没有影响的,对于自己其他的项目的依赖库也是没有影响的,直接进入主题:
(1)虚拟环境的建立:个人推荐使用conda: conda create -n smpl python=2.7
注意smpl的源代码是在python2.7上实现的
(2)相关库的安装: 首先激活上面建立的虚拟环境: source activate smpl 进入虚拟环境,然后就先相关的库的安装:
----(1)numpy的安装: pip install numpy
----(2)scipy的安装 : pip install scipy
----(3)opencv的安装: pip install opencv-python
----(4)chumpy的安装: pip install chumpy
以上都是一些基础的库的安装,在实现源代码之前还需要安装一个三维显示的库–opendr

—(5)opendr的安装: pip install opendr 但是这一步通常会出现依赖的问题,或者直接出现错误,对于这个错误的解决思路,我已经给大家准备好了
—opendr安装出错解决思路: https://blog.csdn.net/nbxuwentao/article/details/100146799 这里面有一个解决错误的链接,按照步骤做就可以了
安装完成之后,就是最后的实现阶段,一定要保证以上5个步骤都成功!!!!

(6)在虚拟环境中: 执行: cd smpl源码的路径:这个路径包含 hello_smpl.py、render_smpl.py

对于hello_smpl.py的测试: python hello_smpl.py-----执行成功后在该目录下生成了一个xxxx.obj文件—这个时候可以用三维软件查看,也可修改文件中的shape、pose的参数来得到不同的人体模型

对于render_smpl.py的测试: python render_smpl.py-----执行成功之后就可以看到渲染的smpl模型,如果你想深入理解这个模型,可以打印出模型训练出来的参数,看看这个参数的具体形式:以下是我跑出来的一些结果:
—[1]zero pose:
设置参数: m.pose[:]=0
m.beta[:]=0
m.pose[0] = np.pi

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置参数:m.pose[:] = np.random.rand(m.pose.size)* .2
m.beat[:] = np.random.rand(m.beta.size)* .03

              m.pose[0] = np.pi

在这里插入图片描述

在这里插入图片描述在这里插入图片描述到这里SMPL就介绍完毕----欢迎交流:下期更加精彩

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SMPL源代码实现和模型解读 的相关文章

  • 嵌入式JetSon TX2上使用RealSense D435 (外加IMU芯片) 运行RTAB-Map与VINS-MONO的全流程记录

    本周成功的在JetSon TX2上移植了Vins Mono与RTAB Map xff0c 并使用摄像头RealSense D435顺利跑通了这两个框架 中间遇到了各种各样神奇的问题 xff0c 踩坑无数 xff0c 现整理记录一下整体流程
  • 微信公众号本地开发调试 - 无公网IP,内网穿透

    文章目录 前言1 配置本地服务器2 内网穿透2 1 下载安装cpolar内网穿透2 2 创建隧道 3 测试公网访问4 固定域名4 1 保留一个二级子域名4 2 配置二级子域名 5 使用固定二级子域名进行微信开发 前言 在微信公众号开发中 x
  • opencv图像通道 8UC1?

    转载自博主 64 马卫飞 https blog csdn net maweifei article details 51221259 CV lt bit depth gt S U F C lt number of channels gt b
  • gazebo中urdf、xacro、sdf模型文件关系

    gazebo的模型是用xml格式的文本文件来描述的 具体有三种形式 xff1a urdf xacro sdf urdf urdf是老的gazebo模型格式 xff0c 本身有一些缺陷 xff0c 也缺一些功能 但是网上很多gazebo模型都
  • 1_树莓派开启ssh服务

    树莓派3 开启 SSH 服务 原文链接 xff1a https blog csdn net qq 16775293 article details 88385393 文章目录 1 使用管理工具2 启动服务3 自动启动服务 3 1 Windo
  • 树莓派4b串口通信配置

    树莓派4b本身是两个串口 xff0c 运行ls dev al如下 xff1a 请注意 xff1a 在默认状态下 xff0c serial0 就是GPIO14 15 是映射到ttyS0的 xff08 就是MINI串口 xff1a dev tt
  • Pandas第三次作业20200907

    练习1 读取北向 csv 指定trade date为行索引 查看数据的基本信息 有无缺失值 对其缺失值进行处理 删除缺失值所在行 查看数据的基本信息 查看数据是否清洗完毕 index列没啥用 将index列删除 观察数据是否有重复行 将重复
  • 新手入门板卡硬件调试

    硬件电路调试步骤 新手入门板卡硬件调试一看 观察焊接情况二测 测量阻抗三接触式上电调试遇到的问题一般解决思路电源供电运放出现震荡测量时GND的选取振铃现象 新手入门板卡硬件调试 一看 观察焊接情况 1 拿到板卡后 xff0c 首先观察下焊接
  • 用shell 命令获取占用cpu 最多的前五位

    通常情况下使用ps axu 来获得系统中所有进程占用资源情况 xff0c 通常也可以使用top 命令来动态的获得系统中资源占用最多的进程 假设我们使用ps aux gt file tmp来获取linux系统中的进程占用资源情况 xff0c
  • 关于准确率accuracy和召回率recall的理解

    假设有100个样本 xff0c 其中正样本70 xff0c 负样本30 xff0c 这个是由数据集本身决定的 xff0c 机器要做的就是判别这100个样本中哪几个样本是正样本 xff0c 哪几个样本是负样本 现在机器做出了预测 xff1a
  • pytorch BERT文本分类保姆级教学

    pytorch BERT文本分类保姆级教学 本文主要依赖的工具为huggingface的transformers xff0c 更详细的解释可以查阅文档 定义模型 模型定义主要是tokenizer config和model的定义 xff0c
  • class balanced loss pytorch 实现

    cb loss pytorch 实现 xff0c 可直接调用 参考 xff1a https github com vandit15 Class balanced loss pytorch blob master class balanced
  • 解决不平衡数据集问题

    解决不平衡数据集问题 数据不平衡通常反映数据集中类的不均匀分布 例如 xff0c 在信用卡欺诈检测数据集中 xff0c 大多数信用卡交易都不是欺诈 xff0c 只有很少的类是欺诈交易 这使得我们在欺诈类和非欺诈类之间的比例约为50 1 迄今

随机推荐

  • matlab报错解决---当前文件夹或MATLAB路径中未发现xxxx.m,但它位于xx\xxx\xxx\路径下

    解决 xff1a 选定为找到的文件 xff0c 右键 xff0c 找到 选择文件夹和子文件夹 选项 xff0c 添加到路径即可 xff0c 之后文件会变亮色 xff0c 不是灰色 修改之后 xff0c 发现没有 添加路径 的选项了 最后解决
  • sdf模型插入gazebo_ros_control插件

    gazebo ros control目前只支持老版的urdf模型 xff0c 官方教程 xff1a http gazebosim org tutorials tut 61 ros control sdf模型怎么办呢 xff1f 回答 xff
  • PreparedStatement 在mysql下中文乱码解决方案

    在顶目中无意中碰到PreparedStatement 在存DB时出现乱码 xff0c 困扰了好久终于解决问题 问题代码如下 pstmt 61 con prepareStatement INSERT OFFLINE pstmt setStri
  • 2013年终总结

    2013年即将过去 xff0c 回顾这一年 xff0c 有得有失 xff0c 有喜有悲 xff0c 些许记忆碎片留在脑海中 简单做个总结 xff0c 也算划上一个完美的句号 xff0c 再迎接充满挑战的2014 xff01 项目 一年过来
  • 程序员的生活,其实苦不堪言

    前一天 A 下班前把这个代码发给我 B 好的 xff01 第二天 A 都他妈中午了 xff0c 代码怎么还没发过来 xff1f B 我他妈还没下班呢 xff01 程序猿的真实写照 曾经刚参加工作 xff0c 接手一个项目的维护 xff0c
  • 不容错过的用户标签全面解读。建议收藏!

    过去几年来 xff0c 随着我国整体人口红利优势不再 xff0c 市场竞争加剧 xff0c 获客成本不断飙升 xff0c 互联网也告别增长进入存量时代 xff0c 品牌方的营销目标也从最大化追求用户数量规模转变为追求用户质量的精细化营销上
  • 【书写makefile】相关符号介绍

    本文将介绍一下几种符号 xff1a 61 43 61 61 61 makefile中 xff0c 的意思是取变量的意思 xff0c 比如 xff0c a 61 4 那么在后面的语句中 xff0c a 就代表的是取a的值 如果给a定义的是个宏
  • python人工智能技术

    人工智能 xff08 AI xff09 已成为当今世界的热门话题 xff0c 它的应用范围越来越广泛 其中 xff0c Python成为AI开发中最受欢迎的编程语言之一 Python提供了许多功能强大的库和框架 xff0c 大大简化了开发人
  • 利用X-CTU软件给P900数传配置参数

    转自 xff1a 70条消息 P900数传参数配置 落体偏东 CSDN博客 ATS104设置网络号 xff08 设置主从之间通讯连接的密码 xff09 ATS105设置单元号 xff08 给自己使用的数传进行编号 xff0c 防止主从混乱
  • px4添加自己编写的代码并编译

    1 在px4项目下的src文件夹下的modules文件夹中创建一个文件夹 xff0c 如图我创建了一个position control文件夹 xff0c 在该文件夹中添加自己写的代码程序 xff0c 同时添加一个CmakeLists txt
  • 思岚A1M8激光雷达-ubuntu18.04-slam建图参考

    Rplidar A1 A2使用及Hector SLAM建图 NouriXiiX的博客 CSDN博客 激光雷达初体验 Ubuntu 18 04 43 思岚科技 RPLIDAR A1M8 43 ROS 上手使用 银时大魔王的博客 CSDN博客
  • intel Realsense D/T系列 kalibr标定

    kalibr官方源码GitHub ethz asl kalibr The Kalibr visual inertial calibration toolbox 鼠标下拉找到install follow the install wiki pa
  • gazebo仿真遇到的FCU问题

    当使用roslaunch xxx launch命令进行gazebo仿真时出现 FCU Preflight Fail Accel 0 uncalibrated或者FCU Preflight Fail Baro Sensor 0 missing
  • 大广角USB摄像头选用指南

    起因是我要做一个二维码引导无人机降落的实验 四旋翼无人机搭载单目下视摄像头 xff0c 用于识别地面的二维码 我选择摄像头的标准基本上只有一个 xff1a 视场角越大越好 为此查阅了一些资料 xff0c 买了很多镜头和底板 xff0c 有了
  • 一:XTDrone平台上将视觉SLAM2与gazebo仿真集合

    1 XTDrone仿真平台配置 参考官方教程 xff0c 基本没大问题 仿真平台基础配置 语雀 依赖安装sudo apt install y n https www yuque com xtdrone manual cn basic con
  • 线程和进程的区别

    不少刚看到这两个词 xff08 特别是不是计算机专业的 xff09 小伙伴可能会比较疑惑 xff0c 线程和进程有什么区别 xff0c 网上有许多专业性的解答 xff0c 但是既然不少小伙伴不是计算机专业的 xff0c 那就结合例子做个大概
  • Pixhawk烧写自己开发过的1.11.0固件连接不上QGC

    最近在更改代码烧写固件后 xff0c 飞控就连接不上地面站 xff0c 以为是飞控坏了 xff0c 烧写了最新版的固件发现有可以连接到地面站了 xff0c 又烧写了同一版本的其他代码发现也可以连接qgc xff0c 应该是自己写的代码某个部
  • C标准库string.h源码(简单版)

    C标准库string h源码 xff08 简单版 xff09 strcpy strncpystrcat strncatstrcmp strncmpstrchr strrchr strchrnul strstrmemcpy memmove s
  • 二进制浮点数以及二进制浮点数算术运算

    二进制浮点数以及二进制浮点数算术运算 二进制浮点数表示半精度浮点数单精度浮点数双精度浮点数特殊情况 浮点数的运算步骤一 对阶二 尾数运算三 结果规格化左规操作右规操作 四 舍入处理五 溢出判断六 例子二进制浮点数加法二进制浮点数减法二进制浮
  • SMPL源代码实现和模型解读

    对于SLAM的工作已经告一段落了 xff0c 传统的人体动态三维重建也要告一段落了 xff0c 由于课题研究的方向是基于图像 视频的人体三维重建 xff0c 三维shape pose的恢复 xff1a 所以今天和大家交流的是SMPL模型 x