3.14周报

devtools/2025/3/15 18:28:18/

   本周主要是在找双目视觉三维人体姿态估计方向的文章,这篇dual-diffusion,双目三维人体姿态估计的双扩散文章,引起了兴趣,作者从由于摄像机数量的减少,增加了3d重建的不确定性入手,然后使用了扩散模型,从不确定的噪声数据(各个视觉的二维姿态)恢复3d姿态。之所以叫做双扩散,作者将2D和3D的不确定性视为两个相互关联的噪声源,并通过以下步骤同时降低它们的不确定性:首先,模型对输入的2D姿态进行去噪处理。由于2D姿态的误差是3D误差的主要来源之一,通过减少2D姿态的噪声,可以间接降低3D姿态的不确定性。然后在对生成的3d姿态进行去噪,并且该模型能够通过联合优化2D和3D的去噪过程,使得两者相互促进。2D姿态的准确性提升有助于3D姿态的恢复,而3D姿态的优化也可以反过来指导2D姿态的修正。

引出误差增幅的原因

视角减少后,不确定性也增加了。 后续在文章结尾的时候,还有副页进行讲解:

这张图讲的是双目视觉系统在三维重建中可能存在的误差范围,简单来说就是用两个“眼睛”(相机)看东西的时候,怎么通过它们看到的东西来还原出物体在真实空间中的位置,但这个过程并不是完全精确的,会有一些误差。

图里有两个“眼睛”的位置,分别叫 ​O1 和 ​Or,它们就是两个相机的视角。从这两个点出发,光线会射向空间中的一些物体点,比如 ​A、B、C、F、G 这些点。这些光线会在不同的高度 ​Z 和 ​Z' 相交,表示物体在空间中的位置。但问题是,由于相机的视角、分辨率或者匹配误差,这些光线可能不会准确地交在同一个点上,而是会有一个范围,这就是所谓的“不确定性范围”。

图中还标注了一些关键的距离和误差,比如 ​Δz 和 ​Δz' 表示在深度方向上的误差,​Δx 表示在水平方向上的误差,​Δu 表示在图像平面上的像素误差,​f 则是相机的焦距。这些标注告诉我们,双目视觉系统的精度受到很多因素的影响,比如相机的焦距、两个相机之间的距离(基线长度),以及图像匹配的精度。

  同时,作者还引入了嵌入这个概念,在双目视觉中,深度信息是一个很关键的因素,能够直接影响到3d姿态的准确性。因此作者将3d姿态中每个关节点的深度信息进行编码,作为额外的条件输入到扩散模型中。

dual diffsion的方法图

建模部分(Modeling)​:建模部分包括前向扩散过程反向去噪过程,用于学习从噪声数据中恢复真实姿态的能力。

前向扩散过程(Forward Diffusion):通过输入真实的双目2D姿态 u0​,逐步添加噪声,经过 T 步将 u0​ 转化为噪声分布 uT​。这一步的目的是使噪声数据与初始估计的2D姿态分布对齐。
   反向去噪过程:对噪声3D姿态 yt​进行逐步去噪,将噪声 yt​ 恢复为合理的3D姿态 y0​,其中使用了使用几何映射(Geometric Mapping)这样技术,连接2D和3D域,确保2D和3D姿态的一致性。

 在推理部分,就是实际用这个模型来处理新的数据了。首先,从输入的2D姿态里通过三角测量得到一个初始的3D姿态,但这个姿态可能不太准,所以需要用之前学到的去噪方法一步步优化它。优化过程中,还会把3D姿态重新投影回2D,看看是不是变得更合理了。这个过程会反复进行几次,直到结果稳定下来。为了提升效果,还引入了两个小技巧:一个是BaseL-norm,用来处理不同相机之间的距离问题;另一个是Z-embedding,用来更好地理解深度信息。

然后剩下的时间,主要去研究了下扩散模型。

Diffusion Model(扩散模型)是一种基于概率生成模型的方法,通过逐步添加噪声(前向扩散过程)和逐步去噪(反向去噪过程)来生成目标数据。其核心思想是将真实数据分布通过逐步加噪转化为高斯噪声分布,再通过神经网络学习如何从噪声中恢复出真实数据。

前向扩散

