一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于线框和边缘结构的增量式图像修复方法

2022-04-27 08:51:50 来源:中国专利 TAG:


1.本发明涉及图像修复技术领域,尤其是涉及一种基于线框和边缘结构的增量式图像修复方法。


背景技术:

2.图像修复是为了解决填充损毁图像中的缺失区域问题,目的是确保的修复的图像区域的纹理细节真实性和合理性,它已经作为一个长期的被研究了许多年。图像修复对于许多现实世界的应用比如照片、目标移除、图像编辑等都有非常巨大的用处。
3.作为计算机视觉近年来的研究热门,基于深度学习的图像修复算法已经有了许多有价值的工作。其中不少工作致力于通过对模型的改进来改善填补区域的纹理细节。例如文献《resolution-robust large mask inpainting with fourier convolutions》提出了基于快速傅里叶卷积的图像修复算法,有效提升了不规则遮掩以及高分辨率的图像修复效果。文献《learning pyramid-context encoder network for high-quality image inpainting》提出了多尺度的注意力模型,进一步提升了图像修复的纹理效果。然而这些模型并没有考虑到缺失的结构信息。针对缺失的结构信息,文献《edgeconnect:generative image inpainting with adversarial edge learning》提出了一个两阶段的修复系统,首先还原缺失区域的边缘信息,再基于边缘进行图像修复上色。文献《learning a sketch tensor space for image inpainting of man-made scenes》则是用边缘和线框信息同时辅助图像修复上色。然而,上述文献《edgeconnect:generative image inpainting with adversarial edge learning》中的边缘信息往往基于梯度运算,从而存在一些缺点,例如直线边缘往往是断断续续的,又由于依赖梯度从而丢失一些颜色不敏感的区域的结构信息。文献《learning a sketch tensor space for image inpainting of man-made scenes》中的结构是基于对抗训练的方式恢复,恢复效果较差,并且它是从头训练整个网络以整合结构信息,开销非常大且无法应对高分辨的图像修复问题。


技术实现要素:

