配准文献阅读 基于循环层级网络的无监督医学图像配准

该博客介绍了2019年ICCV会议上提出的一种基于循环层级网络的无监督医学图像配准方法。这种方法通过递归级联网络实现端到端训练,减少了传统配准方法的时间消耗,并且随着网络层级增加,配准效果提升。尽管超过5层的网络在训练中可能遇到梯度消失问题,但在测试阶段采用共享权重的循环层级网络,实现了较好的配准性能。文章指出,尽管存在GPU资源限制,但层级网络对于处理复杂形变是有益的,且未评估变形场的平滑性。关键词包括:医学图像配准、循环层级网络、无监督学习、U-Net、VoxelMorph。
部署运行你感兴趣的模型镜像

基于循环层级网络的无监督医学图像配准

Recursive Cascaded Networks for Unsupervised Medical Image Registration

简介:这是来自2019 ICCV

配准系列

论文源代码: [微软github](https://github.com/microsoft/
Recursive-Cascaded-Networks.)

  1. 摘要

针对形变图像配准定义一种循环层级网络; 虽然是循环层级网络,但是整个训练是end-to-end的和无监督的;效果达到不错的,对3d医学图像能减少不少时间;同时网络层级越多,效果越好,但是是不是会出现其他问题文章没有讲。

  1. 要解决的问题

    问题定义: 在医学图像中,存在固定图像A,和存在浮动图像B,如何寻找一个最佳的非线性函数F能使B能够和A在解剖结构上存在一致,即对齐(aligns)。

  2. 目前有哪些方法

    • 传统方法: 迭代式的优化配准问题
      • ants中的, SyN
      • SimpleElastix
    • 深度学习
      • 有监督学习,
      • 无监督学习, 包括以下方法
        • 直接生成变形场(displacement)
          • An unsupervised learning model for deformable medical image registration
          • Voxelmorph: a learning framework for deformable medical image registration
          • A deep learning framework for unsupervised affine and deformable image registration.
          • End-to-end unsupervised deformable image registration with a convolutional neural network.
          • Unsupervised 3d end-to-end medical image registration with volume tweening network.
          • Non-rigid image registration using fully convolutional networks with deep selfsupervision.
        • 层级式
          • 本文
          • DLIR , A deep learning framework for unsupervised affine and deformable image registration.
          • VTN, Unsupervised 3d end-to-end medical image registration with volume tweening network.
  3. 这些方法存在什么局限性

    1. 传统方法,花费大量时间
    2. 无监督学习
      1. 直接生成变形场(displacement), 直接生成变形场,难以处理复杂的大形变问题
      2. 层级式,DLIR和VTN都用了少量的层级,而且没有有效的解决层级训练过程中对准问题
  4. 文章提出的解决方案

在这里插入图片描述

记浮动图像IfI_fIf, 固定图像IfI_fIf,变形场ϕ\phiϕ

循环层级每次生成的变形场为:

ϕk=fk(Im(k−1),If)\phi_k = f_k(I_m^{(k-1)},I_f)ϕk=fk(Im(k1),If)

文章中fkf_kfk是卷积神经网络,具体过程如上图

总的变形场为:

F(Im,If)=ϕnΘ...Θϕ1F(I_m, I_f)=\phi_n\Theta...\Theta\phi_1F(Im,If)=ϕnΘ...Θϕ1

最终的变形图像为 Imn=F(Im,If)ΘImI_m^n = F(I_m, I_f)\Theta I_mImn=F(Im,If)ΘIm

  • 解决层级网络训练问题:

    这篇文章主要解决了如何计算总变形场的问题

    1. 具体过程是,一开始经历一个affine网络,然后经过N个U-Net N次层级,然后生成n个Θ\ThetaΘ, 最后根据总变形场计算损失函数,然后训练所有网络
    2. 但是实际上,超过5个层级网络,就很难回传梯度;训练阶段文章未使用共享权重(个人估计层级应该不大,毕竟GPU内存不多,梯度回传占用内存很多)
    3. 测试阶段使用 共享权重的循环层级网络,即每次都只使用同一个层级网络;
  • 子网络结构:

    类似U-Net

  • 损失函数

图像相似度函数

  1. 结果

    • 实现,应该是VTN的代码,U-Net网络,然后刚性变换网络就是普通的VGG结构;
    • 评价指标,Dice, 评价配准后两个器官的重合度;landmark点间的距离
    • 数据集,MSD, 大概有900例; BFH有92例, SLIVER有20例(6个标注点) LiTs, 131器官分割;
    • 训练1000, 测试 150例(LiTS , SLIVER)

