首页 > 其他分享 >[Paper Reading] HandDiff: 3D Hand Pose Estimation with Diffusion on Image-Point Cloud

[Paper Reading] HandDiff: 3D Hand Pose Estimation with Diffusion on Image-Point Cloud

时间:2024-08-20 21:49:51浏览次数:13  
标签:Diffusion diffusion 迭代 Point 模型 using Estimation 3D

HandDiff: 3D Hand Pose Estimation with Diffusion on Image-Point Cloud

HandDiff: 3D Hand Pose Estimation with Diffusion on Image-Point Cloud
时间:CVPR2024
机构:ETH & CMU & Sungkyunkwan University

TL;DR

将手部分3D点预测任务建模为点云生成任务,提出Handiff算法,以手部图像点云为条件输入,通过迭代降噪的方式预测精确的手部姿态,效果在四个benchmark上都达到SOTA。

Method



输入:手部深度图\(D_{in} ∈ R^{H×W}\), sampled 3D点云\(P_{in} ∈ R^{N ×3}\)
输出: \(J^0 ∈ R^{J×3}\)

特征提取

depth image -> CNN -> Local 2D特征
sampled 3D points -> PointNet++ -> Local 3D特征

Joint-wise Condition Extraction

提取Joint-wise的embedding特征
做法: cat[local 2d feature, 3d feature] 外接J个head,每个Head独立预测自己的joint embedding特征,该joint wise feature将作为condition信息,在diffusion每个迭代轮次均被使用。
算法pipeline看图即可,与diffusion model几乎一致了。

Code

Code Link

分析一下xx.py,Q1:模型Backbone是什么?Q2:模型预测noise还是预测去噪之后的结果?Q3:模型Loss是什么设计的?Q4:模型输出的shape是什么?Q5: 实验代码中diffusion迭代多少次? 让我们根据提供的 `handdiff.py` 文件内容来回答你的问题。

Q1: 模型的Backbone是什么?

handdiff.py 中,模型使用了 ConvNeXt 作为其backbone。ConvNeXt 是一个基于卷积神经网络的架构,它在模型中用于提取特征。在代码中,ConvNeXt 被实例化为 self.backbone,并且根据模型配置的不同(例如 'tiny', 'small', 'base', 'large'),其深度和维度会有所不同。

Q2: 模型预测noise还是预测去噪之后的结果?

模型是一个去噪模型,它预测的是去噪之后的结果。这可以从模型使用 DiffusionPoint 类这一事实中推断出来,该类在代码中用于定义扩散过程中的点。扩散模型通常用于生成或恢复数据,通过逐步去除噪声来恢复出干净的数据。

Q3: 模型Loss是什么设计的?

模型的损失函数是一个平滑的L1损失(smooth L1 loss),定义在 smooth_l1_loss 函数中。这个损失函数通常用于回归问题,它结合了L1损失和L2损失的特点,对于异常值不敏感,并且在优化过程中更加平滑。

Q4: 模型输出的shape是什么?

模型的输出是一个关节点的预测,具体来说,是一个 BxJx3 的张量,其中 B 是批次大小,J 是关节点的数量,3 代表每个关节点的 X, Y, Z 坐标。这可以从模型的 forward 方法和 get_loss 方法中的处理逻辑中看出。

Q5: 实验代码中diffusion迭代多少次?

在实验代码的配置中,迭代次数由 iters 参数控制。在 HandModel 类的初始化中,iters 被用作 VarianceSchedule 类的参数,这表明扩散过程的迭代次数。根据代码中的注释和上下文,迭代次数被设置为 opt.iters,其具体值在实验代码中被设置为500。

Q6: 文章中表格6的hypotheses指得是什么?

在文章 "HandDiff: 3D Hand Pose Estimation with Diffusion on Image-Point Cloud" 中,表格 6 显示了在去噪过程中不同假设数量(hypotheses)下的平均关节误差(mean joint error)。这里的 "hypotheses" 指的是在推断过程中,模型生成的多种可能的3D手部姿势假设。

具体来说,在扩散模型(diffusion model)中,为了提高估计的准确性,可以采用多假设策略,即生成多个不同的姿态预测。这些预测可以看作是关于真实手部姿势的不同假设。通过迭代地去噪,每个假设都会逐步改进,最终通过某种形式的集成或平均,以获得更准确的结果。

在文中的实验设置中,作者探讨了使用不同数量的假设对最终手部姿势估计性能的影响。结果表明,随着假设数量的增加,误差通常会减小,但当假设数量达到一定程度后,进一步增加带来的性能提升会变得边际化。

以上就是对 handdiff.py 文件内容的分析。如果你需要更详细的代码解释或有其他问题,请随时提问。

Experiment


