Deep Active Contours 论文阅读
Deep Active Contours 的作者来自慕尼黑工业大学和约翰霍普金斯大学。
摘要:文章通过结合深度patch-based的特征表示和主动轮廓框架,提出一种交互的边界提取方法。文章训练了class-specific的卷积神经网络用于对图像中的一点预测其指向最近的物体边缘的向量。这些向量可以形成位移场,用于Sobolev主动轮廓框架中的轮廓演化。从计算资源和训练数据来看,这个方法是很高效的。文章在医学数据(STACOM)和非医学数据(PASCAL VOC 2012)上进行了结果的验证。
Motivation:
CNN能够提取高阶特征,但是目前端到端的分割网络如U-net和SegNet其处理的图像大小都是固定的。结合主动轮廓模型的patch-based神经网络能够分割任意大小的图像,同时集中处理目标邻域,有较好的灵活性和效率。
方法:
具体步骤如下:
1. 给定图像I后,给出K个初始点作为轮廓表示,其中s可以表示这些点的顺序等。同时确定迭代的步数N和步长。
2. samplePatch
对于每一个目前的轮廓点,根据其轮廓法向来提取固定大小的像素块(64*64)。这样能够引入旋转不变性(我感觉更像是鲁棒性,因为如果图像块旋转了,其结果应该是不一样的,但是物体旋转了,只有初始化轮廓跟着旋转,结果才是是不变的)。
3. predVector
为了得到训练数据,也就是每一点指向真正边缘的向量,需要将二值的mask转换成signed distance map。同时为了保证每一个Patch中包含真实物体(且不能太小),因此初始化的轮廓点也需要时真实轮廓的一定范围内([-15,15])。在每一个等高线上根据其长度L,选取L/32个点作为训练集。数据增强方法包括:1)随机旋转;2)灰度bias;3)尺度缩放。
CNN结构如上图所示,作者根据问题复杂度进行了模型容量上的简化。
4. regularizeVectorField
在预测得到每一点的向量后,需要正则化以后再更新轮廓。其正则化方法如下:
具体效果如下:
可以看到经过正则化以后能够很好地纠正一些歧义点。
结果:
PASCAL VOC的结果如上图。我有一个比较大疑问是这里的初始化都里真值太近了一点有木有。
STACOM的结果作者只和CV模型进行了比较。
讨论:
为了观察神经网络预测向量场的质量,作者做了dense predict。由于此时没有轮廓法向,因此对每个点进行四个角度的提取(0,90,180,270)。
作者总结了三点,但是大概的意思都是在医学图像和自然图像中边缘和角点获得了较多的票数。但是对于医学图像上来说,我觉得是有问题的。作者明明想要训练的是class-specific的网络,但是左心房和其他高亮区域仍然获得了较多的票数,这就导致一旦初始化轮廓较远,就很容易受到其他边缘的干扰。
总的来说,这篇文章提出了一个深度神经网络结合传统方法的思路,其训练样本量需求小,训练速度快。但是基于snake的轮廓表示注定其难以处理轮廓的拓扑变化,同时初始化方法难以使人信服。为什么采用64*64的原因也不是很明确。