1.本技术属于图像处理技术领域,尤其涉及一种车载视频稳像方法、装置、车辆及存储介质。
背景技术:2.目前车载的视频录制功能是非常通用的,各个车型上都有相关的设备,在录制视频过程中,难免会遇到路面颠簸的情况,这时就需要稳像的功能。稳像分为两种通路,一个是云台为主的硬件稳像方法,一种是纯软件的解决思路。
3.现有技术中通常是利用神经网络提取图像的关键点,从而对全图估计一个运动矩阵,其运动估计准确度低,从而导致视频稳像的处理效果差的问题。
技术实现要素:4.本技术实施例提供了一种车载视频稳像方法、装置、车辆及存储介质,可以提高神经网络对视频图像的运动估计的准确度,从而提升视频稳像的处理效果。
5.第一方面,本技术实施例提供了一种车载视频稳像方法,包括:
6.获取车辆的车载视频;
7.将所述车载视频输入第一神经网络,得到多张网格状的第一运动向量图,其中,所述第一运动向量图用于表征所述车载视频中每相邻两帧图像的后一帧图像相对于前一帧图像的每个网格对应的偏移向量;
8.对所述第一运动向量图进行平滑处理,得到处理后的第二运动向量图;
9.根据所述第二运动向量图,计算得到第一运动光流图,其中,所述第一运动光流图用于表征所述车载视频中每相邻的两帧图像的后一帧图像相对于前一帧图像的每个像素点对应的运动位移;
10.根据所述第一运动光流图对所述车载视频中的帧图像进行运动补偿,得到稳像视频。
11.第二方面,本技术实施例提供了一种车载视频稳像装置,包括:
12.第一获取模块,用于获取车辆的车载视频;
13.网络处理模块,用于将所述车载视频输入第一神经网络,得到多张网格状的第一运动向量图,其中,所述第一运动向量图用于表征所述车载视频中每相邻两帧图像的后一帧图像相对于前一帧图像的每个网格对应的偏移向量;
14.平滑处理模块,用于对所述第一运动向量图进行平滑处理,得到处理后的第二运动向量图;
15.计算模块,用于根据所述第二运动向量图,计算得到第一运动光流图,其中,所述第一运动光流图用于表征所述车载视频中每相邻的两帧图像的后一帧图像相对于前一帧图像的每个像素点对应的运动位移;
16.运动补偿模块,用于根据所述第一运动光流图对所述车载视频中的帧图像进行运
动补偿,得到稳像视频。
17.第三方面,本技术实施例提供了一种车辆,包括终端设备,该终端设备包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述的车载视频稳像方法。
18.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的车载视频稳像方法。
19.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的车载视频稳像方法。
20.本技术第一方面实施例与现有技术相比存在的有益效果是:通过获取车辆的车载视频;将车载视频输入第一神经网络,得到多张网格状的第一运动向量图,其中,第一运动向量图用于表征车载视频中每相邻两帧图像的后一帧图像相对于前一帧图像的每个网格对应的偏移向量;对第一运动向量图进行平滑处理,得到处理后的第二运动向量图;根据第二运动向量图,计算得到第一运动光流图,其中,第一运动光流图用于表征车载视频中每相邻的两帧图像的后一帧图像相对于前一帧图像的每个像素点对应的运动位移;根据第一运动光流图对车载视频中的帧图像进行运动补偿,得到稳像视频。本技术实施例利用第一神经网络,将全图按照网格方式估计出网格状的运动向量图,并通过该网络状的运动向量图进行车载视频图像的稳像处理,在做到了端到端的运动估计的基础上,将原有的单个运动矩阵估计的方法扩展到平面网格,提高了神经网络对视频图像的运动估计的准确度,从而提升视频稳像的处理效果。
21.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
22.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1是本技术一实施例提供的车载视频稳像方法的流程示意图;
24.图2是图1中的步骤s203的平滑处理过程的直观展示示意图;
25.图3是图2中步骤s204的具体实现步骤流程示意图;
26.图4是本技术一实施例提供的车辆视频稳像装置的结构示意图;
27.图5是本技术一实施例提供的车辆的结构示意图。
具体实施方式
28.本技术实施例的车载视频稳像方法需要利用到第一神经网络,而第一神经网络是预先训练好的网络。所以在详述本技术实施例的车载视频稳像方法之前,首先说明第一神经网络的训练过程,其中,第一神经网络的训练过程如下:
29.s101,获取训练数据集,训练数据集包括多个数据对,每个数据对包括第一图像和
第二图像,其中,第二图像相对于第一图像存在抖动。
30.需要说明的是,第一图像与第二图像的图像内容连续。可选的,第一图像和第二图像可为样本视频中相邻两帧图像,其中第二图像为相邻两帧图像中的后一帧图像,第一图像为相邻两帧图像中的前一帧图像。
31.s102,基于训练数据集对无监督神经网络进行训练,得到训练后的第一神经网络。
32.这里,无监督神经网络是一种不需要给出类别(标签),只需要给出输入的神经网络。
33.在一种可能的实现方式中,步骤s102的实现过程可以包括:
34.步骤s1021,将数据对中的第一图像和第二图像输入无监督神经网络,得到网格状的第三运动向量图,第三运动向量图用于表征第二图像相对于第一图像的每个网格偏移向量。
35.这里,第一图像和第二图像输入无监督神经网络,会在第一图像和第二图像之间构建一个网格总个数为s
×
s的网格图,其中一个s表示网格图的行数,另一个s表示网格图的列数,每个网格通过无监督神经网络均会回归4个运动向量δ
i,j
,其中,i∈[0,s),j∈[0,s),其中,δ
i,j
表示网格图中坐标位置为(i,j)的网格角点对应的运动向量,i表示网格图的行号,j表示网格图的列号,最后输出一个网格状的第三运动向量图,该第三运动向量图为一个s
×s×
3的三维运动矩阵,其中s
×s×
3的三维运动矩阵中每个维度均表示x方向、y方向和z方向的运动偏移量。
[0036]
步骤s1022,根据第三运动向量图,计算得到第二运动光流图,第二运动光流图用于表征第二图像相对于第一图像的每个像素点对应的运动位移。
[0037]
在一种可能的实现方式中,步骤s1022的实现过程可包括:
[0038]
s1,将第三运动向量图进行直线线性变换,计算得到第三运动向量图中每个网格的单应性矩阵。
[0039]
这里,将第三运动向量图中每个网格对应的4个运动向量进行直线线性变换,计算得到第三运动向量图中每个网格的单应性矩阵。
[0040]
s2,根据第三运动向量图中每个网格的单应性矩阵,计算得到第一运动光流图。
[0041]
具体的,针对第三运动向量图中每个网格,获取网格投影到图像上所包含的多个像素点对应的齐次坐标;根据网格的单应性矩阵和网格投影的图像上所包含的多个像素点对应的齐次坐标,计算得到第二运动光流图。
[0042]
通过上述处理过程,利用稀疏网格的单应性矩阵去近似全局的光流图,即第二运动光流图,可以降低计算量,提升运行速度。
[0043]
步骤s1023,根据第二运动光流图,对第二图像进行双线性插值运算,得到第二图像运动后的第三图像。
[0044]
需要说明的是,基于第二运动光流图,对第二图像进行双线性插值运算,得到的第二图像运动后的第三图像,是对第二图像的运动补偿,即利用神经网络,得到预估的第二图像相对于第一图像的运动位移(第二运动光流图),利用第二图像相对于第一图像的运动位移修正第二图像,得到第三图像。这里,第三图像需要与第一图像尽可能的相似,才可以达到稳像的效果,所以需要通过计算第一图像与第三图像之间的损失值,不断地优化无监督神经网络,从而得到准确的运动估计。
[0045]
步骤s1024,计算第一图像与第三图像之间的损失值。
[0046]
这里,可采用下述公式(1)计算第一图像与第三图像之间的损失值。
[0047][0048]
其中,a
i,j
表示第一图像中第i行第j列的像素值,b’i,j
表示第三图像中第i行第j列的像素值,i表示图像像素的行号,j表示图像像素的列号,m表示图像像素的总行数,n表示图像像素的总列数,l1表示第一图像与第三图像之间的损失值。
[0049]
步骤s1025,基于所述损失值更新所述无监督网络的网络参数,获得所述第一神经网络。
[0050]
本步骤中,基于损失值更新无监督网络的网络参数后,若本次更新后的无监督网络的损失值小于预设阈值,且本次更新后的无监督网络的损失值与其上一次更新后的无监督网络的损失值相等,则将本次更新后的无监督网络确定为第一神经网络,否则,返回执行步骤s1024以及后续步骤,直至本次更新后的无监督网络的损失值小于预设阈值,且本次更新后的无监督网络的损失值与其上一次更新后的无监督网络的损失值相等。或者,基于损失值更新无监督网络的网络参数后,判断网络参数更新的次数,若网络参数更新的次数达到预设次数,则将本次更新后的无监督网络确定为第一神经网络;否则,返回执行步骤s1024以及后续步骤,直至本次更新后的无监督网络对应的网络参数更新的次数达到预设次数,将本次更新后的无监督网络确定为第一神经网络。
[0051]
图1示出了本技术提供的车载视频稳像方法的示意性流程图,参照图1,对该车载视频稳像方法的详述如下:
[0052]
s201,获取车辆的车载视频。
[0053]
这里,可通过安装在车辆上的视频录制设备获取车辆的车载视频。
[0054]
s202,将车载视频输入第一神经网络,得到多张网格状的第一运动向量图,其中,第一运动向量图用于表征车载视频中每相邻两帧图像的后一帧图像相对于前一帧图像的每个网格对应的偏移向量。
[0055]
这里,第一神经网络是预先训练好的神经网络。具体训练过程详见上述说明,这里不再赘述。
[0056]
需要说明的是,车载视频中每相邻两帧图像经经过第一神经网络输出一张网格状的第一运动向量图。比如,车载视频包括n帧图像,n帧图像输入第一神经网络,第一帧图像和第二帧图像对应一张网格状的第一运动向量图,第二帧图像和第三帧图像对应一张网格状的第一运动向量图,以此类推,得到n-1张网络状的第一运动向量图。
[0057]
s203,对第一运动向量图进行平滑处理,得到处理后的第二运动向量图。
[0058]
需要说明的是,对第一运动向量图进行平滑处理,其目的是为了去除帧图像遇到的明显的抖动,保证整个车载视频的运动趋势的一致性。
[0059]
在一种可能的实现方式中,步骤s203的实现过程可以包括:
[0060]
s2031,针对车载视频的每帧图像,获取当前帧图像的前后k帧图像各自对应的第一运动向量图,其中,k为正整数。
[0061]
s2032,将当前帧图像的前后k帧图像各自对应的第一运动向量图进行加权融合计算,得到第二运动向量图。
[0062]
具体的,可采用下述公式(2)计算得到第二运动向量图:
[0063][0064]
其中,是符合高斯分布的权值,表示当前帧图像的前后帧图像对当前帧图像的影响,其中距离当前帧图像越远的帧图像,对当前帧的影响越小。-k表示当前帧之前的第k帧图像,k表示当前帧之后的第k帧图像,表示当前帧图像tk的运动向量,即第一运动向量图对应的各运动向量,表示帧图像tk+的运动向量,表示当前帧图像的第二运动向量图。
[0065]
经过上述处理得到车载视频的所有帧图像对应的平滑后的第二运动向量图。
[0066]
为了便于理解,参照图2展示平滑处理过程。假设整个车载视频的运动趋势都是向正上方的,这里仅展示第一运动向量图的网格中左上角点的运动向量。图中可以看出,t2帧图像遇到了明显的抖动,运动向量发生了偏移,利用前后多帧的平滑处理,对运动向量的偏移进行了修正。
[0067]
s204,根据第二运动向量图,计算得到第一运动光流图,其中,第一运动光流图用于表征车载视频中每相邻的两帧图像的后一帧图像相对于前一帧图像的每个像素点对应的运动位移。
[0068]
参照图3,在一种可能的实现方式中,步骤204的实现过程可以包括:
[0069]
步骤2041,对第二运动向量图进行直线线性变换,得到第二运动向量图中每个网格的单应性矩阵。
[0070]
步骤2042,根据第二运动向量图中每个网格的单应性矩阵,计算得到第一运动光流图。
[0071]
可选的,步骤2042可以具体包括:
[0072]
针对第二运动向量图中每个网格,获取网格投影到图像上所包含的多个像素点对应的齐次坐标;根据网格的单应性矩阵和网格投影到图像上所包含的多个像素点对应的齐次坐标,计算得到第一运动光流图。
[0073]
通过上述处理过程,利用稀疏网格的单应性矩阵去近似全局的光流图,即第一运动光流图,可以降低计算量,提升运行速度。
[0074]
s205,根据第一运动光流图对车载视频中的帧图像进行运动补偿,得到稳像视频。
[0075]
具体的,针对车载视频中的每帧图像,根据其对应的第一运动光流图对帧图像进行运动补偿,得到由补偿后的帧图像构成的稳像视频。
[0076]
发明人进一步发现用统一的模型训练所有不同的运动模糊,并不适用所有车辆行驶工况,如发明人发现当车辆的车速不同时,车辆抖动是不同的,拍摄得到的车载视频的抖动程度也是不一样的,此时,仍然使用上述已完成训练的模型进行处理时,容易导致对不同抖动程度的车载视频的处理效果不佳。针对该技术问题,本技术提出,针对不同的移动速度范围训练得到不同的神经网络;即不同的移动范围对应不同的神经网络。因此,可以将摄像设备在不同移动速度下拍摄得到车载视频,输入至该移动速度对应的神经网络中进行处理,即不同抖动程度的车载视频可以输入至不同的神经网络中进行处理,提高了稳像效果。针对该思路,本技术一实施例提供的车载视频稳像方法还可以包括步骤s601和s602,详细
介绍如下:
[0077]
在s601中,获取目标移动速度。
[0078]
其中,目标移动速度为拍摄车载视频的摄像设备,在拍摄所述车载视频时的移动速度。在实际应用中,当用户坐在处于行驶状态的火车、小车或大巴等行驶工具内的位置上时,用户可以对外面的景色拍照留念。由于行驶工具处于行驶状态,导致拍摄得到的视频可能是抖动的,因此,用户可以向终端设备发送视频去抖动的请求。
[0079]
需要说明的是,终端设备检测到用户发送了上述视频去抖动的请求可以是:检测到用户打开预设app或者检测到用户在预设app内执行预设操作。其中,预设操作可以根据实际需要确定,此处不作限制。示例性的,预设操作可以是点击预设控件,即终端设备若检测到用户点击预设app内的预设控件,则认为检测到了预设操作,即认为检测到用户发送了视频去抖动的请求。
[0080]
在一些可能的实施例中,上述预设操作也可以是一个时间触发操作,终端设备在运行时可以配置有相应的视频处理流程,该视频处理流程包含有多个关键事件的触发节点,上述关键事件包括视频去抖动的请求,在该情况下,若终端设备检测到到达视频去抖动事件关联的触发节点,则执行步骤本方案的操作,以得到稳像视频。
[0081]
本技术实施例中,终端设备在检测到视频去抖动的请求后,可以获取车载视频以及摄像设备在拍摄该车载视频时的移动速度。
[0082]
在本技术的一个实施例中,当用户是在处于行驶状态的车辆上拍摄视频时,拍摄车载视频的摄像设备可以是该车辆上安装的摄像头。基于此,终端设备具体可以根据以下步骤得到车载视频在被拍摄时对应摄像头的移动速度,详述如下:
[0083]
当摄像头拍摄所述车载视频时,获取车辆的行驶速度;将车辆的行驶速度确定为目标移动速度。
[0084]
本实施例中,终端设备可以与车辆上安装的摄像头无线通信连接,因此,终端设备在检测到该摄像头在进行拍摄时,可以实时通过与终端设备无线通信连接的车载系统获取到此时车辆的行驶速度。需要说明的是,车载系统包括轮速传感器,该轮速传感器可以是磁电式轮速传感器,也可以是霍尔式轮速传感器,此处不作限制。
[0085]
在s602中,从多个神经网络中查找与目标移动速度匹配的神经网络,并将匹配得到的神经网络作为第一神经网络。
[0086]
其中,神经网络以目标样本图像作为训练集训练获得,所述目标样本图像在拍摄时,对应摄像头的移动速度所处的范围区间,涵盖目标移动速度。
[0087]
本技术实施例中,终端设备可以预先存储有不同移动速度范围与不同神经网络之间的匹配关系,因此,终端设备在获取到车载视频在拍摄时对应摄像头的目标移动速度之后,可以根据该目标移动速度所处的移动速度范围,以及预先存储的不同移动速度范围与不同神经网络之间的匹配关系,得到与该目标移动速度匹配的神经网络,并以该神经网络作为第一神经网络进行后续处理。
[0088]
具体通过以下步骤s701~s702构建不同移动速度范围与不同神经网络之间的匹配关系,详述如下:
[0089]
在s701中,获取多个预设速度范围区间各自对应的原始样本图像。
[0090]
在本实施例的一种实现方式中,终端设备可以预先获取到摄像头在不同移动速度
下拍摄得到的多张图像,并根据预先设置的多个预设速度范围区间以及每张图像在拍摄时的移动速度,对上述多张图像进行分类,得到多个预设速度范围区间各自对应的原始样本图像。
[0091]
在s702中,针对每个预设速度范围区间,以其对应的原始样本图像作为训练集,训练得到与其对应的神经网络。
[0092]
本实施例中,终端设备在得到多个预设速度范围区间各自分别对应的原始样本图像之后,为了提高后续对车载视频的稳像效果,针对任一一个预设速度范围区间,都仅将该预设速度范围区间对应的原始样本图像作为训练集,对预设的原始神经网络进行训练,从而得到该预设速度范围区间对应的已训练的神经网络。其中,原始图像去模糊模型可以是预先构建的第一深度学习模型,如生成对抗网络(deblurgan)模型。
[0093]
本实施例提供的车载视频稳像方法中,将所述车载视频输入第一神经网络之前,还可以包括:将车载视频输入已训练的非稳像视频分类模型进行处理,得到车载视频为非稳像视频的概率值;若该概率值大于设定阈值,则执行将车载视频输入第一神经网络的步骤以及后续步骤。本实施例中,为了确定车载视频确实是非稳像视频,以避免对稳像视频仍然执行步骤s202~s205,导致相应处理设备做无用功。
[0094]
需要说明的是,非稳像视频分类模型用于检测车载视频是否是非稳像视频的概率。非稳像视频分类模型可以是基于预设样本集对预先构建的第二深度学习模型进行训练所得的。以第二深度学习模型为resnet18分类模型为例,预设样本集中的每条样本数据均包括第一样本图像和第二样本图像。其中,第一样本图像为历史非稳像视频,第二样本图像为该历史非稳像视频对应的历史清晰图像。通过训练,第二深度学习模型可以学习到所有样本图像为非稳像视频的概率值,此时,可以将训练好的第二深度学习模型作为非稳像视频分类模型。
[0095]
本实施例中,在得到车载视频为非稳像视频的概率值后,可以将该概率值与设定阈值进行比较。其中,设定阈值可以根据实际需要确定,此处不作限制,示例性的,设定阈值可以是0.9。在检测到车载视频为非稳像视频的概率值大于设定阈值时,可以确定该车载视频为非稳像视频,因此,才执行后续的稳像步骤。在检测到车载视频为非稳像视频的概率值小于或等于设定阈值时,可以确定该车载视频不是非稳像视频,因此,无需对该车载视频进行稳像处理,即执行后续的稳像步骤。
[0096]
以上可以看出,通过将获取到的车载视频输入已训练的非稳像视频分类模型进行处理,得到该车载视频为非稳像视频的概率值,并将该概率值与设定阈值进行比较,只有在检测到该概率值大于设定阈值时,可以确定该车载视频为非稳像视频,此时才执行后续稳像步骤,减轻了相关处理设备的工作压力,也提高了相关处理设备的工作效率。
[0097]
车载视频的图像为彩色图像时,将车载视频输入已训练的非稳像视频分类模型进行处理之前,还可以包括将车载视频的图像由彩色图像转换为三个通道的灰度图像;使用第一边缘检测算法对三个通道的灰度图像进行处理,得到三个通道的灰度图像各自对应的边缘图像;对边缘图像和车载视频中图像进行拼接,得到六通道的输入图像;将六通道的输入图像输入至非稳像视频分类模型进行处理,得到车载视频为非稳像视频的概率值。
[0098]
由于彩色图像为rgb三通道图像,因此,可以根据图像转化方法将该rgb三通道图像转化为三个通道各自对应的灰度图像,即r通道对应的灰度图像、g通道对应的灰度图像
以及b通道对应的灰度图像。其中,图像转化方法具体可以是:将彩色图像中各个通道对应的所有像素值进行排序。可以理解的是,可以将车载视频中r通道对应的所有像素值依次排序,从而得到该r通道对应的灰度图像,可以将车载视频中g通道对应的所有像素值依次排序,从而得到该g通道对应的灰度图像,可以将车载视频中b通道对应的所有像素值依次排序,从而得到该b通道对应的灰度图像。
[0099]
在得到车载视频对应的三个通道的灰度图像后,为了获取车载视频丰富的边缘信息,可以使用第一边缘检测算法对三个通道的灰度图像进行处理,从而得到三个通道的灰度图像各自对应的边缘图像。其中,第一边缘检测算法可以是sobel算法。
[0100]
需要说明的是,由于深度学习模型的输入通常为数据格式,因此,本实施例中,可以同时将车载视频中图像各个颜色通道的像素值,以及该车载视频中图像对应的三个边缘图像各自对应的单通道的像素值进行拼接,从而得到六通道的数据,即对车载视频中图像和三个通道的边缘图像进行拼接,得到六通道的输入图像。
[0101]
示例性的,假设车载视频中某个图像某个像素点的像素值为(25,17,24),该车载视频的像素点在r通道对应的边缘图像中的像素点的像素值为20,该车载视频的像素点在g通道对应的边缘图像中的像素点的像素值为15,该车载视频的像素点在b通道对应的边缘图像中的像素点的像素值为22,则其拼接之后的六通道的像素点对应的数据为[25,17,24,20,15,22]。
[0102]
本实施例提供的车载视频稳像方法可以通过第一边缘检测算法获取到车载视频的边缘信息,从而提高了判断车载视频是否是非稳像视频的准确率。
[0103]
发明人进一步发现用光线较弱情况下拍摄的车载视频中的图像质量较差,导致后续对车载视频的稳像处理效果不佳。针对该问题,本技术基于训练后的去噪网络模型对车载视频进行去噪处理,得到去噪处理后的车载视频,提升图像的画面质量,进而提升对车载视频的稳像处理效果。
[0104]
在一种可能的实现方式中,基于训练后的去噪网络模型对车载视频进行去噪处理,得到去噪处理后的车载视频可以包括:
[0105]
s801,对于车载视频的每帧图像,基于该帧图像中每个像素点的亮度值,计算得到该帧图像对应的平均光线亮度值。
[0106]
具体的,对于车载视频的每帧图像,采用如下公式(3)计算得到对应的平均光线亮度值:
[0107][0108]
其中,(x,y)表示该帧图像中像素点的位置坐标,lum(x,y)表示该帧图像中像素点的亮度值,n表示该帧图像的像素点的总数,δ为预设参数值。
[0109]
s802,基于训练后的去噪网络模型,对车载视频中平均光线亮度值小于第一预设阈值的各帧图像进行去噪处理,得到去噪处理后的车载视频。
[0110]
这里,若平均光线亮度值小于第一预设阈值,说明该帧图像所对应的光线条件较差,该帧图像为含噪视频图像,需要进行去噪处理,即执行将该帧图像输入训练后的去噪网络模型进行去噪处理,输出去噪处理后的图像。其中去噪处理后的图像是去除噪声后的清晰的图像,从而行车过程中图像的画面质量得到了提升。
[0111]
对于去噪网络模型的训练过程,具体可以如下:
[0112]
s901,获取训练数据集,其中,训练数据集包括多个数据对,每个数据对包括n张第一视频图像和n张第二视频图像,第一视频图像对应的车内的光线亮度值小于第二视频图像对应的车内的光线亮度值,第一视频图像和第二视频图像各自对应同一车内的不同拍摄对象,n为正整数。
[0113]
这里,可通过采集设备获取训练数据集。示例性的,其中采集设备可以包括dms摄像头和乘客监控系统(occupancy monitoring system,oms)摄像头,dms摄像头和oms摄像头均用于采集车内的视频图像。
[0114]
在一种可能的实现方式中,步骤s901的实现过程可以包括:
[0115]
s9011,采集满足第一条件时车内的视频图像,将满足第一条件时车内的视频图像作为第一视频图像,第一条件为光线亮度值小于第二预设阈值。
[0116]
这里,第一条件为光线亮度值小于第二预设阈值说明车内拍摄环境对应的光线条件较差。比如车辆行驶在夜间、隧道中或者地下车库中。其中,第一视频图像为含噪图像。
[0117]
s9012,采集满足第二条件时车内的视频图像,将满足第二条件时车内的视频图像作为第二视频图像,第二条件为光线亮度值大于或者等于第二预设阈值。
[0118]
这里,第二条件为光线亮度值大于或者等于第二预设阈值说明车内拍摄环境对应的光线条件较好。比如车辆行驶在白天。其中,第二视频图像为无噪图像。
[0119]
s9013,基于第一视频图像和第二视频图像构建训练数据集。
[0120]
需要说明的是,摄像头采集的每张第一视频图像均有一张与其对应的第二视频图像,即第一视频图像和第二视频图像各自对应同一车内的不同拍摄对象。
[0121]
也就是说,第一视频图像和与该第一视频图像对应的第二视频图像,二者的图像采集环境是相关联的,却是非配对的。即两张视频图像各自对应的拍摄内容不需要完全一致。
[0122]
由上述说明可知,本技术实施例中的训练数据集为非配对的数据集,而非配对的数据集采集难度低,较易获得,一定程度上降低了去噪网络模型训练的难度。
[0123]
本步骤可具体包括:将采集的第一视频图像和第二视频图像分为多个数据对,每个数据对包括n张第一视频图像和n张第二视频图像。需要说明的是,n张第一视频图像中每张第一视频图像与该数据对中的一张第二视频图像对应。不同的第一视频图像可以是同一车内的视频图像,也可以是不同车内的视频图像。
[0124]
这里,为了丰富采集到的数据多样性,摄像头的摆放位置可以有多个位置,如a柱、中控台、转向管以及后视镜等区域,此外,车内被拍摄的人员,如车内驾驶员和乘客,他们的年龄和性别也需要具有多样性。
[0125]
s902,基于训练数据集对待训练的去噪网络模型进行迭代训练,得到训练后的去噪网络模型。
[0126]
待训练的去噪网络模型可以为生成式对抗网络(generative adversarial networks,gan)模型。gan模型包括生成网络和判别网络。
[0127]
基于训练数据集对待训练的去噪网络模型进行迭代训练大致的过程是:对没有经过训练的生成网络和判别网络一起对抗训练,利用数据对中的第一视频图像输入生成网络产生一张随机视频图像去欺骗判别网络;之后,判别网络判断这张随机视频图像的真假,最
终在这两类网络训练的过程中,两类网络的能力越来越强,最终达到稳态,将达到稳态后的生成网络确定为训练后的去噪网络模型,具体过程详见如下步骤s9021~s9026。
[0128]
s9021,将数据对中的第一视频图像输入去噪网络模型,得到第三视频图像。
[0129]
步骤s9021具体可包括:提取数据对中的第一视频图像对应的yuv空间图像的y分量;将第一视频图像对应的y分量输入去噪网络模型,得到第三视频图像。需要说明的是,图像的主要结构信息均在y分量上,利用图像对应的y分量进行模型训练,一方面可以降低运算量,另一方面可以提高去噪网络模型的鲁棒性,使其不受图像的颜色空间的影响。
[0130]
需要说明的是,第一视频图像为含噪图像。开始训练时生成网络的网络参数是随机的网络参数,数据对中的n张第一视频图像输入生成网络后得到的n张第三视频图像是n张随机视频图像。
[0131]
去噪网络模型可以为生成网络。生成网络的网络结构采用u-net的网络结构,该结构包括m个卷积模块,每个卷积模块包含卷积层、激活函数和归一化层,其中卷积层为多个。其中,每个卷积模块是一个残差结构,分为下采样阶段和上采样阶段。其中,在上采样阶段使用双线性上采样与卷积层相结合,替代了传统的反卷积操作。
[0132]
比如,u-net的网络结构可包括8个卷积模块,每个卷积模块包含2个3
×
3的卷积层、leakyrelu激活函数以及归一化层。
[0133]
s9022,将第三视频图像输入全局判别网络,得到第一判别结果。
[0134]
本步骤中,将第三视频图像输入全局判别网络,其目的是为了判别第三视频图像的真假,输出的判别结果一般用0或1表示。其中,0表示判别结果为假,1表示判别结果为真。
[0135]
s9023,将数据对中的第二视频图像输入全局判别网络,得到第二判别结果。
[0136]
步骤s9023具体可以包括:提取数据对中的第二视频图像对应的yuv空间图像的y分量;将第二视频图像对应的y分量输入全局判别网络,得到第二判别结果。这里,将第二视频图像,即真实的无噪图像,输入全局判别网络,其目的是为了判别第二视频图像的真假。
[0137]
s9024,将第三视频图像的局部图像输入局部判别网络,得到第三判别结果。
[0138]
这里,将每张第三视频图像划分为多个局部图像输入局部判别网络,用于判别第三视频图像中局部图像的真假,从而更加精细化的引导后续生成网络的训练。
[0139]
需要说明的是,对于判别网络而言,本技术实施例中具体指的是全局判别网络和局部判别网络,对于数据对中的第二视频图像,即真实的无噪图像,判别网络要尽可能判别正确输出值1,而对于第三视频图像,也就是数据对中的第一视频图像(含噪图像)经过生成网络得到的第三视频图像(假的去噪图像),判别网络要尽可能判别错误输出值0。而对于生成网络则尽可能的欺骗判别网络。两种网络相互对抗,不断调整参数,最终目的是使判别网络(全局判别网络和局部判别网络)无法判断生成网络的输出结果是否真实。
[0140]
在本技术实施例中,两种网络相互对抗,不断调整参数,具体指的是不断调整全局判别网络、局部判别网络和生成网络的网络参数。
[0141]
首先固定生成网络的网络参数不变,多次更新全局判别网络的网络参数和局部判别网络的网络参数,以使全局判别网络和局部判别网络具有较好的判别能力;之后,固定全局判别网络的网络参数和局部判别网络的网络参数不变,多次更新生成网络的网络参数。
[0142]
本实现方式中的全局判别网络和局部判别网络在此之前,其各自的网络参数已经通过遍历训练数据集中的一些数据对进行了多次更新,本实现方式具体阐述的是固定全局
判别网络的网络参数和局部判别网络的网络参数不变,基于未使用的一些数据对多次更新生成网络的网络参数的过程。
[0143]
下面以全局判别网络为例,阐述本实现方式之前全局判别网络的网络参数的更新过程。
[0144]
a1:将第一数据对中的n张第一视频图像输入生成网络g,得到n张随机视频图像xf。
[0145]
a2:将n张随机视频图像xf输入全局判别网络d1,得到n个判别结果d1(xf)。
[0146]
a3:将第一数据对中的n张第二视频图像xr输入全局判别网络d1,得到n个判别结果d1(xr)。
[0147]
a4:根据n个判别结果d1(xf)和n个判别结果d1(xr)计算得到全局判别网络d1的损失值
[0148]
具体的,采用如下公式(2)、公式(3)和公式(4)计算得到全局判别网络d1的损失值
[0149][0150][0151][0152]
其中,dc(xr,xf)用于表示全局判别器对第二视频图像的判别能力,dc(xr,xf)的取值越大表明第二视频图像判别为真图像的概率越大;dc(xf,xr)用于表示全局判别器对随机视频图像的判别能力,dc(xf,xr)的取值越大表明随机视频图像判别为真图像的概率越大。
[0153]
表示n个判别结果d1(xf)的期望值,σ(d1(xr))表示n个判别结果d1(xr)的激活函数值;表示n个判别结果d1(xr)的期望值,σ(d1(xf))表示n个判别结果d1(xf)的激活函数值。
[0154]
a5:基于全局判别网络d1的损失值更新全局判别网络d1的网络参数,得到参数更新后的全局判别网络d1。
[0155]
上述过程为全局判别网络d1的一次网络参数更新过程。之后,将a1步骤中的第一数据对替换为第二数据对,重复执行上述的步骤,以实现对参数更新后的全局判别网络d1的再一次网络参数更新,直至执行完第一预设次数的网络参数更新。
[0156]
需要说明的是,局部判别网络d2的网络参数更新过程与上述全局判别网络的网络参数更新过程大致相同,不同之处在于参数更新所采用的数据对不同、输入至局部判别网络d2的是视频图像的局部图像,且计算局部判别网络d2的损失值所采用的损失函数不同。具体的,计算局部判别网络d2的损失值所采用的损失函数如下述公式(7):
[0157][0158]
其中,d2(xr)表示数据对中的第二视频图像的局部图像输入局部判别网络d2后得
到的判别结果,d2(xf)表示随机视频图像的局部图像输入局部判别网络d2后得到的判别结果,该随机视频图像为数据对中的第一视频图像经过生成网络后得到的视频图像。
[0159]
s9025,根据第一判别结果、第二判别结果和第三判别结果计算去噪网络模型的目标损失值。
[0160]
这里,通过两个判别网络(即全局判别网络d1和局部判别网络d2)的判结果引导去噪网络模型即生成网络的训练,具体的实现过程详见实施例二。
[0161]
s9026,根据目标损失值更新去噪网络模型的网络参数,获得训练后的去噪网络模型。
[0162]
步骤s9026具体可以包括:根据目标损失值更新去噪网络模型的网络参数后,判断更新后的去噪网络模型是否满足预设条件,若满足预设条件,将更新后的去噪网络模型确定为训练后的去噪网络模型;否则,则对更新后的去噪网络模型进行再次更新,直至更新后的去噪网络模型满足预设条件。
[0163]
其中,对更新后的去噪网络模型进行再次更新具体为:将更新后的去噪网络模型更新为去噪网络模型后,返回执行步骤s9021以及后续步骤。此时,步骤s9021中的数据对更换为训练数据集中的下一个数据对。
[0164]
在一具体实施例中,预设条件为本次更新后的去噪网络模型的目标损失值与其上一次更新后的去噪网络模型的目标损失值相等,或者,预设条件为更新后的去噪网络模型对应的网络参数更新次数累计达到第二预设次数。
[0165]
在一示例中,若本次更新后的去噪网络模型的目标损失值与其上一次更新后的去噪网络模型的目标损失值不相等,且本轮去噪网络模型的网络参数更新次数未达到第三预设次数,则将更新后的去噪网络模型更新为去噪网络模型后,返回执行步骤s9021以及后续步骤,直至本次更新后的去噪网络模型的目标损失值与其上一次更新后的去噪网络模型的目标损失值,或者本轮去噪网络模型的网络参数更新次数达到第三预设次数。
[0166]
这里,完成一轮网络参数更新包括对全局判别网络的多次网络参数更新,对局部判别网络的多次网络参数更新和对去噪网络模型的多次网络参数更新。
[0167]
其中,两个判别网络的网络参数更新的次数大于去噪网络模型的网络参数更新的次数。对不同网络的网络参数进行更新时所使用的数据对不同。需要说明的是,在对一个网络的网络参数进行更新的过程中,另外两个网络的网络参数固定不变。
[0168]
而当本轮去噪网络模型的网络更新次数达到第三预设次数,本次更新后的去噪网络模型的目标损失值与其上一次更新后的去噪网络模型的目标损失值不相等,则将执行下一轮网络参数更新过程,直至本次更新后的去噪网络模型的目标损失值与其上一次更新后的去噪网络模型的目标损失值。需要说明的是,此时,全局判别网络的损失值和局部判别网络的损失值不再减小。
[0169]
在一种可能的实现方式中,步骤s9025的实现过程可以具体包括:
[0170]
b1:计算第一损失值,第一损失值表示第一视频图像与第五视频图像之间的特征距离。
[0171]
需要说明的是,由于训练数据中的数据对是非配对的,不存在真正的与第一视频图像对应的真实图像(第二视频图像),所以为了保证生成网络输出前后的视频图像内容的一致性,本技术实施例使用感知损失perceptual loss函数,计算用于表示第一视频图像与
第三视频图像之间的特征距离的第一损失值,具体实现过程包括:
[0172]
b11:分别提取第一视频图像的图像特征和第五视频图像的图像特征。
[0173]
具体的,利用预先训练好的特征提取模型分别提取第一视频图像的图像特征和第五视频图像的图像特征。特征提取模型可以为vgg-16模型。
[0174]
b12:根据第一视频图像的图像特征和第三视频图像的图像特征,计算第一视频图像与第三视频图像之间的特征距离。
[0175]
具体的,采用下述公式(8)计算第一视频图像与第三视频图像之间的特征
[0176]
距离:
[0177][0178]
其中,表示第一视频图像经过特征提取模型第i个最大池化层之后的第j个卷积层提取的图像特征,i表示第一视频图像;表示第三视频图像经过特征提取模型第i个最大池化层之后的第j个卷积层提取的图像特征,g(i)表示第一视频图像通过生成网络后得到的第三视频图像,y表示图像的高度,取值范围从1~h
i,j
,x表示图像的宽度,取值范围从1~w
i,j
,w
i,jhi,j
用于表示图像的面积,l
p
表示第一损失值,即第一视频图像与第三视频图像之间的特征距离。
[0179]
b13:将第一视频图像与第三视频图像之间的特征距离确定为第一损失值。
[0180]
b2:根据第一判别结果和所述第二判别结果,计算第二损失值。
[0181]
在一种可能的实现方式中,步骤b2的实现过程可以包括:
[0182]
b21:分别计算第一判别结果的第一期望值和第二判别结果的第二期望值。
[0183]
b22:基于预设激活函数,分别计算第一判别结果的第一函数值和第二判别结果的第二函数值。
[0184]
b23:根据第一期望值、第二期望值、第一函数值和第二函数值,计算第二损失值。
[0185]
需要说明的是,上述步骤b21~步骤b23可通过公式(9)表示,即采用下述公式(9),计算第二损失值:
[0186][0187]
这里,dc(xf,xr)可以用上述公式(4)表示,dc(xr,xf)可以用上述公式(5)和公式(6)表示,即:
[0188][0189][0190]
此时,d1(xf)表示第一判别结果d1(xr)表示第二判别结果,表示第二损失值。
[0191]
b3:根据第三判别结果,计算第三损失值。
[0192]
具体的,采用下述公式(10),计算第三损失值:
[0193]
[0194]
其中,d2(xf)表示第三判别结果,表示第三损失值。
[0195]
b4:将第一损失值、第二损失值和第三损失值求和,得到去噪网络模型的目标损失值。
[0196]
这里,目标损失值
[0197]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0198]
对应于上文实施例所述的方法,图4示出了本技术实施例提供的车载视频稳像装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。
[0199]
参照图4,该车载视频稳像装置400可以包括:第一获取模块410、网络处理模块420、平滑处理模块430、计算模块440和运动补偿模块450。
[0200]
其中,获取模块410,用于获取车辆的车载视频.
[0201]
网络处理模块420,用于将车载视频输入第一神经网络,得到多张网格状的第一运动向量图,其中,第一运动向量图用于表征车载视频中每相邻两帧图像的后一帧图像相对于前一帧图像的每个网格对应的偏移向量。
[0202]
平滑处理模块430,用于对第一运动向量图进行平滑处理,得到处理后的第二运动向量图。
[0203]
计算模块440,用于根据第二运动向量图,计算得到第一运动光流图,其中,第一运动光流图用于表征车载视频中每相邻的两帧图像的后一帧图像相对于前一帧图像的每个像素点对应的运动位移。
[0204]
运动补偿模块450,用于根据第一运动光流图对车载视频中的帧图像进行运动补偿,得到稳像视频。
[0205]
在一种可能的实现方式中,平滑处理模块430具体可以用于:
[0206]
针对车载视频的每帧图像,获取当前帧图像的前后k帧图像各自对应的第一运动向量图,其中,k为正整数。
[0207]
将当前帧图像的前后k帧图像各自对应的第一运动向量图进行加权融合计算,得到第二运动向量图。
[0208]
在一种可能的实现方式中,车载视频稳像装置400,还包括:速度获取模块和匹配模块。
[0209]
速度获取模块,用于获取目标移动速度,目标移动速度为拍摄车载视频的摄像设备,在拍摄车载视频时的移动速度;
[0210]
匹配模块,用于从多个神经网络中查找与目标移动速度匹配的神经网络,并将匹配得到的神经网络作为第一神经网络。
[0211]
在一种可能的实现方式中,摄像设备为车辆上安装的摄像头,速度获取模块,具体用于:当摄像设备拍摄所述车载视频时,获取车辆的行驶速度,将行驶速度确定为所述目标移动速度。
[0212]
在一种可能的实现方式中,车载视频稳像装置400,还包括:预处理模块,用于将车载视频输入已训练的非稳像视频分类模型进行处理,得到车载视频为非稳像视频的概率
值;并在概率值大于设定阈值时,转入网络处理模块420。
[0213]
在一种可能的实现方式中,车载视频稳像装置400,还包括:去噪模块、第一训练模块和第二训练模块。
[0214]
去噪模块,用于基于训练后的去噪网络模型对车载视频进行去噪处理,得到去噪处理后的车载视频;
[0215]
第一训练模块,用于获取训练数据集,其中,训练数据集包括多个数据对,每个数据对包括n张第一视频图像和n张第二视频图像,第一视频图像对应的光线亮度值小于第二视频图像对应的光线亮度值,第一视频图像和第二视频图像各自对应不同拍摄对象,n为正整数;
[0216]
第二训练模块,用于基于训练数据集对待训练的去噪网络模型进行迭代训练,得到训练后的去噪网络模型。
[0217]
在一种可能的实现方式中,第二训练模块,具体用于:将数据对中的第一视频图像输入去噪网络模型,得到第三视频图像;将第三视频图像输入全局判别网络,得到第一判别结果;将数据对中的第二视频图像输入全局判别网络,得到第二判别结果;将第三视频图像的局部图像输入局部判别网络,得到第三判别结果;根据第一判别结果、第二判别结果和第三判别结果计算去噪网络模型的目标损失值;根据目标损失值更新去噪网络模型的网络参数,获得训练后的去噪网络模型。
[0218]
在一种可能的实现方式中,去噪模块,具体用于:对于车载视频的每帧图像,基于该帧图像中每个像素点的亮度值,计算得到该帧图像对应的平均光线亮度值;基于训练后的去噪网络模型,对车载视频中平均光线亮度值小于第一预设阈值的各帧图像进行去噪处理,得到去噪处理后的车载视频。
[0219]
在一种可能的实现方式中,计算模块440包括:
[0220]
第一计算单元,用于对第二运动向量图进行直线线性变换,得到第二运动向量图中每个网格的单应性矩阵。
[0221]
第二计算单元,用于根据第二运动向量图中每个网格的单应性矩阵,计算得到第一运动光流图。
[0222]
在一种可能的实现方式中,第二计算单元具体可以用于:
[0223]
针对第二运动向量图中每个网格,获取网格投影到图像上所包含的多个像素点对应的齐次坐标。
[0224]
根据网格的单应性矩阵和网格投影到图像上所包含的多个像素点对应的齐次坐标,计算得到第一运动光流图。
[0225]
在一种可能的实现方式中,本技术实施例的车载视频稳像装置400还包括:
[0226]
第二获取模块,用于获取训练数据集,训练数据集包括多个数据对,每个数据对包括第一图像和第二图像,其中,第二图像相对于第一图像存在抖动;
[0227]
网络训练模块,用于基于训练数据集对无监督神经网络进行训练,得到训练后的第一神经网络。
[0228]
在一种可能的实现方式中,网络训练模块具体可以用于:
[0229]
将数据对中的所述第一图像和第二图像输入无监督神经网络,得到网格状的第三运动向量图,第三运动向量图用于表征第二图像相对于第一图像的每个网格的偏移向量。
[0230]
根据第三运动向量图,计算得到第二运动光流图,第二运动光流图用于表征第二图像相对于第一图像的每个像素点对应的运动位移。
[0231]
根据第二运动光流图,对第二图像进行双线性插值运算,得到第二图像运动后的第三图像。
[0232]
计算第一图像与第三图像之间的损失值。
[0233]
基于损失值更新无监督网络的网络参数,获得第一神经网络。
[0234]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0235]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0236]
本技术实施例还提供了一种车辆,参见图5,其中,该车辆包括终端设备500,该终端设备500可以包括:至少一个处理器510、存储器520以及存储在所述存储器520中并可在所述至少一个处理器510上运行的计算机程序,所述处理器510执行所述计算机程序时实现上述任意各个方法实施例中的步骤,例如图1所示实施例中的步骤s201至步骤s205。或者,处理器510执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块410至450的功能。
[0237]
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器520中,并由处理器510执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序段,该程序段用于描述计算机程序在终端设备500中的执行过程。
[0238]
本领域技术人员可以理解,图5仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如输入输出设备、网络接入设备、总线等。
[0239]
处理器510可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0240]
存储器520可以是终端设备的内部存储单元,也可以是终端设备的外部存储设备,例如插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。所述存储器520用于存储所述计算机程序以及终端设备所需的
memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0251]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。