【技术追踪】TeethDreamer:从 5 张口腔照片实现三维牙齿重建(MICCAI-2024)

  三维重建搞起来~

  TeethDreamer:一种3D牙齿重建新框架,旨在恢复上下牙齿的形状和位置,引入大型扩散模型的先验知识和3D感知特征注意力机制,重建性能表现SOTA!


论文:TeethDreamer: 3D Teeth Reconstruction from Five Intra-oral Photographs
代码:https://github.com/ShanghaiTech-IMPACT/TeethDreamer(即将开源)


0、摘要

  正畸治疗通常需要定期进行面对面的检查,以监测病人的牙齿状况。当面对面诊断不可行时,另一种方法是利用5张口腔内照片进行远程牙齿监测。然而,它缺乏三维信息,如何从这种稀疏视图的照片中重建三维牙科模型是一个具有挑战性的问题。

  本文提出了一个名为 TeethDreamer 的三维牙齿重建框架,旨在恢复上颌牙齿和下颌牙齿的形状和位置。

  给定5张口腔内照片,该方法首先利用一个大扩散模型的先验知识,生成具有已知姿态的新的多视图图像,以解决稀疏输入,然后通过神经表面重建建立高质量的三维牙齿模型。
  为了确保生成视图之间的 3D 一致性,本文在反向扩散过程中集成了 3D 感知特征注意机制;此外,在牙齿重建过程中加入了几何感知法向损失,以提高几何精度。

  大量的实验证明,该方法优于目前最先进的技术,具有远程监控正畸治疗的潜力。


1、引言

1.1、临床背景:正畸治疗

  (1)正畸治疗重点纠正牙齿错位,需要长时间持续检测;
  (2)口腔内扫描(intra-oral scanning)提供了一种获得高质量 3D 牙齿模型的方法,但通常既耗时又昂贵;
  (3)使用智能手机拍照,方便又快捷,那么如何从 2D 照片重建 3D 牙齿模型呢;

1.2、传统方法的不足

  (1)使用参数化牙齿模型重建:没有捕捉到牙齿的个性化细节,且预定义牙齿模板的质量也对重建结果有很大的影响;
  (2)多视图立体声法(Multi-View Stereo, MVS):需要校准的相机姿态来进行精确的重建,由于口腔照片的稀疏性和重叠小,目前的 structure-from-motion (SfM) 方法很难恢复准确的相机姿态;
  (3)使用预训练扩散模型对自然物体进行三维重建:通常以单视图输入为条件来生成图像,这导致了看不见区域的重建不准确,提供的几何信息较差;

1.3、本文贡献

  (1)采用预先训练的扩散模型,分割口腔内照片的牙齿图像,生成特定视点的彩色图像和相应的法线图;
  (2)为确保不同视图之间的一致性,进一步从噪声彩色图像和法线图中构建 3D 感知特征,并在去噪过程中通过注意机制将其引入扩散模型;
  (3)利用生成的彩色图像和法线图进行神经表面重建,重建三维牙齿模型。在重建过程中引入几何感知法向损失,提高了几何精度;

3D重建模型流程图:
在这里插入图片描述


2、方法

2.1、多视图跨域扩散模型

  首先利用预先训练的 SAM 模型来分割前景牙齿区域;
  如图2所示,使用包含上齿的四个分割图像作为模型输入,记为 x 1 : 4 {x^{1:4}} x1:4,且 x ∈ R 3 × H × W {x \in \mathbb{R}^{3×H×W}} xR3×H×W

  由于输入图像的稀疏性,难以重建高质量的三维牙齿模型,因此,选择借助生成扩散模型来增强观察视角。除了 RGB 图像,法线图(normal map)是恢复 3D 模型的另一个重要信息。
  将分割的牙齿图像 x 1 : 4 {x^{1:4}} x1:4 作为 Zero123 中预训练的扩散模型 f {f} f 的输入条件,生成 N {N} N 个预定义视点 v 1 : N {v^{1:N}} v1:N 的彩色图像 c 1 : N {c^{1:N}} c1:N 和法线图 n 1 : N {n^{1:N}} n1:N ,记为:
在这里插入图片描述
TeethDreamer总览:
在这里插入图片描述

   c {c} c n {n} n x {x} x 具有相同的维度,真实彩色图像和法线图是由配对的口腔内扫描模型预合成的,如图1所示。这样可以利用扩散先验较强的 zero-shot 泛化能力,此外,还可以利用法线图中丰富的几何信息来提高牙齿重建的精度;

  目的是学习所有这些视图的联合分布 p θ ( c 1 : N , n 1 : N ∣ x 1 : 4 ) {p_θ(c^{1:N},n^{1:N}|x^{1:4})} pθ(c1:N,n1:Nx1:4),它可以用数学形式表示成一个多视图扩散模型:
