一种基于风格迁移的透明液体感知方法与流程
未命名
07-23
阅读:83
评论:0
1.本发明属于深度学习与目标检测技术领域,尤其涉及一种基于风格迁移的透明液体感知方法。
背景技术:
2.由于透明物体具有透光率高、反射率低、形态复杂等特点,在实际环境中,透明物体感知极具挑战性。现有的一些研究方法侧重于感知透明容器,包括透明对象分割、深度估计、关键点估计等。然而,由于液体具有流动性,缺乏固定形状,液体感知比物体感知更具挑战性。常用的透明液体感知方法通常需要在训练期间加热液体,之后利用热像仪获得液体的真实标签,然而,加热液体是一个额外的操作,会大幅提升液体标签的获取难度,导致数据获取困难,采用其他方法则需要从多个角度观察液体、使用棋盘背景、进行重量测量或液体运动,受环境限制,这些方法的适用性被大幅降低。
3.公开号为cn110930295a的专利提供了一种图像风格迁移方法、系统、装置和存储介质,包括获取内容图片;将内容图片输入预训练好的图像风格迁移模型进行风格迁移处理后,输出具有特定风格而保留原内容的目标图片;图像转换网络与判别网络组成一个生成式对抗网络(gan),在模型训练过程中进行交替更新。本发明通过感知对抗损失函数对网络进行持续更新优化,直至损失最小化,得到效果更优的图像风格迁移模型,如此可获得与内容图片和风格图片更加接近的输出图片,有效地避免了图片背景扭曲问题,可广泛应用于数据图像处理领域。此专利虽然也是采用了风格迁移,但是对于如何将风格迁移应用到透明液体的感知方面并未给出相应技术方案,这个问题仍然是本领域的痛点。
4.因此,如何基于风格迁移技术去感知透明液体,从而实现对透明液体更精准的检测,是本技术领域人员亟待解决的问题。
技术实现要素:
5.针对现有技术的不足,本发明的目的是提供一种基于风格迁移的透明液体感知方法,以解决现有技术中无法精准感知和检测透明液体的问题。
6.为了解决上述技术问题,本发明采用了如下的技术方案:
7.本发明提供了一种基于风格迁移的透明液体感知技术,包括以下步骤:
8.s10、获取源域数据样本与目标域数据样本,构建两种不同风格的液体数据集;
9.s20、构建轻量级风格迁移网络模型;
10.s30、将所述步骤s10获取的数据在所述轻量级风格迁移网络模型上进行迭代训练,获得最优风格迁移网络模型;
11.s40、利用所述最优风格迁移网络模型进行液体图像风格转换;
12.s50、构建基于yolov5s的液体检测网络模型;
13.s60、将所述步骤s40获取的液体图像风格转换数据在所述液体检测模型上进行迭代训练,获得最优液体检测网络模型;
14.s70、将转换后的液体图像风格数据输入所述最优液体检测网络模型,得到液体检测结果。
15.进一步的,所述步骤s20中,所述轻量级风格迁移网络模型包括生成网络g、判别网络d和多层感知网络mlp,所述生成网络g包括编码器g
enc
与解码器g
dec
,用于将服从某一分布的数据生成类似于真实训练数据的样本,所述判别网络d用于感知生成网络产生的合成数据和目标域数据的局部图像特征间的差异,所述多层感知网络mlp用于提取输入与输出图像块信息,以进行对比学习。
16.进一步的,所述步骤s30的具体步骤包括:
17.s31、随机初始化参数,设置批次大小,每次读取批次大小的数据输入所述轻量级风格迁移网络模型进行迭代训练;
18.s32、使用所述生成网络g对输入图像进行编码与解码,生成对应的具有目标域风格的数据fake,将源域数据reala经过风格转换后的结果表示为fakeb,目标域数据realb经过风格转换后的结果表示为idtb;
19.s33、将所述目标域数据realb与所述fakeb输入所述判别网络d,分别输出判别矩阵f
real_b
,f
fake_b
,矩阵每个点代表对应输入图像中的感知域;
20.s34、通过所述编码器g
enc
与多层感知网络mlp获取输入输出图像块的互信息,通过多层分块对比学习实现互信息最大化;
21.s35、设计损失函数,根据损失函数利用反向传播对网络参数进行调整。
22.进一步的,所述步骤s40中,将源域数据输入所述最优风格迁移网络模型,得到转换后目标域数据,对透明液体数据及风格转换后的有色液体数据进行手动标注并随机挑选数据,按照3∶1的比例划分训练集与测试集,用于后续液体检测网络模型训练及测试。
23.进一步的,所述步骤s60的具体步骤包括:
24.s61、构建骨干网络,所述骨干网络包含十个网络层,所述十个网络层包括五个cbs网络层,四个csp1_x模块,一个sspf模块,将第i个网络层的输出的特征图定义为fi,特征图的尺寸记为ci×hi
×
wi,i=1,2,...,9,10,其中c为编码器输出通道,h为高,w为宽,利用所述骨干网络对所述训练集进行高、中、低层特征提取;
25.s62、构建特征融合网络,选择所述步骤s61中三个网络层的输出特征图,并将所述三个网络层输入fpn特征融合模块进行高层特征融合,将所述fpn特征融合模块融合后的三个特征图输入pan特征融合模块进行低层特征融合,输出三个上下文特征图;
26.s63、将所述步骤s62中输出的三个上下文特征图输入检测头,进行缺陷分类与回归;
27.s64、设计损失函数,根据损失函数利用反向传播对网络参数进行调整。
28.进一步的,所述步骤s20中,所述编码器g
enc
包括下采样网络与resnet残差块,所述解码器g
dec
包括resnet残差块与上采样网络;所述判别网络d为马尔科夫判别网络patchgan。
29.进一步的,所述步骤s10中,所述源域数据为透明液体数据,所述目标域数据为绿色液体数据,数据集中所有数据均为同一尺寸。
30.进一步的,所述步骤s35中,损失函数包括对抗损失函数、源域对比损失函数和目标域对比损失函数。
31.进一步的,所述步骤s64中,损失函数包括回归损失函数和交叉熵损失函数。
32.进一步的,所述步骤s70中,输入所述最优液体检测网络模型的数据为所述步骤s32中的fakeb。
33.本发明提供的基于风格迁移的透明液体感知方法与现有技术相比,至少具有如下有益效果:
34.本发明过程简单、操作方便,包括风格转换网络和目标检测网络,通过风格转换模型作为数据增强手段,在保留透明液体数据结构特征的同时,学习目标域的外观特征,将透明液体检测难题转换为有色液体的检测,降低检测难度,提升模型性能,之后构建yolov5s模型对风格转换后的液体图像进行精准检测,与以前的方法相比,该方法减轻了对操作域的限制,无需其他附加操作即可完成透明液体的精准感知。
附图说明
35.为了更清楚地说明本发明的方案,下面将对实施例描述中所需要使用的图作一个简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1为本发明实施例提供的一种基于风格迁移的透明液体感知方法的流程图;
37.图2为本发明实施例提供的一种基于风格迁移的透明液体感知方法的编码器结构图;
38.图3为本发明实施例提供的一种基于风格迁移的透明液体感知方法的解码器结构图;
39.图4为本发明实施例提供的一种基于风格迁移的透明液体感知方法的判别网络结构图;
40.图5为本发明实施例提供的一种基于风格迁移的透明液体感知方法的训练过程中生成网络风格变换结果图;
41.图6为本发明实施例提供的一种基于风格迁移的透明液体感知方法的分块对比学习示意图;
42.图7为本发明实施例提供的一种基于风格迁移的透明液体感知方法的风格转换结果图;
43.图8为本发明实施例提供的一种基于风格迁移的透明液体感知方法的液体检测网络架构图;
44.图9为本发明实施例提供的一种基于风格迁移的透明液体感知方法的液体检测结果对比图。
具体实施方式
45.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
46.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的
技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
47.本发明提供了一种基于风格迁移的透明液体感知方法,应用于对透明液体的感知检测过程中,基于风格迁移的透明液体感知方法包括以下步骤:
48.s10、获取源域数据样本与目标域数据样本,构建两种不同风格的液体数据集;
49.s20、构建轻量级风格迁移网络模型;
50.s30、将步骤s10获取的数据在轻量级风格迁移网络模型上进行迭代训练,获得最优风格迁移网络模型;
51.s40、利用最优风格迁移网络模型进行液体图像风格转换;
52.s50、构建基于yolov5s的液体检测网络模型;
53.s60、将步骤s40获取的液体图像风格转换数据在液体检测模型上进行迭代训练,获得最优液体检测网络模型;
54.s70、将转换后的液体图像风格数据输入最优液体检测网络模型,得到液体检测结果。
55.本发明过程简单、操作方便,通过风格迁移技术可对透明液体实现精准感知。
56.为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
57.本发明提供了一种基于风格迁移的透明液体感知方法,应用于透明液体的感知检测过程中,本实施例中,如图1所示,所述基于风格迁移的透明液体感知方法包括以下步骤:
58.s10、获取源域数据样本与目标域数据样本,构建两种不同风格的液体数据集;
59.具体地,获取非配对的源域数据样本与目标域数据样本共计4462张,其中源域数据样本2231张,目标域数据样本2231张,源域数据为透明液体数据,目标域数据为绿色液体数据,构建两种不同风格的液体数据集,数据集中所有数据均被裁剪为统一尺寸c
×h×
w,c=3,h=300,w=152,其中c为编码器输出通道,h为高,w为宽。
60.s20、构建轻量级风格迁移网络模型;
61.具体地,轻量级风格迁移网络模型包括生成网络g、判别网络d、多层感知网络mlp三部分,其中生成网络g用于将服从某一分布的数据生成类似于真实训练数据的样本,即将具有透明风格液体数据转变为绿色液体数据,生成网络g包括编码器g
enc
与解码器g
enc
,g
enc
由下采样网络与resnet残差块组成,g
dec
由resnet残差块与上采样网络组成,判别网络d为马尔科夫判别网络patchgan,用于感知生成网络产生的合成数据和目标域数据的局部图像特征间的差异,使用多层感知网络mlp提取多个输入与输出层的图像块信息,从而利用多层分块对比学习实现互信息最大化。
62.进一步的,本实施例中,步骤s20的具体步骤包括:
63.s21、构建生成网络g,生成网络共计10个网络层与9个残差块,网络层包括2个下采样层,6个卷积层及2个上采样层,其中6个卷积层又分为2个卷积核尺寸为7
×
7,步长为1,padding为0的卷积层,记为conva,及4个卷积核尺寸为3
×
3,步长为1,padding为1的卷积层,记为convb,每个卷积层conva处理前,均需要使用opencv中的reflectionpad2d函数对输入conva的特征图进行3倍填充,编码器g
enc
包括5个残差块、2个下采样层与3个卷积层,其中卷积层包括1个conva卷积层,2个convb卷积层;解码器g
dec
包括4个残差块、2个上采样层
与3个卷积层,其中卷积层包括1个conva卷积层,2个convb卷积层。
64.进一步的,步骤s21中,编码器共计5个网络层与5个残差块,如图2所示,编码器层结构依次为conva层、convb层、下采样层、convb层、下采样层及5个残差块;解码器共计5个网络层与4个残差块,如图3所示,解码器结构层结构依次为4个残差块、上采样层、convb层、上采样层、convb层及conva层。
65.s22、构建判别网络d,判别网络为马尔科夫判别网络patchgan,包含8个网络层,分别是3个下采样层与5个卷积层,如图4所示,下采样层结构与步骤s21中下采样层结构一致,每个下采样操作前均需要使用opencv中的reflectionpad2d函数对输入采样层的特征图进行1倍填充,5个卷积层的卷积核尺寸均为4
×
4,步长为1,padding为1。判别网络层结构依次为conv层、下采样层、conv层、下采样层、conv层、下采样层、conv层、conv层。
66.s23、构建多层感知网络mlp,多层感知网络为两层感知网络,层结构依次为线性层、relu激活函数、线性层。
67.s24、步骤s21、步骤s22、步骤s23中所有提到的所有卷积层均为卷积层、归一化层与relu激活函数的组合层。
68.s30、利用步骤s10获取的数据在步骤s20搭建的风格迁移网络模型上进行迭代训练,得到最优模型参数,获得最优风格迁移网络模型,迭代训练是指生成网络和判别网络交替迭代训练,当输入一组数据时,先固定判别网络,利用随机梯度下降算法优化生成网络;进行一次迭代后,再固定生成网络,利用随机梯度下降算法优化判别网络,如此循环训练直到网络参数收敛。
69.进一步的,本实施例中,步骤s30中每一次迭代训练的具体方法为:
70.s31、首先随机初始化参数,设置批次大小,每次读取批次大小的数据输入模型进行迭代训练,本实施例中将源域输入数据,即透明液体数据记为reala,目标域输入数据,即有色液体数据记为realb,输入风格迁移网络模型进行迭代训练。
71.s32、对于任意一个通道c
in
=3,尺寸h
in
×win
=300
×
152的输入数据reala或realb,使用生成网络g对输入图像编码与解码,生成输出通道为c
gen
,尺寸为h
gen
×wgen
的具有目标域风格的数据(fake),将其记为f
gen
,其中c
gen
=c
in
=3,h
gen
=h
in
=300,w
gen
=w
in
=152,reala对应的生成数据为fakeb,realb对应的生成数据为idtb,如图5所示,图5中1个epoch表示将所有训练数据迭代一遍,fakeb=g(reala)=g
dec
(g
enc
(reala)),idtb=g(realb)=g
dec
(g
enc
(realb))。
72.步骤s32中,对于任意一个输入数据reala或realb,首先将其输入编码器g
enc
,编码器结构如步骤s21中描述共计5个网络层与5个残差块,编码器层结构依次为conva层、convb层、下采样层、convb层、下采样层及5个残差块,对于通道c
in
=3,尺寸h
in
×win
=300
×
152的输入数据,编码器输出通道为c
enc
,尺寸为h
enc
×wenc
的特征图,将其记为f
enc
,其中c
enc
=256,
73.具体地,5个网络层中下一网络层的输入为前一个网络层的输出,5个残差块中,将当前残差块的输出与输入进行残差连接,作为下一个残差块的输入,第一个网络层为conva卷积层,其输入为生成网络的输入,第二个网络层为convb卷积层,其输入为第一个网络层的输出,第三网络层为下采样层,其输入为第二个网络层的输出,第四个网络层为convb卷
积层,其输入为第三个网络层的输出,第五个网络层为下采样层,其输入为第四个网络层的输出,第一个残差块的输入是第五个网络层的输出,第二个残差块的输入是第一个残差块的输入与输出逐元素相加得到的结果,第三个残差块的输入是第二个残差块的输入与输出逐元素相加得到的结果,第四个残差块的输入是第三个残差块的输入与输出逐元素相加得到的结果,第五个残差块的输入是第四个残差块的输入与输出逐元素相加得到的结果,编码器的输出是第五个残差块的输入与输出逐元素相加得到的结果。
74.具体地,将第i个网络层的输出特征图尺寸记为f
enc_i
,其尺寸为c
enc_i
×henc_i
×wenc_i
,将通道c
in
=3,尺寸h
in
×win
=300
×
152的原始数据作为编码器的输入,第一个网络层使用conva卷积层对输入进行处理,卷积核的个数为c
enc_1
,可输出通道为c
enc_1
,尺寸为h
enc_1
×wenc_1
的特征图,将其记为f
enc_1
,并作为第二个网络层的输入,其中c
enc_1
=64,h
enc_1
=h
in
=300,w
enc_1
=w
in
=152;第二个网络层使用convb卷积层对输入进行处理,卷积核的个数为c
enc_2
,可输出通道为c
enc_2
,尺寸为h
enc_2
×wenc_2
的特征图,将其记为f
enc_2
,并作为第三个网络层的输入,其中c
enc_2
=128,h
enc_2
=h
in
=300,w
enc_2
=w
in
=152;第三个网络层使用下采样层对输入进行处理,可输出通道为c
enc_3
,尺寸为h
enc_3
×wenc_3
的特征图,将其记为f
enc_3
,并作为第四个网络层的输入,其中c
enc_3
=128,=128,第四个网络层使用convb卷积层对输入进行处理,卷积核的个数为c
enc_4
,可输出通道为c
enc_4
,尺寸为h
enc_4
×wenc_4
的特征图,将其记为f
enc_4
,并作为第一个残差块的输入,其中c
enc_4
=256,第五个网络层使用下采样层对输入进行处理,可输出通道为c
enc_5
,尺寸为h
enc_5
×wenc_5
的特征图,将其记为f
enc_5
,并作为第一个残差块的输入,其中c
enc_5
=256,第一个残差块包括两个卷积层,其中每个卷积层使用c
enc_6
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
enc_6
,尺寸为h
enc_6
×wenc_6
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_5
进行逐元素相加,得到第一个残差块的输出特征图f
enc_6
,其通道为c
enc_6
,尺寸为h
enc_6
×wenc_6
,并作为第二个残差块的输入,其中c
enc_6
=256,第二个残差块包括两个卷积层,其中每个卷积层使用c
enc_7
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
enc_7
,尺寸为h
enc_7
×wenc_7
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_6
进行逐元素相加,得到第二个残差块的输出特征图f
enc_7
,其通道为c
enc_7
,尺寸为h
enc_7
×wenc_7
,并作为第三个残差块的输入,其中c
enc_7
=256,第三个残差块包括两个卷积层,其中每个卷积层使用c
enc_8
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个
卷积层的输出,两个卷积层均输出通道为c
enc_8
,尺寸为h
enc_8
×wenc_8
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_7
进行逐元素相加,得到第三个残差块的输出特征图f
enc_8
,其通道为c
enc_8
,尺寸为h
enc_8
×wenc_8
,并作为第四个残差块的输入,其中c
enc_8
=256,第四个残差块包括两个卷积层,其中每个卷积层使用c
enc_9
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
enc_9
,尺寸为h
enc_9
×wenc_9
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_8
进行逐元素相加,得到第四个残差块的输出特征图f
enc_9
,其通道为c
enc_9
,尺寸为h
enc_9
×wenc_9
,并作为第五个残差块的输入,其中c
enc_9
=256,第五个残差块包括两个卷积层,其中每个卷积层使用c
enc_7
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
enc_10
,尺寸为h
enc_10
×wenc_10
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_9
进行逐元素相加,得到第五个残差块的输出特征图f
enc_out
,其通道为c
enc_10
,尺寸为h
enc_10
×wenc_10
,并作为编码器的输出,其中c
enc_10
=256,上述提到的编码器的输出f
enc
即为f
enc_out
,c
enc
=c
enc_10
,h
enc
=h
enc_10
,w
enc
=w
enc_10
。
75.进一步的,步骤s32中,将编码器的输出f
enc_out
输入解码器g
dec
,解码器结构如步骤s21中描述共计5个网络层与4个残差块,解码器结构层结构依次为4个残差块、上采样层、convb层、上采样层、convb层及conva层,对于通道为c
enc
,尺寸为h
enc
×wenc
的输入特征图,解码器输出上述具有目标域风格的数据f
gen
,其通道为c
gen
,尺寸为h
gen
×wgen
,c
gen
=c
in
=3,h
gen
=h
in
=300,w
gen
=w
in
=152。
76.具体地,4个残差块中,将当前残差块的输出与输入进行残差连接,作为下一个残差块的输入,5个网络层中下一网络层的输入为前一个网络层的输出,第一个残差块的输入是解码器的输入,第二个残差块的输入是第一个残差块的输入与输出逐元素相加得到的结果,第三个残差块的输入是第二个残差块的输入与输出逐元素相加得到的结果,第四个残差块的输入是第三个残差块的输入与输出逐元素相加得到的结果,第一个网络层为上采样层,其输入为第四个残差块的输出,第二个网络层为convb卷积层,其输入为第一个网络层的输出,第三网络层为上采样层,其输入为第二个网络层的输出,第四个网络层为convb卷积层,其输入为第三个网络层的输出,第五个网络层为conva卷积层,其输入为第四个网络层的输出,解码器的输出是第五个网络层的输出。
77.具体地,将第j个网络层的输出特征图记为f
dec_j
,其尺寸为c
dec_j
×hdec_j
×wdec_j
,将通道为c
enc
,尺寸为h
enc
×wenc
的特征图f
enc_out
作为解码器的输入。第一个残差块包括两个卷积层,其中每个卷积层使用c
dec_1
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个
卷积层均输出通道为c
dec_1
,尺寸为h
dec_1
×wdec_1
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
enc_out
进行逐元素相加,得到第一个残差块的输出特征图f
dec_1
,其通道为c
dec_1
,尺寸为h
dec_1
×wdec_1
,并作为第二个残差块的输入,其中c
dec_1
=256,第二个残差块包括两个卷积层,其中每个卷积层使用c
dec_2
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
dec_2
,尺寸为h
dec_2
×wdec_2
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
dec_1
进行逐元素相加,得到第二个残差块的输出特征图f
dec_2
,其通道为c
dec_2
,尺寸为h
dec_2
×wdec_2
,并作为第三个残差块的输入,其中c
dec_2
=256,第三个残差块包括两个卷积层,其中每个卷积层使用c
dec_3
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
dec_3
,尺寸为h
dec_3
×wdec_3
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
dec_2
进行逐元素相加,得到第三个残差块的输出特征图f
dec_3
,其通道为c
dec_3
,尺寸为h
dec_3
×wdec_3
,并作为第四个残差块的输入,其中c
dec_3
=256,第四个残差块包括两个卷积层,其中每个卷积层使用c
dec_4
个尺寸为3
×
3的卷积核对输入进行处理,第一个卷积层的输入为第一个残差块的输入,残差块中第二个卷积层的输入为第一个卷积层的输出,两个卷积层均输出通道为c
dec_4
,尺寸为h
dec_4
×wdec_4
的特征图,将残差块中第二个卷积层的输出与该残差块的输入f
dec_3
进行逐元素相加,得到第四个残差块的输出特征图f
dec_4
,其通道为c
dec_4
,尺寸为h
dec_4
×wdec_4
,并作为第一个网络层的输入,其中c
dec_4
=256,=256,
78.具体地,第一个网络层使用上采样层对输入进行处理,可输出通道为c
dec_5
,尺寸为h
dec_5
×wdec_5
的特征图,将其记为f
dec_5
,并作为第二个网络层的输入,其中c
dec_5
=256,第二个网络层使用convb卷积层对输入进行处理,卷积核的个数为c
dec_6
,可输出通道为c
dec_6
,尺寸为h
dec_6
×wdec_6
的特征图,将其记为f
dec_6
,并作为第三个网络层的输入,其中c
dec_6
=128,第三个网络层使用上采样层对输入进行处理,可输出通道为c
dec_7
,尺寸为h
dec_7
×wdec_7
的特征图,将其记为f
dec_7
,并作为第四个网络层的输入,其中c
dec_7
=128,h
dec_7
=h
in
=300,w
dec_7
=w
in
=152;第四个网络层使用convb卷积层对输入进行处理,卷积核的个数为c
dec_8
,可输出通道为c
dec_8
,尺寸为h
dec_8
×wdec_8
的特征图,将其记为f
dec_8
,并作为第五个网络层的输入,其中c
dec_8
=64,h
dec_8
=h
in
=300,w
dec_8
=w
in
=152;第五个网络层使用conva卷积层对输入进行
处理,可输出通道为c
dec_9
,尺寸为h
dec_9
×wdec_9
的特征图,将其记为f
dec_out
,并作为解码器的输出,其中c
dec_9
=c
in
=3,h
dec_9
=h
in
=300,w
dec_9
=w
in
=152;上述具有目标域风格的数据f
gen
即为f
dec_out
,c
gen
=c
dec_9
=c
in
,h
gen
=h
dec_9
=h
in
,w
gen
=w
dec_9
=w
in
。
79.s33、将目标域输入数据realb与步骤s32的生成数据fakeb输入判别网络,判别网络由三个下采样层与五个卷积层组成,对一个通道为c
in
,尺寸为h
in
×win
的输入数据,输出通道为c
dis
,尺寸为h
dis
×wdis
的判别矩阵f
dis
,判别矩阵每个点代表对应输入图像中感受野大小(8
×
8)的感知域,其中c
dis
=1,=1,目标域输入数据realb对应的判别矩阵为f
real_b
,生成数据fakeb对应的判别矩阵为f
fake_b
,判别网络d为马尔科夫判别网络patchgan,与gan网络的判别网络相比,其优势在于:gan网络的判别网络的设计是仅输出一个评价值(true or false),该值是对生成网络生成的整幅图像的一个评价。而patchgan设计成全卷积的形式,使用卷积将输入映射为h
dis
×wdis
的判别矩阵f
dis
,该矩阵等同于gan网络中最后的评价值,用以评价生成网络的生成图像。判别矩阵f
dis
中每个点(true or false)即代表原始图像中的一块小区域(patch)评价值。gan网络用一个值衡量整幅图,patchgan使用h
dis
×wdis
的矩阵来评价整幅图,使模型可以关注更多的区域。
80.进一步的,本实施例中,步骤s33中判别网络由三个下采样层与五个卷积层组成,下采样层结构与步骤s22中描述一致,下采样操作前需要使用opencv中的reflectionpad2d函数对输入采样层的特征图进行1倍填充;所有卷积层的卷积核尺寸为4
×
4,步长为1,padding为1。3.3.1所述卷积层均为卷积层、归一化层与leaklyrelu激活函数的组合层,判别网络的层结构依次为卷积层、下采样层、卷积层、下采样层、卷积层、下采样层、卷积层、卷积层,8个网络层中下一网络层的输入为前一个网络层的输出。
81.具体地,将第t个网络层的输出特征图记为f
dis_t
,其尺寸为c
dis_t
×hdis_i
×wdis_i
,将判别网络输入数据的通道c
in
=3,尺寸h
in
×win
=300
×
152,第一个网络层使用卷积层对输入进行处理,卷积核的个数为c
dis_1
,可输出通道为c
dis_1
,尺寸为h
dis_1
×wdis_1
的特征图,将其记为f
dis_1
,并作为第二个网络层的输入,其中c
dis_1
=64,h
dis_1
=h
in-1=299,w
dis_1
=w
in-1=151;第二个网络层使用下采样层对输入进行处理,可输出通道为c
dis_2
,尺寸为h
dis_2
×wdis_2
的特征图,将其记为f
dis_2
,并作为第三个网络层的输入,其中c
dis_2
=64,第三个网络层使用卷积层对输入进行处理,卷积核的个数为c
dis_3
,可输出通道为c
dis_3
,尺寸为h
dis_3
×wdis_3
的特征图,将其记为f
dis_3
,并作为第四个网络层的输入,其中c
dis_3
=128,第四个网络层使用下采样层对输入进行处理,可输出通道为c
dis_4
,尺寸为h
dis_4
×wdis_4
的特征图,将其记为f
dis_4
,并作为第五个网络层的输入,其中c
dis_4
=128,=128,第五个网络层使用卷积层对输入进行处理,卷积核的个数为c
dis_5
,可输出通道为c
dis_5
,尺寸为h
dis_5
×wdis_5
的特征图,将其记为f
dis_5
,并作为第六个网络层的输入,其
中c
dis_5
=256,第六个网络层使用下采样层对输入进行处理,可输出通道为c
dis_6
,尺寸为h
dis_6
×wdis_6
的特征图,将其记为f
dis_6
,并作为七个网络层的输入,其中c
dis_6
=256,第七个网络层使用卷积层对输入进行处理,卷积核的个数为c
dis_7
,可输出通道为c
dis_7
,尺寸为h
dis_7
×wdis_7
的特征图,将其记为f
dis_7
,并作为第八个网络层的输入,其中c
dis_7
=512,=512,第八个网络层使用卷积层对输入进行处理,卷积核的个数为c
dis_8
,可输出通道为c
dis_8
,尺寸为h
dis_8
×wdis_8
的特征图,将其记为f
dis_out
,并作为判别网络的输出,其中c
dis_8
=1,上述提到的判别网络输出的判别矩阵f
dis
即为f
dis_out
,c
dis
=c
dis_8
=1,h
dis
=h
dis_8
=38,w
dis
=w
dis_8
=17;判别矩阵f
dis
即为对抗损失的输入,在计算损失时,对于真实数据(realb)生成数据,其真值标签为c
dis
×hdis
×wdis
的全1矩阵,对于合成数据(fakeb),其真值标签为c
dis
×hdis
×wdis
的全0矩阵。
82.s34、通过编码器与多层感知网络获取输入输出图像块的互信息(mutual information),如图6所示,通过多层分块对比学习实现互信息最大化。
83.具体地,将输入数据reala/realb编码为特征向量列表featq,将其对应的生成数据fakeb/idtb编码为特征向量列表featk,将其输入mlp后生成f
q_pool
与f
k_pool
,在f
k_pool
的某一特征向量中采样一个patch(即query,记为v),并将其与f
q_pool
中对应特征向量的相同位置的patch(即正样本记为v
+
)与h个不同位置的patch(即负样本记为v-)进行比较,将其输入分类对比损失,建立一个h+1的分类问题,使query和正样本信号相关联和负样本形成对比。
84.进一步的,本实施例中,步骤s34中将源域数据reala与步骤s31中的生成数据fakeb输入生成网络中的编码器,按顺序提取t层特征图(t=5),得到feat
q1
与feat
k1
。
85.具体地,将源域数据reala作为编码器输入,编码器结构如步骤s32中描述,将编码器的第二个网络层的输出特征图记为f
enc_2_real
、将编码器第四个网络层的输出特征图记为f
enc_4_real
、将第一个残差块的输出特征图记为f
enc_6_real
、将编码器的输出特征图记为f
enc_real
,将输入图像reala使用opencv中的reflectionpad2d函数进行3倍填充后的结果,记为f
enc_0_real
,与上述四个特征图f
enc_2_real
、f
enc_4_real
、f
enc_6_real
、f
enc_real
提取出来,结合在一起生成feat
q1
,feat
q1
=[f
enc_0_real
,f
enc_2_real
,f
enc_4_real
,f
enc6_real
,f
enc_real
]。
[0086]
具体地,将生成数据fakeb作为编码器输入,编码器结构如步骤s32中描述,将编码器的第二个网络层的输出特征图记为f
enc_2_fake
、将编码器第四个网络层的输出特征图记为f
enc_4_fake
、将第一个残差块的输出特征图记为f
enc_6_fake
、将编码器的输出特征图记为f
enc_fake
,将输入图像fakeb使用opencv中的reflectionpad2d函数进行3倍填充后的结果,记为f
enc_0_fake
,与特征图f
enc_2_fake
、f
enc_4_fake
、f
enc_6_fake
、f
enc_fake
提取出来,结合在一起生成feat
k1
,feak
k1
=[f
enc_0_fake
,f
enc_2_fake
,f
enc_4_fake
,f
enc6_fake
,f
enc_fake
]。
[0087]
进一步的,逐层读取feat
k1
中的特征图,feat
k1
中的特征图可表示为
为输入特征图的通道数,为输入特征图的高,为输入特征图的宽,首先将其转换为在区间内随机选取256个采样点,形成采样点矩阵id
k1_m_patch
,按采样点矩阵id
k1_m_patch
选取的点在转换后的第m个特征图(m≤5)的第一个维度上取值,得到f
k1_m_sample
,f
k1_m_sample
可表示为将采样点id
k1_m_patch
保存,并将f
k1_m_sample
输入步骤s32中多层感知网络,将多层感知网络输出结果记为f
k1_m_sample
′
,f
k1_m_sample
′
可表示为[256,256],将feat
k1
中5个特征图经过多层感知网络处理后的结果f
k1_1_sample
′
,...,f
k1_5_sample
′
结合在一起,记为f
k1_pool
,将feat
k1
中5个特征图随机选取采样点矩阵id
k1_1_patch
,...,id
k1_5_patch
结合在一起,记为id
k1_sample
,逐层读取feat
q1
中的特征图并输入多层感知网络,对读取的第m个特征图(m≤5),按照id
k1_sample
列表中保存的第m个采样点矩阵id
k1_m_patch
选取的点在特征图上取值,得到f
q1_m_sample
,并将f
q1_m_sample
输入步骤s32中的多层感知网络,将多层感知网络输出结果记为f
q1_m_sample
′
,将feat
q1
中5个特征图经过多层感知网络处理后的结果id
q1_1_patch
,...,id
q1_5_patch
结合在一起,记为f
q1_pool
;f
k1_pool
与f
q1_pool
为源域多层分块对比数据,将其作为源域对比损失l
patchnce
(g,p,a)的输入。
[0088]
进一步的,将源域数据realb与步骤s31中的生成数据idtb输入生成网络中的编码器,按顺序提取t层特征图(t=5),得到feat
q2
与feat
k2
。
[0089]
具体地,将源域数据realb作为编码器输入,编码器结构如步骤s32中描述,将编码器的第二个网络层的输出特征图记为f
enc_2_real
、将编码器第四个网络层的输出特征图记为f
enc_4_real
、将第一个残差块的输出特征图记为f
enc_6_real
、将编码器的输出特征图记为f
enc_real
,将输入图像realb使用opencv中的reflectionpad2d函数进行3倍填充后的结果,记为f
enc_0_real
,与上述四个特征图f
enc_2_real
、f
enc_4_real
、f
enc_6_real
、f
enc_real
提取出来,结合在一起生成feat
q2
,feat
q2
=[f
enc_0_real
,f
enc_2_real
,f
enc_4_real
,f
enc6_real
,f
enc_real
]。
[0090]
具体地,将生成数据idtb作为编码器输入,编码器结构如步骤s32中描述,将编码器的第二个网络层的输出特征图记为f
enc_2_fake
、将编码器第四个网络层的输出特征图记为f
enc_4_fake
、将第一个残差块的输出特征图记为f
enc_6_fake
、将编码器的输出特征图记为f
enc_fake
,将输入图像fakeb使用opencv中的reflectionpad2d函数进行3倍填充后的结果,记为f
enc_0_fake
,与特征图f
enc_2_fake
、f
enc_4_fake
、f
enc_6_fake
、f
enc_fake
提取出来,结合在一起生成feat
k2
,feak
k2
=[f
enc_0_fake
,f
enc_2_fake
,f
enc_4_fake
,f
enc6_fake
,f
enc_fake
]。
[0091]
进一步的,逐层读取feat
k2
中的特征图,feat
k2
中的特征图可表示为中的特征图可表示为为输入特征图的通道数,为输入特征图的高,为输入特征图的宽,首先将其转换为在区间内随机选取256个采样点,形成采样点矩阵id
k2_m_patch
,按采样点矩阵id
k2_m_patch
选取的点在转换后的第m个特征图(m≤5)的第一个维度上取值,得到f
k2_m_sample
,f
k2_m_sample
可表示为[256,c
featk
]。将采样点id
k2_m_patch
保存,并将f
k1_m_sample
输入步骤s32中多层感知网络,将多层感知网络输出结果记为f
k2_m_sample
′
,f
k2_m_sample
′
可表示为[256,256]。将feat
k2
中5个特征图经过多层感知网络处理后的结果f
k2_1_sample
′
,...,f
k2_5_sample
′
结合在一起,记为f
k2_pool
,将feat
k2
中5个特征图随机选取采样点矩阵id
k2_1_patch
,...,id
k2_5_patch
结合在一起,记为id
k2_sample
。逐层读取feat
q2
中的特征图并输入多层感知网络,对读取的第m个特征图(m≤5),按照id
k2_sample
列表
中保存的第m个采样点矩阵id
k2_m_patch
选取的点在特征图上取值,得到f
q2_m_sample
,并将f
q2_m_sample
输入步骤s32中多层感知网络,将多层感知网络输出结果记为f
q2_m_sample
′
。将feat
q2
中5个特征图经过多层感知网络处理后的结果id
q2_1_patch
,...,id
q2_5_patch
结合在一起,记为f
q2_pool
;f
k2_pool
与f
q2_pool
为源域多层分块对比数据,将其作为目标域对比损失l
patchnce
(g,p,b)的输入。
[0092]
s35、设计损失函数,根据损失函数利用反向传播对网络参数进行调整。
[0093]
具体地,损失函数主要由对抗损失,源域对比损失、目标域对比损失三者构成,将损失函数记为l
total_t
,则损失函数可表示如下:
[0094]
l
total_t
=l
gan
(g,d,a,b)+γal
patchnce
(g,p,a)+γbl
patchnce
(g,p,b)
[0095]
其中,g表示生成网络,d表示判别网络,p表示多层下采样网络,a表示源域,b表示目标域,l
gan
(g,d,a,b)表示对抗损失,l
patchnce
(g,p,a)表示源域数据对比损失,l
patchnce
(g,p,b)表示目标域数据对比损失,其中,γa与γb分别为源域对比损失与目标域对比损失的权重,本专利选取γa=1、γb=1。通过优化对抗损失l
gan
(g,d,a,b)学习目标域的外观特征,使生成网络的输出图像更符合目标域的分布规律,通过优化对比损失l
patchnce
(g,p,a)、l
patchnce
(g,p,b)将输入输出中关联信号拉进,同时与样本中的其他信号形成对比,使编码器可以专注于两个域(源域与目标域)之间的共性部分(如形状),忽略两个域之间的差异性部分(如颜色)。
[0096]
进一步的,本实施例中,步骤s35中对于生成网络与判别网络,通过优化对抗损失l
gan
(g,d,a,b)学习目标域的外观特征,使生成网络的输出图像更符合目标域的分布规律,对抗损失如式所示:
[0097]
l
gan
(g,d,a,b)=e
b~b
[logd(b)]+e
a~a
[log(1-d(g(a)))]
[0098]
其中,g表示生成网络,d表示判别网络,a表示源域,b表示目标域,e
b~b
[logd(b)]表示多个目标域数据的平均损失,e
a~a
[log(1-d(g(a)))]表示多个源域数据的平均损失,若将c个目标域数据输入d,则若将d个合成数据输入d,则d(b)表示将目标域数据输入判别网络d返回的值,g(a)表示将源域数据输入生成网络g返回的值。
[0099]
对于判别网络,需要提高其判断数据真假的能力,即接收到生成数据(源域转换的fakeb)时,d会给出低分,接收到真实数据(目标域realb)时,d会给出高分。因此,对d进行训练,要让d(b)的值尽可能高,即让logd(b)尽可能高,而对于生成数据的判断d(g(a))会产生低分,则log(1-d(g(a)))的值也会变高。因此判别网络的训练就是使l
gan
(g,d,a,b)取到最大值的过程。
[0100]
对于生成网络,我们的目标是通过训练,让生成器生成可以以假乱真的数据,即让d(g(a))产生高分,让log(1-d(g(a)))变小,因此生成网络的训练实质上是让l
gan
(g,d,a,b)取到最小值的过程。
[0101]
进一步的,通过优化reala与fakeb的对比损失及realb与identb的对比损失,来保持转换前后数据在生成网络中语义表征的一致性。
[0102]
对于生成网络,其输入与输出图像应该有同样的结构,对应的图像块之间也应该
有相应的结构,本发明使用多层次图像块进行学习。首先通过步骤s32中生成网络g的编码器g
enc
对特征层进行编码,其中不同层的不同空间位置代表不同的图像块(patch),层数越深,一个空间点代表的图像块越大,然后选择t层感兴趣的特征图(即步骤s34所示的feat
q1
、feat
k1
、feat
q2
、feat
k2
),本实施例中t=5,将其通过步骤s34所示操作,产生特征栈{z
t
}
t
(即步骤s34所示的f
q1_pool
、f
k1_pool
、f
q2_pool
、f
k2_pool
均表示特征栈)。
[0103]
具体地,如步骤s32所示,将输入数据reala/realb编码为特征向量列表feat
q1
/feat
q2
,将其对应的生成数据fakeb/idtb编码为特征向量列表feat
k1
/feat
k2
,将其源域特征向量列表(feat
q1
/feat
k1
)输入mlp后生成f
q1_pool
(对应reala)与f
k1_pool
(对应fakeb),将其目标域特征向量列表(feat
q2
/feat
k2
)输入mlp后生成f
q2_pool
(realb)与f
k2_pool
(idtb),在f
k_pool
(f
k1_pool
/f
k2_pool
)的某一特征向量中采样一个patch(即query,记为v),并将其与f
q_pool
(f
q1_pool
/f
q2_pool
)的中对应特征向量的相同位置的patch(即正样本记为v
+
)与h个不同位置的patch(即负样本记为v-)进行比较,逐patch对比损失可表示如下:
[0104][0105]
其中,v表示query,v
+
表示正样本,v-表示负样本,h表示负样本总数,τ表示温度系数,表示正样本被选中的概率。
[0106]
具体地,源域数据的对比损失可以表示如下:
[0107][0108]
其中,g表示生成网络,p表示两层mlp网络,a表示源域数据集,a表示源域数据集的单个数据,e
a~a
表示多个源域数据的平均对比损失,g(a)表示合成数据fakeb,将源域数据reala经过编码器进行特征映射的结果表示为g
enc
(a),t表示在编码器的输出特征映射g
enc
(a)中选择的感兴趣层(即feat
q1
),feat
q1
的t层特征图通过p后可以得到一个特征栈{z
t
}
t
,同时将合成数据fakeb的t层感兴趣特征图feat
k1
通过p后得到的特征栈表示为栈表示为表示第t层的输出,t∈{1,2,...,t},将选取的第t层的空间位置索引表示为s,s∈{1,2,...,s
t
},s
t
表示第t层的空间位置数。将中第t层选取的qurey记为同时将{z
t
}
t
第t层中相应的特征记为第t层中相应的特征记为表示c
t
维向量,将{z
t
}
t
第t层中其他特征记为第t层中其他特征记为表示(s
t-1)
×ct
的矩阵,c
t
表示第t层通道数。表示上述逐patch对比损失。
[0109]
具体地,本实施例中在目标域图像中使用对比损失l
patchnce
(g,p,b)来防止生成网络的不必要变化,目标域数据的对比损失表示如下:
[0110][0111]
其中,g表示生成网络,p表示两层mlp网络,p表示目标域数据集,b表示目标域数据集的单个数据,e
b~b
表示多个目标域数据的平均对比损失,g(b)表示idtb,将目标域数据
realb经过编码器进行特征映射的结果表示为g
enc
(b),t表示在编码器的输出特征映射g
enc
(b)中选择的感兴趣层(即feat
q2
),feat
q2
的t层特征图通过p后可以得到一个特征栈{z
t
}
t
,同时将idtb的t层感兴趣特征图feat
k2
通过p后得到的特征栈表示为通过p后得到的特征栈表示为表示第t层的输出,t∈{1,2,...,t},将选取的第t层的空间位置索引表示为s,s∈{1,2,...,s
t
},s
t
表示第t层的空间位置数。将中第t层选取的qurey记为同时将{z
t
}
t
第t层中相应的特征记为第t层中相应的特征记为表示c
t
维向量,将{z
t
}
t
第t层中其他特征记为第t层中其他特征记为表示(s
t-1)
×ct
的矩阵,c
t
表示第t层通道数。表示上述逐patch对比损失。
[0112]
s40、利用训练好的最优风格迁移网络模型进行图像风格转换,将源域数据输入训练好的最优风格迁移网络模型,得到转换后目标域数据,如图7所示,对透明液体及风格转换后的绿色液体数据进行手动标注,从里面随机挑选1600张数据,按照3:1划分训练集与测试集,用于液体检测模型训练及测试,训练集数据1200张,测试集数据400张。
[0113]
s50、搭建基于yolov5s的目标检测框架实现液体的精准检测,目标检测框架如图8所示,基于csp darknet网络与空间金字塔池化、特征图切片构建骨干网络,进行特征提取,在特征提取阶段利用空间金字塔池化在保证计算量的前提下实现更丰富的梯度组合;基于fpn与pan构建特征融合网络,进行高低层多尺度信息进行融合,增强特征图的信息表达能力,fpn主要是通过融合高低层特征提升小目标的检测效果。panet在fpn的基础上加了一个自底向上方向的增强,由于目标检测是像素级别的分类,浅层特征多是边缘、形状等特征,网络浅层特征信息对于目标检测非常重要。自底向上方向的增强结构可以充分利用网络浅层特征,使得顶层特征图也可以享受到底层带来的丰富的位置信息,从而提升了大目标的检测效果;将特征融合后的特征图输入检测头,进行目标分类与回归。
[0114]
s60、将步骤s40获取的液体图像风格转换数据在步骤s50搭建的液体检测模型上进行迭代训练,获得最优液体检测网络模型。
[0115]
进一步的,本实施例中,步骤s60中每一次迭代训练的具体方法为:
[0116]
s61、构建骨干网络,进行特征提取。利用骨干网络对训练数据集进行高、中、低层特征提取,该骨干网络包含十个网络层,十个网络层包括五个cbs网络层,四个csp1_x(即c3)模块,一个sspf模块,将第i个网络层的输出的特征图定义为fi,特征图的尺寸记为ci×
wi×hi
,i=1,2,...,9,10,由于特征融合网络中c3不使用短连接,所以特征提取中的c3层使用csp1_x表示,特征融合中的c3使用csp2_x表示;
[0117]
具体地,cbs网络层为卷积、归一化与silu激活函数组合层;csp1_x模块由cbs网络层与残差块组成,其中x表示改层中残差块个数,对于一个csp1_x模块的输入f
input
,将输入分为两个分支,第一个分支使用cbs网络层对输入进行处理,生成子特征图f
input_c1
,第二个分支先经过cbs网络层,然后再经过x个残差块,生成子特征图f
input_c2
,然后将两个子特征图f
input_c1
与f
input_c2
进行拼接(concat),最后经过cbs网络层得到csp1_x模块的输出f
output
;sppf网络层为空间金字塔池化层,由cbs网络层与最大池化层(maxpool)组成,对于一个sspf模块的输入f
input
,依次使用cbs网络层及三个最大池化层进行处理,生成特征图finput_1
、f
input_2
、f
input_3
与f
input_4
,然后将特征图f
input_1
、f
input_2
、f
input_3
与f
input_4
进行concat,最后经过cbs网络层得到sspf模块的输出f
output
。利用骨干网络进行特征提取时,输入数据需依次经过cbs网络层、cbs网络层、csp1_1模块、cbs网络层、csp1_2模块、cbs网络层、csp1_3模块、cbs网络层、csp1_1模块、sspf模块;
[0118]
具体地,对于一个尺寸为3
×
300
×
152的原始图输入图像,首先对其进行padding,padding后的输入图像尺寸c
in
×hin
×win
=3
×
320
×
160,作为检测网络的输入f
in
。在检测网络中,第一个网络层为cbs网络层,使用c1个尺寸为6
×
6的卷积核对输入图像f
in
进行处理,步长为2,padding为2,生成尺寸为c1×
h1×
w1的特征图,将其记为f1,并作为第二个网络层的输入,其中c1=32,=32,第二个网络层为cbs网络层,使用c2个尺寸为3
×
3的卷积核对其进行处理,步长为2,生成尺寸为c2×
h2×
w2的特征图,将其记为f2,并作为第三个网络层的输入,其中c2=64,第三个网络层为csp1_1模块,该模块将输入分为两个分支,第一个分支使用1个cbs网络层对其进行处理生成尺寸为c
3_1
×
h3×
w3的特征图,将其记为f
3_1
,c
3_1
=64;第二个分支先经过1个cbs网络层,然后再经过1个残差块,生成尺寸为c
3_2
×
h3×
w3的特征图,将其记为f
3_2
,c
3_2
=64,将f
3_1
与f
3_2
按通道维度合并,然后再输入一个cbs网络层,输出尺寸为c3×
h3×
w3的特征图,将其记为f3,并作为第四个网络层的输入,c3=64,第四个网络层为cbs网络层,使用c4个尺寸为3
×
3的卷积核对其进行处理,步长为2,生成尺寸为c4×
h4×
w4的特征图,将其记为f2,并作为第五个网络层的输入,其中c4=128,=128,第五个网络层为csp1_2模块,该模块将输入分为两个分支,第一个分支使用1个cbs网络层对其进行处理生成尺寸为c
5_1
×
h5×
w5的特征图,将其记为f
5_1
,c
5_1
=128,第二个分支先经过1个cbs网络层,然后再经过2个残差块,生成尺寸为c
5_2
×
h5×
w5的特征图,将其记为f
5_2
,c
5_2
=128,将f
5_1
与f
5_2
按通道维度合并,然后再输入一个cbs网络层,输出尺寸为c5×
h5×
w5的特征图,将其记为f5,并作为第六个网络层的输入,c5=128,第六个网络层为cbs网络层,使用c6个尺寸为3
×
3的卷积核对其进行处理,步长为2,生成尺寸为c6×
h6×
w6的特征图,将其记为f6,并作为第七个网络层的输入,其中c6=256,第七个网络层为csp1_3模块,该模块将输入分为两个分支,第一个分支使用1个cbs网络层对其进行处理生成尺寸为c
7_1
×
h7×
w7的特征图,将其记为f
7_1
,c
7_1
=256;第二个分支先经过1个cbs网络层,然后再经过3个残差块,生成尺寸为c
7_2
×
h7×
w7的特征图,将其记为f
7_2
,c
7_2
=64,将f
7_1
与f
7_2
按通道维度合并,然后再输入一个cbs网络层,输出尺寸为c7×
h7×
w7的特征图,将其记为f7,并作为第
八个网络层的输入,c7=256,第八个网络层为cbs网络层,使用c8个尺寸为3
×
3的卷积核对其进行处理,步长为2,生成尺寸为c8×
h8×
w8的特征图,将其记为f8,并作为第九个网络层的输入,其中c8=512,第九个网络层为csp1_1模块,该模块将输入分为两个分支,第一个分支使用1个cbs网络层对其进行处理生成尺寸为c
9_1
×
h9×
w9的特征图,将其记为f
9_1
,c
9_1
=128,第二个分支先经过1个cbs网络层,然后再经过1个残差块,生成尺寸为c
9_2
×
h9×
w9的特征图,将其记为f
9_2
,c
9_2
=512,将f
9_1
与f
9_2
按通道维度合并,然后再输入一个cbs网络层,输出尺寸为c9×
h9×
w9的特征图,将其记为f9,并作为第十个网络层的输入,c9=512,第十个网络层为sppf模块,该模块首先将特征图输入一个cbs,生成特征图f
10_1
,然后依次使用三个最大池化层进行处理,第一个池化层的感受野为5
×
5,步长为1,padding为2,第一个池化层的感受野为9
×
9,步长为1,padding为4,第三个池化层的感受野为13
×
13,步长为1,padding为6,生成特征图f
10_2
、f
10_3
与f
10_4
,然后将特征图f
10_1
、f
10_2
、f
10_3
与f
10_4
在通道维度进行concat,然后再输入一个cbs网络层,输出尺寸为c
10
×h10
×w10
的特征图,将其记为f
10
,并作为骨干网络的输出,c
10
=512,
[0119]
s62、构建特征融合网络,增强特征图表达能力,选择步骤s61中骨干网络中第五个、第七个和第十个网络层的输出特征图f5,f7,f
10
输入fpn特征融合模块进行高层特征融合,输出融合后的三个特征图f5′
、f7′
、f
10
′
,之后将fpn特征融合模块的三个输出特征图f5′
、f7′
、f
10
′
输入pan特征融合模块进行低层特征融合,输出融合后的三个特征图f5″
、f7″
、f
10
″
;
[0120]
具体地,fpn特征融合模块包括两个上采样层、两个cbs网络层、一个csp2_x模块,pan特征融合模块包括两个cbs网络层、三个csp2_x模块,cbs网络层为卷积、归一化与silu激活函数组合层,如步骤s61中描述的,上采样层使用最近邻插值方法,csp2_x模块由cbs网络层与残差块组成,其中x表示改层中残差块个数,对于一个csp2_x模块的输入f
input
,首先经过cbs网络层,然后再经过x个残差块,输出特征图f
output
;
[0121]
具体地,fpn特征融合模块具体操作如下:
[0122]
a.对于步骤s61中骨干网络中第十个网络层的输出特征图f
10
,首先将其输入cbs网络层,使用c
f1
个尺寸为1
×
1的卷积核对其进行处理,步长为1,生成尺寸为c
f1
×hf1
×wf1
的特征图,将其记为f
f1
,c
f1
=256,
[0123]
b.将f
f1
输入上采样层,对特征图进行插值,生成尺寸为c
f2
×hf2
×wf2
的特征图,将其记为f
f2
,c
f2
=256,
[0124]
c.将特征图f
f2
与步骤s61中第七个网络层输出的特征图f7按通道维度进行合并,生成尺寸为c
f3
×hf3
×wf3
的特征图,将其记为f
f3
,c
f3
=512,=512,
[0125]
d.将特征图f
f3
输入csp2_1模块,先首先经过cbs网络层,然后再经过1个残差块,生成尺寸为c
f4
×hf4
×wf4
的特征图,将其记为f
f4
,c
f4
=256,
[0126]
e.将特征图f
f4
输入cbs网络层,使用c
f5
个尺寸为1
×
1的卷积核对其进行处理,步长为1,生成尺寸为c
f5
×hf5
×wf5
的特征图,将其记为f
f5
,c
f5
=128,
[0127]
f.将特征图f
f5
输入上采样层,对特征图进行插值,生成尺寸为c
f6
×hf6
×wf6
的特征图,将其记为f
f6
,c
f6
=128,
[0128]
g.将特征图f
f6
与步骤s61中第五个网络层输出的特征图f5按通道维度进行合并,生成尺寸为c
f7
×hf7
×wf7
的特征图,将其记为f
f7
,c
f7
=256,=256,
[0129]
h.特征图f
f7
、f
f5
、f
f1
分别表示步骤s62中特征图f5′
、f7′
、f
10
′
。
[0130]
具体地,pan特征融合模块具体操作如下:
[0131]
a.对于步骤s62中的输出特征图f
f7
,将其输入csp2_1模块,首先经过cbs网络层,然后再经过1个残差块,生成尺寸为c
p1
×hp1
×wp1
的特征图,将其记为f
p1
,c
p1
=128,
[0132]
b.将特征图f
p1
输入cbs网络层,使用c
p2
个尺寸为3
×
3的卷积核对其进行处理,步长为2,padding为1,生成尺寸为c
p2
×hp2
×wp2
的特征图,将其记为f
p2
,c
p2
=128,
[0133]
c.将特征图f
p2
与步骤s62中的输出特征图f
f5
按通道维度进行合并,生成尺寸为c
p3
×hp3
×wp3
的特征图,将其记为f
p3
,c
p3
=256,
[0134]
d.将特征图f
p3
输入csp2_1模块,首先经过cbs网络层,然后再经过1个残差块,生成尺寸为c
p4
×hp4
×wp4
的特征图,将其记为f
p4
,c
p4
=256,
[0135]
e.将特征图f
p4
输入cbs网络层,使用c
p5
个尺寸为3
×
3的卷积核对其进行处理,步长为2,padding为1,生成尺寸为c
p5
×hp5
×wp5
的特征图,将其记为f
p5
,c
p5
=256,
[0136]
f.将特征图f
p5
与步骤s62中的输出特征图f
f1
按通道维度进行合并,生成尺寸为c
p6
×hp6
×wp6
的特征图,将其记为f
p6
,c
p6
=256,
[0137]
g.将特征图f
p6
输入csp2_1模块,首先经过cbs网络层,然后再经过1个残差块,生成
尺寸为c
p7
×hp7
×wp7
的特征图,将其记为f
p7
,c
p7
=512,
[0138]
h.特征图f
p1
、f
p4
、f
p7
分别表示步骤s62中特征图f5″
、f7″
、f
10
″
。
[0139]
s63、首先利用cbs网络层对步骤s62输出的三个特征图f5″
、f7″
、f
10
″
进行处理,输出三个检测层,将特征图f5″
尺寸改变为3.(a+5)
×hp1
×wp1
,记为fs,该特征图用于小目标的检测,将特征图f7″
保持原尺寸3.(a+5)
×hp4
×wp4
,记为fm,该特征图用于中等目标的检测,将特征图f
10
″
尺寸改变为3.(a+5)
×hp7
×wp7
,记为f
l
,该特征图用于大目标的检测,其中a表示检测类别数,然后将三个检测层输入检测头进行分类与回归。
[0140]
s64、设计损失函数,根据损失函数利用反向传播对网络参数进行调整;
[0141][0142]
其中,n为检测层个数,b是标签分配到先验框的目标个数,s
×
s为该尺度被分割成的网格数,即第i个的特征图尺寸。l
box
为边界框回归损失,采用ciou损失函数,对每个目标计算;l
obj
为目标物体损失,采用交叉熵损失函数对每个网格计算;l
cls
为分类损失,采用交叉熵损失函数,同样对每个目标计算,λ1、λ2、λ3分别为这三种损失的权重。
[0143]
具体地,回归损失函数如下:
[0144][0145]
式中,其中b、b
gt
分别表示网络预测框和真值框,w
gt
、h
gt
、w、h分别表示真值框的宽高和网络预测框和的宽与高,ρ表示两个框的中心点距离,c表示两个框边界的最远距离。
[0146]
具体地,交叉熵损失函数如下:
[0147][0148]
其中,n表示样本总数,pi表示第n个样本预测为正的概率,yi表示第i个样本的标签。
[0149]
s70、将转换后的绿色液体数据(目标域)输入训练好的最优液体检测网络模型,得到液体检测结果,并与透明液体数据(源域)检测结果进行对比,检测结果如图9所示,其中将源域透明液体输入最优液体检测网络模型的结果如图9中第一行与第三行所示(颜色较浅),将转换后的目标域绿色液体输入检测网络的结果如图9中第二行与第四行所示(颜色较深)。
[0150]
上述实施例所述的基于风格迁移的透明液体感知方法,过程简单、操作方便,利用无需配对的单帧静态rgb图像,即可实现源域与目标域的转换;包括风格转换网络和目标检测网络,通过风格转换模型作为数据增强手段,在保留透明液体数据结构特征的同时,学习目标域的外观特征,将透明液体检测难题转换为有色液体的检测,无色液体数据经过风格转换得到绿色液体数据,其特征纹理更加明显,更加容易训练,降低检测难度,提升模型性
能,之后构建yolov5s模型对风格转换后的液体图像进行精准检测,与以前的方法相比,该方法减轻了对操作域的限制,无需其他附加操作即可完成透明液体的精准感知。
[0151]
显然,以上所描述的实施例仅仅是本发明较佳实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。
技术特征:
1.一种基于风格迁移的透明液体感知方法,其特征在于,包括以下步骤:s10、获取源域数据样本与目标域数据样本,构建两种不同风格的液体数据集;s20、构建轻量级风格迁移网络模型;s30、将所述步骤s10获取的数据在所述轻量级风格迁移网络模型上进行迭代训练,获得最优风格迁移网络模型;s40、利用所述最优风格迁移网络模型进行液体图像风格转换;s50、构建基于yolov5s的液体检测网络模型;s60、将所述步骤s40获取的液体图像风格转换数据在所述液体检测模型上进行迭代训练,获得最优液体检测网络模型;s70、将转换后的液体图像风格数据输入所述最优液体检测网络模型,得到液体检测结果。2.根据权利要求1所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s20中,所述轻量级风格迁移网络模型包括生成网络g、判别网络d和多层感知网络mlp,所述生成网络g包括编码器g
enc
与解码器g
dec
,用于将服从某一分布的数据生成类似于真实训练数据的样本,所述判别网络d用于感知生成网络产生的合成数据和目标域数据的局部图像特征间的差异,所述多层感知网络mlp用于提取输入与输出图像块信息,以进行对比学习。3.根据权利要求2所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s30的具体步骤包括:s31、随机初始化参数,设置批次大小,每次读取批次大小的数据输入所述轻量级风格迁移网络模型进行迭代训练;s32、使用所述生成网络g对输入图像进行编码与解码,生成对应的具有目标域风格的数据fake,将源域数据reala经过风格转换后的结果表示为fakeb,目标域数据realb经过风格转换后的结果表示为idtb;s33、将所述目标域数据realb与所述fakeb输入所述判别网络d,分别输出判别矩阵f
real_b
,f
fake_b
,矩阵每个点代表对应输入图像中的感知域;s34、通过所述编码器g
enc
与多层感知网络mlp获取输入输出图像块的互信息,通过多层分块对比学习实现互信息最大化;s35、设计损失函数,根据损失函数利用反向传播对网络参数进行调整。4.根据权利要求1所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s40中,将源域数据输入所述最优风格迁移网络模型,得到转换后目标域数据,对透明液体数据及风格转换后的有色液体数据进行手动标注并随机挑选数据,按照3∶1的比例划分训练集与测试集,用于后续液体检测网络模型训练及测试。5.根据权利要求4所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s60的具体步骤包括:s61、构建骨干网络,所述骨干网络包含十个网络层,所述十个网络层包括五个cbs网络层,四个csp1_x模块,一个sspf模块,将第i个网络层的输出的特征图定义为f
i
,特征图的尺寸记为c
i
×
h
i
×
w
i
,i=1,2,...,9,10,其中c为编码器输出通道,h为高,w为宽,利用所述骨干网络对所述训练集进行高、中、低层特征提取;
s62、构建特征融合网络,选择所述步骤s61中三个网络层的输出特征图,并将所述三个网络层输入fpn特征融合模块进行高层特征融合,将所述fpn特征融合模块融合后的三个特征图输入pan特征融合模块进行低层特征融合,输出三个上下文特征图;s63、将所述步骤s62中输出的三个上下文特征图输入检测头,进行缺陷分类与回归;s64、设计损失函数,根据损失函数利用反向传播对网络参数进行调整。6.根据权利要求2所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s20中,所述编码器g
enc
包括下采样网络与resnet残差块,所述解码器g
dec
包括resnet残差块与上采样网络;所述判别网络d为马尔科夫判别网络patchgan。7.根据权利要求1所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s10中,所述源域数据为透明液体数据,所述目标域数据为绿色液体数据,数据集中所有数据均为同一尺寸。8.根据权利要求3所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s35中,损失函数包括对抗损失函数、源域对比损失函数和目标域对比损失函数。9.根据权利要求5所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s64中,损失函数包括回归损失函数和交叉熵损失函数。10.根据权利要求3所述的一种基于风格迁移的透明液体感知方法,其特征在于,所述步骤s70中,输入所述最优液体检测网络模型的数据为所述步骤s32中的fakeb。
技术总结
本发明适用于深度学习与目标检测技术领域,涉及一种基于风格迁移的透明液体感知方法,包括:S10、获取源域数据样本与目标域数据样本,构建两种不同风格的液体数据集;S20、构建轻量级风格迁移网络模型;S30、将步骤S10获取的数据在轻量级风格迁移网络模型上进行迭代训练,获得最优风格迁移网络模型;S40、利用最优风格迁移网络模型进行液体图像风格转换;S50、构建基于YOLOv5s的液体检测网络模型;S60、将步骤S40获取的液体图像风格转换数据在液体检测模型上进行迭代训练,获得最优液体检测网络模型;S70、将转换后的液体图像风格数据输入最优液体检测网络模型,得到液体检测结果。本发明过程简单、操作方便,通过风格迁移技术可对透明液体实现精准感知。术可对透明液体实现精准感知。术可对透明液体实现精准感知。
技术研发人员:赵晨阳 李先怀 陈永 易世华 李林峰 韩跟伟 李峻 汤可 余伟峰 蒋鑫伟
受保护的技术使用者:威胜信息技术股份有限公司
技术研发日:2022.12.01
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