4.本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种图像修复效果好、适应性强的基于线框和边缘结构的增量式图像修复方法。
5.本发明的目的可以通过以下技术方案来实现:
6.一种基于线框和边缘结构的增量式图像修复方法,所述的图像修复方法包括:
7.步骤1:获取场景数据图片;
8.步骤2:构建适应于下游任务的遮掩图层来进行模型训练;
9.步骤3:构建结构恢复模型并对其进行训练;
10.步骤4:构建线框结构上采样网络并对其进行训练;
11.步骤5:若遮掩图像的分辨率大于256
×
256,利用结构上采样网络将256
×
256的修复线框和边缘结构上采样到和遮掩图像同分辨率;
12.步骤6:将修复的线框和边缘信息输入结构特征编码器获取结构特征;
13.步骤7:根据遮掩图层获取遮掩位置编码;
14.步骤8:构建图像修复网络并对其进行训练;
15.步骤9:模型训练结束后,进行图像修复等任务的推断。
16.优选地,所述的步骤2具体为:
17.首先,通过引入coco数据集的语义分割标签图层,构建遮掩图层;
18.其次,模拟人类涂鸦习惯以随机角度对笔刷进行迭代涂抹,构建涂鸦图层;
19.最后,使用随机组合语义分割遮掩图层和涂鸦图层。
20.优选地,所述的结构恢复模型具体为:
21.结构恢复模型tsr由三层卷积下采样层、八个transformer块和三层卷积上采样层组成,transformer块由轴向注意力模块结合普通注意力模块构成;
22.所述的轴向注意力模块具体为:
[0023][0024][0025][0026][0027]
e=ffn(ln(i r c)) i r c
[0028]
其中,x为输入特征经过层归一化的后的输出;x
ri
,x
rj
,x
ci
,x
cj
分别为x的第i行、第j行、第i列和第j列的c维特征向量;w
rq
,w
rk
,w
cq
,w
ck
均为可训练的参数;是可训练的相对位置编码;分别是行和列的轴向注意力分数矩阵的第i行第j列的元素;对注意力分数做softmax归一化并乘以相应特征向量即可得到注意力模块输出,轴向注意力模块最后的输出为e,其中ln和ffn分别为层归一化和前馈神经网络层;
[0029]
将轴向注意力的输出输入到普通注意力模块即可得到一个transformer块的输出f,普通注意力模块的计算过程为:
[0030][0031][0032]
f=ffn(ln(sa)) sa
[0033]
最后,采用二值交叉熵损失函数:
[0034][0035][0036]
其中,为canny边缘抽取器抽取无遮掩图像得到边缘图层;为线框抽取模型抽
取无遮掩图像得到的线框图层;
[0037]
恢复的结构信息为:
[0038][0039]
其中,i
l
为遮掩线框图层;ie为遮掩边缘图层;m为遮掩图;im为遮掩图像。
[0040]
优选地,所述的结构恢复模型的训练方法为:
[0041]
通过预训练的线框抽取模型得到线框图层,使用canny边缘抽取器抽取得到边缘图层,并将遮掩线框图层i
l
、遮掩边缘图层ie、遮掩图层m以及遮掩图像im作为结构恢复模型tsr的输入,对结构恢复模型进行训练。
[0042]
优选地,所述的步骤4具体为:
[0043]
利用分辨率为256
×
256以及分辨率为512
×
512的真实线框信息训练结构上采样网络,该网络的前向过程为:
[0044][0045][0046]
其中,为分辨率为256
×
256的真实线框信息;resize为双线性插值;cnn由四层卷积层组成,为网络输出的分辨率为512
×
512的线框信息;
[0047]
损失函数为二值交叉熵损失函数:
[0048][0049]
其中,表示分辨率为512
×
512的真实线框信息。
[0050]
优选地,所述的步骤6具体为:
[0051]
将修复后的线框和边缘信息以及遮掩图层输入结构特征编码器sfe,获得结构特征的特征图:
[0052][0053]
其中,sk,k∈{0,1,2,3}是四个分辨率由高到低的特征图;
[0054]
结构特征编码器sfe的前传过程为:
[0055]
x
i 1
=relu(bn(gc(xi))),i=0,1,2,3
[0056]
x
i 1
=dilatedresnetblock(xi),i=4,5,6
[0057]
x
i 1
=relu(bn(gc(xi))),i=7,8,9
[0058]
s0,s1,s2,s3=x7,x8,x9,x
10
[0059]
其中,relu表示relu激活函数;bn表示批归一化;dilatedresnetblock表示利用膨胀卷积的残差块;gc表示门控卷积,门控卷积的前向过程为:
[0060]
f=convf(x),g=convg(x)
[0061]
gateconv(x)=σ(g)
·f[0062]
其中,x为输入特征;σ为sigmoid激活函数。
[0063]
优选地,所述的步骤7具体为:
[0064]
首先用3
×
3元素全为1的卷积核获取遮掩区域每个像素距离非遮掩区域的距离,然后获取距离被映射为d维的正弦位置编码p
dis

[0065][0066][0067]
其中,d
max
=128,d=64;
[0068]
采用4个代表不同方向的3
×
3卷积核获取了遮掩区域每个像素距离最近非遮掩区域的方向该张量被投射到位置编码:
[0069][0070]
其中,w
dir
是可学习的内嵌参数;
[0071]
将p
dis
和p
dir
相加得到最后的遮掩位置编码p
[0072]
p=p
dis
p
dir

[0073]
优选地,所述的步骤8具体为:
[0074]
将遮掩位置编码和结构特征注入图像修复网络进行图像修复训练,注入结构特征以及遮掩位置编码的前传过程为:
[0075]
x1=relu(bn(conv2d(x0)))
[0076]
x2=relu(bn(conv2d(x1 α
×
p α0×
s0)))
[0077]
x
i 1
=relu(bn(conv2d(xi α
i-1
×si-1
))),i=2,3
[0078]
x5=ffcblock(x4 α3×
s3)
[0079]
x
i 1
=relu(bn(conv2d(xi))),i=7,8,9
[0080][0081]
其中,α,α0,α1,α2,α3均为初始化为0的可训练参数;为网络恢复的图像;conv2d为二维卷积算子;ffcblock为傅里叶残差块;
[0082]
快速傅里叶卷积块ffc的前传过程:
[0083]
x
l
,xg=split(x)
[0084]
x'g=relu(bn(conv2d(xg)))
[0085]
x'g'=x'g invfft2d(relu(bn(conv2d(fft2d(x'g)))))
[0086]
x
″′g=conv2d(x
″g) conv2d(x
l
)
[0087]
xo=relu(bn(concat(conv2d(x),x
″′g)))
[0088]
其中,x为输入特征;split表示沿着通道维度切分张量的操作;fft2d为二维快速傅里叶变换;invfft2d表示二维逆快速傅里叶变换;concat表示沿着通道维度拼接张量的操作;xo为最后的输出特征;
[0089]
ffcblock的前传过程为:
[0090]
x