在这里插入图片描述
  如图 2(a) 所示,将输入视图 x 1 : 4 {x^{1:4}} x1:4 与带噪目标视图 { c t i , n t i } {\{c_t^i, n_t^i\}} {cti,nti} i = 1 , . . . , N {i=1,...,N} i=1,...,N 拼接在一起,作为 UNet 的输入,此外,与 Zero123 相同,本文还使用 stable diffusion 的注意层(图2(a)中的文本注意分支)处理目标视点 v i {v^i} vi 与输入视图 x 1 : 4 {x^{1:4}} x1:4 的 CLIP 图像特征的拼接。

  由于输出通道数量的差异,训练扩散模型同时生成彩色图像和法线图会影响预训练模型的性能,为解决此问题,采用一个域切换器 s ∈ R 1 {s \in \mathbb{R}^{1}} sR1,它决定了输出类型是彩色图像还是法线图,训练了一个多视图跨域扩散模型,将公式 (1) 修改如下:
在这里插入图片描述

2.2、3D 感知特征注意

  保持从不同视图生成的图像和法线图的一致性,对于高质量的几何重建至关重要,本文引入了一种采用 3D 感知特征提取和深度注意机制相结合的方法。

  该策略集成了当前目标视图 { c t i , n t i } {\{c_t^i, n_t^i\}} {cti,nti} 去噪过程中的中间状态 { c t 1 : N , n t 1 : N } {\{c_t^{1:N}, n_t^{1:N}\}} {ct1:N,nt1:N},首先将潜空间中生成的 2D 图像 c t 1 : N {c_t^{1:N}} ct1:N 和法线图 n t 1 : N {n_t^{1:N}} nt1:N 反向投影到预定义的尺寸为 6 4 3 64^3 643 的 3D 体素网格上,利用 3D CNN 分别对颜色和正常特征体进行编码,随后,3D U-Net 将这些特征体合并,确保输出在几何形状和外观上保持一致。

  为了提取目标视点 v i {v^i} vi 的特征,创建了一个视锥体,并在得到的 3D 特征体内执行插值。通过深度注意层将这些特定于视图的特征集成到去噪过程中。该方法有效地捕获了不同视图之间的空间关系,整合了目标视点的基本信息,显著提高了生成视图之间的一致性。(感觉没有描述的很详细~

2.3、几何感知牙齿重建

  首先从生成的彩色图像 c 1 : N {c^{1:N}} c1:N 或法线图 n 1 : N {n^{1:N}} n1:N 中分割牙齿掩模 m 1 : N {m^{1:N}} m1:N,然后从训练集 { n 1 : N , c 1 : N , m 1 : N } {\{n^{1:N},c^{1:N}, m^{1:N}\}} {n1:N,c1:N,m1:N} 中随机抽取一批具有相关光线的训练像素 R k = { n k , c k , m k , d k } ∈ R {\mathcal{R}_k = \{n_k, c_k, m_k, d_k\}∈R} Rk={nk,ck,mk,dk}R,用于神经表面渲染。其中, n k ∈ R 3 {n_k∈\mathbb{R}^3} nkR3 c k ∈ R 3 {c_k∈\mathbb{R}^3} ckR3 m k ∈ { 0 , 1 } {m_k∈\{0,1\}} mk{0,1} d k ∈ R 3 {d_k∈\mathbb{R}^3} dkR3 分别表示第 k {k} k 条光线的法线值、颜色值、掩码值和光线方向,整个目标函数定义如下:
在这里插入图片描述
  其中 L n o r m a l {\mathcal{L}_{normal}} Lnormal 表示发现损失项;
   L r g b {\mathcal{L}_{rgb}} Lrgb 测量渲染颜色 c ^ k {\hat{c}_k} c^k 和生成颜色 c k {c_k} ck 之间的差异;
   L m a s k {\mathcal{L}_{mask}} Lmask 计算渲染掩码 m ^ k {\hat{m}_k} m^k 和分割的掩码 m k {m_k} mk 之间的二进制交叉熵;
   R e i k {\mathcal{R}_{eik}} Reik 是为了保证重建表面的平滑性而进行的正交正则化,而 R s p a r s e {\mathcal{R}_{sparse}} Rsparse 是为了减少浮点数而进行的稀疏正则化, λ {λ} λ 是每个损失项对应的权重项;

  下面深入探讨 L n o r m a l {\mathcal{L}_{normal}} Lnormal,利用 Neus 中 SDF 表示的可微特性,可以通过计算 SDF 的二阶梯度得到固有重构曲面的正态值,采用几何感知的法向损失来最小化所呈现的法向 n ^ k {\hat{n}_k} n^k 与参考 n k {{n}_k} nk 之间的差异:
在这里插入图片描述
   w k {w_k} wk 是一个几何感知权值,定义为:
在这里插入图片描述
   ϵ {ϵ} ϵ 是一个接近于零的负阈值。这种设计背后的基本原理是,视图方向 d k {d_k} dk 总是与表面法向 n k {{n}_k} nk 相反,即它们之间的夹角应该始终落在 [ 9 0 ◦ , 18 0 ◦ ] {[90^◦,180^◦]} [90,180] 的范围内。任何偏离此条件的情况都表明生成的法向 n k {{n}_k} nk 不准确,从而减少了对表面重建过程的指导作用,即 w k = 0 w_k = 0 wk=0


3、实验与结果

3.1、数据集

  (1)3200例,每例5张图像,3000训练,100验证,100测试,调整为256×256大小;
  (2)Blenderproc方法在八个特定视点合成口腔内扫描的目标彩色图像和法线图,合成图像256×256大小;
  (3)对于仰角,下牙的视点一半设置在45度,另一半设置在67.5度,上牙则相反,方位角分为四组:30度,60度,120度和150度;

3.2、实施细节

  (1)扩散模型微调阶段:3D CNN、3D UNet和注意层是可训练的,而扩散 UNet 和 CLIP 被冻结;30000步,batch size=64;学习率 1 e − 5 1e^{-5} 1e5,前10000步,线性增加到 5 e − 4 5e^{-4} 5e4
  (2)3D 牙齿重建阶段:Neus模型训练20000步,光线批处理为4096,学习率 1 e − 5 1e^{-5} 1e5,前500步,线性增加到 5 e − 4 5e^{-4} 5e4,然后指数衰减到 5 e − 5 5e^{-5} 5e5
  (3)显卡:一个 A100 GPU;

3.3、基线与指标

  (1)基线:Neus、Zero123、和 SyncDreamer;
  (2)指标:重建牙齿网格的准确性:Hausdorff距离(HD)、倒角距离(CD)和 IoU;生成彩色图像质量评价:PSNR、SSIM 和LPIPS;

3.4、实验结果

将重建的三维牙齿与其他基线进行定性比较:
在这里插入图片描述

与其他基线和消融方案在彩色图像生成和牙齿重建方面的定量比较:

在这里插入图片描述

将生成的图像与其他基线进行定性比较:

在这里插入图片描述


  感觉应该还有一个期刊~

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

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

相关文章

VS2019+CMake+Vtk9.3.0+Qt5.14.2 配置

VS2019CMakeVtk9.3.0Qt5.14.2 配置环境 第一步 下载 基本配置 系统环境:windows11 x64 Qt:5.14.2 这是最后最新的LTS qt离线版本,后续版本都需要在线安装,同时使用qt5.14也避免版权问题。 Qt 5.14:大部分模块基于LG…

ROS服务通信机制实操C++

ROS服务通信实操C 步骤流程VScode 配置服务端客户端编辑配置文件编译并执行优化实现参数的动态提交优化先启动客户端后启动服务端 ROS服务通信的理论查阅:ROS服务通信流程理论 ROS服务通信的自定义srv数据的准备可以查阅:ROS服务通信自定义srv 在模型实…

使用Docker 实现 MySQL 循环复制(三)

系列文章 使用Docker 实现 MySQL 循环复制(一) 使用Docker 实现 MySQL 循环复制(二) 目录 系列文章1. 在主机上安装MySQL客户端2. 配置循环复制拓扑2.1 进入容器2.2 创建复制用户并授予复制权限2.3 复位二进制日志2.4 配置环形复…

Navicat安装

1.安装包下载。 2.双击exe文件,一直点下一步即可,可以修改安装位置 3.双击PatchNavicat.exe,在下方位置输入navicat的安装位置 4.提示成功

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁(Mutex)8.2 条件变量(Condition Variable)8.3 信号量(Semaph…

Ubantu 使用 docker 配置 + 远程部署 + 远程开发

大家好我是苏麟 , Ubantu 一些配置 . 视频 : 服务器很贵?搞台虚拟机玩玩!保姆级 Linux 远程开发教程_哔哩哔哩_bilibili Docker安装及配置 安装命令 : sudo apt install docker.io 查看版本号 : docker -v 查看虚拟机地址命令 : ifconfig 虚拟机地址 或…

maven项目打成可运行的jar及pom中的依赖一同打包

maven项目打jar及pom中的依赖一同打包 最近开发中有个需求,不部署新的服务,只jar包执行 那maven项目中,代码如何以jar的方式运行、如何把代码打成jar、pom中的依赖如何与代码一同打到jar包中? 1、代码如何以jar的方式运行&…

海豚调度器(DolphinScheduler)集群搭建详细笔记

海豚调度器集群搭建笔记 1.DolphinScheduler Cluster部署1.1 集群部署规划1.2 集群准备工作1.3 初始化数据库1.4 修改安装环境配置1.5 安装DolphinScheduler1.6 启停命令1.7 登录 DolphinScheduler UI 1.DolphinScheduler Cluster部署 分布式去中心化易扩展的工作流任务调度系…

CTF-Web习题:[HFCTF2021]Unsetme

题目链接&#xff1a;[HFCTF2021]Unsetme 解题思路 打开靶场发现是一段PHP源码 做一下代码审阅&#xff1a; <?php// Kickstart the framework $f3require(lib/base.php);//引入f3框架源码$f3->set(DEBUG,1);//f3对象设置DEBUG属性 if ((float)PCRE_VERSION<8.0)…

腾讯元宝上线“3D角色梦工厂”:快速生成专属3D角色!

7月16日&#xff0c;腾讯旗下大模型应用“腾讯元宝”上线“3D角色梦工厂”&#xff0c;允许用户通过上传一张五官清晰的正面头像&#xff0c;并选择不同的角色模板&#xff0c;迅速生成个人3D角色&#xff01; 技术特点 “3D角色梦工厂”将大模型生成技术与3D应用相结合&#…

JavaDS —— 二叉树

树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 树形结构中&#xff0c;子树之间不能有…

02线性表 - 链表

这里是只讲干货不讲废话的炽念&#xff0c;这个系列的文章是为了我自己以后复习数据结构而写&#xff0c;所以可能会用一种我自己能够听懂的方式来描述&#xff0c;不会像书本上那么枯燥和无聊&#xff0c;且全系列的代码均是可运行的代码&#xff0c;关键地方会给出注释^_^ 全…

十六、【机器学习】【监督学习】- 支持向量回归 (SVR)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

GaussDB常见调优指南

文章目录 GaussDB常见调优指南一. Analyze 统计信息解析二. Explain 分布式计划解析三. 性能调优总体策略详解四. 性能调优之坏味道 SQL 识别五. 性能调优之好味道表定义六. 性能调优之 SQL 改写七. 性能调优之路径干预八. 性能调优之 Plan hint 运用九. 性能调优之 GUC 参数调…

C学习(数据结构)-->单链表习题

目录 一、环形链表 题一&#xff1a;环形链表 思路&#xff1a; 思考一&#xff1a;为什么&#xff1f; 思考二&#xff1a;快指针一次走3步、4步、......n步&#xff0c;能否相遇 step1&#xff1a; step2&#xff1a; 代码&#xff1a; 题二&#xff1a; 环形链表 I…

SAE J1939协议入门(一)

一、SAE J1939是什么 SAE J1939&#xff08;以下简称J1939&#xff09;是由汽车工程师协会&#xff08;SAE &#xff09;定义的标准&#xff0c;专门用于提供微处理器系统之间的串行数据通信。虽然CAN存在并且被广泛用于小型车辆&#xff0c;但J1939被设计为大型车辆复杂网络的…

深度挖掘行情接口:股票市场中的关键金融数据API接口解析

在股票市场里&#xff0c;存在若干常见的股票行情数据接口&#xff0c;每一种接口皆具备独特的功能与用途。以下为一些常见的金融数据 API 接口&#xff0c;其涵盖了广泛的金融数据内容&#xff0c;其中就包含股票行情数据&#xff1a; 实时行情接口 实时行情接口&#xff1a…

恒创科技:如何解决“服务器 IP 地址无法被找到”的错误

如何解决“服务器 IP 地址无法被找到”的错误?此错误通常出现在你的设备无法使用其分配的 IP 地址与网络服务器通信时。问题的来源可能多种多样&#xff0c;从简单的拼写错误到复杂的 DNS 和路由问题。以下是对“服务器 IP 地址无法找到”的常见原因以及可以采取的解决办法。 …

万界星空科技MES系统生产计划管理的功能

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;的生产计划管理功能是其核心功能之一&#xff0c;旨在将企业的生产计划转化为实际的生产操作&#xff0c;并通过实时监控和调整来确保生产活动的顺利进行。以下是MES系统生产计划管理功…

SpringData JPA Mongodb 查询部分字段

JPA 网上用的好像不多&#xff0c;找了好多材料以后最终找了这个可行的方案&#xff1a; Query(fields "{tender_id:1,_id:0}")List<MGPltTender> findByTenderIdIsNotNull(PageRequest pageRequest); 调用&#xff1a; Sort sort Sort.by(popularType.getC…