距离保持水平集演化模型的快速实现算法
2020-09-29李玉先
原 泉,王 艳*,李玉先
(1.重庆师范大学数学科学学院,重庆 401331;2.重庆市中医院药剂科,重庆 400011)
0 引言
图像分割是计算机视觉和其他高层图像处理的基础,也是图像识别、配准的关键。它根据图像中的灰度、纹理或形状等特征的不同,利用这些信息将目标从复杂背景中分离出来。近些年来,大量的图像分割方法被提出。其中,基于变分水平集的活动轮廓模型可以有效处理拓扑结构的变化,而且能够在分割过程中保持曲线的连续性和光滑性,近年来成为研究热点[1-5]。其基本思想是:首先根据图像特征为演化曲线定义一个能量泛函,为了极小化该能量泛函,常通过变分法和梯度下降法得到控制水平集演化的偏微分方程,然后用数值求解方法求解此方程,方程的数值解即为所要的分割曲线。
随着智能信息时代的到来,医学智能辅助诊断[6-7]、船舶导航、人脸识别技术得到了迅猛发展。对图像分割速度的实时性要求逐渐提高,其分割速度的快慢直接影响后续图像处理过程。例如,在医学智能辅助诊断中,要求系统能够根据扫描结果实时给出诊疗结果,从而辅助医生能够针对病灶区域进行有效的治疗。然而,基于变分水平集的活动轮廓模型由于其极小化过程中所使用的梯度下降法收敛性较差[8],导致模型分割速度较慢,难以满足图像分割在实际应用时的实时性要求。
在深度学习领域,为了提高迭代速度,常用到动量算法(Momentum Algorithm)[9-10]、NAG(Nesterov’s Accelerated Gradient)算法[11-13]、Adam 方法[14]等。动量算法是将上一步步长的更新量取一个分量增加到当前更新的步长中,即:若当前的梯度与历史的梯度方向一致,则当前梯度就会被加强,从而这一步下降幅度更大;若与历史的梯度方向不一致,则当前梯度就会被减弱。NAG 算法则是在动量方法上增加一个修正的向量,防止更新得过快。该方法使得原有的梯度下降法速度有显著的提高[11],因此,可以使用NAG 算法代替梯度下降法,得到更高效的图像分割算法。
本文以Li 等[1]的距离保持水平集演化(Distance Regularized Level Set Evolution,DRLSE)模型为例,提出了一种基于NAG算法的快速图像分割方法。与DRLSE模型的原算法相比,本文算法能够实现对图像的快速分割。在同样的初始轮廓下,本文算法具有更快的收敛速度,迭代次数更少,分割速度更快。对于医学图像、红外图像等真实图像不仅有较为准确的分割结果,而且分割速度较快,能够满足实际应用的实时性要求。
1 距离保持水平集演化(DRLSE)模型
在传统的水平集方法中,为了得到一个良好的分割结果同时使得演化曲线稳定,水平集函数需要初始化为一个符号距离函数,而且在演化过程中需要周期性地重新初始化水平集函数为符号距离函数。这是一个复杂、耗时的过程,而且存在何时初始化以及如何初始化等问题[1]。为了避免水平集函数的反复初始化,Li 等[1]提出了一个距离保持水平集演化模型,其能量泛函定义为:
其中:μ,λ>0,ν为常数,g(s)=(1+s2)-1为停止速度函数,H(⋅)是Heaviside函数,δ(⋅)是Dirac函数。
式(1)中,第一项为距离保持项,它使得水平集函数始终近似为符号距离函数,解决了水平集函数的重新初始化问题。其中函数p(⋅)称为距离保持函数,其定义为:
该项的提出也使得数值求解过程中允许使用较大的步长,提高演化速度。
运用变分法和梯度下降流法,极小化能量泛函,得到控制水平集演化的偏微分方程:
为了数值求解上述方程,用δε函数代替δ函数来近似:
由于定义了距离保持项,演化方程(3)可以通过简单的有限差分进行数值实现:
DRLSE模型在演化过程中不再需要反复初始化水平集函数为符号距离函数,极大地提高了曲线演化速度,有效地缩短了分割时间。然而,DRLSE 模型原来的数值计算方法基于简单的梯度下降法,因此对局部极小值较为敏感,算法收敛性差,仍然难以满足实时性的要求。后续很多模型[2-3]对其进行了改进,但大都是对能量泛函进行的。而本文是针对数值算法进行改进,目的在于提高原来算法的收敛速度,缩短曲线演化时间。
2 本文方法
用优化的思想理解DRLSE 模型的能量泛函,就是用罚函数外点法求解一个等式约束问题的极小化,而求解极小值问题最常用的是梯度下降法。该方法使得问题的解总是朝着梯度最陡的下降方向移动,其实现过程中只涉及到函数一阶导数的信息,因此梯度下降法能够提供简单快速的计算。然而,众所周知,对于许多实际问题,梯度下降法的收敛性较差,对局部极小值较为敏感,导致到极小值点时收敛速度变慢,容易陷入局部极小值[8]。由于DRLSE模型采用了梯度下降法对能量泛函进行极小化,因此该模型也存在梯度下降法的上述缺点。为了克服这些缺点,更换能量泛函的优化算法十分必要。
在深度学习领域,为了提高利用梯度下降法所得到解的收敛性和鲁棒性,同时避免复杂的梯度下降优化方法理论上的复杂性,提出了具有动量的梯度下降法,即动量算法[10]。该算法使得每次参数更新方向不仅仅取决于当前位置的梯度,还需要受到上一次参数更新方向的影响,从而加快了梯度下降法的收敛。动量算法的公式如下:
其中di和di-1分别是这一次和上一次的更新方向,g(θ)表示目标函数在θ处的梯度,β是对上一次更新方向的衰减权重,一般在(0,1)内,α是学习率。在一次迭代过程中总的参数更新量包含两个部分:一个是由上次的更新量得到的αβdi-1,第二个是由本次梯度得到的αg(θi-1)。
NAG 算法[11]是对动量算法的改进。该算法可以防止动量算法中解更新得过快,从而有效地避免解在极小值点处震荡。NAG算法的公式如下:
与动量算法相比,NAG 算法的梯度不是根据当前参数的位置θi-1,而是根据后一步将要到达的参数位置θi-1-αβdi-1。将式(8)、(9)进行变化,得到等效的形式:
式(10)、(11)直观地表明了NAG 算法是以下一步的梯度而不是当前位置的梯度去更新,相当于在动量算法的基础上,利用了目标函数的二阶导数,显然会加速算法收敛,所以NAG 算法拥有比动量算法更快的收敛速度。NAG 算法的具体实现过程如下。
初始化:学习率ε,动量参数α,初始参数θ,初始速度v。
步骤1 如果达到停止准则,则算法终止;否则,转入步骤2。
步骤2 从训练集中包含m个样本的小批量,对应目标为y(i)。
步骤4 计算在临时点处的梯度:
步骤5 计算速度更新:v←αv-εg。
步骤6 应用更新:θ←θ+v。
在NAG 算法中,对θ进行不断更新从而实现对目标函数的极小化。在图像分割中,为了极小化能量泛函并最终使得演化曲线停止在目标边缘,需要对水平集函数φ进行不断更新。因此,水平集演化函数φ可以看作NAG 算法中的θ。NAG算法中对第k步θ的更新使用的是第k-1步的θ,而本文为了避免DRLSE模型出现曲线演化不稳定的情况,对NAG算法中的φk更新步骤进行了改进,即在下述步骤5 中使用临时更新的替代原始NAG 算法中的φk。其中函数G为式(3)中控制曲线演化的偏微分方程,动量参数α为一个常值,在演化过程中保持不变,将时间步长看作不随着演化改变的学习率。本文算法的具体实现过程如下:
初始化:令时间步长为Δt,动量参数α,初始演化方程φ0,初始速度v0。
步骤1 如果达到停止准则,则算法终止;否则,转步骤2。
步骤3 在临时更新处计算G:
本文算法中,对演化方程的数值逼近仍采用简单的有限差分,即式(5)中的右端项,在具体实现过程中按照步骤2~5 依次反复进行,并最终完成对水平集函数φ的更新。实验结果表明,修改后的算法明显减少了模型的分割时间。该算法实现简单,易于迁移,适用于许多类型的基于水平集演化的活动轮廓模型,本文仅以DRLSE 模型为例,验证所提算法的有效性。
3 实验结果
本节将所提算法和DRLSE 模型原文算法应用于DRLSE模型原文中图像和一些具体的真实图像,如噪声图像、医学图像和红外图像等。实验结果表明,对于同样的初始轮廓,本文所提算法比DRLSE 模型原文算法对这些图像的分割时间和迭代次数明显减少,分割速度更快。DRLSE 模型取与本文算法同样的迭代次数时无法将目标从背景中完全分割出来。在所有实验中,对于两个模型共有的参数,为了保证实验结果的统一性取值同文献[1]一致,即λ=5,μ=0.04,Δt=5,ε=1.5。本文中的动量系数α∈(0.5,1),具体取值在每个实验中给出。
实验平台为运行Windows 10 的PC(Intel Core i5-7200U CPU 2.50 GHz 2.71 GHz,8.00 GB 内存),程序编写使用Matlab R2016b。
3.1 DRLSE模型原文中的图像
图1 给出了两种算法对3 幅DRLSE 模型原文中的图像的分割结果。第1、3和5行为DRLSE 原算法的分割过程,第2、4和6 行为本文算法的分割过程。第1 列给出的是原始图像和初始轮廓,第2~4 列为分割过程,最后一列为分割结果,分割时间在图下标注。对于这三幅图像,本文算法中α取值为0.6,0.9,0.8。
3.2 应用举例
图2 给出了3 幅噪声图像在两种算法达到稳定分割状态时的分割结果与迭代次数。图2(a)是原始图像和初始轮廓,图2(b)为DRLSE 模型原算法与本文算法同迭代次数时的分割结果,图2(c)、(d)分别为DRLSE模型与本文模型(α取值为0.8,0.6,0.8)的分割结果。
图2 两种算法对噪声图像的分割结果Fig.2 Segmentation results of two algorithms for noise images
两种算法对应的迭代次数和CPU 运行时间见表1,粗体显示两者中较优的结果。实验表明,本文算法比DRLSE 模型原文算法迭代次数分别减少了44%、25%、30%,CPU 运行时间分别减少了46%、31%、26%。
图3给出了两种算法对3幅边缘模糊、伴有较多噪声且背景昏暗的红外图像的分割结果。第1列给出的是原始图像和初始轮廓;第2列为DRLSE模型与本文模型同迭代次数时的分割结果;第3、4列分别为DRLSE模型与本文模型(α取值为0.9、0.9和0.5)的分割结果。
表1 两种算法对图2中图像的迭代次数和CPU运行时间Tab.1 Iteration numbers and CPU running times of two algorithms for images in Fig.2
图3 两种算法对红外图像的分割结果Fig.3 Segmentation results of two algorithms for infrared images
两种算法对这3幅图的迭代次数和CPU运行时间见表2,粗体标注的是两者中较优的结果。实验结果可以看出,本文算法比DRLSE模型原文算法迭代次数分别减小了54%、34%、33%,CPU运行时间分别减小了37%、37%、39%。
表2 两种算法对图3中图像的迭代次数和CPU运行时间Tab.2 Iteration numbers and CPU running times of two algorithms for images in Fig.3
图4 给出两种算法对1 幅细胞分裂图像和2 幅皮肤损伤图像的分割结果。
图4 两种算法对医学图像的分割结果Fig.4 Segmentation results of two algorithms for medical images
皮肤病图像的特征是具有复杂的背景且目标具有不规则性。两种算法的迭代次数和CPU 运行时间见表3。可以看出,本文算法(α取值分别为0.8、0.9 和0.9)与DRLSE 模型原文算法的分割结果基本相同,但本文算法比DRLSE 模型原文算法迭代次数分别减少了38%、40%、52%,CPU 运行时间分别减少了33%、50%、47%。
表3 两种算法对图4中图像的迭代次数和CPU运行时间Tab.3 Iteration numbers and CPU running times of two algorithms for images in Fig.4
3.3 定量化评价
为了对本文所提算法的分割结果进行客观评价,选取Weizmann 分割评估数据库进行量化分析。实验图像为三幅有代表性的图像(花、鱼和飞蛾,其中α取值分别为0.5、0.8、0.6),采用F-Measure(FM)[15]以及峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)[16]作为评价标准,其定义分别为:
其中:Recall=,这里TP、FP和FN表示判断为正类的正类数(True Positives),判断为负类的正类数(False Positives)和判断为正类的负类数(False Negatives)。FM越大说明分割效果越好。
其中MSE=,C为目标和背景之间的差别,图像的大小为M×N,I和I′是需要测试相似程度的两幅图像。PSNR 是衡量一幅图像与另一幅图像相似程度的指标。PSNR的值越高,说明两幅图像的相似性越高。
从表4 可以看出,在相似的分割结果下,本文提出的改进NAG 算法有较快的分割速度,能够在有效保证分割结果的情况下,使得运行时间减少60%左右。
表4 两种算法对图5中图像的分割效果对比Tab.4 Comparison of segmentation effects of two algorithms for images in Fig.5
为了进一步验证本文算法与DRLSE模型在达到相似的分割结果情况下,分割速度更快,对图5 中的三幅图的分割过程进行收敛性分析,曲线收敛曲线如图6所示。横轴是CPU运行时间,纵轴为PSNR值,PSNR值越高说明两幅图像的相似程度越高,即分割结果越好。虚线代表的是DRLSE 模型在分割三幅图像时的曲线收敛情况,实线代表的是本文算法的曲线收敛情况。可以看出,本文算法在更短的时间内达到了较好的分割结果,而且有效地减少了迭代次数,提高了分割速度。
图5 标准数据集中图像分割结果对比Fig.5 Comparison of segmentation results of images in standard dataset
图6 图5中三幅图像的收敛性分析Fig.6 Convergence analysis of the three images in Fig.5
4 结语
本文基于NAG 算法提出了一种DRLSE 模型的快速实现算法。实验表明,基于NAG算法的DRLSE模型能有效地减少分割时间,减少迭代次数,提高分割速度。对于实时性要求较高的红外图像、噪声图像和医学图像等,所提算法不仅可以得到准确的分割结果,而且分割时间缩短为原来的一半。如何有效地处理尖角、深凹区域等是今后接下来需要重点考虑的问题。本文所提方法在基于边缘的模型上都有推广价值。