=x ffc(ffc(x))。
[0091]
更加优选地,所述的图像修复网络的损失函数包括:
[0092]
l1损失函数:
[0093][0094]
其中,

表示逐元素的乘法;
[0095]
对抗损失函数:
[0096][0097][0098][0099][0100]
其中,d表示判别器网络;为梯度惩罚损失;
[0101]
特征匹配损失函数:
[0102][0103]
其中,d(i)为判别器网络d的第i层;ni是第i层的总的神经元个数;
[0104]
感知损失函数:
[0105][0106]
最终,结构修复模型的损失函数为:
[0107][0108]
其中,λ
l1
、λ
adv
、λ
fm
和λ
hrf
分别为l1损失函数、对抗损失函数、特征匹配损失函数和感知损失函数的权重。
[0109]
优选地,所述的步骤9具体为:
[0110]
输入待修复的受损图像im和m,使用线框抽取模型获取其线框i
l
,使用canny边缘抽取器抽取其边缘ie;将im、m、i
l
和ie缩放到分辨率为256
×
256并输入到结构修复模型获取修复后的结构信息;然后利用结构上采样网络对的边缘结构和线框结构上采样到初始分辨率,之后利用结构特征编码器获取结构特征并获取输入遮掩的遮掩,随后将它们输入到图像修复网络g得到最后修复的图像。
[0111]
与现有技术相比,本发明具有以下有益效果:
[0112]
一、图像修复效果好:本发明中的增量式图像修复方法提出了一个基于改进的transformer块的结构信息模型,极大的提升了结构恢复的能力,在此基础上,本发明还提出了结构特征抽取网络以及一种增量式的注入结构信息特征的训练方法,成功将结构信息注入到后续图像系统并提升修复图像的准确性。
[0113]
二、适应性强:本发明中的增量式图像修复方法提出了遮掩区域的遮掩位置编码解决大遮掩面积的图像修复以及一个结构上采样网络适应高分辨图像的修复;在面对各种场景各种分辨率上都取得了非常好的图像修复效果。
附图说明
[0114]
图1为本发明中增量式图像修复方法的流程示意图;
[0115]
图2为本发明实施例中遮掩位置编码的具体构造示意图。
具体实施方式
[0116]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0117]
一种基于线框和边缘结构的增量式图像修复方法,其流程如图1所示,包括:
[0118]
步骤1:获取场景数据图片;
[0119]
步骤2:构建适应于下游任务的遮掩图层来进行模型训练;
[0120]
步骤3:构建结构恢复模型并对其进行训练;
[0121]
步骤4:构建线框结构上采样网络并对其进行训练;
[0122]
步骤5:若遮掩图像的分辨率大于256
×
256,利用结构上采样网络将256
×
256的修复线框和边缘结构上采样到和遮掩图像同分辨率;
[0123]
步骤6:将修复的线框和边缘信息输入结构特征编码器获取结构特征;
[0124]
步骤7:根据遮掩图层获取遮掩位置编码;
[0125]
步骤8:构建图像修复网络并对其进行训练;
[0126]
步骤9:模型训练结束后,进行图像修复等任务的推断。
[0127]
下面分别对各个步骤进行详细描述:
[0128]
步骤1:本实施例使用places2的训练集来训练结构恢复模型、上采样网络、结构特征编码器和图像修复网络;places2数据集中包含了180万张的训练集和36500张的测试集。同时还收集了indoor数据集,indoor的训练集有5000张来自shanghaitech数据集,15055张来自nyudepthv2数据集,共20055张训练图像;indoor的测试集有1000张图像,其中有462和538张图像分别来自shanghaitech和nyudepthv2数据集。并且将indoor数据集也用于结构恢复模型、上采样网络、结构特征编码器和图像修复网络的训练和测试。此外,还在matterport3d数据集上进行了测试,这个数据集一共包含1965张分辨率为1024
×
1024的图片。
[0129]
步骤2:本实施例通过两种方法构造符合真实人为涂鸦的遮掩图层。首先,通过引入coco数据集的语义分割标签图层,构筑了91707张遮掩图层。这些遮掩图层均为现实事物的语义图层构成。此外还使用程序模拟了人类的涂鸦习惯,具体地,通过随机的角度对笔刷进行迭代涂抹,将随机次数设置在2到5次。此外,还以随机组合语义分割遮掩图层和涂鸦图层以增加网络学习难度。语义分割、涂鸦以及混合遮掩图层均在使用中分别占40%、40%和20%。
[0130]
步骤3:利用预训练的线框抽取模型得到线框图层,使用canny边缘抽取器抽取得到边缘图层,并将分辨率为256
×
256的遮掩线框图层i
l
、遮掩边缘图层ie、遮掩图层m以及遮掩图像im作为结构恢复模型tsr的输入。可以得到恢复的结构信息为:
[0131]
[0132]
本实施例中的结构恢复模型tsr由三层卷积下采样层、八个transformer块和三层卷积上采样层组成,transformer块由轴向注意力模块结合普通注意力模块构成;
[0133]
轴向注意力模块具体为:
[0134][0135][0136][0137][0138]
e=ffn(ln(i r c)) i r c
[0139]
其中,x为输入特征经过层归一化的后的输出;x
ri
,x
rj
,x
ci
,x
cj
分别为x的第i行、第j行、第i列和第j列的c维特征向量;w
rq
,w
rk
,w
cq
,w
ck
均为可训练的参数;是可训练的相对位置编码;分别是行和列的轴向注意力分数矩阵的第i行第j列的元素;对注意力分数做softmax归一化并乘以相应特征向量即可得到注意力模块输出,轴向注意力模块最后的输出为e,其中ln和ffn分别为层归一化和前馈神经网络层;
[0140]
将轴向注意力的输出输入到普通注意力模块即可得到一个transformer块的输出f,普通注意力模块的计算过程为:
[0141][0142][0143]
f=ffn(ln(sa)) sa
[0144]
最后,采用二值交叉熵损失函数:
[0145][0146][0147]
其中,为canny边缘抽取器抽取无遮掩图像得到边缘图层;为线框抽取模型抽取无遮掩图像得到的线框图层;
[0148]
步骤4:在结构上采样模型的时候,利用分辨率为256
×
256以及分辨率为512
×
512的真实线框信息训练结构上采样网络,该网络的前向过程为:
[0149][0150][0151]
其中,为分辨率为256
×
256的真实线框信息;resize为双线性插值;cnn由四层卷积层组成,为网络输出的分辨率为512
×
512的线框信息;
[0152]
损失函数为二值交叉熵损失函数:
[0153][0154]
其中,表示分辨率为512
×
512的真实线框信息。
[0155]
在测试阶段,该上采样网络可同时对线框结构和边缘结构做上采样直到达到想要的分辨率,具体来说,重复下述过程多次:
[0156]
i'e=sigmoid[γ(i'e β)]
[0157]
i'
l
=sigmoid[γ(i'
l
β)]
[0158]
其中,设置γ=β=2;i'e和i'
l
初始分辨率均为h
×
w,重复上述过程q次后得到分辨率为2
qh×2q
w的结构信息i'e和i'
l
,最后再利用双线性插值将该结构信息缩放到目标分辨率。
[0159]
步骤5:在训练过程以及测试过程中,若给定的目标遮掩图像分辨率大于256
×
256,则利用步骤4中得到的结构上采样网络将步骤3中结构恢复模块得到的256
×
256的恢复结构上采样到和遮掩图像相同的分辨率。
[0160]
步骤6:将修复后的线框和边缘信息以及遮掩图层输入结构特征编码器sfe,获得结构特征的特征图:
[0161][0162]
其中,sk,k∈{0,1,2,3}是四个分辨率由高到低的特征图;
[0163]
结构特征编码器sfe的前传过程为:
[0164]
x
i 1
=relu(bn(gc(xi))),i=0,1,2,3
[0165]
x
i 1
=dilatedresnetblock(xi),i=4,5,6
[0166]
x
i 1
=relu(bn(gc(xi))),i=7,8,9
[0167]
s0,s1,s2,s3=x7,x8,x9,x
10
[0168]
其中,relu表示relu激活函数;bn表示批归一化;dilatedresnetblock表示利用膨胀卷积的残差块;gc表示门控卷积,门控卷积的前向过程为:
[0169]
f=convf(x),g=convg(x)
[0170]
gateconv(x)=σ(g)
·f[0171]
其中,x为输入特征;σ为sigmoid激活函数。
[0172]
步骤7:如图2所示,首先用3
×
3元素全为1的卷积核获取遮掩区域每个像素距离非遮掩区域的距离,然后获取距离被映射为d维的正弦位置编码p
dis