在这里插入图片描述

  1. 不知道为啥MR配准MR效果这么差(LPBA)

  2. 好像测试用的迭代共享参数,表现并没有那么好?有时候表现反而下降了?

在这里插入图片描述

     1. 说明层级网络确实是有效果的
     2. 为什么不对比10-cascade VoxelMorph,不过倒是能看出来VoxelMorph基础网络存在问题?应该是难以收敛?
     3. 从时间花费上来看,应该VM网络结构太大?

在这里插入图片描述

     1.这个表格其实就是证明了层级越多效果越好,也说明测试一般情况下迭代次数越多效果越好

在这里插入图片描述

     1. 这个表格进一步证明VM还是层级的最好
  1. 讨论

    • 文章提到收到GPU限制,未能在分布式平台实验超多层级网络

    • 文章提到他没有评价变形场的光滑性,既可能存在交叠区域;既最后出来的结果不是可逆的

  2. 个人总结

    • 未能证明层数那么多网络是怎么回传梯度的?可能要详细看源码,回头再写的专门的blog讲源代码
    • VoxelMorph为什么没有用10层?没有证明10-VoxelMorph比10-VTN差?个人猜测VTN可能只是更容易回传梯度而已
    • 挺好的一个工作,处理较大形变,设计层级网络
    • 没有在做多模态实验,所有实验都是同模态上进行
    • 个人点评:在巨人基础上,造轮子

如果大家觉的文章有帮助或者有用,麻烦关注下我的个人公众号
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Wan2.2-I2V-A14B

Wan2.2-I2V-A14B

图生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

