论文补充:扩散模型在医学测量的指导,3D高斯点染

摘要: 扩散模型引入不确定性理论对医学图像进行可信分类和分割(条件生成)。2023经典论文3D-GS导读。

这篇文章上次修改于 1 年前,可能部分内容已经不适用,如有疑问可询问作者。

论文补充:扩散模型在医学测量的指导,3D高斯点染

前言

补充两个比较经典的图像处理方法的论文。

Measurement Guidance in Diffusion Models: Insight from Medical Image Synthesis

前言没什么好说的,sd是老课题了。先码上这个生成式模型在医学图像超分辨上的应用。

相关工作

Diffusion

这边参考我的后面一篇汇总博客吧,讲一讲相关的应用——图像生成和图像修复是老生常谈的了。图像超分辨率刚刚好是我的课题,再就是和sd相关的txt2img。
暂时论述一下这边的不确定性问题。

Uncertainty

论文指出以往的研究中,已经提出了几种方法来估计深度神经网络中的不确定性,如确定性方法、集成方法与基于贝叶斯的方法。大量实验表明,引入不确定性理论对医学图像进行可信分类和分割,可以取得明显良好的分割性能。其中可以发现医学视觉和更多医学生物学任务的不确定性尝试。
不确定性估计也可以码上作为paper的一个优化idea。

Methodology

首先第一个问题是合成的样本和标签不匹配——采用分类器指导
采用分类器进行指导之后衍生出来一个新的问题:分类器提供的概率梯度有时可能会在渐进采样过程中将合成结果带到不同的极端。也就是说,扩散模型倾向于生成更健康或更严重的样本(但是医生更加关注那些中间样本的诊断)。
这里便是本文当中的一个创新点:在采样步骤中引入了两种不确定性指导(熵和边缘),并设计了一种旨在解决生成过多分布内样本挑战的不确定性指导扩散模型。之前的分类器指导仅对改变增强数据集的分布有单一影响,而作者的不确定性指导提供了相反的效果,使这种分布更具可控性。
也就是得到了一种各个等级涵盖的样本。

Model

引入了一些不确定性引导一个两阶段的采样过程,每个阶段都由特定的梯度引导。

第一步,先预训练一个基本的Diffusion分类器。 第一阶段的前向传播,先借助分类器的引导生成可靠标签的初始样本。再转换到某一个潜在空间,最后在不确定性引导下面生成一个sample此时的样本分布结果靠近中心。
从数据集分布的角度来看,第一阶段的分类器指导是指接近原始样本集的类别中心的扩充样本。相反,第二阶段的不确定性指导是指适当地将合成的样本推到类别边界。

3D Gaussian Splatting for Real-Time Radiance Field Rendering

这边的related work倒是简单说了一下传统的场景重建的工作。
首先是传统光流法和点云重建再到19年连续可微的密度场和后续基于深度学习的神经辐射场。虽然到这里渲染质量已经很突出,但训练和推理的时间依然非常高。
其中的加速运算的方法还包括有哈希网格和占用网格的方法。
此外就是介绍渲染图像的方案,该论文采用的方案是ADOP。核心创新点在于用3D高斯椭球来重建渲染完整复杂的场景。


先介绍一下这边模型的部署工作:

部署踩坑

翻了不知道多少个issue,最后找到一个给我启发的:
https://github.com/graphdeco-inria/gaussian-splatting/issues/332
直接按作者的yml可能会出现很多问题。
顺便要提前做好CUDA,cudnn,anaconda等等工作(现在做AI的应该都弄过吧) 然后有可能有些纯做深度学习的朋友会漏掉关于c的一些编译环境。如果是linux环境,没啥多说的:

sudo apt install build-essential -y
Copy

window需要下载Visual Studio的编译工具勾选默认c++桌面开发和通用win开发。作者使用的是2019版本,我现在是2022版本。最后按FAQ里面的路径
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
添加到PATH里面。

最后按我贴上的issue里面部署更好。当然想先试试作者给的官方环境部署也可以。
进入 anaconda prompt

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
conda create -n gaussian_splatting python=3.7
conda activate gaussian_splatting
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
pip install plyfile
pip install tqdm
Copy

到这里就环境部署完成了 然后可以按照github上的代码测试一下
这里的查看器使用的是SIBR。单独按git上的编译也是问题百出(能看issue解决的话就不算问题),直接上二进制文件的下载地址:

SIBR的二进制文件

https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip
这边运行文件就在bin里面,可以解压到SIBR_viewers里面的install文件夹。大部分步骤可以参考b站有人发的视频来做,这边也贴一下:
https://www.bilibili.com/video/BV1J7421R7G5/?spm_id_from=333.999.0.0&vd_source=e088ae7fecc50c475cf0e4c66961d466

到这里基本上可以手动体验一下3D-Guassian splatting的渲染效果了,后续贴上源代码的分析。

源代码解析


相关文章

  • 论文简记:基于分数的扩散模型for MRI重建