Deep Multi-view Stereo for Dense 3D Reconstruction from Monocular Endoscopic Video
Deep Multi-view Stereo for Dense 3D Reconstruction from Monocular Endoscopic Video
用于单目内窥镜视频稠密三维重建的深度多视角立体成像技术
作者:Gwangbin Bae(ck.yeung@nisi.hk,facebook关注), Ignas Budvytis, etc al. 剑桥大学。
– 2020. MICCAI会议( Medical Image Computing and Computer Assisted Intervention)
Location: Citavi-- 20200114 access references
Abstract 摘要
单目内窥镜图像的三维重建是一项具有挑战性的任务。
Possible Applications: Lesion Size Estimation(病灶尺寸估计), Assisted Control(辅助操纵), Coverage Estimation(覆盖表面估计)…
最先进的基于图像patch相似性的多视角立体(MVS)算法往往不能从纹理较弱 的内镜图像中获得稠密重建 。在本文中,我们提出了一种新的基于深度学习的MVS算法,可以从单目内窥镜图像序列中产生稠密和准确的三维重建。我们的方法包括三个关键步骤。
首先,根据预先训练好的CNN所做的深度预测 ,抽取一些深度候选样本 。
其次,每个候选图像被投影到序列中的其他图像中,并使用一个patch嵌入网络 将每个图像patch映射成一个稠密的嵌入点 来测量匹配得分。
最后,为每个像素选择得分最高 的候选对象。
结肠镜检查视频实验证明我们的patch嵌入网络优于zero-normalized互相关 和最先进的立体匹配网络 的匹配精度,我们的MVS算法产生数度*度级 比比较的方法来重建相同的过滤精度。
–相关概念MVS
MVS多视角立体视觉/多视图三维重建