<think>好的,我现在需要帮助用户理解最远点采样(FPS)算法的原理及其在点云处理中的应用。用户之前问过如何通过稀疏可变形注意力优化Point-BERT的多尺度分组,但现在他们转向了FPS的基础概念和应用。我需要结合用户提供的三个引用,以及之前的回答来构建一个清晰的解释。 首先,用户提供的引用1、2、3都涉及FPS的实现方法和库的使用,比如CloudCompare、PCL和Open3D。而用户现在的问题是想了解FPS的原理和应用,可能需要从基础开始,逐步深入。我需要确保回答结构清晰,分点解释,同时结合应用场景和可能的优化点,就像之前关于Point-BERT的回答那样。 接下来,我需要回顾FPS的基本原理。FPS的核心是通过迭代选择距离已选点最远的点,确保采样点尽可能覆盖整个点云,保持几何特征。这可以类比于之前提到的稀疏可变形注意力中的动态采样,但FPS是确定性的方法。可能需要比较两者的异同,但用户的问题不涉及这一点,所以暂时放在一边。 然后,数学表达部分。用户之前的回答中有数学公式,所以这里也应该用公式来形式化FPS的步骤。例如,定义点云集合,每一步选择距离当前集合最远的点,更新距离矩阵等。需要确保LaTeX格式正确,用$...$和$$...$$。 应用场景方面,用户可能想知道FPS在点云处理中的具体应用,比如三维重建、目标识别、等。需要结合引用中的库和实现方法,说明如何在实际中使用这些工具进行下采样。同时,可以提到优化策略,比如结合曲率特征或改进距离度量,这可能与之前提到的动态偏移学习有关联,但需要区分清楚。 可能用户还想了解FPS的优缺点,比如计算复杂度高,但能保留特征。这时候需要给出优化建议,比如空间划分或并行计算,引用中的Open3D和PCL可能有相关实现。此外,用户之前的回答提到了多尺度分组,这里可以提一下FPS在多尺度处理中的应用,比如在不同层级进行采样,类似Point-BERT的多尺度分组模块。 需要注意用户提供的引用中的信息,引用1提到使用CloudCompare和PCL实现,引用2是Open3D的函数,引用3是C++的循环实现方法。在代码示例部分,可以给出PCL和Open3D的代码片段,帮助用户实际应用。同时,数学公式和算法步骤需要确,避免错误。 最后,相关问题部分需要生成与FPS相关的问题,如优化方法、与其他采样方法的比较、深度学习中的应用等,引导用户进一步探索。需要确保问题具体且有参考性,类似于之前回答中的结构。 总结步骤: 1. 解释FPS的原理,数学公式化步骤。 2. 应用场景,结合具体领域。 3. 实现方法,引用中的库和代码示例。 4. 优化策略,提升效率的方法。 5. 优缺点分析。 6. 相关问题生成。 需要检查是否符合用户要求的格式,如中文回答,LaTeX语法正确,引用标注正确。确保没有使用Markdown,分点清晰,代码示例正确,并且参考文献的引用正确对应到用户提供的引用内容。</think>### 最远点采样算法原理及在点云数据处理中的应用 --- #### 一、算法原理 **最远点采样(Farthest Point Sampling, FPS)** 是一种基于几何距离的点云下采样方法,其核心目标是从原始点云中选择一组代表性点,使得这些点尽可能覆盖整个点云的几何结构,同时保留关键特征。 **数学形式化**: 给定点云集合 $P = \{p_1, p_2, \dots, p_N\} \in \mathbb{R}^{N \times 3}$,采样目标为选择 $M$ 个点($M < N$): 1. **初始化**:随机选择第一个点 $p_{\text{init}} \in P$,加入集合 $S$。 2. **迭代选择**:对于每一步 $k=2,3,\dots,M$: - 计算所有未选点到已选点集 $S$ 的最小距离: $$ d_i = \min_{p_j \in S} \|p_i - p_j\|_2, \quad \forall p_i \in P \setminus S $$ - 选择使 $d_i$ 最大的点 $p_{\text{next}} = \arg\max_{p_i} d_i$,加入 $S$[^1][^2]。 --- #### 二、应用场景 1. **三维重建与** - 在ICP(迭代最近点)算法中,通过FPS减少点云规模以提升速度,同时保持关键几何特征[^1]。 - 示例:使用PCL库实现前的预处理: ```cpp pcl::FarthestPointSampling<pcl::PointXYZ> fps; fps.setInputCloud(cloud); fps.setSample(1024); // 目标采样点数 fps.filter(*sampled_cloud); ``` 2. **深度学习中的点云处理** - 在PointNet++等网络中,FPS用于分层特征提取,生成多尺度点集[^3]。 - 优化策略:结合曲率特征改进FPS,优先保留高曲率区域(如边缘)。 3. **实时目标检测** - 在自动驾驶场景中,对LiDAR点云进行下采样以降低计算开销,例如使用Open3D: ```python downsampled_cloud = cloud.farthest_point_down_sample(num_samples=4096) ``` --- #### 三、算法优化与改进 1. **加速策略** - **空间划分**:利用KD-Tree或Octree加速距离计算(PCL内置实现)[^1]。 - **并行化**:GPU加速的距离矩阵计算(参考引用[3]的循环优化)。 2. **特征感知改进** - **加权FPS**:将几何距离与特征重要性结合,例如: $$ d_i' = \alpha \cdot d_i + (1-\alpha) \cdot \text{FeatureImportance}(p_i) $$ 其中 $\alpha$ 为平衡系数[^2]。 3. **多尺度采样** - 分层执行FPS,例如: - Level 1: 采样率50%(保留关键结构) - Level 2: 采样率20%(保留细节特征) --- #### 四、优缺点分析 | **优点** | **缺点** | |-----------------------------------|-----------------------------------| | 均匀覆盖点云,避免局部密集 | 计算复杂度高($O(N^2)$) | | 保留几何特征(如边缘、角点) | 对噪声敏感,可能选中离群点 | | 实现简单,主流库支持(PCL/Open3D)| 无法自适应调整采样密度 | --- #### 五、代码示例(PCL vs. Open3D) 1. **PCL实现(C++)** ```cpp #include <pcl/filters/farthest_point_sampling.h> pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::io::loadPCDFile("input.pcd", *cloud); pcl::FarthestPointSampling<pcl::PointXYZ> fps; fps.setInputCloud(cloud); fps.setSample(1024); fps.filter(*sampled_cloud); ``` 2. **Open3D实现(Python)** ```python import open3d as o3d cloud = o3d.io.read_point_cloud("input.ply") downsampled = cloud.farthest_point_down_sample(num_samples=1024) o3d.io.write_point_cloud("output.ply", downsampled) ``` --- #### 六、扩展应用 1. **与深度学习结合** - 在Transformer架构中作为Token选择器,例如Point Transformer的多尺度分组[^3]。 2. **动态点云处理** - 对时序点云进行运动目标提取,结合FPS减少冗余计算。 3. **医学图像处理** - 在CT/MRI点云数据中用于关键区域定位(如肿瘤边缘检测)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水煮城府、器

谢谢你的欣赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值