在前向扩散过程中,真实数据 x0​ 通过逐步添加高斯噪声,经过 T 步后转化为完全噪声 xT​。每一步的噪声添加过程可以表示为:

βt​ 是噪声调度参数,控制每一步的噪声强度。通过递归公式,可以直接从 x0​ 生成 xt​。

at=1-βt。=

反向去噪

反向去噪过程的目标是从噪声 xT​ 逐步恢复出真实数据 x0。每一步的去噪过程可以表示为:

而Σθ模型预测的方差,μθ预测的均值。训练的目标就是最小化预测噪声和真实噪声之间的误差。

  这类生成模型,就是实现从无到有的这一个过程,对于扩散模型而言,就是从一堆噪声信息中去生成(还原)出真实(想要的)数据。这给后面其他领域一个思路,是否在其他神经网络、模型中,把中间部分、隐空间里的数据,或者还未优化的数据当作一种噪声,能否使用扩散模型进行优化和去噪,能够使其网络得到的结果更加精准。

在数据集方面,我没能够下载这篇文章(dual-diffusion)对应的数据集,一个官网对大陆ip禁止(Berkeley MHAD),一个提交了申请没回复(human3.6m原始数据),其他渠道下载的数据集 要么结构不符合文章要求的,要么就是标注文件和样本对不上。因此,我最后选择使用MPI-INF-3DHP作为多视觉的数据集,同时准备使用这一类 基于 2d姿态的3dhpe数据集(例如human3.6m的2d姿态数据集(姿态序列)),基于这些序列的基础上进行恢复3d姿态,主要是这些数据集开源,同时数据量较小,方便复现,也便于后期跑实验。后面主要的方向定为多视角,基于序列的3dhpe,希望使用扩散模型,去优化在2d-3d过程中的产生误差。


http://www.ppmy.cn/devtools/167351.html

相关文章

torch_geometric 安装

环境监测: import torch print(torch.__version__) # 查看pytorch安装的版本号 print(torch.cuda.is_available()) # 查看cuda是否可用。True为可用,即是gpu版本pytorch print(torch.cuda.get_device_name(0)) # 返回GPU型号 …

全栈网络安全|渗透测试-1

网站四大件 系统 系统是指服务器上运行的操作系统,它是承载网站运行的基础。常见的操作系统包括Linux(如Ubuntu、CentOS)、Windows Server等。操作系统负责管理硬件资源,并为运行在其上的软件提供一个稳定的环境。中间件 中间件是…

【电流源和电压源串联和并联】2022-10-19

缘由关于电流源和电压源串联和并联问题-开放平台-CSDN问答 电流源电流恒定电压不定则1安*1欧1伏特 电压源电压恒定电流不定则2伏特-1伏特1伏特/3欧姆0.333~安培 总电流10.331.33则其他都可以计算了。

The Rust Programming Language 学习 (五)

枚举 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探…

Opencv之掩码实现图片抠图

掩码实现图片抠图 目录 掩码实现图片抠图1 掩码1.1 概念1.2 创建掩码1.3抠图思路 2 代码测试 1 掩码 1.1 概念 掩码(Mask)是一种用于指定图像处理操作区域的工具。掩码通常是一个与图像尺寸相同的二值图像,其中像素值为0表示不处理&#xff…

构建多序列比对的删除矩阵Deletion Matrix

从多序列比对(Multiple Sequence Alignment, MSA)数据中构建删除矩阵(Deletion Matrix)是蛋白质结构预测中的一个重要步骤。删除矩阵记录了每个位置相对于参考序列的缺失(deletion)信息,这些信息对于理解蛋白质的进化关系和结构变化非常关键。以下是从 A3M格式文件 的MS…

JVM之类文件结构

简介 类文件:又称字节码文件,java源代码编译之后产生的文件,是基于字节码的二进制文件,jvm通过运行类文件来执行java程序。 字节码:类文件中的基本数据单位,一个字节码占一个字节。 类文件的基本结构 类…

3.JVM-内部结构

1.栈结构 1.1 动态链接 栈中的对象指向堆中的实际引用 符号引用: 比如一个类的名称 直接引用: 具体堆中数据信息 1.2 方法返回 栈中上一层的结果和下一层的指令 1.3 操作数栈 1.4 局部变量 该线程中需要的变量 2. 虚拟机栈是如何工作 程序计数器:存当前执行到那一步 操作…