CNN图像修复区域故障检测的迭代方法
2020-07-13胡德敏胡钰媛褚成伟
胡德敏,胡钰媛,褚成伟,胡 晨
(上海理工大学 光电信息与计算机工程学院,上海 200093)
1 引 言
图像修复[1,2]是数字图像处理技术的一个重要分支,指通过图像中未受损的信息对受损区域进行演算从而得到最佳修复效果.这一问题多年来受到图像处理和计算机视觉界的高度关注,并在该领域取得了关键进展[3].
基于补丁[11]的方法使用从相同或其他图像提取的图像块,以便在缺失区域中合成纹理,大多数方法解决了涉及缺失区域中的像素值以及类似图像块搜索的优化问题.由于相似的图像补丁搜索,该优化问题具有很强的非凸性,过早导致局部最小值出现,远离大缺失区域边界的像素几乎不受边界条件的约束,因此基于补丁的方法容易从其他区域复制不可信的纹理.通常采用人工标注的方法,反复标记这些故障区域,直到算法给出满意的图像,但容易造成边界模糊且人工过程繁琐.
我们在基于补丁的图像修复基础上,提出了一种具有修复区域故障自动检测的处理方法,用于提高现有图像修复算法的结果质量.通过训练卷积神经网络(CNN)来完成对于补丁的故障检测,自动确定故障区域,将检测到的故障区域进行迭代修复,逐步减少故障区域,得到图像修复的最佳结果.通过实验将其与手动标记方法和非迭代方法进行了比较.结果表明,相对于其他修复结果,该方法能在一定范围内降低故障像素与原始缺失区域的面积之比.
2 相关工作
图像修复的方法可以大致分为两种类型,即基于样本和基于扩散的方法.基于扩散的方法[4,5]在一定的边界条件下,将缺失区域边缘像素一阶导数以保证缺失区域边界的平滑性.它们适用于填充小区域,因为它们不会在区域中合成纹理,会导致修复边界模糊的伪影,所以不宜处理大区域.基于样本的方法可以分为基于神经网络和基于补丁的方法[10].基于神经网络的方法使用卷积神经网络(CNN)估计缺失区域中的相似纹理,通过对有缺失区域和无缺失区域的图像进行训练.尽管基于神经网络[6,7]的方法最初只能处理较小的缺失区域,但由于对抗性网络(GAN)[8].的生成,处理大缺失区域的纹理[9,10]的方法得到应用.基于补丁的方法是根据图像或其他图像中的纹理合成缺失区域的纹理,该方法复制图像补丁中从图像的其余部分提取的像素值,并且与缺失区域边界周围的像素类似.由于它的合成结果很大程度上取决于提取的顺序.因此,近几年来采用的方法都是基于纹理结构和稀疏性来计算缺失区域边界上的每个像素的优先级[12].由于这种方法在合成区域仍然存在不连续性,在文献[13]中提出了一种多匹配块随机查找像素的迭代方法,该方法将图像的完整性转化为一个能量最小化问题,涉及丢失区域中的所有像素值和类似的图像补丁搜索.由于能量函数的非凸性,该方法迭代过程寻找最佳的图像补丁,并根据图像补丁更新像素值,直至收敛.所以,它很容易过早导致局部最小值.这一问题是不可避免的,尤其是在缺失区域较大的情况下,远离大缺失区域边界的像素几乎不受边界条件的约束,算法会从其他区域复制不真实的纹理.为了解决这个问题,目前采用人工标记出不真实真理区域,对于少量的图像可以做到精确,但是面对数量较大的图像时,过程繁琐且误差变大.
对于当前人工标记补丁区域故障问题,本文提出了一种精确化、自动化检测故障区域的处理方法.给定一个图像缺失区域Ω,首先进行图像修复,然后通过CNN将Ω中的每个像素划分为有效或无效.对于分类为无效的像素,再次应用图像修复算法,引入启发式阈值对修复图像多次迭代直至收敛.
3 基于CNN图像修复区域故障检测的迭代方法
3.1 基于补丁的图像修复算法
设Ω′为是包含任意i∈Ω为中心的核k覆盖的像素区域,如图1所示.区域Φ是Ω′的补码,称为数据区域.大多数基于补丁的图像修复算法都被定义为一个优化问题,这使得能量最小化.文献[13]方法使用以下能量编码:i)Ω复制Φ中的像素值;ii)相似的图案通常位于附近区域:
(1)
其中,wi是像素i的权重,它基于距边界的距离和纹理复杂度;k是控制每个像素的预测范围的参数.
图1 缺失区Ω、扩展缺失区Ω′、数据区Φ
SSD(i,j,Hij)是基于围绕i和j的像素在j附近的某些局部几何变换为Hij之后的平方差的总和,在它们的方法中,Hij是标识、水平翻转或垂直翻转.将xi,xj∈R2作为像素i和j的位置,将I(xi)为xi处的像素值,SSD定义为:
(2)
其中,αij用于调整补丁的亮度.ER是一个正则化术语,用于提取附近像素,这是由公式(3)使用Sigmoid函数定义的.
(3)
其中|K|是K中的像素数,a和b是预定常数,G是大常数.我们通过迭代两个过程来最小化等式(1)中的能量.第一个过程是解决内部最小化问题,即找到一个以j为中心的图像补丁,它与以i∈Ω′为中心的补丁最相似.我们可以通过Patch Match算法[15]解决这个问题,大大降低了计算复杂度.第二个过程是计算补丁中的像素值的加权平均值,该加权平均值与每个i∈Ω的像素值I(xi)包括i的补丁最相似.
3.2 利用CNN查找故障像素
上述最小化问题容易过早导致出现局部最小值.为了避免这种情况,算法可以通过手动标记开始更多轮修复,以识别缺失区域.我们设计并训练了一个CNN,使标记自动化,它将原始缺失区域Ω中的每个像素分类为有效或无效.
3.2.1 数据
当手动在循环图像修复系统中标注故障像素时,他们只看到生成的图像,无法考虑生成图像中的语义,因此很难找到故障像素.为了弥补缺失的语义,除了初始图像修复后的图像外,我们还考虑了图像修复过程中可以获得的额外数据,即图像修复后的RGB图像、SSD、到边界(DB)地图的距离以及到类似补丁(DSP)的距离.
SSD映射存储了像素i∈Ω和像素j∈Φ附近的图像块之间的差异性,这在大多数图像修复算法中都得到了应用.故障区域通常包含具有较大SSD值的像素,因为最小化无法找到平滑连接该区域中不同部件的良好图像补丁.这表明,SSD可以很好地提示寻找故障区域.我们的案例使用修改过的SSD,亮度调整系数在等式(2)中定义.
DB(数据库映射)存储缺失区域中的像素和数据区域中的像素之间的最小距离.通常,对于远离缺失区域Ω和数据区域Φ边界的像素,图像修复失败的可能性更大.因为这些像素几乎不受周围数据区域的约束,因此在查找类似的补丁时会受到模糊性的影响.对于此类像素,图像修复算法可能会放置无效的像素,为了找到这样的像素,本文使用一个DB数据库映射.
DSP映射沿两个轴存储每个像素及其相关图像补丁之间的距离.地图的概念来自于一个物体通常具有一致纹理的事实,因此图像中的纹理是局部一致的.由于这种纹理位置,图像修复算法通常会从更近的区域中挑选要复制到像素的图像块;否则,生成的图像可能具有局部不一致的纹理.因此,我们使用每个像素与其相关的图像补丁之间的距离作为纹理位置,以方便我们的分类任务.
从每个像素到其关联图像的相对方向是信息性的,因为绝对方向(相对于图像水平和垂直轴的方向)并不是信息性的,因此,我们找到了长轴和短轴,其中长轴是大多数类似像素可能所在的方向,短轴是其正交的.为此,我们的方法计算数据区域Φ中所有像素的最相似面的方向直方图,并使用最有优先权的方向作为主轴.
3.2.2 卷积神经网络的结构
对于缺失区域Ω中像素i的有效/无效标记,我们提取以像素i为中心的56×56图像区域,称为子区域Ri.子区域Ri有7个通道,包括RGB映射(3个通道)、D映射(1个通道)、DB映射(1个通道)和DSP映射(2个通道).
由于这些丰富的输入数据,我们使用了一个相对较浅的网络结构,如图2所示.我们的网络有三个3×3核卷积层,每个卷积层有30个信道,其次是2×2最大池化层和ReLU非线性.在此之上,它有两个完全连接的层:下层具有100个单元,具有ReLU非线性,上层具有2个单元,分别对应SOFTMax输出的有效和无效像素.
图2 体系结构图
3.2.3 训练网络
为了训练神经网络,我们从网上收集了1078张图片.将这些图像中的某些对象标记为缺失区域,并应用图像修复算法.主观地手动标记成功/失败像素.通过水平翻转和调整大小来增强数据.然后,我们从中提取了146556对56×56子区域和有效/无效补丁.为了进行验证,我们收集了其他78个图像,并以相同的方式提取了11000对.训练和验证集中提取的成功/失败示例的比率分别为50%和50%.
我们使用SoftMax交叉熵作为训练损失.为了减轻过度拟合,在完全连接层之前应用了脱落技术.采用随机梯度下降(SGD)算法对网络参数进行训练,最小批量为150,存储了比验证数据集具有最佳分类性能的网络参数.
3.3 迭代策略
在手动标记系统中,图像修复过程和像素有效/无效标记过程依次迭代数次,直到得到满意的结果.自动化系统也遵循这个流程,但是直到它没有无效标签或者达到预定的i次迭代.
本文使用具有两个可能补丁的SoftMax输出像素的有效或无效.如果在无效区域中有标记为成功的像素,则图像修复过程会受到这些像素的约束,导致不合理的纹理,因为标记为成功的像素是固定的,并在随后的迭代中用作示例.为了避免这个问题,我们在初始修复后将以启发式阈值θ应用到与迭代m=1…m的成功标签相对应的输出.
(4)
其中T是一个预定参数.随着迭代M的进行,阈值θ逐渐增加,这比仅使用θ=0.5更为收敛,因为额外应用图像修复得到成功像素通常不会导致质量下降(因为结果不会发生其他变化,所以每次迭代都需要减少无效区域).
基于CNN图像修复区域故障检测的迭代方法的算法如下:
算法.基于CNN图像修复区域故障检测的迭代算法
输入:缺失区域Ω填充补丁像素
输出:迭代后不存在失效像素的补丁
Step 1.int m=1,Q=Ω,Q为属于Ω的一组像素,必须进行修复,最初,Q=Ω.
Step 3.对每一个p∈P,评估属于p的k×k邻域的像素值的一致性水平.
Step 4.完成迭代i:将已修复的像素视为已知像素,并将其从Q中移除.
Step 5.ifQ=Ø,程序结束.else Q≠Ø,m:=m+1,重复步骤2、3和4.
4 实验与结果分析
由于分类性能不一定与生成图像的感知质量相关,因此我们用用户研究的结果来评估修复质量.为了实现CNN,我们使用了Caffe框架[17].在实验中,手动标记了25个测试图像中的目标对象,用于训练和验证CNN的分类性能.
4.1 验证对数据集的分类性能
我们使用验证数据集上的准确率评估了基于CNN的分类器的分类性能,以发现特征的良好组合.为了进行比较,还评估了基于SVM的分类器,该分类器以扁平和连接的子区域为特征.对于基于CNN的分类器,本文对它们进行了四次训练,并选择了最好的一次,由于SGD算法,训练过程是随机的,尽管在四次训练中准确率相对稳定.当SVM训练长时间不收敛时,我们将SVM训练中的迭代次数限制为1000次.我们使用了Liblinear,惩罚参数为c=1.
表1 分类精度百分比
Table 1 Percentage of classification accuracy
Comb.#RGBSSDDBDSPCNNSVM1√√√√84.0370.352√√√81.6065.263√√√81.1673.775√√√81.6259.916√√78.2656.637√74.4454.508√√√81.8272.579√√81.4859.7310√79.0468.6411√63.5559.8012√78.5660.79
结果如表1所示.“√”表示在该组合中使用了相应的映射,使用所有映射的组合1明显优于其他组合.在使用单一类型映射的组合中(即组合7、10、11和12),组合11的精度低于其他组合.这意味着数据库映射本身对于这个分类任务的用处较小.此外,组合8的低精度率仅使用RGB映射(即图像修复结果),显示了我们为该分类任务定制的特征映射的优势.本文基于CNN的分类器大多优于基于SVM的分类器.
4.2 迭代参数设置
为了显示迭代策略的参数(即阈值参数T和迭代次数M)的影响,运行本文提出的自动化系统为25个测试图像生成不同的参数值.
为了说明T是如何影响修复结果的,本文将系统进行图像测试,T从0.2到0.5,步长为0.05,M固定为3.图3展示了带有缺失区域(左)及其初始图像修复结果(右)的测试图像示例,用于测试T如何影响结果.图4显示了图3中图像具有不同T的示例结果.这表明T=0.2过于保守,无效区域几乎没有减少.由于缺失区域和无效区域相似,初始和第一轮图像修复的结果也相似.另一方面,时一些故障像素没有标记为故障.因为我们当前的系统不会改变像素,一旦它们被标记为成功,反过来又会限制它们接触的区域的图像修复.T=0.35的迭代策略比其他策略效果更好.显示了最终修复结果中不符合纹理区域面积与25个测试图像原始缺失区域面积之比之间的关系,在T=0.35得到了最小的不符合纹理区域.
图3 测试图像示例
图4 不同T的失败像素标记和图像修复
如图4所示,从左到右不同T的失败像素标记和图像修复示例,分别为T=0.2、0.35和0.5.从上到下:第一轮故障像素标记结果、第一轮图像修复结果和第三轮(最终)图像修复结果.
如图5所示,M与25个测试图像中故障区域面积与原始缺失区域面积之比的平均值之间的关系.结果表明,比值在M=5附近几乎收敛.因此,我们的自动化系统在初始修复后,将故障像素标记和图像修复过程重复5次,T=0.35.所有25个测试图像的结果,以及与文献[15,16]中的图像修复方法获得的结果相比,所提出的迭代系统生成的纹理更加合理.本文还将系统应用于不同M的测试图像,从1到7,T=0.35.如图6所示.从左到右,从上到下:缺失区域的原始图像,初始图像修复结果,M=1、2、3、4、5、6、7的最终一轮图像修复后的结果.
为了客观地评估本文自动化系统修复结果的质量,我们进行了比较与研究,如图7所示,不同方法修复后得到的结果图,从左到右:有缺失区域的原始图像通过(Ⅰ)到(Ⅴ)的方法修复图像,比较了以下五种方法,以证明迭代系统的有效性:(Ⅰ)文献[12]中描述的方法、(Ⅱ)文献[13]方法的迭代应用、(Ⅲ)本文方法(T=0.5,M=1)、(Ⅳ)本文方法(T=0.35,M=5)、(Ⅴ)文献[14]方法由人工手动标记无效像素.
图5 参数T和参数M与故障区域和原始缺失区域之比
图6 不同M最终图像修复结果
从结果图7来看,我们的自动化系统(Ⅳ)明显优于除(Ⅴ)以外的其他系统.对比(Ⅱ)和(Ⅳ),确认了图像修复结果的质量取决于补丁,即使迭代次数相同.对比(Ⅳ)和(Ⅴ),可以发现(Ⅴ)在纹理与缺失区域纹理相似的数据区域中,当图像包含较少的区域时是有利的.这是因为本文系统有时将成功像素标记为失败像素(由于T=0.35),而手动标注则将其标记为尽可能小的区域.因此,带有人工标注的算法可以使用较大的数据区域来填充较小的区域.尤其是在粗到细的方法中,当对最粗的层次应用图像补全时,较大的缺失区域会阻碍算法找到最佳的补丁,因为它可能包含在Ω′中,这是缺失区域Ω的扩展.最粗糙层次的不恰当的对应通常保持在最精细的层次,导致不真实的纹理.
图7 不同方法修复后得到的结果图
5 结 论
人工循环图像修复系统是一种很有前途的方法,以获得更高质量的图像修复结果.为了减轻人工工作,我们提出了一个自动检测循环式图像修复的方法,利用CNN对故障区域进行自动检测,并为基于补丁的图像修复定制了大量数据.实验结果表明,我们的自动化系统优于人工注标记的人工循环系统.我们未来的工作包括寻求更好的网络架构,例如完全卷积网络反卷积网络,可能与集成语义获取方法,以及增加更深层网络架构的培训数据数量等.