https://www.kaggle.com/adalca/learn2reg
https://github.com/learn2reg/tutorials2019
https://www.kaggle.com/mattiaspaul/learn2reg-tutorial
Discrete Deep Learning Registration
离散配准的动机和概述
胸部和腹部扫描显示非常大的变形:使用标准DL架构的配准不能直接捕获这一点
更多的配准任务很难用DL解决
超声波引导脑肿瘤手术
大的初始失调和不同的对比度限制了超声视野:3/3 dDL-方法失败(最后一名)
具有离散位移的大变形
(大动作)相关层:
- 以往的方法在捕获范围、接收域和有限的对流层数上都有局限性
- FlowNetC一次在441离散位移上使用没有训练权重但计算CC-metric的相关层。
- 另外FlowNet使用深度监督,在多分辨率水平上的损失。
多阶段/多分辨率架构
PWC-Net(在大边界上效果优于FlowNet2)
- 在每个金字塔级别的特征是扭曲向上采样(以前)流
- 使用CNNs计算和处理离散化成本卷(类似于相关层)
- 上下文网络使用大的接受域扩展凸来细化(连续值)流
多级递归网络
联合分割和心脏运动估计
- 对所有的配准和分割共享卷积权重用于提取联合特征。
- 一个循环网络用于迭代提取评估动态域
利用多分辨率网络进行CT肺配准的研究进展
离散的流程网络在手术工具上的效果如何?
- 一般来说,2D+t手术视频的表现还算合理(尽管由于采样频率较低,移动幅度较大)
- 但微调有望产生更准确的运动跟踪
离散相关层是如何工作的?
DL离散注册的三个构建块
位移空间的密集采样
实施细节
pytorch相关层实现(2d)
scale_factor = 4; disp_range = 11; disp_hw = (disp_range-1)//2; B,C,H,W = feat_fixed.size()
feat_mov_unfold = F.unfold(feat_mov.transpose(1,0),(disp_range, disp_range),padding=disp_hw)
ssd_distance = ((feat_fixed.view(C,1,-1) - feat_mov_unfold)**2).sum(0).view(1, disp_range**2,H,W)
正则化(近似。最小卷积核均值域)没有训练的权重
pad1 = nn.ReplicationPad2d(5); pad2 = nn.ReplicationPad2d(6)
avg1 = nn.AvgPool2d(5,stride=1); max1 = nn.MaxPool2d(3,stride=1)
minconv = nn.Sequential(pad1,avg1,avg1,max1); meanfield = nn.Sequential(pad2,avg1,avg1,avg1);
ssd_minconv = -minconv(-ssd_distance.permute(0,2,3,1).reshape(1,-1,disp_range,disp_range))
cost = meanfield(ssd_minconv.permute(0,2,3,1).view(1,-1,H,W))
腹部CT的一些可视化例子
我们创建了一个基于TCIA胰腺(Roth/Summers)腹部CT的2D数据集
➞补偿穿过平面变形使用行为保持平面的差异
可以进行相应的分段评估/在监督下训练(伊莱·吉布森)