1.本发明属于图像处理技术领域,具体涉及一种基于部分卷积生成对抗网络的图像修复方法。
背景技术:
2.在对图像进行处理时,图像的质量是影响图像处理效果的一个重要因素。然而在图像的采集、传输和存储过程中,因为噪声、环境以及网络通信等种种因素的影响,往往会造成部分图像信息的丢失,导致图像变得模糊,甚至部分缺失。这不仅严重影响了图像的视觉效果,也破坏了图像携带信息的完整性,继而降低了最终的图像处理质量。作为图像处理领域的一个重要分支,图像修复是指利用技术手段对图像一部分缺失或损坏的信息结合该幅图像完好部分的关联信息进行修复的过程。图像修复技术能够将损伤图像修复成符合人们正常观感条件的图片,从而有助于人们重新获取到图像的完整信息。
3.现有的图像修复方法主要包括基于序列的方法、基于卷积神经网络(convolutional neuralnetwork,cnn)的方法和基于生成对抗网络(generative adversarial network,gan)的方法。
4.其中,基于序列的方法又可以具体分为基于扩散和基于补丁两种方式。基于序列的方法在针对小区域遮挡和裂缝修复任务时非常有效,但是当图像包含很多纹理或图像掩码区域比例超过10%时,方法处理效率会显著下降、修复效果较差。
5.当前,随着人工智能技术的兴起,基于深度学习的图像修复技术凭借其优异的性能逐渐成为业内的主流研究方向,其中具有代表性的方法包括
6.基于卷积神经网络的方法和基于生成对抗网络的方法两种。pathak等人出上下文编码器方法(context encoders,ce),该方法的主要思想是构造一个编
‑
解码网络,通过反传递对抗网络的目标函数而不断迭代生成,直到重构出待修复图像的缺损区域;但由于该网络仅使用普通的卷积网络,在修复带有自由形状的掩码图像时,会导致视觉伪影。liu等对此提出使用部分卷积(partial conv)和自动更新掩模的方法。其中部分卷积比普通卷积使得网络更加关注于获取图像完整区域的特征信息;但随着网络层的加深,无效像素(即掩码中的黑色部分) 会逐渐变成有效像素,在较深网络层中无法学习到掩码与图像之间的关系,导致修复后的图像中可以看到明显的掩码残留边界。yu等进一步提出了门卷积,通过让神经网络本身学习掩模的大小和参数,来帮助更好的完成图像修复;但门控卷积需要内嵌在多层的生成对抗网络中才能发挥作用。
技术实现要素:
7.鉴于此,本发明提供一种基于部分卷积生成对抗网络的图像修复方法,以克服现有技术中存在的不足。
8.具体方案如下:
9.一种基于部分卷积生成对抗网络的图像修复方法,包括以下步骤:
10.步骤1:构建部分卷积生成对抗网络,所述部分卷积生成对抗网络由按序相连的部分卷积生成网络和判别器网络组成;
11.步骤2:获取图像样本集,并将所述图像样本集按比例划分为训练集和测试集,同时将训练集中的图像进行预处理;
12.步骤3:将预处理后的训练集图像输入所述部分卷积生成对抗网络中,并对所述部分卷积生成对抗网络进行训练,获取完成训练的部分卷积生成对抗网络;
13.步骤4:将待修复的图像输入到部分卷积生成对抗网络中,所述部分卷积生成对抗网络输出修复图像。
14.所述部分卷积生成网络包括上采样结构和下采样结构,所述下采样结构和上采样结构均为七层结构,所述下采样结构中的每一层均为一个inception residual pconv块,所述上采样结构中的每一层均为一个up residual pconv块。
15.所述inception residual pconv块包括部分卷积第一模块和部分卷积第二模块,其中,部分卷积第一模块的输出与部分卷积第二模块的输出求和为inception residual pconv块的输出;
16.所述up residual pconv块包括部分卷积第三模块和部分卷积第四模块,其中,部分卷积第三模块的输出与部分卷积第四模块的输出求和为up residual pconv块的输出。
17.所述卷积第一模块包括部分卷积结构,所述部分卷积结构包括部分卷积层、归一化层和 relu激活函数层,所述部分卷积层、归一化层和relu激活函数层依次连接;所述部分卷积结构的数量为四个,四个部分卷积结构并联连接,四个部分卷积结构中具有四个不同的部分卷积层,且所述四个部分卷积结构采用concatenate连接操作进行并联连接。
18.所述部分卷积第二模块为一个卷积核为1
×
1,步长为2的部分卷积;
19.所述部分卷积第三模块包括3
×
3卷积层、归一化层和leakyrelu激活函数层;
20.所述部分卷积第四模块为1
×
1的卷积层。
21.所述判别器网络包括八层网络结构和两个全连接层,所述八层网络结构的输出与两个全连接层连接,两个全连接层之间还设置有leakyrelu激活函数层,两个全连接层通过所述的 leakyrelu激活函数层连接。
22.所述八层网络结构中的第一层网络结构包括判别网络卷积层和leakyrelu激活函数层;八层网络结构中第二层网络结构至第八层网络结构中均包括判别网络卷积层、归一化层和leakyrelu激活函数层;所述判别网络卷积层包括步长为1的卷积块和步长为2的卷积块,步长为1的卷积块和步长为2的卷积块交替组合形成判别器网络。
23.所述部分卷积生成网络中还包括生成器损失函数,所述判别器网络包括判别器损失函数, 其中,所述生成器损失函数包括非遮挡区域的修复损失、遮挡区域的修复损失、风格损失、感知损失和总变差损失。
24.步骤2中,将训练集中的图像进行预处理的方法为:采用计算机生成任意大小和形状的掩码,将所述掩码与训练集中的任一图像进行随机叠加,得到带有破损的图像。
25.步骤3中,对部分卷积生成对抗网络的的训练方法为:
26.步骤3.1,使用标准高斯分布随机初始化部分卷积生成对抗网络中的权重参数;
27.步骤3.2,将受损图像输入部分卷积生成网络中,通过生成网络生成出一个与真实图像大小一致的修复图像,再将生成的修复图像和真实图像输入到判别器网络中,依次迭
代训练使生成器的损失和判别器的损失降至趋于稳定;
28.步骤3.3,通过不断输入待修复的图像,交替训练部分卷积生成网络中和判别器网络,并利用adam优化算法对所述部分卷积生成对抗网络内的参数进行训练和更新,当损失函数趋于稳定后,得到图像修复模型。
29.本发明公开了一种基于部分卷积生成对抗网络的图像修复方法,是将部分卷积网络与生成对抗神经网络相结合,通过生成器网络先修复出一个粗略的修复图像,再将生成的粗略修复图像输入判别器网络中判断,相互对抗,从而解决了单一修复模型的修复图像存在的局部色差和轻度边界伪影的问题,提高了网络的鲁棒性,使得能生成视觉逼真和语义合理的修复图像;
30.与当前图像修复方法对比,本发明具有以下优点:
31.(1)本发明在部分卷积网络的基础上做出了改进,提出了部分卷积生成网络,它是由改进的部分卷积网络组成。针对部分卷积生成网络的输出图像存在局部色差的问题,提出了判别器网络,它由不同步长的卷积网络交替组合而成,两个网络相互协同,提高了图像修复的精度,提升了视觉效果,并在imagenet、celeba和places2数据上进行实验的验证,结果表明该方法具有较好的修复效果。
32.(2)本发明使用的网络结构模型与部分卷积神经网络(partial conv)相比,图像修复结构平均提高了0.484db。
附图说明
33.图1是本发明的总体流程图。
34.图2是本发明整体框架结构图。
35.图3是本发明部分卷积生成网络的结构图。
36.图4是下采样结构的示意图。
37.图5是上采样结构的示意图。
38.图6是判别器网络的结构图。
具体实施方式
39.下面将结合本发明中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施,而不是全部的实施,基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
40.如图1至图2所示,一种基于部分卷积生成对抗网络的图像修复方法,其特征在于:包括以下步骤:
41.步骤1:构建部分卷积生成对抗网络,所述部分卷积生成对抗网络由按序相连的部分卷积生成网络和判别器网络组成;
42.如图3所示,所述部分卷积生成网络为编解码网络,所述部分卷积生成网络包括上采样结构和下采样结构,所述下采样结构和上采样结构均为七层结构;上采样结构采用跳连接与下采样结构的对应阶段相连接,使得样本集中的图像特征得到更加充分的利用。
43.图3中左侧为下采样结构,图3中右侧为上采样结构,图3左侧中的自上而下中每一
层均为一个inceptionresidualpconv块,最上层inceptionresidualpconv块为第一层,最下层inceptionresidualpconv块为第七层,其中,第一层inceptionresidualpconv块的输出大小为64
×
64
×
128、第二层inceptionresidualpconv块的输出大小为128
×
64
×
64、第三层inceptionresidualpconv块的输出大小为256
×
32
×
32、第四层inceptionresidualpconv块的输出大小为512
×
16
×
16、第五层inceptionresidualpconv块的输出大小为512
×8×
8、第六层inceptionresidualpconv块的输出大小为512
×4×
4、第七层inceptionresidualpconv块的输出大小为512
×2×
2。
44.图3中右侧为上采样结构,上采样结构中的每一层均包括upresidualpconv块,每个upresidualpconv块前均设置有最近邻插值法进行上采样即nearest,其中,右侧最顶层为第七层upresidualpconv块,
45.第一层upresidualpconv块的输出大小与第六层inceptionresidualpconv块的输出大小相同、第二层upresidualpconv块的输出大小与第五层inceptionresidualpconv块的输出大小相同、第三层upresidualpconv块的输出大小与第四层inceptionresidualpconv块的输出大小相同、第四层upresidualpconv块的输出大小与第三层inceptionresidualpconv块的输出大小相同、第五层upresidualpconv块的输出大小与第二层inceptionresidualpconv块的输出大小相同、第六层upresidualpconv块的输出大小与第一层inceptionresidualpconv块的输出大小相同、第七层upresidualpconv块的输出大小为3
×
256
×
256。
46.如图4所示,所述下采样结构中的每一层均为一个inceptionresidualpconv块,所述inceptionresidualpconv块包括部分卷积第一模块和部分卷积第二模块,其中,部分卷积第一模块的输出与部分卷积第二模块的输出求和为inceptionresidualpconv块的输出;
47.所述卷积第一模块包括部分卷积结构,所述部分卷积结构包括部分卷积层、归一化层和relu激活函数层,所述部分卷积层、归一化层和relu激活函数层依次连接;所述部分卷积结构的数量为四个,四个部分卷积结构并联连接,四个部分卷积结构中具有四个不同的部分卷积层,且所述四个部分卷积结构采用concatenate连接操作进行并联连接,所述四个不同的部分卷积层中具有不同的卷积核,在本实施例中,优选地,四个不同的卷积核大小分别为1
×
1、4
×
4、5
×
5和7
×
7。
48.所述部分卷积第二模块为一个卷积核为1
×
1,步长为2的部分卷积;
49.部分卷积层包括部分卷积运算和掩码更新算法,部分卷积的运算公式如式所示:
[0050][0051]
其中,x
′
是每次迭代中部分卷积在缺失区域的填充值,w
t
是滤波器的权重,t表示转置矩阵,
⊙
表示逐元素乘法,x是当前卷积通道的特征值,m是二进制掩模,所述二进制掩膜中0表示破损区域,1表示完好区域,为缩放因子,以调节有效输入值的变化量,b是偏差。
[0052]
部分卷积操作后进行掩码的更新操作,原理是对破损图像的缺失区域进行填充
后,变化该填充区域相应的掩模,将其设置为1。
[0053]
在本实施例中,所述上采样结构可以表示为
[0054]
inceptionresidualpconv={[pconv1×1‑
bn
‑
relu]cat[pconv4×4‑
bn
‑
relu]cat[pconv5×5‑
bn
‑
relu]cat[pconv7×7‑
bn
‑
relu] pconv1×1}。
[0055]
其中,pconv表示部分卷积层、bn表示归一化层、relu表示激活函数层。
[0056]
在本实施例中,优选地,所述下采样结构中的七层网络的通道数分别为3,64,128,256,512,512和512,随着通道数的增加,特征图的尺寸逐渐减小,所述特征图是图像经过卷积层输出的结果。
[0057]
在本实施例中,定义所述的下采样网络结构为irpconv网络结构,下采样结构中的具体每一层结构、输入以及输出表示如表1所示。
[0058][0059]
表1
[0060]
在本实施例中,首先采用最近邻差值算法,即nearest算法对样本集中的图像的尺寸进行放大,然后将放大后的图像尺寸经过上采样结构中的upresidualpconv块进行特征的复原。
[0061]
如图5所示,所述上采样结构中的每一层均为一个upresidualpconv块,所述upresidualpconv块包括部分卷积第三模块和部分卷积第四模块,其中,部分卷积第三模块的输出与部分卷积第四模块的输出求和为upresidualpconv块的输出。
[0062]
所述部分卷积第三模块包括3
×
3卷积层、归一化层和leakyrelu激活函数层;
[0063]
所述部分卷积第四模块为1
×
1的卷积层。
[0064]
在本实施例中,所述上采样结构中的第一层至第六层的结构一致,均可以表示为upresidualpconv={[pconv3×3‑
bn
‑
lrelu] pconv1×1},
[0065]
上采样结构中的第七层的结构为包含一个卷积核为3
×
3的卷积层和激活函数sigmoid,上采样结构中的第七层结构可以表示为pconv=[pconv3×3‑
sigmoid]。
[0066]
在本实施例中,所述上采样结构中的七层网络的通道数分别为512,512,512,256,128,64和3。
[0067]
在上采样结构中随着通道数的减小,特征图的尺寸逐渐增大。在本实施例中定义所述上采样结构为urpconv网络结构,上采样结构中的具体每一层结构、输入以及输出表示如表2所示。
[0068][0069][0070]
表2
[0071]
由于部分卷积生成网络生成的图像存在的伪影和模糊的问题,所以在本实施例中还采用所述判别器网络进行图像于优化,如图6所示,所述判别器网络包括八层网络结构和两个全连接层,所述八层网络结构的输出与两个全连接层连接,两个全连接层之间还设置有 leakyrelu激活函数层,两个全连接层通过所述的leakyrelu激活函数层连接。
[0072]
所述八层网络结构中的第一层网络结构包括判别网络卷积层和leakyrelu激活函数层;判别网络第一层网络结构可以表示为conv=[conv3×3‑
lrelu];
[0073]
八层网络结构中第二层网络结构至第八层网络结构中均包括判别网络卷积层、归一化层和leakyrelu激活函数层;判别网络中的第二层至第八层网络结构可以表示为disconv= [conv3×3‑
bn
‑
lrelu];
[0074]
所述判别网络卷积层包括步长为1的卷积块和步长为2的卷积块,步长为1的卷积块和步长为2的卷积块交替组合形成判别器网络,所述判别器网络最后通过全连接层输出特征向量。在本实施例中,所述交替组合是步长为1的卷积块和步长为2的卷积块分别交替设置在不同的卷积层中,如图6所述,若第一层网络结构中的卷积块步长为1,则第二层网络结构中的卷积块步长为2,那么第三层网络结构中的卷积块步长为1,第四层网络结构中的卷积块步长为2,这样依次交替设置。
[0075]
在本实施例中,优选地,所述八层网络结构中的判别网络卷积层的通道数依次为64,64, 128,128,256,256,512和512,两个全连接层的通道数分别为1024和1。
[0076]
在本实施例中,定义所述判别器网络为pconv
‑
gan网络结构,所述判别器网络的具体的每一层结构、输入以及输出表示如表3所示,
[0077][0078]
表3
[0079]
在本实施例中优选地使用pytorch
‑
1.6实现irpconv网络结构、urpconv网络结构以及 pconv
‑
gan网络结构。
[0080]
所述部分卷积生成网络中还包括生成器损失函数,所述判别器网络包括判别器损
失函数,其中,所述生成器损失函数包括非遮挡区域的修复损失、遮挡区域的修复损失、风格损失、感知损失和总变差损失。
[0081]
其中,
[0082]
非遮挡区域的修复损失函数为:l
valid
=||(m)
⊙
(i
out
‑
i
gt
)||1;
[0083]
遮挡区域的修复损失函数:l
hole
=||(1
‑
m)
⊙
(i
out
‑
i
gt
)||1,
[0084]
其中m为掩膜,i
out
为修复后的图像,i
gt
为真实图像。
[0085]
风格损失函数为:
[0086][0087][0088]
k
n
为第n层选择的归一因子i
comp
为将修复后生成的图像中的非遮挡区域部分替换为原图对应的部分,ψ
n
(i
gt
)表示真实图像经过vgg
‑
16输出的特征图,ψ
n
(i
out
)表示生成图像经过 vgg
‑
16输出的特征图,ψ
n
(i
comp
)修复图像经过vgg
‑
16输出的特征图,n表示图像输入vgg
‑
16得到的特征图数量。
[0089]
感知损失函数为:
[0090][0091]
其中i
comp
为将修复后生成的图像中的非遮挡区域部分替换为原图对应的部分,非遮挡区域不变的图像,i
out
为修复后的图像,i
gt
为真实图像。
[0092]
总变差损失函数为:
[0093][0094]
其中,i表示像素的横坐标,j表示像素的纵坐标,p是像素区域,表示修复后的图像的一个像素点。
[0095]
所述生成器损失函数为
[0096][0097]
所述判别损失函数为:
[0098]
l
adv
=0.7l
adv
‑
gen
(i
gen
,y
gt
) 0.3l
adv
‑
comp
(i
comp
,y
gt
)
[0099]
其中,l
adv
‑
gen
为生成图像的对抗损失,l
adv
‑
comp
为修复图像的对抗损失,i
gen
为生成的图像经过判别器的预测结果,i
comp
为修复后的图像经过判别器的预测结果,y
gt
为真实图像的标签;
[0100]
判别损失函数中的l
adv
‑
gen
(i
gen
,y
gt
)和l
adv
‑
comp
(i
comp
,y
gt
)均采用对抗损失公式来计算,所述对抗损失公式为:
[0101]
l(x,y
gt
)=binarycrossentropy(x,y
gt
)
[0102]
其中,x为变量,binarycrossentropy为(x,y
gt
)为变量x与真实图像图像标签的交叉熵。
[0103]
在本实施例中,所述x取不同的参数值可计算出不同的对抗损失值,若x为i
gen
时,则对抗损失公式输出结果为生成图像的对抗损失值,即l
adv
‑
gen
(i
gen
,y
gt
);若x为i
comp
时,则对抗损失公式输出结果为修改图像的对抗损失值,即l
adv
‑
comp
(i
comp
,y
gt
)。
[0104]
对抗损失公式中的binarycrossentropy为(x,y
gt
)可通过交叉熵函数计算得到:
[0105]
所述交叉熵函数为:
[0106][0107]
其中,x和y均为变量参数,k表示样本次序。
[0108]
步骤2:获取图像样本集,并将所述图像样本集按比例划分为训练集和测试集,同时将训练集中的图像进行预处理;
[0109]
将训练集中的图像进行预处理的方法为:采用计算机生成任意大小和形状的掩码,将所述掩码与训练集中的任一图像进行随机叠加,得到带有破损的图像。
[0110]
本实施例在测试算法性能时使用的是imagenet、celeba和places2三个数据集,imagenet 包含了27000张大小为256
×
256的jpeg格式rgb图像作为训练集,测试集包含了3000张图像。celeba包含了27000张大小为256
×
256的jpeg格式rgb图像作为训练集,测试集包含了3000张图像。places2包含了27000张大小为256
×
256的jpg格式rgb图像作为训练集,测试集包含了3000张图像。
[0111]
随机生成任意大小、形状的30000张掩码作为训练集,将掩码与训练图像随机叠加,得到带有破损的训练图像,从而完成训练图像的预处理。测试集是将掩码分为6种不同的比例,比例分为(0.01,0.1]、(0.1,0.2]、(0.2,0.3]、(0.3,0.4]、(0.4,0.5]、(0.5,0.6],每种比例又分为有无边界两种掩码,每个类别生成1000张掩码,共同组成测试集12000张掩码。
[0112]
步骤3:将预处理后的训练集图像输入所述部分卷积生成对抗网络中,并对所述部分卷积生成对抗网络进行训练,获取完成训练的部分卷积生成对抗网络;
[0113]
对部分卷积生成对抗网络的的训练方法为:
[0114]
步骤3.1,使用标准高斯分布随机初始化部分卷积生成对抗网络中的权重参数;
[0115]
步骤3.2,将受损图像输入部分卷积生成网络中,通过生成网络生成出一个与真实图像大小一致的修复图像,再将生成的修复图像和真实图像输入到判别器网络中,依次迭代训练使生成器的损失和判别器的损失降至趋于稳定;
[0116]
步骤3.3,通过不断输入待修复的图像,交替训练部分卷积生成网络中和判别器网络,并利用adam优化算法对所述部分卷积生成对抗网络内的参数进行训练和更新,当损失函数趋于稳定后,得到图像修复模型
[0117]
步骤4:将待修复的图像输入到部分卷积生成对抗网络中,所述部分卷积生成对抗网络输出修复图像。
[0118]
具体为将待修复的图像输入到已完成训练的部分卷积生成对抗网络中,所述的图
像生成器网络先对待修复的图像生成出一个修复图像,由所述的图像判别器网络对前面阶段生成的修复图像进行优化修复,判别器接受输入的目标生成图像和修复模型生成的修复图像,通过修复后的图像与真实图像在判别器中进行对抗损失的计算,预测模型生成的修复后的图像是否逼近于目标生成图像,最后得到最终的修复图像。利用评价指标psnr、ssim、l1损失来验证网络的性能。
[0119]
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
转载请注明原文地址:https://doc.8miu.com/index.php/read-1722330.html