Ablation

  1. using local conditions (LC); 2) using joint indicator (JI); 3) using joint-wise con- dition (JC) and LC; 4) using LC with JI; 5) using JC and LC with JI; 6) using JC and LC with JI and kinematic correspondence (KC); 7) using JC, LC with JI and KC, and multiple hypotheses (MH), which is our full configuration. Note that the use of local conditions without KC is imple- mented by applying a PointNet layer [33] on noisy joints.

总结与发散

结合diffusion的算法原理扩充了文章篇幅
将手部特征作为先验condition信息,diffusion过程更像是一个cascade的过程

相关链接

人体上Diffusion工作参考CVPR2023这篇 DiffPose: Multi-hypothesis Human Pose Estimation using Diffusion Models

资料查询

折叠Title FromChatGPT(提示词:XXX)

标签:Diffusion,diffusion,迭代,Point,模型,using,Estimation,3D
From: https://www.cnblogs.com/fariver/p/18370039

相关文章

  • AI电商全流程:轻松掌握Stable Diffusion AI绘画技巧
    前言本课程将带你全面掌握人工智能AI绘画的全流程操作,特别是针对StableDiffusion的实战教学。无论你是初学者还是想要提升技能的从业者,这门保姆级教程都将为你提供详细的操作指导和实用技巧,帮助你在电商领域充分发挥AI的潜力。整理和输出教程属实不易,觉得这篇教程对你有......
  • Stable Diffusion绘画 | ControlNet应用-Tile(分块)—tile_resample(分块-重采样)
    前言PS:StableDiffusion安装与在线平台推荐,请在公众号内的消息对话框中,发送关键词**「xiaoyaoSD」**要想使用SD生成高品质图片,放大增加分辨率是必不可少的环节。tile_resample(分块-重采样)主要是将图片切分成很多个分块,并识别每个分块的信息,最终通过特定算法把分......
  • 【Stable Diffusion】关键词详解篇
    前言【StableDiffusion】关键词详解篇这里分享给大家一份Adobe大神整理的《AIGC全家桶学习笔记》,相信大家会对AIGC有着更深入、更系统的理解。有需要的朋友,可以点击下方免费领取!AIGC所有方向的学习路线思维导图这里为大家提供了总的路线图。它的用处就在于,你可......
  • PointNetCFD-main
    #####Point-clouddeeplearningforpredictionoffluidflowfieldsonirregulargeometries(supervisedlearning)######Authors:AliKashefi([email protected])andDavisRempe([email protected])#Description:ImplementationofPointNetfor*super......
  • [oeasy]python0030_动态控制断点_breakpoints_debug_调试
     030_动态控制断点_breakpoints_debug_调试290播放·0赞同视频​设置断点_break_point_continue_运行到断点......
  • AI绘画Stable Diffusion 必学技能——从零开始训练你的专属 Lora 模型!模型训练保姆级
    大家好,我是灵魂画师向阳接触AI绘画的小伙伴,一定听过Lora。Lora模型全称是:Low-RankAdaptationofLargeLanguageModels,可以理解为Stable-Diffusion中的一个插件,在生成图片时,Lora模型会与大模型结合使用,从而实现对输出图片结果的调整。我们举个更容易懂的例子:大模型就像......
  • OpenCV(logPolar()、Point2f())
    目录1.cv::logPolar()函数原型:参数说明:用途和示例:2.cv::Point2f类定义:属性:主要构造函数:用途和示例:总结:1.cv::logPolar()cv::logPolar()是OpenCV中用于进行对数极坐标变换(Log-PolarTransformation)的函数。对数极坐标变换将图像的空间坐标转换为极坐标,并对径向分量取对数......
  • Stable Diffusion概念
    stablediffusionmodels:是一类神经网络模型的统称,主要是使用扩散过程来生成高质量图片controlNet:automatic1111:checkpoint:一般也称model,是必须的主模型,文件体积GB级别,文件后缀通常是ckpt或者safetensorslora:是一种stablediffusionmodel,是通过保存的少量的训练参数来微调......
  • [Paper Reading] Single-to-Dual-View Adaptation for Egocentric 3D Hand Pose Estim
    名称Single-to-Dual-ViewAdaptationforEgocentric3DHandPoseEstimation时间:CVPR2024机构:TheUniversityofTokyoTL;DR多目3Dhandposeestimation数据比较难标注,作者核心思路是先训练单目模型,利用无监督的方法适配到双目场景,好处是a.无需标多目数据;b.可以适应任何......
  • 【公式推导】Elucidating the Design Space of Diffusion-Based Generative Models 【
    ElucidatingtheDesignSpaceofDiffusion-BasedGenerativeModels论文精读关注B站可以观看更多实战教学视频:hallo128的个人空间【更新中】EDM论文精读论文链接(1)论文:ElucidatingtheDesignSpaceofDiffusion-BasedGenerativeModels(2)引用:KarrasT,Aittala......