MVS with Deep Learning-知乎
–Algorithm Innovation
Traditional Algorithm
for each pixel p do
sample depth candidates d_min < d < d_max
for each depth d do
for each image j do
p_j(d) = projection of d to j
s(p, p_j(d)) = similarity between p and p_j(d)
(zero normalized cross correlation)
s(d) = max_j s(p, p_j(d))
\alpha_p = arg max_d s(d)
Proposed Algorithm
for each pixel p do
sample depth candidates 0.9*d_pred < d < 1.1*d_pred
for each depth d do
for each image j do
p_j(d) = projection of d to j
s(p, p_j(d)) = similarity between p and p_j(d)
(dot product between embedding vectors--light cnn)
s(d) = min_j s(p, p_j(d))
\alpha_p = arg max_d s(d)
Introduction
已有表面估计方法需要设备修正:Structured Light,Photometric Stereo(光度立体视觉-当相机、光源和目标物体相对位置固定不变时,使用不同方向的光源照射同一目标物体,相机可以拍摄到目标物体带有不同明暗分布的图像,再通过求解基于朗伯反射原理的反射方程组,求解目标表面的法向分布或者深度地图。)-----Limitations:1\ Increase size and cost of the endoscope; 2\ Difficult to test on human patient
–> only use monocular image or video as input —> SfM是其中一个可能的解决方法(确定帧之间的稀疏对应点–联合优化3D坐标和相机位姿(BA))–准确度高,因为是几何计算验证的,但就是稀疏(由于算法仅优化有限的选出的点)。
现有研究gap:已有对稀疏sfm重建进行深度神经网(Encoder-Decoder)训练,来预测稠密像素级深度图;
但缺乏精确度,因为——it is generated from a single image, and is not validated from other viewpoints.
单视图深度预测会受动态模糊(motion blur)、光斑(light speckles)、非刚体/流体(fluids)影响。
故采用多视图三维重建MVS算法。但其也有缺陷————较大的搜索空间+较差的匹配精确度。
例:
1) 较大搜索空间:
PatchMatch stereo [1]----在均匀分布范围dmax到dmin之间随机选择一个初始值,将匹配分数最高的深度传递到临像素;
BruteForce stereo [2]----在选择深度范围从dmin到dmax的每个像素遍历,选择分数最高的一个。
以上,当dmax到dmin范围较大时预测出正确深度是一个挑战(比较困难)。
2)较差匹配精确度:
典型的匹配函数是ZNCC ,但随着patch尺寸的增大,计算量平方级增大。patch一般选择7*7大小。但是小patch会导致模糊匹配,在弱纹理图片中尤其如此。
本文提出的patch embedding network能显著提高精确度,而且和ZNCC和其他匹配网络相比,计算量要小很多。通过加强多视图的一致性可以提高重建质量。以结肠镜视频为研究对象,也可扩展到其他部位单目腹腔镜。
2. Method
graph LR
A(Images)-->B(SFM: Sparse Depth+Camera Pose)
A-->C(Deep-net Depth Prediction: Dense Depth)
A-->D(Deep-net Patch Prediction: Pixel-wise Embedding)
B-->E(Deep MVS)
C-->E(Deep MVS)
D-->E(Deep MVS)
E-->F(3D Reconstruction)
Deep MVS :
- Sample depths around predicted depth; 在预测深度附近取样
- Measure matching score via dot product between pixel-wise embedding vectors;通过像素级嵌入向量之间的点积测量匹配得分
- Choose depth that maximizes score; 选择深度,使得分最大化
- Depth clening via view consistency check. 通过视图一致性检查,清洗深度数据 。
2.1 Sparse Depth and Camera Pose Estimation via SfM
为了克服非刚性表面形变 ,视频被分成短序列,由间隔0.08秒的8个连续帧组成。
用OpenSFM[9]做稀疏重建。在优化3D特征点坐标和相机位姿时,只有同时出现在8帧中的特征才选择进行优化。这样确保了相机位姿被所有特征点支持,因此保证了准确率。
2.2 Dense Depth Prediction via CNN
通过SFM获得的稀疏重建结果接下来被用于训练单目深度估计网络。由于SFM固有的尺度模糊特性,将预测的尺度与ground truth的尺度匹配后计算训练损失。
----ground truth来自于SFM的稀疏重建结果 ?
损失函数表示为:
L = min_{s \in S} \sum_{p}I(d^{true}_p>0)(d^{true}_p-s \times d^{pred}_p)^2
S为尺度因子的离散数据集(0.5-2.0),I是二值量,当真实深度对p(u,v)可用时取1,若深度不适合则取0.
通过应用这种尺度不变损失,网络能够学习相对深度(即像素深度之间的比率)。
使用U-Net网络[12]进行训练,只有一个输出通道。
conv 7* 7–>conv 3 *3–>conv 3 *3–>conv 3 *3
2.3 Pixel-Wise Embedding via Patch Embedding Network
目的:为了将每个像素周围的图像patch映射为嵌入向量f。这样两个向量之间的点积可以用来衡量它们的patch相似性。
| Layer | Output |
|---|---|
$7 \times 7$ Convolution, stride=7 |
$7 \times 7 \times 64$ |
$3 \times 3$ Convolution |
$5 \times 5 \times 64$ |
$3 \times 3$ Convolution |
$3 \times 3 \times 64$ |
$3 \times 3$ Convolution |
$1 \times 1 \times 64$ |
根据SIFT特征描符[6],将49*49的感受野(Receptive Field)划分成尺寸相同的7 *7的单元。这样7 *7的卷积层就有64个输出通道,可以用来识别每个单元中低级特征。这样就产生了尺寸为7 *7 * 64的特征图。一组3 * 3核的卷积层将feature map映射为一个64维向量。这个网络也可以使用 空洞卷积(dilated convolution)应用于整个图像(适当填充)。
每个卷积层之后是一个批归一化(batch normalization)和一个矫正线性单元(Rectified linear unit, ReLU)。
在最后一层使用线性激活来保存负值的信息。
传统patch嵌入网络使用小尺寸的重复卷积层,我们的网络结构可以结合更大的视觉环境/语境,同时有更少的参数。
最终输出的vector向量(向量映射尺寸为H * W * 64)被归一化,这样输出的vector和目标图像中每个像素的embedding vector的点积可以控制在-1到1之间。这将生成一个像素级的分数分布。
理想情况下,分数最高的点一定在真实值附近。设计软对比损失(soft contrastive loss):
L_{p,q^{true}} =\sum_{q}max(w_q,0)(1-f^{ref}_p\times f^{target}_q)+\sum_{q}max(-w_q,0)max(f^{ref}_p\times f^{target}_q-\alpha,0)
其中
w_q =
\begin{cases}
cos \frac{||q-q^{true}||\pi}{5}, & {if||q-q^{true}||\leq5} \
-1, & \text {otherwise}
\end{cases}
以上,当q距真实值2.5像素以内,分数最大化,否则会超过门限$\alpha$使分数最小。根据经验我们设置$\alpha$为0.7.
2.4 Deep Multi-view Stereo Reconstruction
1、在$0.9 \times d_{pred}$到$1.1 \times d_{pred}$之间均匀采样50个点,$d_{pred}$是预计深度。每个候选点被投影到序列中的其他(49个)图像中并计算其分数,即得到$N_{image}-1$个分数,$N_{image}$是每个序列中图像帧数。
选择分数最小点分配到深度候选值,一旦分数被分配到每个候选点,那么得分最高点就被选中了。即:
\hat{d}_p^i = arg\max_{d \in D}[\min_j(f^i_p\cdot f^i_{{P^j}(d)})]
D是候选深度集合,$P^j(d)$是第j帧候选深度d的投影。
生成的深度图然后进行视图一致性检验。在这一步中,$\hat{d}^i_p$被投影到同一序列的不同帧图像中,来估计投影像素的深度值。如果两点深度值的差异度小于1%,则被认为一致;如果再一个序列中7帧图像都满足,则$\hat{d}^i_p$被融合到最终重建深度中。最终选出的所有像素点,被用于后续重建精度的定量测试中。
3. Experiments
3.1 Setup
数据集 :来自不同患者的51个 结肠镜检查视频,均在20分钟以内。包括201814序列 被提取,34868个 被成功用于SfM重建。
(其中40个视频用于训练、验证和测试patch embeding网络,11个视频用于测试MVS流程pipeline。)
对于patch Embedding网络的训练和测试,使用SfM重构后幸存的SIFT[6]特征建立ground truth matching 。
工具:PyTorch 。
网络:80 epochs ,batch size of 32,Adam optimizer($\beta_1=0.9, \beta_2=0.999$)。学习率learning rate 设置为0.001, 每 20 epochs 降一次,分别为0.0007, 00003, 0.0001 。
3.2 Accuracy of the Patch Embedding Network
目的:定量评估 patching embeding 网络的准确度。
1、将为参考像素生成的嵌入向量(embedding vector)与目标图像中的所有嵌入向量进行卷积。
2、目标图像中使分数最大化的像素(即点积)被选择为$q^{pred}$。
3、定义误差为$||q^{pred}-q^{true}||$. 列表记录中位数误差以及误差大于3、5和10像素的匹配百分比。并记录每个评分法的重建时间。
(Table 1 ,ZNCC,[7], proposed; Patch size, Params, Median error, >3px, >5px, >10px, runtime)
小的patch包含的信息不够充分,而大的patch包含周围的像素,其外观是高度依赖于视觉的。————这就解释了zncc爱29*29的patch时,重建准确度达到峰值。与此相比,基于深度学习的方法在大patch下重建准确度到达最大。我们提出的方法包含更少的参数,有更大的感受野,并且在3px时获得了更高的精度。由于patch embedding网络将每个patch编码为一个简洁的表示,匹配需要的计算量比ZNCC更少,显著减少了重建时间。
分数分布图在 FIG.4 中显示。ZNCC用小patch时会造成模糊匹配,大patch会导致过于平滑的分数分布。我们的方法比[7]在准确点附近的分数更高。这主要是由于我们的soft 对比损失 在非准确点惩罚大分数(非准确点分数急剧下降)。
3.3 Evaluation of the MVS Reconstruction
目的:比较MVS pipeline与其他方法的准确度。
由于Ground Truth密集重建不可用,我们使用幸存于视图一致性检查(见2.4节)的像素数作为精度的定量度量,列于 Table 2 (BruteForce, PatchMatch, Proposed; Search space, Matching function, Score Selection, Average, Median)。本文方法产生了比BruteForce, PatchMatch还高几个数量级的稠密重建。见 Fig.5 。
Fig.6 展示了新增两组实验的结果。
1、实验一:每个深度候选得分(the score for each depth candidate)是通过对匹配分数的不同n次最佳选择(different n-th best selection)来计算的。BruteForce, PatchMatch选择最大值,我们选择最小值。结果表明,选择第7位最佳的深度候选视图可以使所有可用视图都支持该深度候选视图,从而抑制了模糊匹配的得分。这种表现在使用我们的patch embedding网络时可以得到最好的观察。
2、实验二:第二个实验展示了一致视图的最小数量(用于深度清洗,depth
cleaning)与存活像素(survived pixels)的数量之间的关系。通过减小该参数,可以在牺牲精度的同时获得更密集的重建。
4. Conclusion
本文提出了一种基于深度学习的多视角立体重建(multi-view stereo reconstruction)方法,能够从一系列单目内窥镜图像中产生稠密而准确的三维重建。
1、预先训练(pre-trained)的深度估计网络可以约束搜索空间(constrain the search space),提高重建精度。
2、提出的patch embedding网络优于ZNCC,是最先进的立体匹配网络。
对于视图一致性方面的固定约束,该方法比现有方法产生了几个程度的量级(several degrees of magnitude denser
reconstruction)的更稠密重建。
PPT节选




References
[1]. Patchmatch stereo-stereo matching with slanted support windows. 2011. || 论文及代码解析
[2]. Sensor-based guidance control of a continuum robot for a semi-autonomous colonoscopy. 2009.
[5]. Xingtong Liu. Self-supervised Learning for Dense Depth Estimation in Monocular Endoscopy. 2019.2 || 基于深度学习的单目图像深度估计$ \cdot$ 知乎 || 将传统的多视角几何融合到神经网络当中,实现了部分监督的效果去训练图像,缺陷:并有真正使用到相邻帧的几何关系,实际更多依赖的是来自SFM的三维点的监督。
[7]. Efficient deep learning for stereo matching.2016. || 论文解析
[8]. Realtime 3D reconstruction of colonoscopic surfaces for determining missing regions.
