发明内容
针对现有技术中存在的问题,本发明提出一种利用机器学***台监控画面进行去水雾的方法,解决了现有缺陷,通过视频中的连续帧去除图像中的平台雾气影响,复原高质量清晰图像的计算机视觉算法。
本方法无需对大气参数进行建模,以端到端的方式,通过分析视频内的上下文信息直接输出复原后的图像,更符合实际运用的钻井平台场景,鲁棒性更高。
本发明的目的是通过以下技术方案予以实现:
一种利用机器学***台监控画面进行去水雾的方法,包括以下步骤:
S100:通过摄像头按照预定帧率采集钻井平台的视频样本,对视频样本进行抽帧,所述视频样本包括含雾气的视频以及无雾气视频;
S200:从含雾气的视频中取连续的8帧图片,组合成视频帧序列X,X={xi,xi+1,…,xi+7},从无雾气视频中选取与视频帧序列X中的任一图像相似的一帧实际图片x’作为目标图片,并将x’与视频帧序列X组成训练集Xtrain={X,x’};
S300:将准备好的训练集Xtrain分为A、B两部分,其中A部分占训练集的30%,剩余的部分为B部分,以此训练模型model={Gmodel,Dmodel},其中Gmodel为生成式模型,Dmodel 为判别式模型;其中,训练分为2个阶段,训练集的A、B两部分分别用作2个阶段中Gmodel的输入;
S400:模型model训练完毕后,利用模型model中的生成式模型Gmodel对钻井平台的基于视频连续帧的图像去水雾。
优选的,预定帧率为25帧的帧率。
优选的,步骤S300包括:
训练的第1阶段:
1)将训练集的A部分输入到Gmodel,获取Gmodel输出的复原图片y’;
2)计算y’与x’的均方误差loss:
其中,xj’、yj’分别为x’、y’的像素值,n为像素个数,j从0取值到n;
3)若loss不小于设定的第一阈值,则对loss求导计算梯度,并反向传播梯度到Gmodel,以更新模型中的参数,直至loss小于所述设定的第一阈值;
若loss小于第一阈值,则进入训练的第2阶段;
训练的第2阶段:
1)将训练集的B部分输入到Gmodel,获取Gmodel输出的复原图片y’;
2)将y’与x’分别输入到判别模型Dmodel 获取两个判别概率df和dr,同时通过下式求取最大化值:
max(log(df)+log(1-dr)),
并以所述最大化值更新Dmodel的参数,当两个判别概率df、dr的值趋近于0.5时停止更新;
3)获取Dmodel计算判别概率时的中间特征,以计算感知误差Ploss:
其中,vf、vr分别为y’与x’的中间特征,m为中间特征的个数,k从0取值到m;
若Ploss不小于设定的第二阈值,反向传播Ploss以更新Gmodel的参数,直至Ploss小于所述设定的第二阈值;
Ploss小于设定的第二阈值时,训练结束。
优选的,当Gmodel为深度神经网络时,对其训练时,还包括如下步骤:
S301:对于每一张用于训练深度神经网络的图像进行手工标注,标注关键点的位置,得到标注后的每张图像;
S302:以标注后的每张图像作为训练的相应阶段的输入,构造一种辅助神经网络,辅助深度神经网络对图像的学习和训练。
优选的,步骤S302包括如下步骤:
S3021:将标注后的每张图像作为输入,并从所述深度神经网络选择适当的中间层,获取该中间层的输出;
S3022:建立一个由卷积函数构成的辅助神经网络;
S3023:将所述中间层的输出及对应的标注前的每张图像的姿态估计矩阵,均输入到辅助神经网络;
S3024:将辅助神经网络与所述深度神经网络的输出进行合并,共同输入到所述深度神经网络的损失函数以优化所述深度神经网络的学习。
优选的,步骤S3023中的姿态估计矩阵通过如下步骤获得:
S30231:对摄像头的相机进行标定,求解出相机的内参数,所述内参数包括:图像光轴主点、X和Y方向焦距、切向畸变系数、径向畸变系数;
S30232:进一步按如下方式求解姿态估计矩阵:
根据式x = M*[R|t]*X,求解姿态估计矩阵[R|t],
其中,M为相机的内参数,X为世界坐标系,x为已知被拍摄物体的图像像素坐标;R、t分别为姿态估计矩阵的旋转向量及平移向量。
优选的,步骤S3021包括:
通过张正友标定法和已知尺寸的棋盘格,求解出相机的内参数。
优选的,棋盘格取10cm*10cm。
优选的,所述深度神经网络选择ResNet50。
优选的,所述辅助神经网络选择ResNet18。
此外,本发明还揭示了一种利用机器学***台监控画面进行去水雾的方法,包括:
第一步骤中,通过摄像头按照预定帧率采集视频样本,对视频样本进行抽帧:
其中X为包含雾气的视频帧序列,X’为无雾气影响或可忽略雾气影响的视频帧序列, xn、xm’分别是从X和X’中对应视频抽帧后提取的图像;
第二步骤中,从包含雾气的视频序列X中取连续的8张图像,组合成视频帧序列,
,从无雾气视频中选取与
中的图像相似的一张视频帧x’作为目标图片,组成训练集合
;
第三步骤中,将准备好的训练集
分为A,B两部分,其中A部分占训练集的30%,剩余的部分为B,以此训练模型;
第四步骤中,利用训练后的模型对钻井平台的基于视频连续帧的图像去水雾。
本发明相比于传统标记方法的优点在于通过视频中的连续帧去除图像中的平台雾气影响,复原高质量清晰图像的计算机视觉算法。不同于其他通过估算大气退化模型,或者直方图均衡化等基于单张图片的图像增强的传统方法,本方法无需对大气参数进行建模,以端到端的方式,通过分析视频内的上下文信息直接输出复原后的图像,更符合实际运用的钻井平台场景,鲁棒性更高。
上述说明仅是本发明技术方案的概述,为了能够使得本发明的技术手段更加清楚明白,达到本领域技术人员可依照说明书的内容予以实施的程度,并且为了能够让本发明的上述和其它目的、特征和优点能够更明显易懂,下面以本发明的具体实施方式进行举例说明。
具体实施方式
下面将参照附图1至图4更详细地描述本发明的具体实施例。虽然附图中显示了本发明的具体实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
需要说明的是,在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可以理解,技术人员可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名词的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”或“包括”为一开放式用语,故应解释成“包含但不限定于”。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明书的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
为便于对本发明实施例的理解,下面将结合附图以具体实施例为例做进一步的解释说明,且各个附图并不构成对本发明实施例的限定。
一种利用机器学***台监控画面进行去水雾的方法,所述方法包括以下步骤:
第一步骤中,通过摄像头按照预定帧率采集视频样本,对视频样本进行抽帧:
其中X为包含雾气的视频帧序列,X’为无雾气影响或可忽略雾气影响的视频帧序列, xn、xm’分别是从X和X’中对应视频抽帧后提取的图像;
第二步骤中,从包含雾气的视频序列X中取连续的8张图像,组合成视频帧序列,
,从无雾气视频中选取与
中的图像相似的一张视频帧x’作为目标图片,组成训练集
;
第三步骤中,将准备好的训练集分为A,B两部分,其中A部分占训练集的30%,剩余的部分为B,以此训练模型;
第四步骤中,利用训练后的模型对钻井平台的基于视频连续帧的图像去水雾。
其中,第三步骤中,如果训练无法满足要求,则再次返回第二步骤,重新挑选另外的连续8张图像重新挑选与
中的图像相似的一张新的视频帧x’作为目标图片,重新执行第二步骤和第三步骤。
所述的方法的优选实施方式中,预定帧为25帧的帧率。
为了进一步理解本发明,在一个实施例中,本方法通过基于深度学习计算机视觉模型,运用实际场景采集的视频,训练出可以从受雾气干扰的原始图像中重建清晰图像的模型。模型分为两部分:model={Gmodel,Dmodel};
其中Gmodel为生成式模型,Dmodel为判别式模型。在训练过程中,本方法将受水雾干扰的视频序列输入Gmodel与以期望其得到去雾后图片,同时通过Dmodel对Gmodel生产的复原图片进行判别并监督Gmodel的训练过程,其中Gmodel为深度神经网络。更优的,在一个实施例中,Dmodel为深度神经网络。更优的,在一个实施例中,实际的算法部署中,只需要部署生成式模型Gmodel以获得复原图片。
对于本发明,其训练样本的准备过程如下:
1)通过摄像头按照25帧的帧率采集视频样本,对视频样本进行抽帧:
其中X,X’分别为包含雾气的视频帧序列,及无雾气影响或受雾气影响较小的视频帧序列,xn、xm’分别是从X和X’中对应视频抽帧后提取的图像。在其他的图像复原或重建图像的深度学***台进行监控,对于重建图像有较好的约束。因此,只需要两者所拍摄内容的背景,前景相似,光照条件无显著性区别。
2)对采集的图像进行预处理:
一般来说,图像存在前景及背景部分,其中前景部分经常发生变换,而背景部分变换较小。而在本发明所针对的图像去水雾、复原这一领域中,深度学习模型通常需要两张近乎一模一样的无雾气影响和受雾气影响的图片进行成对训练。
发明人注意到:若对前景及背景部分不加区别的输入到网络,当前景部分发生较为明显的变化时,算法模型会因输入的图片中包含不对应部分而训练失败。为解决这个问题,参见图3,其中图3的左图椭圆内代表经常发生变化的前景部分,通过掩码的方式,实际运用于训练的图片中的前景部分,将如右图所示,被屏蔽掉。如此,我们将前景部分通过掩码的方式屏蔽掉,使深度学习模型只专注于感知因水雾影响的图像部分。因此,对于上述本发明的含雾气的视频帧序列,及无雾气影响或受雾气影响较小的视频帧序列,只需要两者所拍摄内容的背景,前景相似,光照条件无显著性区别。预处理时,将前景部分1通过掩码的方式屏蔽掉即可。
3)从包含雾气的视频序列中取连续的8张图像,按前述预处理后,将其组合成视频帧序列
,
4)从无雾气视频序列中选取与前文提取的视频序列中的图像相似的一张视频帧x’作为目标图片,组成训练集合
。
本方法中公开的模型训练方法如图1、图2所示,本方法需要训练两个模型,使得生成式模型Gmodel能够根据输入的雾气图片生成更接近实际图片x’的复原图片y’(注:接近程度由下文的第一阈值决定,即图1中的阈值)。之后将x’与y’输入判别式模型Dmodel,使其能够分辨出哪个是实际图片,哪个是真实图片,并将此信息反馈给生成模型Gmodel,以使其产生更为逼真的复原图片(注:逼真程度由下文的第二阈值决定,即图2中的阈值,第一阈值和第二阈值可以根据经验值确定)。
在另一个实施例中,本发明揭示了一种分阶段式训练方法:将训练分为两个阶段:
首先,运用小部分数据训练Gmodel使其达到一个较为稳定的状态以避免同时训练Gmodel与Dmodel时容易出现的模型崩溃现象;
之后,再利用好剩余的大部分数据同时训练Gmodel与Dmodel。
示例性的:将准备好的训练集分为A,B两部分,其中A部分占训练集的30%(即所述小部分数据),剩余的部分为B。
训练的第1阶段:
1)将训练集的A部分输入到Gmodel,获取Gmodel输出的复原图片y’;
2)计算y’与x’的均方误差loss:
其中,xj’、yj’分别为x’、y’的像素值,n为像素个数,j从0取值到n;
3)若loss不小于设定的第一阈值,则对loss求导计算梯度,并反向传播梯度到Gmodel,以更新模型中的参数,直至loss小于所述设定的第一阈值;
若loss小于第一阈值,则进入训练的第2阶段;
训练的第2阶段:
1)将训练集的B部分输入到Gmodel,获取Gmodel输出的复原图片y’;
2)将y’与x’分别输入到判别模型Dmodel 获取两个判别概率df和dr,同时通过下式求取最大化值:
max(log(df)+log(1-dr)),
并以所述最大化值更新Dmodel的参数,当两个判别概率df、dr的值趋近于0.5时停止更新;
3)获取Dmodel计算判别概率时的中间特征,以计算感知误差Ploss:
其中,vf、vr分别为y’与x’的中间特征,m为中间特征的个数,k从0取值到m;
若Ploss不小于设定的第二阈值,反向传播Ploss以更新Gmodel的参数,直至Ploss小于所述设定的第二阈值;Ploss小于设定的第二阈值时,训练结束;
考虑到现如今的涉及图像的神经网络往往将最后一层的特征送入到最后的分类器Softmax,这意味着特征是通过层层筛选以便将最后“有用”的特征作为图像的表达,问题是这导致某些特征的丢失和信息的遗漏,因此,本实施例是将部分或所有中间特征层的中间特征也利用上,以计算感知误差Ploss。
参见图1、图2,能够发现,与loss类似,感知误差Ploss同样控制是否继续更新Gmodel的参数。
7) 若Ploss不小于设定的第二阈值,反向传播Ploss以更新Gmodel的参数,直至Ploss小于所述设定的第二阈值;结合图2所示,Ploss小于设定的第二阈值时,训练结束。
由此,通过两个训练阶段,最终目的实现了对Gmodel的训练。对于本发明而言,在对Gmodel的训练完成之后,可以直接将Gmodel部署到现场服务器。输入的图片经过Gmodel的处理复原后即去除了水雾,去除水雾的图片可以再发送到其他的应用中以供后续使用。
能够理解,反向传播Ploss可以是类似于loss那样,对Ploss求导计算梯度,并反向传播梯度到Gmodel。
在另一个实施例中,
当Gmodel为深度神经网络时,对其训练时,还包括如下步骤:
S301:对于每一张用于训练深度神经网络的图像进行手工标注,标注关键点的位置,得到标注后的每张图像;
S302:以标注后的每张图像作为训练的相应阶段的输入,构造一种辅助神经网络,辅助深度神经网络对图像的学习和训练。
关于该实施例,考虑到图像识别的最终结果是输出各个关键点在图像上的坐标。然而,如果按照现有技术的做法:深度神经网络对图像进行学习,直接输出二维坐标来进行优化学习,则是一个极其非线性的过程,而且在优化学习时,用以优化的损失函数对神经网络内的权重的约束也会比较弱。因此,在本实施例中,我们根据训练的图像及手工标注的关键点的位置,通过构造一种辅助神经网络,最终构造了一种中间状态,用以辅助深度神经网络的训练及学习。能够理解,当Dmodel也为深度神经网络时,同样可以采用上述辅助神经网络的方式,辅助相应的神经网络对图像进行学习和训练。
在另一个实施例中,步骤S302,包括:
S3021:将标注后的每张图像作为输入,并从所述深度神经网络选择适当的中间层,获取该中间层的输出;
S3022:建立一个由卷积函数构成的辅助神经网络;
S3023:将所述中间层的输出及对应的标注前的每张图像的姿态估计矩阵,均输入到辅助神经网络;
S3024:将辅助神经网络与所述深度神经网络的输出进行合并,共同输入到所述深度神经网络的损失函数以优化所述深度神经网络的学习。
在另一个实施例中,
步骤S3023中的姿态估计矩阵通过如下步骤获得:
S30231:对所述相机进行标定,求解出相机的内参数,所述内参数包括:图像光轴主点、X和Y方向焦距、切向畸变系数、径向畸变系数;
S30232:进一步按如下方式求解姿态估计矩阵:
根据式x = M*[R|t]*X,求解姿态估计矩阵[R|t],
其中,M为相机的内参数,X为世界坐标系,x为已知被拍摄物体的图像像素坐标;R、t分别为姿态估计矩阵的旋转向量及平移向量。
在另一个实施例中,
步骤S3021包括:
通过张正友标定法和已知尺寸的棋盘格,求解出相机的内参数。
例如,通过拍摄在不同方向、不同位置、尺寸已知的棋盘格在图像坐标系中的像素坐标,以及张正友标定法,求解出相机的内参数。
在另一个实施例中,
棋盘格取10cm*10cm。
在另一个实施例中,
所述深度神经网络选择ResNet50。典型的,通过Python来实现本方法。
在另一个实施例中,
所述辅助神经网络选择ResNet18。
在另一个实施例中,
所述卷积函数为Conv(input,w),其中,input表示输入,w表示权重。
在另一个实施例中,损失函数选择均方误差函数。
参见图4,在另一个实施例中,前文所述的中间层输出选择中间层C5:7*7*2048的输出。
对于前文所述的有关实施例,本公开有效降低了相关模型训练时拟合的难度,同时提高了模型的鲁棒性。在同样的测试集中,采用上述图像作为训练集及采用上述训练、优化方法后,模型的
[email protected]精度高于未采用的模型2.76%。进一步需要指出的是,通过基于Ranssac算法的PNP求解姿态估计矩阵时,即使在实际场景验证中,发现PNP求解的平均误差在5%左右,但由于本公开有效降低了相关模型训练时拟合的难度,同时提高了模型的鲁棒性,这使得姿态估计矩阵的误差并不影响后续的实际场景验证。
尽管以上结合附图对本发明的实施方案进行了描述,但本发明并不局限于上述的具体实施方案和应用领域,上述的具体实施方案仅仅是示意性的、指导性的,而不是限制性的。本领域的普通技术人员在本说明书的启示下和在不脱离本发明权利要求所保护的范围的情况下,还可以做出很多种的形式,这些均属于本发明保护之列。