文章目录
- 摘要
- 1.引言
- 2. 相关工作
- 3. 方法概述
- 3.1. 基于CT数据的虚拟深度生成
- 3.2. 基于视频帧的上下文感知深度估计
- 3.3. 方法概述
- 3.3.1. 从CT数据生成虚拟深度图
- 3.3.2. 基于上下文感知的深度估计从视频帧中
- 3.3.3. 相机姿态估计通过 2D/3D 配准
- 4. 实验
- 4.1. 数据集和基线
- 4.2. 实现
- 4.3. 验证与讨论
- 5. 结论
- 致谢
摘要
支气管内介入越来越多地被用作肺部介入的微创手段。基于视觉的定位方法通常对支气管镜视频中的图像伪影敏感。在本文中,提出了一种基于上下文感知深度恢复方法的鲁棒导航系统,用于单目视频图像。为了处理这些伪影,提出了一种条件生成对抗学习框架,以实现可靠的深度恢复。在活体数据集上验证了深度估计和摄像机定位的准确性。定量和定性结果表明,所提出方法恢复的深度在图像伪影存在的情况下更好地保留了气道腔体的结构信息,并且改进的摄像机定位精度展示了其在支气管镜导航中的临床潜力。
1.引言
近年来,支气管镜活检技术(如图1所示)在肺癌分期中相比传统的经皮肺穿刺活检(TTNA)正逐渐成为一种更受欢迎的方法[1]。TTNA常见的术后并发症包括气胸、出血和空气栓塞[2]。研究表明,支气管镜活检在诊断孤立性肺结节时的并发症发生率低于TTNA[1]。然而,由于视野受限,在复杂的气道网络中定位和操控柔性支气管镜依然是一个具有挑战性的任务。因此,开发有效的导航系统对于辅助支气管内介入治疗至关重要[1]。自动化支气管镜相机定位系统的关键在于估计手术过程中支气管镜相对于术前计算机断层扫描(CT)重建的气道模型的六自由度(6 DoF)位置和方向。这不仅可以帮助肺科医生,还可以帮助外科机器人平台[3][4]保持设备朝向目标气道位置的正确方向。
图1。支气管镜活检技术用于肺癌分期。
基于视频与CT配准和电磁(EM)跟踪的导航系统已被广泛研究,以辅助支气管镜相机定位[5]。基于视觉的技术的可靠性主要依赖于支气管镜视频和CT气道模型的质量,而EM技术则对传感器校准和场畸变较为敏感。相比于EM系统,基于视觉的框架具有成本低、无需额外设备安装以及对组织变形影响较小的优点[6]。此外,进行外周气道介入的支气管内设备直径理想情况下应小于2毫米[4],加入跟踪设备会给设备的小型化带来额外负担。本信件的重点是开发基于视觉的定位框架。已经开发了几种基于不同相似性度量的2D/3D配准方法用于支气管镜导航[6]-[9]。其中,基于深度图的方法[9]被证明相比于其他基于强度或梯度特征的方法对光照变化更具鲁棒性。然而,支气管镜图像的深度估计仍然具有以下挑战:1)传统的运动形状(SFM)技术在视野小且缺乏显著特征的情况下难以正确恢复深度;2)由于气道尺寸受限,目前仅广泛使用单目支气管镜,这使得基于立体相机设置的深度恢复方法不适用;3)由于手动对齐耗时且容易出错,难以获取匹配的体内视频帧和CT虚拟视图,而有监督的深度学习算法通常需要大量的标记数据;4)在实际临床场景中,如图2所示,由于患者剧烈咳嗽、快速操控支气管镜以及频繁的支气管冲洗,图像伪影如模糊和水泡可能会被引入,而现有的大多数方法对这些图像伪影可能非常敏感。
图2。样本清晰的视图和有图像伪影的帧。(a)颜色模糊,没有流明的遮挡。(b)气泡,没有管腔的阻塞。©气泡与闭塞。(d)彩色条纹。(e)雾状模糊物。(f)引起镜面反射的气泡。(g)重叠的阴影。(h)清晰的视图。
在本文中,我们提出了一种基于上下文感知深度估计的支气管镜导航框架,该框架可以从体内视频帧生成深度图,而无需配对的视频和CT深度图像。受到近年来生成对抗网络(GAN)[10],[11]发展的启发,引入了视图属性条件和邻域扭曲来处理图像伪影造成的部分遮挡。然后,将视频帧的估计深度图与CT数据生成的虚拟深度图进行配准,以估算相机的姿态。该导航框架在体内数据集上进行了验证。对视频图像的深度估计和支气管镜导航中的相机定位精度的评估表明,该方法具有良好的性能。
本文的其余部分组织如下:第二部分讨论了相关工作。第三部分介绍了所提出方法的详细信息。第四部分展示了实验结果,最后在第五部分进行总结。
2. 相关工作
当前的支气管镜导航系统大致可以分为三类,包括基于传感器的系统[12]、基于视觉的系统[6],[8],[9]以及混合系统[7],[13],[14]。外部跟踪设备如EM传感器可以集成到柔性内窥镜中,以报告实时的尖端姿态。然而,校准和复杂的设备设置会影响正常的临床工作流程,并且其对金属干扰和组织变形的敏感性可能导致跟踪失败[6]。
与基于传感器的导航系统相比,基于视觉的方法仅依赖于支气管镜视频,在视频帧与虚拟CT视图之间执行2D/3D配准,使用特定的相似性度量。基于图像的配准方法对呼吸运动更具鲁棒性,因为内窥镜会与气道同时移动[6]。相似性度量可以基于图像强度[6],[7]、梯度[8],[14]、深度[9]或气道腔特征[15],[16]。文献[6],[7]中提出的基于图像强度的相似性度量要求从CT气道模型生成逼真的渲染图像。然而,气管壁的表面纹理和光照条件难以恢复。为了避免使用图像强度,一些研究尝试将配准转化到pq空间[8],[14]或深度图[9]中,这些方法更独立于纹理,同时更好地保留了气道分叉的形态。由于基于像素的图像配准计算成本高,因此开发了更高效的基于气道腔检测的定位方法[15],[16],用于在可以观察到多个分叉的远端气道中进行导航。在这些方法中,基于深度的2D/3D配准对表面纹理不敏感,并且可以保留场景中丰富的形态信息。
最近,单目图像的深度估计已经通过几种有监督[17]-[19]或无监督[20],[21]的深度学习方法得到了研究。监督的深度恢复方法如[17]需要图像和深度数据之间的成对匹配,而支气管镜视频图像中很难获得这种匹配数据。为了解决这个问题,[18],[19]采用领域适应技术,将视频帧转换为无纹理图像,从而可以利用大量合成数据学习从渲染视图到深度图的映射。文献[18]提出的模型在气管模型数据上提供了良好的深度估计结果。Mahmood等人[19]在使用合成数据训练的模型上展示了在猪结肠内窥镜图像上保留结构的深度恢复效果。
此外,还提出了无监督方法[20],[21]用于不使用合成数据的单目深度估计。然而,[20]使用立体图像进行训练,这对支气管镜图像来说是不适用的。文献[21]提出了一种自监督方法,通过视图合成和运动形状(SFM)估计深度图和相机姿态。然而,SFM技术通常需要平滑的相机运动和丰富的视觉信息。内支气管表面上显著特征的缺乏和快速的内窥镜运动可能会限制其在支气管镜图像中的应用。
我们的工作还与近期的GAN模型发展相关[10],[11],[22]。Isola等人[22]将GAN适用于通用的图像到图像翻译框架,要求多个领域之间的精确对应。为了放松这一限制,Zhu等人[11]提出了一种基于循环一致性(CycleGAN)的无配对图像到图像翻译框架。这种无配对框架在从支气管镜视频生成深度图方面表现良好。然而,当存在伪影时,循环一致性无法总是得到保持。对于特定的视频帧,对应的深度图是唯一的,而逆变换则不是。同一气道位置的深度图可能与视野清晰或有伪影的视频帧匹配。为了解决这个问题,我们构建了互补条件来对支气管镜图像中的伪影进行建模。
图3。(a)使用视频-ct配准的支气管镜导航的工作流程。基于GAN的(b)上下文感知深度估计。
3. 方法概述
本文提出的用于支气管镜导航的相机定位方法的工作流程如图3(a)所示,主要包括三个步骤:从CT气道模型的多个虚拟相机投影中提取深度图(见第III-A节);基于上下文感知生成对抗学习从单个支气管镜视频帧重建深度图(见第III-B节);以及估算相机姿态以最大化视频深度图与相应虚拟深度图之间的相似性(见第III-C节)。
3.1. 基于CT数据的虚拟深度生成
在术前采集胸部CT扫描数据,并使用ITK-SNAP [23]提供的3D主动轮廓分割方法对气管树进行3D分割。然后,使用气管分割结果计算3D气道网格。在给定特定相机姿态 p t p_t pt(一个在时间戳t处的6自由度向量)的情况下,通过建模具有与真实视频支气管镜相机相同内参的虚拟相机生成虚拟深度图 z C ( p t ) ∈ Z C z_C (p_t) \in Z_C zC(pt)∈ZC,其中 Z C Z_C ZC 是CT深度图集合。为了模拟所有可能的视角,虚拟相机姿态 p p p 被设置为沿着通过快速行进算法[24]计算的气道中心线,并控制一定程度的变化。由CT气道模型生成的虚拟深度图用于训练所提出的深度估计网络。
3.2. 基于视频帧的上下文感知深度估计
给定特定的支气管镜视频帧 x ∈ X x \in X x∈X,深度估计的目标是学习一个映射 G : X → Z G : X \rightarrow Z G:X→Z,以生成相应的深度图。对于从时间步t的视频帧估计的合适深度图 z t = G ( x t ) z_t = G(x_t) zt=G(xt),它需要满足以下属性:
- z t z_t zt 的局部特征应与由CT气道网格生成的虚拟深度图 z C ∈ Z C z_C \in Z_C zC∈ZC 相似。
- 深度图 z t z_t zt 应该能够提供足够的信息来指示 x t x_t xt 的分叉,例如,腔通常具有较大的深度。
- 深度图 z t z_t zt 不易受到伪影的影响。因此,同一气道位置的深度图可能会对应不同类型的图像伪影。
- 应保持连续视频帧 z t z_t zt 和 z t − 1 z_{t-1} zt−1 之间的视觉一致性。
上述属性启发我们构建了如图3(b)所示的上下文感知深度估计方法。通过解决包含以下损失项的学习框架,可以获得最佳的深度估计函数:
对抗损失: 为了避免基于手动配对数据学习映射 G Depth : X → Z G_{\text{Depth}} : X \rightarrow Z GDepth:X→Z,我们引入逆映射 G Video : Z → X G_{\text{Video}} : Z \rightarrow X GVideo:Z→X 以及分别识别真实深度和支气管镜帧的判别器 D Depth D_{\text{Depth}} DDepth 和 D Video D_{\text{Video}} DVideo。按照对抗学习中的常规设置[10],对这两个映射函数应用对抗损失。
图4中展示了神经网络的架构,包括(a) 生成器,(b) 残差块,和© 判别器。“M × M conv (Na, Nb)” 表示一个具有M × M卷积核、Na个输入通道和Nb个输出通道的2D卷积层。“M × M deconv (Na, Nb)” 表示一个2D反卷积层。“IN” 表示实例归一化层。“ReLU” 表示ReLU激活函数。“BN” 表示批量归一化层。
3.3. 方法概述
图3(a)展示了用于支气管镜导航的相机定位方法的工作流程,主要包括三个步骤:从CT气道模型的多个虚拟相机投影中提取深度图(第III-A节);基于上下文感知生成对抗学习从单个支气管镜视频帧重建深度图(第III-B节);以及估计相机姿态以最大化视频深度图与相应虚拟深度图之间的相似性(第III-C节)。
3.3.1. 从CT数据生成虚拟深度图
术前进行胸部CT扫描,从中分割出3D支气管树,使用ITK-SNAP提供的3D主动轮廓分割方法[23]。然后,使用支气管分割结果计算3D气道网格。给定特定的相机姿态 p t p_t pt,这是一个在时间戳 t t t的6自由度向量,虚拟深度图 z C ( p t ) ∈ Z C z_C(p_t) \in Z_C zC(pt)∈ZC通过建模具有与实际视频支气管镜相同的内在参数的虚拟相机生成,其中 Z C Z_C ZC是CT深度图的集合。为了模拟所有可能的视角,虚拟相机姿态 p p p被设置为沿着气道中心线,中心线由快速行进算法[24]计算,并具有控制的变异量。生成的虚拟深度图用于训练所提出的深度估计网络。
3.3.2. 基于上下文感知的深度估计从视频帧中
给定特定的支气管镜视频帧 x ∈ X x \in X x∈X,深度估计的目标是学习一个映射 G : X → Z G : X \to Z G:X→Z,以生成相应的深度图。对于从时间步 t t t的视频帧 x t x_t xt估计的正确深度图 z t = G ( x t ) z_t = G(x_t) zt=G(xt),它需要具备以下属性:
- z t z_t zt的局部特征应与由CT气道网格生成的虚拟深度图 z C ∈ Z C z_C \in Z_C zC∈ZC相似。
- 深度图 z t z_t zt应具有指示 x t x_t xt分叉的能力,例如,腔道通常具有较大的深度。
- 深度图 z t z_t zt不应容易受到伪影的影响。因此,深度图可能对应于相同的气道位置,但具有不同类型的图像伪影。
- 应保留连续视频帧之间的深度图 z t z_t zt和 z t − 1 z_{t-1} zt−1的视觉一致性。
上述属性启发我们构建了如图3(b)所示的上下文感知深度估计方法。通过解决学习框架获得最优深度估计函数,该框架包括以下损失项:
对抗损失: 代替基于人工配对数据学习映射 G Depth : X → Z G_{\text{Depth}} : X \to Z GDepth:X→Z,我们采用无监督框架,引入逆映射 G Video : Z → X G_{\text{Video}} : Z \to X GVideo:Z→X以及判别器 D Depth D_{\text{Depth}} DDepth和 D Video D_{\text{Video}} DVideo来分别识别真实深度和支气管镜帧。根据对抗学习的一般设置[10],对两个映射函数应用对抗损失:
G Depth , D Depth = arg min G Depth arg max D Depth L adv ( G Depth , D Depth ) = arg min G Depth arg max D Depth E z ∼ Z [ log D Depth ( z ) ] + E x ∼ X [ log ( 1 − D Depth ( G Depth ( x ) ) ) ] ( 1 ) \begin{aligned} G_{\text{Depth}}, D_{\text{Depth}} &= \arg \min_{G_{\text{Depth}}} \arg \max_{D_{\text{Depth}}} L_{\text{adv}}(G_{\text{Depth}}, D_{\text{Depth}}) \\ &= \arg \min_{G_{\text{Depth}}} \arg \max_{D_{\text{Depth}}} \mathbb{E}_{z \sim Z} \left[ \log D_{\text{Depth}}(z) \right] + \mathbb{E}_{x \sim X} \left[ \log (1 - D_{\text{Depth}}(G_{\text{Depth}}(x))) \right](1) \end{aligned} GDepth,DDepth=argGDepthminargDDepthmaxLadv(GDepth,DDepth)=argGDepthminargDDepthmaxEz∼Z[logDDepth(z)]+Ex∼X[log(1−DDepth(GDepth(x)))](1)
其中 G Depth G_{\text{Depth}} GDepth尝试生成看起来与来自CT数据的真实深度相似的深度 G Depth ( x ) G_{\text{Depth}}(x) GDepth(x),而 D Depth D_{\text{Depth}} DDepth旨在区分合成样本 G Depth ( x ) G_{\text{Depth}}(x) GDepth(x)和真实样本 z ∈ Z z \in Z z∈Z。类似地,视频帧的对抗损失项 L adv ( G Video , D Video ) L_{\text{adv}}(G_{\text{Video}}, D_{\text{Video}}) Ladv(GVideo,DVideo)也定义为区分真实和合成数据。
循环一致性损失: 不同于监督方法,假设支气管镜帧的相应深度图在本工作中不可用。考虑到支气管镜帧和深度图共享的类似形态,良好的深度估计应能够恢复原始支气管镜帧,这在[11]中被形式化为循环一致性:
G Depth = arg min G Depth L cycle ( G Depth ) = arg min G Depth E x ∼ X [ ∥ x − G Video ( G Depth ( x ) ) ∥ ] ( 2 ) G_{\text{Depth}} = \arg \min_{G_{\text{Depth}}} L_{\text{cycle}}(G_{\text{Depth}}) = \arg \min_{G_{\text{Depth}}} \mathbb{E}_{x \sim X} \left[ \| x - G_{\text{Video}}(G_{\text{Depth}}(x)) \| \right](2) GDepth=argGDepthminLcycle(GDepth)=argGDepthminEx∼X[∥x−GVideo(GDepth(x))∥](2)
其中最小化原始和恢复的支气管镜帧之间的误差。
为了避免偏差,循环一致性也适用于通过以下方式估计的视频帧:
G Video = arg min G Video L cycle ( G Video ) = arg min G Video E z ∼ Z [ ∥ z − G Depth ( G Video ( z ) ) ∥ ] ( 3 ) G_{\text{Video}} = \arg \min_{G_{\text{Video}}} L_{\text{cycle}}(G_{\text{Video}}) = \arg \min_{G_{\text{Video}}} \mathbb{E}_{z \sim Z} \left[ \| z - G_{\text{Depth}}(G_{\text{Video}}(z)) \| \right](3) GVideo=argGVideominLcycle(GVideo)=argGVideominEz∼Z[∥z−GDepth(GVideo(z))∥](3)
条件上下文损失: 尽管循环损失可以实现从深度图恢复视频帧,但它不能处理支气管镜图像中的伪影。深度图可能对应于相同的气道位置,但具有不同类型的伪影。因此,我们将视频帧 x x x标记为视图属性 a a a以指示伪影的存在。对于 c c c种伪影,视图属性是一个 c + 1 c + 1 c+1维的独热编码向量,其中 a 1 = 1 a_1 = 1 a1=1表示当前视频帧视图清晰,而 a i = 1 , i = 2 , … , c + 1 a_i = 1, i = 2, \ldots, c + 1 ai=1,i=2,…,c+1表示具有特定伪影的视频帧。在我们的体内数据集中,26.22%的支气管镜视频图像具有伪影。伪影帧被选择并手动标注为七个不同的视图属性组( c = 7 c = 7 c=7)。9%的视图完全遮挡的视频帧被排除在本文之外。图2展示了具有伪影和清晰视图的样本图像。通过接受视图属性作为输入,生成器 G Video G_{\text{Video}} GVideo生成具有特定伪影的合成视频帧和深度图如下:
G Depth = arg min G Depth L condition ( G Depth ) = arg min G Depth E x ∼ X , a [ ∥ x − G Video ( G Depth ( x , a ) ) ∥ ] ( 4 ) G_{\text{Depth}} = \arg \min_{G_{\text{Depth}}} L_{\text{condition}}(G_{\text{Depth}}) = \arg \min_{G_{\text{Depth}}} \mathbb{E}_{x \sim X, a} \left[ \| x - G_{\text{Video}}(G_{\text{Depth}}(x, a)) \| \right](4) GDepth=argGDepthminLcondition(GDepth)=argGDepthminEx∼X,a[∥x−GVideo(GDepth(x,a))∥](4)
在 G Video G_{\text{Video}} GVideo上,循环一致性也扩展为:
G Video = arg min G Video L condition ( G Video ) = arg min G Video E z ∼ Z , a [ ∥ z − G Depth ( G Video ( z , a ) ) ∥ ] ( 5 ) G_{\text{Video}} = \arg \min_{G_{\text{Video}}} L_{\text{condition}}(G_{\text{Video}}) = \arg \min_{G_{\text{Video}}} \mathbb{E}_{z \sim Z, a} \left[ \| z - G_{\text{Depth}}(G_{\text{Video}}(z, a)) \| \right](5) GVideo=argGVideominLcondition(GVideo)=argGVideominEz∼Z,a[∥z−GDepth(GVideo(z,a))∥](5)
此外,我们还扩展了判别器 D Video D_{\text{Video}} DVideo以识别视图属性。除了区分真实和合成数据, D Video D_{\text{Video}} DVideo还设计为识别视频帧的视图属性如下:
D Video = arg min D Video L att ( D Video ) = arg min D Video − E x ∼ X , a [ log D Video ( a ∣ x ) ] − E z ∼ Z , a [ log D Video ( a ∣ G Video ( z , a ) ) ] ( 6 ) D_{\text{Video}} = \arg \min_{D_{\text{Video}}} L_{\text{att}}(D_{\text{Video}}) = \arg \min_{D_{\text{Video}}} - \mathbb{E}_{x \sim X, a} \left[ \log D_{\text{Video}}(a|x) \right] - \mathbb{E}_{z \sim Z, a} \left[ \log D_{\text{Video}}(a|G_{\text{Video}}(z, a)) \right](6) DVideo=argDVideominLatt(DVideo)=argDVideomin−Ex∼X,a[logDVideo(a∣x)]−Ez∼Z,a[logDVideo(a∣GVideo(z,a))](6)
这通过在原始判别器上添加另一个分类输出来实现。
连续变形损失: 考虑到连续帧 x t x_{t} xt和 x t − 1 x_{t-1} xt−1,它们对应的深度图 z t z_{t} zt和 z t − 1 z_{t-1} zt−1也应具有类似的空间变换。设 F ( x t − 1 , x t ) F(x_{t-1}, x_{t}) F(xt−1,xt)表示 x t − 1 x_{t-1} xt−1和 x t x_{t} xt之间的流动图,它测量了连续帧的空间变换。因此,变形相似性可以通过以下方式保留:
G Depth = arg min G Depth L warp ( x t − 1 , x t ) = arg min G Depth [ ∥ x t − S ( x t − 1 , F ( x t − 1 , x t ) ) ∥ + ∥ G Depth ( x t ) − S ( G Depth ( x t − 1 ) , F ( x t − 1 , x t ) ) ∥ ] ( 7 ) G_{\text{Depth}} = \arg \min_{G_{\text{Depth}}} L_{\text{warp}}(x_{t-1}, x_{t}) = \arg \min_{G_{\text{Depth}}} \left[ \| x_{t} - S(x_{t-1}, F(x_{t-1}, x_{t})) \| + \| G_{\text{Depth}}(x_{t}) - S(G_{\text{Depth}}(x_{t-1}), F(x_{t-1}, x_{t})) \| \right](7) GDepth=argGDepthminLwarp(xt−1,xt)=argGDepthmin[∥xt−S(xt−1,F(xt−1,xt))∥+∥GDepth(xt)−S(GDepth(xt−1),F(xt−1,xt))∥](7)
其中 S ( ⋅ , ⋅ ) S(\cdot, \cdot) S(⋅,⋅)是空间变换函数[25]。
图5。在连续的视频帧之间的图像扭曲的三种场景。(a)xt−1和xt都是清晰的视图。(b)xt−1是清晰的视图,但xt是与工件。©xt−1和xt都带有工件。
图6。三个例子的注册视频帧和CT深度图使用所提出的方法和基线。(a)是一个清晰的视角;(b)&©是具有图像伪影的帧。上行显示视频帧和各方法恢复的深度图,下行显示地面真实CT深度图和各方法注册的CT深度图。
然而,由于图像伪影的存在,连续视频帧之间的图像变换并不总是能够适应深度图。如图5所示,具有清晰视图的连续帧容易进行变形。对于不同类型的伪影状态的图像,对深度图的任意约束可能导致奇异结果。对于具有相同伪影类型的相邻帧,由于伪影区域的变化较大,变形误差在较小的权重下被最小化。因此,最终的变形误差被公式化如下:
L warp = λ ( x t − 1 , x t ) L warp ( x t − 1 , x t ) , L_{\text{warp}} = \lambda(x_{t-1}, x_{t}) L_{\text{warp}}(x_{t-1}, x_{t}), Lwarp=λ(xt−1,xt)Lwarp(xt−1,xt),
其中
λ ( x t − 1 , x t ) = { 1 if a t = 1 and a t − 1 = 1 , 0 if a t = a t − 1 , γ otherwise . \lambda(x_{t-1}, x_{t}) = \begin{cases} 1 & \text{if } a_{t} = 1 \text{ and } a_{t-1} = 1, \\ 0 & \text{if } a_{t} = a_{t-1}, \\ \gamma & \text{otherwise}. \end{cases} λ(xt−1,xt)=⎩ ⎨ ⎧10γif at=1 and at−1=1,if at=at−1,otherwise.
其中,本文中 γ = 0.01 \gamma = 0.01 γ=0.01以实现最佳性能。
总体损失: 通过将损失项组合成统一的学习框架,最终的优化问题被公式化如下:
D Depth = arg max D Depth L adv ( D Depth ) , D_{\text{Depth}} = \arg \max_{D_{\text{Depth}}} L_{\text{adv}}(D_{\text{Depth}}), DDepth=argDDepthmaxLadv(DDepth),
D Vido = arg max D Depth L adv ( D Vido ) − L att ( D Vido ) , D_{\text{Vido}} = \arg \max_{D_{\text{Depth}}} L_{\text{adv}}(D_{\text{Vido}}) - L_{\text{att}}(D_{\text{Vido}}), DVido=argDDepthmaxLadv(DVido)−Latt(DVido),
G Depth , G Vido = arg min G Vido , G Depth [ L condition ( G Depth ) + L condition ( G Vido ) + L adv ( G Vido ) + L adv ( G Depth ) + L warp ( G Depth ) ] . G_{\text{Depth}}, G_{\text{Vido}} = \arg \min_{G_{\text{Vido}}, G_{\text{Depth}}} \left[ L_{\text{condition}}(G_{\text{Depth}}) + L_{\text{condition}}(G_{\text{Vido}}) + L_{\text{adv}}(G_{\text{Vido}}) + L_{\text{adv}}(G_{\text{Depth}}) + L_{\text{warp}}(G_{\text{Depth}}) \right]. GDepth,GVido=argGVido,GDepthmin[Lcondition(GDepth)+Lcondition(GVido)+Ladv(GVido)+Ladv(GDepth)+Lwarp(GDepth)].
表一
关于深度估计、导航和时间效率的定量评价。“v”表示视频帧。“d”表示深度贴图。“c”表示视频帧和深度地图之间的精确对应关系。“sr-n”表示注册小于N MM的视频帧的百分比。“fps”表示每秒的帧数
图7。每种方法在x、y、z轴上对其中一个测试视频序列的注册摄像机轨迹。
模型以交替的方式进行训练。在每次迭代中,首先固定生成器以获得最优的 D Vido D_{\text{Vido}} DVido 和 D Depth D_{\text{Depth}} DDepth。然后固定鉴别器以获得最优的 G Vido G_{\text{Vido}} GVido 和 G Depth G_{\text{Depth}} GDepth。
3.3.3. 相机姿态估计通过 2D/3D 配准
对于连续的相机定位,在生成输入视频帧 x t x_t xt 的深度图 z t z_t zt 后,通过最大化视频深度图 z t z_t zt 和虚拟 CT 深度图的相似性来估计相机姿态 p t p_t pt。给定前一视频帧 x t − 1 x_{t-1} xt−1 的相机姿态 p t − 1 p_{t-1} pt−1 作为初始化,最优姿态 p t p_t pt 是通过类似于 [9] 中描述的策略来确定的,如公式 (9) 所示:
p t = p t − 1 + Δ p t ∣ t − 1 p_t = p_{t-1} + \Delta p_{t|t-1} pt=pt−1+Δpt∣t−1
Δ p t ∣ t − 1 = arg max Δ p t ∣ t − 1 { SIM ( z t , z C ( p t − 1 + Δ p t ∣ t − 1 ) ) } \Delta p_{t|t-1} = \arg \max_{\Delta p_{t|t-1}} \{ \text{SIM}(z_t, z_C(p_{t-1} + \Delta p_{t|t-1})) \} Δpt∣t−1=argΔpt∣t−1max{SIM(zt,zC(pt−1+Δpt∣t−1))}
其中 SIM ( ⋅ , ⋅ ) \text{SIM}(\cdot, \cdot) SIM(⋅,⋅) 是深度图之间的相似性度量。在本文中,我们使用归一化互相关 (NCC) 作为深度图之间的相似性度量 [9]。每个相机姿态变化 Δ p t ∣ t − 1 \Delta p_{t|t-1} Δpt∣t−1 对应一个唯一的 CT 深度图 z C z_C zC。通过最大化 z t z_t zt 和 z C z_C zC 之间的 NCC 来估计最优的姿态变化 Δ p t ∣ t − 1 \Delta p_{t|t-1} Δpt∣t−1。由于目标函数不是完全可微的,因此采用了 Powell 方法 [26] 作为优化策略。抛物线拟合步骤的最大放大倍率设置为 100。连续区间的默认放大比率设置为 1.62。
4. 实验
4.1. 数据集和基线
所提出的框架在体内数据上进行了验证。CT 扫描的体素间距为 [0.4, 0.4, 0.5] mm,由 Siemens SOMATOM Definition Edge CT 扫描仪获取。使用 Olympus BF-1T260 支气管镜捕获的尺寸为 307 × 313,帧率为 30 fps 的视频。数据是在标准临床常规中获取的。数据集属于 Hamlyn 肺和支气管镜数据库(Hamlyn Centre, Imperial College),该数据库经过研究伦理委员会的伦理审批(REC 参考编号:16/LO/0170,IRAS 项目 ID:198081),位于英国伦敦。我们使用了来自两个受试者的配对 CT 扫描和支气管镜视频进行训练,另一个受试者的数据用于测试。
为了进行比较,我们采用了 Shape from Shading (SFS) [27]、监督 FCN [28]、SFM [21] 和 CycleGAN [11] 作为基线。监督 FCN 基于残差块,并使用 350 张手动配对的 CT 深度图和视频图像进行训练。由于体内数据中的变形和伪影,具有精确对应的配对数据数量有限。为了训练 SFM 网络,我们使用光流选择了 1520 张具有平滑相机运动的视频帧。我们使用 2951 张视频帧和 7200 张 CT 深度图来训练 CycleGAN 和所提出的方法。测试时,使用了两个视频序列,共 180 张视频帧,并对应注册的相机姿态和 CT 深度图。
图8。注册的测试视频序列的方法和基线与地面真实比较。
4.2. 实现
在本文中,生成器被构建为基于 U-Net [29] 架构的全卷积神经网络,如图 4(a) 所示。我们用一个六层的 ResNet 块(图 4(b))[30] 替换了原始的瓶颈块,以编码丰富的信息。鉴别器是基于 PatchGAN(图 4©)[22] 的多层卷积网络,用于在多个尺度上识别真实数据。
我们使用 Adam 求解器 [31],批量大小为 1。采用 Pytorch‡ 框架来实现深度卷积神经网络,实验平台为配备 Xeon E5-2630 和 NVIDIA GeForce Titan Xp 的工作站。
4.3. 验证与讨论
我们比较了所提出的方法和基线方法在深度估计质量和相机定位准确性方面的表现。
图 6 展示了从三个示例视频帧恢复的深度图以及由基线方法和所提出的方法估计的注册 CT 深度图。对于清晰视图,如图 6(a) 所示,所有方法都能合理地恢复整体深度图,除 SFM 外,其他方法能够正确地恢复分叉的大小和位置。SFM 方法在支气管镜视频图像上的表现较差,因为支气管镜的操控速度快且不稳定。与相机以相对恒定速度移动的室外数据集不同,支气管镜在所有方向上都有较大的平移和旋转运动。SFS 基于兰伯特表面模型,虽然能够正确估计腔体的位置,但对腔体边界的估计不准确。FCN 方法的性能受限于配对数据的数量较少和视频图像中的大范围组织变形。对于如图 6(b) 和 © 所示的有伪影的帧,其他所有基线方法都受到影响,而所提出的方法估计的深度图仍保持了良好的腔体结构。
我们使用峰值信噪比 (PSNR)、结构相似性 (SSIM)、NCC 和互信息 (MI) 等相似性度量来评估注册 CT 深度图与对应的真实 CT 深度图之间的相似性。所有方法的测量结果见表 I。所有相似性度量指标都表明,与对应的真实 CT 深度图相比,所提出的深度估计方法生成了最准确的注册 CT 深度图。定量结果与图 6 中的观察一致。† 表 I 还展示了所提出方法和基线方法在相机定位准确性和时间效率方面的定量评估结果。图 7 展示了每种方法在其中一个测试视频序列上的注册轨迹,图 8 展示了相应的注册 CT 虚拟渲染。计算了绝对跟踪误差 (ATE) 和成功注册的视频帧的百分比,以评估相机定位准确性。凭借令人满意的视频深度估计结果,所提出的方法在定位准确性方面优于基线方法,具有最小的 ATE 和最高的成功注册视频帧数。总体而言,所提出的上下文感知深度估计方法能够恢复清晰的分叉结构特征,无论是在有图像伪影还是没有伪影的视频帧中。
SFM 方法无法从视频帧中恢复正确的气道结构,导致相机定位早期失败。SFS、FCN 和 CycleGAN 方法可以估计无图像伪影图像的结构特征,但任何气泡和模糊的存在都会影响它们在连续相机跟踪中的性能。我们提出的上下文感知深度估计方法考虑了图像伪影的影响,使得相机定位框架更加鲁棒。通过留一法策略验证了所提出方法的泛化性能。其他两个数据拆分的深度估计性能没有显著变化(PSNR=33.49±2.49,39.59±2.69)。除了 SFS 之外,基于深度神经网络的深度估计方法在实时支气管镜导航中都有良好的时间效率。由于当前优化算法的效率有限,视频-CT 注册过程的帧率不够。未来将引入 GPU 加速,以减少视频-CT 注册所需的处理时间。
5. 结论
总之,我们提出了一种上下文感知的深度估计方法,用于支气管镜导航,具有良好的图像伪影容忍度。带有循环一致性的条件生成对抗网络能够从未配对的数据中学习真实深度图的特征。对从临床支气管镜例程中收集的体内数据的验证结果表明,与基线方法相比,我们提出的方法表现优越。我们的方法能够从视频帧中生成深度图,即使在图像伪影部分遮挡的情况下,也能编码分叉的大小和存在的结构特征。其对图像伪影的抗干扰能力极大地提高了导航框架在临床应用中的鲁棒性。
致谢
作者感谢英国皇家布朗普顿医院的 P. Shah 教授在开发 Hamlyn 肺和支气管镜数据库方面的合作。