[0173][0174][0175]
其中,d
max
=128,d=64;
[0176]
采用4个代表不同方向的3
×
3卷积核获取了遮掩区域每个像素距离最近非遮掩区域的方向该张量被投射到位置编码:
[0177][0178]
其中,w
dir
是可学习的内嵌参数;
[0179]
将p
dis
和p
dir
相加得到最后的遮掩位置编码p
[0180]
p=p
dis
p
dir

[0181]
步骤8:将遮掩位置编码和结构特征注入图像修复网络进行图像修复训练,注入结构特征以及遮掩位置编码的前传过程为:
[0182]
x1=relu(bn(conv2d(x0)))
[0183]
x2=relu(bn(conv2d(x1 α
×
p α0×
s0)))
[0184]
x
i 1
=relu(bn(conv2d(xi α
i-1
×si-1
))),i=2,3
[0185]
x5=ffcblock(x4 α3×
s3)
[0186]
x
i 1
=relu(bn(conv2d(xi))),i=7,8,9
[0187][0188]
其中,α,α0,α1,α2,α3均为初始化为0的可训练参数;为网络恢复的图像;conv2d为二维卷积算子;ffcblock为傅里叶残差块;
[0189]
快速傅里叶卷积块ffc的前传过程:
[0190]
x
l
,xg=split(x)
[0191]
x'g=relu(bn(conv2d(xg)))
[0192]
x
″′g=x'g invfft2d(relu(bn(conv2d(fft2d(x'g)))))
[0193]
x
″′g=conv2d(x
″g) conv2d(x
l
)
[0194]
xo=relu(bn(concat(conv2d(x),x
″′g)))
[0195]
其中,x为输入特征;split表示沿着通道维度切分张量的操作;fft2d为二维快速傅里叶变换;invfft2d表示二维逆快速傅里叶变换;concat表示沿着通道维度拼接张量的操作;xo为最后的输出特征;
[0196]
ffcblock的前传过程为:
[0197]
x

=x ffc(ffc(x))。
[0198]
图像修复网络的损失函数包括:
[0199]
l1损失函数:
[0200][0201]
其中,

表示逐元素的乘法;
[0202]
对抗损失函数:
[0203][0204][0205][0206]
[0207]
其中,d表示判别器网络;为梯度惩罚损失;
[0208]
特征匹配损失函数:
[0209][0210]
其中,d(i)为判别器网络d的第i层;ni是第i层的总的神经元个数;
[0211]
感知损失函数:
[0212][0213]
最终,结构修复模型的损失函数为:
[0214][0215]
其中,λ
l1
、λ
adv
、λ
fm
和λ
hrf
分别为l1损失函数、对抗损失函数、特征匹配损失函数和感知损失函数的权重,本实施例中λ
l1
=10,λ
adv
=10,λ
fm
=100,λ
hrf
=30。
[0216]
步骤9:输入待修复的受损图像im和m,使用线框抽取模型获取其线框i
l
,使用canny边缘抽取器抽取其边缘ie;将im、m、i
l
和ie缩放到分辨率为256
×
256并输入到结构修复模型获取修复后的结构信息;然后利用结构上采样网络对的边缘结构和线框结构上采样到初始分辨率,之后利用结构特征编码器获取结构特征并获取输入遮掩的遮掩,随后将它们输入到图像修复网络g得到最后修复的图像。
[0217]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献