用于对模糊图像去模糊的方法和系统与流程
未命名
08-07
阅读:231
评论:0
用于对模糊图像去模糊的方法和系统
1.交叉引用
2.本技术要求于2020年11月16日递交的发明名称为“用于对模糊图像去模糊的方法和系统”的第17/098,605号美国非临时申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
3.本公开涉及计算机视觉领域,尤其涉及用于对模糊数字图像去模糊的方法和系统。
背景技术:
4.数码相机捕获的图像常常会因为一些不想要的模糊虚影而呈现效果不佳。数码相机捕获的图像模糊可能是由于以下原因造成的:图像捕获期间场景中的物体发生运动、图像捕获期间数码相机发生移动以及图像捕获期间场景中低照度或光线不足等。处理模糊图像(即模糊不清的图像)以生成干净图像(即略有模糊或毫不模糊的更清晰的图像)的任务被称为去模糊。图像中的模糊处可以是均匀的(即图像的每个部分模糊的形式相同,例如由于数码相机的抖动而产生模糊)或非均匀的(即图像的不同部分模糊的形式不同,例如由于场景中物体的移动而产生模糊)。图像中的不均匀模糊也可以称为动态场景模糊,因为图像中的不均匀模糊经常是由在图像捕获过程中场景中物体的动态运动而引起的。对不均匀模糊图像进行去模糊通常极具挑战性,因为图像中的模糊是由在图像捕获过程中场景中物体的动态运动而引起的,而这种运动可能是不规则并且多变的。
5.动态场景图像去模糊(通常称为图像去模糊)的一些现有解决方案是利用神经网络,特别是已经经过端到端训练后用于图像去模糊的神经网络(即已经训练成根据输入到神经网络的模糊图像输出预测的去模糊图像的神经网络)。这样的解决方案通常需要庞大的训练数据集(例如,庞大的标记训练数据集,其中所述标记训练数据为与基准真相干净图像配对的模糊图像。即便不是不可能,也很难轻松获得真实的模糊—干净图像对(例如,数码相机通常不能同时捕获到模糊图像和干净图像)。因此,训练数据集中通常包括模拟模糊图像的合成数据。例如,模糊图像可以通过平均高帧率视频(例如,240fps)的连续帧序列来合成生成。这样的技术可以模拟由长曝光时间(例如,当在低照度环境中捕获图像时)引起的模糊。然后,合成的模糊图像可以与序列中的单个帧进行配对,作为基准真相干净图像。然而,合成的模糊图像可能无法准确地反映现实的模糊图像。
6.现有的图像去模糊解决方案面临的另一个挑战是,即便不是不可能,也很难在训练数据中包括所有可能类型的动态场景模糊,而这样(假设有可能的话)也将导致模型过度拟合。现有的图像去模糊解决方案往往对训练数据敏感。也就是说,训练的神经网络在对与训练数据集中的图像相似的图像进行去模糊时表现良好,但对于与训练数据集不同的图像(例如,在统计分布之外)则表现较差。当训练的神经网络应用于与训练数据集不同的现实模糊图像时,训练的神经网络输出的干净图像可能包含一些不想要的虚影。传统训练的神
经网络无法适配新的模糊图像。
7.因此,需要提供一种用于对模糊图像自适配去模糊的方法和系统。
技术实现要素:
8.在各种示例中,本公开描述了通过神经网络对模糊图像去模糊的方法和系统。所公开的神经网络被设计为同时执行图像去模糊的主要任务,以及辅助任务。所述辅助任务被定义为与所述主要任务相关,但被设计为更容易学习(例如,在测试时不需要额外地收集基准真相标签)。在所公开的示例中,通过特定的模糊输入图像(即输入到神经网络的特定模糊图像),对训练的神经网络进行预定迭代次数的进一步训练,以更新训练的神经网络的权重,使得所述神经网络的权重被定制为(即适配)用于处理特定模糊输入图像。在所述神经网络的进一步训练完成后,进一步训练的神经网络对特定输入模糊图像进行去模糊,以生成干净图像。定制(即适配)基于特定模糊输入图像进一步训练的神经网络的权重和使用进一步训练的神经网络对特定模糊输入图像去模糊的能力在本文中可以被称为自适配去模糊,并且对训练的神经网络进行的进一步训练以适配特定模糊输入图像在本文中可以被称为应用时训练。
9.在本公开的示例中,可以在现实实现中实现自适配去模糊(例如,用于对由电子设备的相机捕获的现实图像进行去模糊),并且可以训练神经网络以在应用阶段对现实的模糊图像进行去模糊。本公开描述了能够在应用阶段对神经网络进行相对较快的应用时训练(例如,仅需要几次训练迭代)的方法和系统,从而能够即时适配神经网络的权重,以对每个特定现实图像执行去模糊。所公开的方法和系统提供了以下技术效果:特定模糊输入图像可以用于在应用阶段对训练的神经网络(例如,已经训练过的用于对模糊输入图像去模糊的神经网络)即时进行进一步训练。与使用现有训练的神经网络对特定模糊输入图像进行去模糊相比,此处训练的神经网络在对特定模糊输入图像去模糊的性能有所提升。
10.对训练的神经网络的应用时训练只可以通过辅助任务(例如,辅助重建任务)进行,使用相对较少的迭代(例如,十次或更少的迭代,或五次或更少的迭代)。这样提供了以下技术效果:对训练的神经网络的应用时训练可以在应用阶段中即时进行,不需要过度使用存储器资源和/或不需要过长的计算时间,从而能够由资源有限的系统执行,例如手持设备或移动设备(例如,智能手机、平板电脑或笔记本电脑等)。
11.与现有的一些去模糊方法和系统相比,本公开的示例可以使得在图像去模糊后生成更高质量的干净输出图像。所公开的方法和系统能够对训练的神经网络进行进一步训练,以适配训练的神经网络的权重,对特定模糊输入图像去模糊,而需要特定图像的基准真相(即干净图像)。
12.在一些示例性方面,本公开描述了一种图像去模糊方法。该方法包括获取具有元训练权重的去模糊神经网络,其中所述元训练权重先前通过在主要去模糊任务和辅助重建任务上对所述去模糊神经网络进行元训练而获得。该方法还包括获取应用时模糊输入图像。该方法还包括:通过所述应用时模糊输入图像,对具有所述元训练权重的所述去模糊神经网络进行应用时训练,以通过以下步骤获得所述去模糊神经网络的应用时训练权重:对所述应用时模糊输入图像执行所述辅助重建任务,以预测重建后的模糊图像;以及基于根据辅助损失函数计算的辅助损失、所述应用时模糊输入图像和所述重建后的模糊图像,更
新所述去模糊神经网络的所述元训练权重。该方法还包括,在应用时训练完成后,通过具有所述应用时训练权重的所述去模糊神经网络,根据所述应用时模糊输入图像,生成去模糊输出图像。
13.在上述任何示例中,所述应用时训练包括对所述应用时模糊输入图像进行的多次迭代,所述应用时模糊输入图像是单个模糊图像,每次迭代可包括执行所述辅助重建任务和更新所述去模糊神经网络的权重。
14.在上述任何示例中,所述应用时训练最多包括五次迭代。
15.在上述任何示例中,所述辅助重建任务是通过从所述主要去模糊任务传递的特征来执行的。
16.在上述任何示例中,所述去模糊神经网络可包括:一种用于处理所述应用时模糊输入图像的共享子网,其中所述共享子网耦合至用于执行所述主要去模糊任务的主子网和用于执行所述辅助重建任务的辅子网;所述主子网络包括用于执行所述主要去模糊任务的主输出神经网络层,所述主子网络对来自所述共享子网的输出进行处理以生成所述去模糊输出图像;所述辅子网络包括用于执行所述辅助重建任务的辅输出神经网络层,所述辅子网络对来自所述共享子网的输出进行处理以生成所述重建后的模糊图像。
17.在上述任何示例中,由所述主输出神经网络层输出的特征可被复制到所述辅子网络的神经网络层。
18.在上述任何示例中,在所述主子网络中,来自所述主输出神经网络层的输出可表示所述去模糊输出图像和所述应用时模糊输入图像之间的残差,并且所述残差可被添加到所述应用时模糊输入图像中以生成所述去模糊输出图像。
19.在上述任何示例中,所述去模糊神经网络的元训练可以是基于训练数据集执行的,其中所述训练数据集包括标记训练数据的输入-输出对。
20.在一些示例性方面,本公开描述了一种去模糊神经网络的训练方法。所述方法包括初始化去模糊神经网络的权重。该方法还包括:执行所述去模糊神经网络的一轮元训练,以执行主要去模糊任务和辅助重建任务,并通过以下步骤获得元训练权重:对训练数据的采样批次进行采样,其中所述采样批次包括多个模糊训练图像,每个模糊训练图像与所述采样批次中对应的干净训练图像配对;对于所述采样批次中的每个给定模糊训练图像,对所述给定模糊训练图像执行所述辅助重建任务,以预测相应的重建后的模糊图像,并基于根据辅助损失函数计算的辅助损失、所述给定模糊训练图像和相应的重建后的模糊图像,计算相应的临时权重集;对于所述采样批次中的每对给定的模糊训练图像和对应的干净训练图像,执行所述主要去模糊任务,以预测相应的预测的干净图像,并根据主要损失函数、对应的干净训练图像、相应的预测的干净图像和相应的临时权重集,计算相应的主要损失;以及通过相应计算的主要损失的梯度求和,更新所述去模糊神经网络的权重。该方法还包括,在元训练完成后,存储所述元训练权重,可对具有所述元训练权重的所述去模糊神经网络进行进一步训练以用于模糊输入图像的应用时去模糊。
21.在上述任何示例中,所述辅助重建任务是通过从所述主要去模糊任务传递的特征来执行的。
22.在上述任何示例中,所述去模糊神经网络可包括:一种用于处理所述模糊训练图像的共享子网,其中所述共享子网耦合至用于执行所述主要去模糊任务的主子网和用于执
行所述辅助重建任务的辅子网;所述主子网络包括用于执行所述主要去模糊任务的主输出神经网络层,所述主子网络对来自所述共享子网的输出进行处理以生成所述去模糊输出图像;所述辅子网络包括用于执行所述辅助重建任务的辅输出神经网络层,所述辅子网络对来自所述共享子网的输出进行处理以生成所述重建后的模糊图像。
23.在上述任何示例中,由所述主输出神经网络层输出的特征可被复制到所述辅子网络的神经网络层。
24.在上述任何示例中,在所述主子网络中,来自所述主输出神经网络层的输出可表示所述去模糊输出图像和所述应用时模糊输入图像之间的残差,并且所述残差可被添加到所述应用时模糊输入图像中以生成所述去模糊输出图像。
25.在一些示例性方面中,本公开描述了一种设备,包括处理器,用于执行指令以使所述设备执行上述任一方法。
26.在一些示例性方面中,本公开描述了一种计算机可读介质,其中存储有指令。当所述指令由计算设备的处理器执行时,使得所述计算设备执行上述任一方法。
附图说明
27.现在将通过示例参考示出本技术示例性实施例的附图,其中:
28.图1为根据本公开的一些实施例的一种可用于元训练和应用时训练的示例系统架构的框图。
29.图2为根据本公开的一些实施例的神经网络处理器的一种示例硬件结构的框图。
30.图3为根据本公开的一些实施例的去模糊网络的一种示例架构的框图。
31.图4为根据本公开的一些实施例的一种用于去模糊网络的元训练和应用时训练的示例方法的流程图。
32.图5为根据本公开的一些实施例的一种用于去模糊网络的元训练和应用时训练的示例方法的流程图。
33.图6为根据本公开的一些实施例的一种用于实现图5中示例方法的示例伪代码。
34.图7为根据本公开的一些实施例的一种用于去模糊网络的元训练和应用时训练的示例方法的流程图。
35.在不同的附图中可以使用相似的附图标记来表示相似的组件。
具体实施方式
36.下面结合附图对本公开的技术方案进行说明。
37.本文示例中描述的图像去模糊方法和系统可以应用于对模糊数字图像去模糊的场景。在所公开的方法和系统中,首先通过元训练对神经网络进行训练,以执行主要任务和辅助任务。主要任务为基于模糊输入图像生成干净图像。辅助任务被定义为与主要任务相关的任务,但更容易学习。例如,辅助任务可以是再现模糊输入图像。元训练的结果是神经网络的元训练权重。当神经网络已经在除应用设备之外的训练设备(例如,计算系统)上进行元训练时,神经网络和元训练权重可以被提供给或部署到应用设备(例如,终端消费系统),例如手持设备、智能手机、平板电脑或数码相机。当神经网络在应用设备上进行训练时,在训练完成后,将元训练权重存储在应用设备的存储器中。在应用阶段,可以通过特定
的模糊输入图像(不具有相应的基准真相输出干净图像)进一步训练具有元训练权重的神经网络,以将元训练权重更新为应用时训练权重。在应用阶段进一步训练神经网络之后,可以使用具有应用时训练权重的神经网络对特定模糊输入图像进行去模糊,以输出干净图像。需要注意的是,在使用具有应用时训练权重的神经网络根据特定模糊输入图像输出干净图像之后,可以丢弃应用时训练权重。也就是说,从元训练权重开始,可以重新训练神经网络,以对每个特定模糊输入图像进行去模糊。因此,所公开的方法和系统提供了以下技术效果:通过在应用阶段进一步即时训练的神经网络能够对模糊图像进行去模糊。在本公开中,应用阶段是指将去模糊网络用于现实应用(例如,对现实捕获图像的去模糊),也可以被称为推断阶段、预测阶段或在线阶段。
38.训练神经网络以将元训练权重更新为应用时训练权重可以被称为应用时训练。神经网络的应用时训练仅在辅助任务上进行。这可以使得神经网络的应用时训练能够通过相对较少的迭代进行(例如,十次或更少的迭代,或五次或更少的迭代),从而使得神经网络的应用时训练能够在应用阶段即时进行,而不需要过度使用存储器资源和/或不需要过长的计算时间。技术效果是,在进一步训练完成之后,具有应用时训练权重的训练的神经网络可以用于根据现实模糊输入图像生成高质量的去模糊图像,仅需要相对较短的计算时间(例如,不到一秒)并且可以在资源有限的系统上进行,例如手持设备或移动设备(例如,智能手机、平板电脑或笔记本电脑等)以及桌面设备(例如,台式计算机或个人计算设备等)。
39.为了便于理解本公开,现讨论一些用于图像复原的现有技术。一些现有技术是传统技术(即不是基于机器学习的)。传统技术包括,例如,基于整个图像均匀模糊的假设,进行对估计的模糊核的反卷积。当模糊不均匀时,此类技术通常性能较差。因此使用传统技术对动态场景进行去模糊通常是具有挑战性的。
40.已经有一些将基于机器学习的技术应用于图像复原的尝试。例如,元学习(尤其是模型无关的元学习(model-agnostic meta-learning,简称maml))被提出作为实现单图像超分辨率(single image super-resolution,简称sisr)的解决方案。sisr的目标是仅通过单个低分辨率输入图像来获得高分辨率输出图像。通过maml,快速训练神经网络(例如,在几个梯度步骤内,或训练迭代内)以适配其学习权重,并且使用具有适配后的学习权重的神经网络根据特定低分辨率输入图像来预测高分辨率输出图像。对神经网络的进一步训练以适配其学习权重以及使用具有适配后的学习权重的神经网络根据特定输入图像来预测高分辨率输出图像可以被称为测试时训练,因为特定输入图像可以被认为是对神经网络的适配性测试。测试时训练通常要求快速训练神经网络(例如,在几个梯度步骤内,或训练迭代)以具有实际用途,并且通常还要求每个输入数据(例如,每个测试输入图像)与基准真相输出数据(例如,预期输出图像)进行配对,以便于训练神经网络。然而,这种通过测试时训练的方法可能不适用于图像去模糊问题。这是因为对于现实模糊图像无法获得基准真相输出图像。
41.另一种考虑的用于图像复原的基于机器学习的技术是辅助学习。在辅助学习中,辅助任务被定义为与主要任务(例如,图像去模糊)相关,但更容易学习。神经网络的某些层(和权重)在辅助任务和主要任务之间共享,使得更新权重以提高辅助任务中神经网络的性能会影响主要任务中神经网络的性能。可以定义支持主要去模糊任务学习的辅助任务,使得在测试时训练期间,可以容易地获得每个测试输入数据的基准真相输出数据。然而,这种
方法通常对主要去模糊任务的性能几乎没有或根本没有改善,因为神经网络的权重的更新仅有利于辅助任务的性能。
42.在各种示例中,本公开描述了图像去模糊的方法和系统,其中使用了通过训练技术(本文称为元辅助学习)训练的神经网络,该训练技术可以实现元学习和辅助学习的优点。如下面将讨论的,所公开的方法和系统能够使用特定模糊输入图像对神经网络进行测试时训练,所述特定模糊输入图像没有相应的基准真相输出干净图像来用于快速适配(例如,在几个训练迭代内)神经网络先前的元训练权重,以提高神经网络在根据特定输入模糊图像预测的干净输出图像方面的性能。在本文公开的示例中,可以执行去模糊网络的测试时训练,从而能够在应用阶段对现实图像进行去模糊。因此,本公开可以将去模糊网络的测试时训练称为应用时训练。应用时训练是在辅助任务上执行的,但对通过元学习的神经网络的先前训练和神经网络的架构被设计为确保主要去模糊任务也受益于应用时训练。所公开的方法和系统的示例可以在存在数据分布差异的情况下提供良好的性能,其中测试图像或现实图像的模糊可能不同于在训练数据集中发现的模糊。
43.在一些示例中,本公开描述了训练神经网络来学习图像去模糊任务的示例方法。特别地,本公开描述了训练神经网络以适配其权重进而提高对特定输入图像的去模糊性能的示例。训练方法涉及计算机视觉的处理。具体来说,所述训练方法可以应用于数据训练、机器学习或深度学习等数据处理方法,以对训练数据(例如,在本公开上下文中的模糊图像数据)执行符号化和形式化的智能信息建模、提取、预处理和训练等,以获得训练后的神经网络。这些将在下文进一步讨论。此外,本公开描述了一种图像去模糊的示例方法,该方法可以通过上述训练的神经网络执行。在本文讨论的示例中,输入数据(例如,现实模糊图像数据)用于对训练的神经网络进行进一步训练,以获得输出数据(例如,去模糊图像)。需要说明的是,这里描述的神经网络的训练方法和去模糊方法可以被认为是基于相同思想,也可以被认为是系统的两个部分或整个过程的两个阶段:例如,模型训练阶段和模型应用阶段。
44.通常,本文公开的示例涉及大量的神经网络应用。为了便于理解,下面描述了与神经网络相关的一些概念和可能与本文公开的示例有关的一些相关术语。
45.神经网络由神经元组成。神经元是一个计算单元,使用xs和1的截距作为输入。计算单元的输出可以是:
[0046][0047]
其中s=1、2、...、n,n是大于1的自然数,ws是xs的权重,b是神经元的偏移(即偏置),f是神经元的激活函数并用于将非线性特征引入神经网络中,以将神经元的输入转换为输出。激活函数的输出可以作为神经网络中下一卷积层中神经元的输入。例如,激活函数可以是s型函数。神经网络是通过多个所述神经元连接形成的。换句话说,一个神经元的输出可以是另一个神经元的输入。每个神经元的输入可以与上一层的局部接收区域相关联,以提取局部接收区域的特征。局部接收区域可以是由几个神经元组成的区域。
[0048]
深度神经网络(deep neural network,简称dnn)也被称为多层神经网络,可以理解为包括第一层(通常被称为输入层)、多个隐藏层和最后层(通常被称为输出层)的神经网络。这里的“多个”没有特殊的度量。当神经网络的两个相邻层之间存在全连接时,该层被认
为是全连接层。具体来说,若两个相邻的层(例如,第i层和第(i+1)层)要完全连接,则第i层中的每个神经元必须连接到第(i+1)层中的每个神经元。
[0049]
在dnn的每一层上的处理可能相对简单。简言之,每层的操作由以下线性关系表达式表示:其中,为输入向量,为输出向量,为偏移向量,w为权重(也被称为系数),α(.)为激活函数。在每一层,对输入向量执行操作,以获得输出向量
[0050]
由于dnn中有大量的层,因此也有大量的权重w和偏移向量dnn中这些参数的定义如下,以权重w为例。在本示例中,在三层dnn(即具有三个隐藏层的dnn)中,从第二层的第四神经元到第三层的第二神经元的线性权重表示为上标3表示权重w的层数(即本示例中的第三层(或层三)),下标表示输出在层三索引二(即第三层的第二神经元),同时输入在层二索引四(即第二层的第四神经元)。通常,从第(l-1)层的第k神经元到第l层的第j神经元的权重可以表示为需要注意的是,输入层没有w参数。
[0051]
在dnn中,更多的隐藏层可以使dnn更好地对复杂的情况(例如,现实世界的情况)进行建模。从理论上讲,参数更多的dnn更复杂,容量也更大(这可能是指学习的模型适应各种可能场景的能力),这表明dnn可以完成更复杂的学习任务。对dnn的训练是学习权重矩阵的过程。训练的目的是获得训练的权重矩阵,该矩阵由dnn所有层的学习权重w组成。
[0052]
卷积神经网络(convolutional neural network,简称cnn)是具有卷积结构的dnn。cnn包括由卷积层和子采样层组成的特征提取器。特征提取器可以被视为过滤器。卷积过程可以被视为使用可训练滤波器对二维(two-dimensional,简称2d)输入图像或卷积特征图进行卷积。
[0053]
卷积层是对cnn中的输入执行卷积处理的神经元层。在卷积层中,一个神经元可以仅连接到相邻层中的神经元子集(即不是所有神经元)。也就是说,卷积层通常不是全连接层。一个卷积层通常包括几个特征图,每个特征图可以由按矩形排列的一些神经元组成。同一特征图中的神经元共享权重。共享的权重可以统称为卷积核。通常,卷积核是一个二维权重矩阵。应理解,卷积核可以与图像信息提取的方式和位置无关。卷积层背后隐藏的一个原理是,一部分图像的统计信息与另一部分图像的统计信息相同。这意味着从一部分图像学到的图像信息也可以适用于另一部分图像。在同一卷积层可以使用多个卷积核来提取不同的图像信息。通常,卷积核的数量越大,表示卷积操作反映的图像信息越丰富。
[0054]
卷积核可以初始化为随机值的二维矩阵。在cnn的训练过程中,学习卷积核的权重。使用卷积核在同一特征图中的神经元之间共享权重的一个优点是,(与全连接层相比)cnn的卷积层之间的连接减少,并且降低了过拟合的风险。
[0055]
在训练dnn的过程中,可以将dnn输出的预测值与期望的目标值(例如,真值)进行比较。基于预测值和期望目标值之间的差值更新dnn的每一层的权重向量(包含给定层的权重w的向量)。例如,如果dnn输出的预测值过高,则可以调整每层的权重向量以降低预测值。这种比较和调整可以迭代地执行,直到满足收敛条件(例如,已经执行了预定义的最大次数的迭代,或者dnn输出的预测值与期望的目标值充分收敛)。定义了损失函数或目标函数,作为定量表示预测值与目标值的接近程度的一种方法。目标函数表示要优化(例如,最小化或最大化)的量,以使得预测值尽可能接近目标值。损失函数更具体地表示预测值和目标值之间的差值,训练dnn的目标是使损失函数最小化。
[0056]
反向传播是一种训练dnn的算法。反向传播用于调整(也称为更新)dnn中参数(例如,权重)的值,以减小输出中的误差(或损失)。例如,根据从dnn的输入到输出的前向传播,计算定义的损失函数。反向传播根据dnn的参数计算损失函数的梯度,梯度算法(例如,梯度下降)用于更新参数以减少损失函数。反向传播是迭代执行的,从而收敛或最小化损失函数。
[0057]
参见图1,图1示出了根据本公开的示例实施例的系统100。以下描述不应解释为对本公开的任何示例的限制。如系统100所示,标记训练数据可以存储在数据库130中。数据库130可以位于服务器或数据中心中,或者可以由云计算服务提供商作为服务提供。在本公开的上下文中,标记训练数据是指用于学习去模糊神经网络101(为了简单起见,也被称为去模糊网络101)的元训练权重的训练数据。标记训练数据包括输入-输出图像对,其中输入图像是模糊图像,配对的输出图像(即预期输出图像)是基准真相干净(即不模糊)图像。标记训练数据不同于应用时训练数据,应用时训练数据可以是未标记的现实数据(例如,由应用设备110捕获的现实图像,下文会进行讨论)或未标记的测试数据。应用时数据包括没有配对输出图像(例如,没有基准真相干净图像)的模糊图像。如下面将进一步讨论的,去模糊网络101的应用时训练可以通过单个输入现实图像来进行,以获得去模糊网络101的应用时训练权重,包括应用时训练权重的去模糊网络101可用于根据单个输入现实图像预测对应的单个去模糊输出图像。
[0058]
数据库130可以包含,例如,先前已经收集到的并通常用于与图像任务(例如,图像识别)相关的训练模型的标记训练数据。存储在数据库130中的标记训练数据的输入图像可以或许或额外是从应用设备110(可以是用户设备)可选地收集到的(例如,在用户同意的情况下)图像。例如,由应用设备110的摄像头捕获到并存储在应用设备110上的图像可以可选地匿名化并上传至数据库130来作为标记训练数据的输入图像进行存储。存储在数据库130中的标记训练数据可以包括输入-输出图像对,其中输入图像是根据配对的输出图像(例如,基准真相干净图像)的合成模糊图像。
[0059]
如下面将进一步讨论的,可以使用元训练设备120,根据存储在数据库130中的训练数据,对去模糊网络101进行训练。此外,或者,元训练设备120可以使用从其他来源(例如,分布式存储(或云存储平台))获得的训练数据来训练去模糊网络101。元训练去模糊网络101(即元训练设备120的元训练的结果)具有一组元训练权重。根据本文公开的示例,应用设备110可以对元训练去模糊网络101进行进一步训练,用于对特定的模糊的现实图像进行去模糊。应用设备110的应用时训练可以通过由应用设备110的相机(未示出)捕获的图像(例如,数字照片)来进行。应用设备110可能无法访问存储在数据库130中的训练数据。
[0060]
在本文公开的示例中,元训练去模糊网络101可以在应用设备110的处理单元111中实现。例如,可以对去模糊网络101进行编码,然后存储为应用设备110的存储器(未示出)中的指令中,处理单元111执行存储的所述指令来实现去模糊网络101。在一些示例中,可以对去模糊网络101进行编码,然后存储为处理单元111的存储器中的指令中(例如,去模糊网络101的权重可以存储在处理单元111的对应权重存储器中,该处理单元111可以体现为如图2中所示的神经网络处理器200)。在一些示例中,去模糊网络101可以在应用设备110的集成电路中实现(作为软件和/或硬件)。尽管图1示出了元训练设备120与应用设备110分离的示例,应理解,本公开不限于本实施例。在一些示例中,可以不存在单独的元训练设备120和
应用设备110。也就是说,去模糊网络101的元训练和去模糊网络101的应用时训练可以在同一设备(例如,应用设备110)上进行。
[0061]
应用设备110可以是用户设备,例如客户端终端、移动终端、平板电脑、笔记本电脑、增强现实(augmented reality,简称ar)设备、虚拟现实(virtual reality,简称vr)设备或车载终端等。应用设备110也可以是服务器、云计算平台等,用户可以通过用户设备进行访问。在图1中,应用设备110包括i/o接口112,用于与外部设备进行数据交互。例如,应用设备110可以通过i/o接口112向数据库130提供上传数据(例如,图像数据,如由应用设备110捕获的照片和/或视频)。尽管图1示出了用户与应用设备110直接交互的示例,应理解,本公开不限于本实施例。在一些示例中,可能有用户设备与应用设备110分离,用户与用户设备交互,用户设备转而通过i/o接口112与应用设备110交流数据。
[0062]
在本示例中,应用设备110包括数据存储器114,所述数据存储器114可以是系统存储器(例如,随机存取存储器(random access memory,简称ram)、只读存储器(read-only memory,简称rom)等)或大容量存储设备(例如,固态驱动器和硬盘驱动器等)。数据存储器114可以存储处理单元111可访问的数据。例如,数据存储器114可以与处理单元111分离,将捕获的图像和/或修复的图像存储在应用设备110上。
[0063]
在一些示例中,应用设备110可以可选地从外部数据存储系统150调用数据和代码等进行处理,或者可以将通过相应处理获得的数据和指令等存储在数据存储系统150中。
[0064]
需要注意的是,图1仅为根据本公开实施例的示例系统架构100的示意图。图1所示的设备、组件和处理单元等之间的关系和交互并不旨在限制本公开。
[0065]
图2为根据本公开实施例的示例神经网络处理器200的一种示例硬件结构的框图。神经网络处理器200可以设置在集成电路(也称为计算机芯片)上。神经网络处理器200可以设置在图1所示的应用设备110中,为处理单元111执行计算并实现去模糊网络101(包括执行去模糊网络的应用时训练)。此外,或者,神经网络处理器200可以设置在图1所示的元训练设备120中,以执行去模糊网络101的元训练。神经网络中层的所有算法(例如,下面进一步讨论的去模糊网络101的层)都可以在神经网络处理器200中实现。
[0066]
神经网络处理器200可以是能够执行神经网络中所需计算(例如,大量异或操作的计算)的任何处理器。例如,神经网络处理器200可以是神经处理单元(neural processing unit,简称npu)、张量处理单元(tensor processing unit,简称tpu)或图形处理单元(graphics processing unit,简称gpu)等。神经网络处理器200可以是可选的主机中央处理器(central processing unit,简称cpu)220的协处理器。例如,神经网络处理器200和主机cpu 220可以安装在同一封装上。主机cpu 220可以负责执行应用设备110的核心功能(例如,操作系统(operating system,简称os)的执行、管理通信等)。主机cpu 220可以管理神经网络处理器200的操作,例如,通过将任务分配给神经网络处理器200。
[0067]
神经网络处理器200包括运算电路203。神经网络处理器200的控制器204控制运算电路203,从而例如从神经网络处理器200的输入存储器201和权重存储器202中提取数据(例如,矩阵数据),并执行数据操作(例如,加法和乘法运算)。
[0068]
在一些示例中,运算电路203内部包括多个处理单元(也称为过程引擎(process engine,简称pe))。在一些示例中,运算电路203是二维脉动阵列。在其他示例中,运算电路203可以是一维脉动阵列或其他能够实现乘法和加法等数学运算的电子电路。在一些示例
中,运算电路203是通用矩阵处理器。
[0069]
在一个示例操作中,运算电路203从权重存储器202获取权重矩阵b的权重数据,并将该权重数据缓存在运算电路203的每个pe中。运算电路203从输入存储器201获取输入矩阵a的输入数据,并基于矩阵a的输入数据和矩阵b的权重数据进行矩阵运算,得到的部分或最终矩阵结果存储在神经网络处理器200的累加器208中。
[0070]
在本示例中,所述神经网络处理器200包括向量计算单元207。所述向量计算单元207包括多个运算处理单元。如果需要,向量计算单元207对来自运算电路203的输出(该输出可以由向量计算单元207从累加器208中检索得到)进行进一步的处理,例如向量乘法、向量加法、指数运算、对数运算或幅度比较。向量计算单元207可以主要用于神经网络的非卷积层或全连接层的运算。例如,向量计算单元207可以对运算执行诸如池化或归一化的处理。向量计算单元307可以对运算电路203的输出应用非线性函数,例如累积值的向量,以生成激活值。该激活值可以由运算电路203用作神经网络的下一层的激活输入。在一些示例中,向量计算单元207生成归一化值、组合值、或归一化值和组合值。
[0071]
在本示例中,神经网络处理器200包括存储单元访问控制器205(也称为直接内存访问控制(direct memory access control,简称dmac))。存储单元访问控制器205用于经由总线接口单元210访问神经网络处理器200外部的存储器(例如,执行设备110的数据存储器114)。存储单元访问控制器205可以从神经网络处理器200外部的存储器访问数据,并将数据直接传输给神经网络处理器200的一个或多个存储器。例如,存储单元访问控制器205可以将权重数据直接传输给权重存储器202,也可以将输入数据直接传输给统一存储器206和/或输入存储器201。统一存储器206用于存储输入数据和输出数据(例如,来自向量计算单元207的处理向量)。
[0072]
总线接口单元210还用于存储单元访问控制器205和取指令存储器(也称为取指令缓存器)209之间的交互。总线接口单元210还用于使取指令存储器209能够从神经网络处理器200外部的存储器(例如,应用设备110的数据存储器114)获取指令。取指令存储器209用于存储供控制器204使用的指令。
[0073]
通常,统一存储器206、输入存储器201、权重存储器202和取指令存储器209都是神经网络处理器200的存储器(也称为片上存储器)。数据存储器114独立于神经网络处理器200的硬件架构。
[0074]
图3为去模糊网络101的一种示例架构的框图。去模糊网络101的元训练和应用时训练的细节将在下文进一步讨论。
[0075]
通过联合训练辅助任务和主要去模糊任务,来对去模糊网络101进行元训练。去模糊网络101的输入是模糊输入图像(记为ib),其可以表示为一个二维矩阵,所述二维矩阵是对多个通道(例如,红-绿-蓝(red,green and blue,简称rgb)通道)输入图像的多个单独像素的编码。下面结合图3中示例对所述去模糊网络101的架构进行描述。应当理解,去模糊网络101的架构可以被修改(例如,具有更少或更多数量的神经网络层)。在下面的讨论中,为了简单起见,去模糊网络101的神经网络层(或块)将被称为层。
[0076]
在本示例中,去模糊网络101是单尺度网络,具有多个卷积层306和多个反卷积层308,用于处理模糊输入图像(ib)。在这个例子中,每个卷积层306和每个反卷积层308后面是相应的残差层310a。去模糊网络101的第一卷积层306接收模糊输入图像(ib),并对模糊
输入图像执行卷积操作,以生成模糊输入图像(ib)的特征编码的输出特征图(特征表示)。输出特征图作为输入特征图(即特征表示)提供给第一残差层310a。
[0077]
每个相应的卷积层306接收输出特征图(即特征表示),其中该输出特征图是先前卷积层306处理输入特征图(即特征表示)的结果;并使用不同的卷积核对输入特征图(即特征表示)执行卷积操作。当卷积层306是去模糊网络101中的第一卷积层306时,卷积层306的输出特征图(即特征表示)是对模糊输入图像(ib)的特征进行编码;或当卷积层是去模糊网络101中的另一个卷积层306时,卷积层306的输出特征图(即特征表示)是对输入特征图(即特征表示)的特征进行编码。每个去卷积层308解码由去模糊网络101的相应残差层310a生成的特征图,以生成输出特征图(即特征表示)。去模糊网络101具有两个输出层302和304,在此称为主要输出层302和辅助输出层304。主要输出层302执行卷积操作以生成与模糊输入图像组合的特征图(即特征表示),从而生成用于主要去模糊任务的输出图像(即预测的干净图像)。辅助输出层304生成用于辅助任务的输出图像(即重建后的模糊图像)。在本示例中,辅助输出层304之前是辅助卷积层306b(其后是辅助残差层310c)。短连接(由虚线箭头指示)用于在残差层310a(跟随相应的卷积层306)之间提供直接路径,以向残差层310b(跟随相应的反卷积层308)提供特征图(特征表示),以及在主要输出层302和辅助卷积层306之间提供直接路径。短连接(也称为跳过连接)可用于残差神经网络,以便于更快学习去模糊网络101的权重。
[0078]
去模糊网络101具有共享子网312,该共享子网312包括多个共享层(包括卷积层306、反卷积层308和残差层310a和310b)。这些共享层耦合到执行主要任务的主子网314和执行辅助任务的辅子网312(其中主要任务是去模糊任务,辅助任务被定义为支持去模糊任务的学习,如下所述)。这意味着,训练去模糊网络101以执行辅助任务也将影响(并潜在地提升)主要去模糊任务的性能。此外,去模糊网络101包括具有特定于主要去模糊任务的层(即主要输出层302)的主子网314和具有特定于辅助任务的层(即辅助卷积层306、辅助残差层310和辅助输出层304)的辅子网316。主子网314和辅子网316也可以分别被称为主分支和辅分支。应当理解,每个子网312、314和316被定义为整个去模糊网络101的一个或多个层的相应集合(例如,如图3中所示),并且不独立于整个去模糊网络101。主子网314处理由共享子网312生成的特征图(即特征表示),以生成用于主要去模糊任务的输出图像(即预测的去模糊图像)。辅子网316处理由共享子网312生成的特征图(即特征表示),以生成用于辅助任务的输出图像(即重建后的模糊图像)。应理解,去模糊网络101可以通过与本示例中描述不同的的子网和层来实现。然而,从主要输出层302到辅助卷积层306b的短连接是有用的,如下文进一步讨论。
[0079]
主要去模糊任务是基于模糊输入图像ib输出预测的干净图像(即去模糊图像)(记为)。预测的干净图像与模糊输入图像ib具有相同的大小和分辨率(即相同的像素尺寸)。在图3的示例中,主要去模糊任务利用残差学习来预测模糊输入图像ib和基准真相预期输出图像之间的差异(也称为残差)。将预测的残差添加到原有模糊输入图像ib中,以输出预测的去模糊图像本示例中的辅助任务被定义为自监督重建,这意味着辅助任务是根据模糊输入图像ib输出重建后的模糊图像(记为)。也就是说,去模糊网络101执行的辅助任务是学习权重,以将模糊输入图像ib映射到一组特征图,并使用特征图重建模糊图像。应理
解,可以定义不同的辅助任务(而不是重建任务),例如,可以定义支持主要去模糊任务学习的任何其他辅助任务,其中辅助任务可以在应用时进行训练,而不需要与应用时输入图像分离的基准真相数据(或者在其中可以容易地获得基准真相数据)。
[0080]
如上所述,训练去模糊网络101以执行辅助任务也有利于主要去模糊任务的执行。在去模糊网络101的训练期间执行辅助任务提供了正则化,该正则化指导在执行主要去模糊任务时学习去模糊网络的权重,这可以使得主要去模糊任务的性能更好。应当注意,在训练期间学习的去模糊网络101的权重包括与关于模糊输入图像的模糊信息相关的权重,所述模糊信息可用于重建模糊输入图像,并生成去模糊输出图像(即干净输出图像)。主输出层302的输出特征通过短连接复制到辅助卷积层306b(也称为特征传递),以使得辅助任务的应用时训练能够反向传播,从而更新去模糊网络101的权重,包括卷积核和反卷积核中的权重,进而有利于主要任务。
[0081]
图4为一种通过去模糊网络101对输入图像去模糊的示例方法400的流程图。方法400提供了用于去模糊网络101的不同训练阶段的概述,并且可以包括例如由图1中所示的元训练设备120和应用设备110执行的步骤。
[0082]
方法400可以从可选步骤402开始。在可选的步骤402中,可以执行预训练。通过联合训练去模糊网络101以执行主要去模糊任务和辅助任务,可以使用标记训练数据(例如,来自数据库130)来预先训练去模糊网络101。例如,可以通过获得去模糊输出图像(来自主子网314)和重建模糊图像(来自辅子网316),使用损失函数计算每个子网的损失,并基于损失的总和执行反向传播,来执行预训练。然后,在随后的步骤404中,预训练的权重可以用作元训练开始时的初始权重。
[0083]
如果不执行可选的步骤402,则可以在元训练开始时随机初始化去模糊网络101的权重。例如,每个权重可以设置为相应的随机值。
[0084]
在步骤404中,执行去模糊网络101的元训练。在一些示例中,元训练可以使用来自数据库130的标记训练数据由图1中的元训练设备120执行。在其他示例中,元训练可以由应用设备110执行。如果在步骤402中执行预训练,则用于元训练的标记训练数据可以不同于用于预训练的标记训练数据(例如,从不同的训练数据集采样,或来自同一训练数据集的不同样本)。可以执行元训练,直到满足收敛条件(例如,对于去模糊网络101的权重值优化损失函数,或者已经完成预定数量的训练迭代)。元训练的更多细节将在下文进行描述。
[0085]
然后存储去模糊网络101的元训练权重。如果元训练是在与应用设备110分离的元训练设备120中执行的,则元训练设备120可以将元训练权重传输给应用设备110,并且元训练权重可以由应用设备110存储在其本地存储器中。如果元训练是由应用设备110执行的,则元训练权重可以直接存储在应用设备110的本地存储器中。具有元训练权重的去模糊网络101可以被称为元训练去模糊网络101。
[0086]
在步骤406中,使用特定模糊输入图像执行去模糊网络101的应用时训练。所述特定模糊输入图像可以是例如由数码相机捕获的现实图像(例如,数字照片),例如独立数码相机或电子设备的数码相机,例如智能手机、笔记本电脑或平板电脑等。去模糊网络101的应用时训练使得元训练权重能够被更新为应用时训练权重,以使得去模糊网络101适于执行特定模糊输入图像的去模糊。在元训练去模糊网络101的应用时训练之后,具有应用时训练权重的去模糊网络101接收特定模糊输入图像,根据特定输入图像生成预测的干净图像
(即去模糊图像),并输出预测的干净图像。去模糊网络101的应用时训练的结果是应用时训练的去模糊网络101,所述应用时训练的去模糊网络101在对特定输入图像去模糊方面比元训练去模糊网络101的性能更好。下面将描述元训练去模糊网络101的应用时训练的进一步细节。
[0087]
由应用时训练的去模糊网络101生成的预测的干净图像可以存储在例如应用设备110的本地存储器中。生成的预测的干净图像也可以显示给(例如,在应用设备110的显示屏上)或以其他方式呈现给用户。在生成预测的干净图像(对于特定模糊输入图像)之后,应用时训练的去模糊网络101可以恢复到元训练去模糊网络101(即应用时训练权重可以被丢弃)。例如,应用时训练权重的值可以用先前存储的元训练权重替换。可以从元训练权重开始重复去模糊网络101的应用时训练,用于每个特定模糊输入图像的去模糊。
[0088]
图5为用于执行步骤404以执行去模糊网络101的元训练的一种示例方法的流程图。例如,图5中的方法可以由图1中所示的元训练设备120执行。在一些示例中,元训练可以由应用设备110而不是元训练设备120执行。
[0089]
图6示出了示例伪代码600,其可以被用来(例如,作为由处理器执行的软件指令)来实现图5中的方法。图5和图6将一起讨论。
[0090]
可选地,在步骤502中,可以获取用于去模糊网络101的预训练权重。如果执行了图4的可选步骤402对去模糊网络101进行预训练,则可以执行步骤502。
[0091]
在步骤504中,初始化用于去模糊网络101元训练的参数。例如,如果在步骤502中获得预训练权重,则去模糊网络101可以被初始化为具有预训练权重的值。如果预训练权重不可用,则可以随机初始化去模糊网络101的权重(例如,通过将每个权重的值设置为相应的随机值)。可以在步骤504初始化的用于去模糊网络101元训练的其他参数包括用于使用梯度下降来更新去模糊网络101的权重的梯度步长。
[0092]
步骤504可以使用伪码600中行602表示的指令来执行。在行602中,去模糊网络101的权重记为θ,其中θs表示共享子网312的权重(例如,如图3所示,去模糊网络101的共享子网312的共享层中的权重),θ
pri
表示仅用于主要去模糊任务的层的权重(例如,如图3所示,去模糊网络101的主子网314的层中的权重),θ
aux
表示仅用于辅助任务的层的权重(例如,如图3中所示,去模糊网络101的辅子网316的层中的权重)。用于计算辅助损失函数和主要损失函数的梯度下降的梯度步长分别表示为α和β。例如,θs、θ
pri
和θ
aux
的值可以从预训练中获得,也可以随机初始化。例如,可以根据辅助损失函数和主要损失函数的梯度下降的期望收敛速度来选择α和β的值。
[0093]
元训练包括训练去模糊网络101以执行辅助任务,然后训练去模糊网络101以执行主要去模糊任务。元训练可以包括多轮训练,其中每轮训练包括训练去模糊网络101以执行多次迭代的辅助任务,然后是去模糊网络101的一次训练迭代以执行主要去模糊任务。可以重复多轮训练,直到满足条件(例如,辅助损失函数和主要损失函数各自收敛于优化值,已经执行预定数量的多轮训练,或者已经处理训练数据集中的所有标记训练数据)。伪代码600的行604可以表示重复训练直到满足收敛条件的指令。
[0094]
现在描述一轮训练(包括如上所述的多次训练迭代)。
[0095]
在步骤506中,执行辅助任务的训练。这可以通过步骤508和510执行。
[0096]
在步骤508中,对标记训练数据进行采样。例如,可以从包含标记训练数据的数据
库130中采样一批训练标记训练数据。标记训练数据的采样批次包括配对的训练图像,其中每个模糊输入图像与相应的基准真相干净(即不模糊)图像配对。每对模糊输入图像和相应的基准真相干净训练图像在本文中可以称为输入-输出图像对。采样批次中的输入-输出图像对的数量可以记为n(其中n是正整数)。然后,每个模糊输入图像(记为)与相应的基准真相干净输出图像(记为)配对,其中n是每个输入-输出图像对的索引(n是不大于n的正整数)。伪代码600的行606可以表示用于获取标记训练数据的指令。
[0097]
在步骤510中,执行辅助任务,并基于计算出的辅助损失计算临时权重。针对采样批次中索引n的每个值,迭代步骤510(即迭代从n=1到n=n)。
[0098]
对于第n个模糊图像,使用模糊训练图像作为输入图像执行辅助任务,以生成重建模糊图像,记为根据辅助损失函数、模糊训练图像和重建模糊图像计算辅助损失(记为l
aux
),其中模糊训练图像用作基准真相。辅助损失l
aux
可以计算为,例如,重建模糊图像和模糊训练图像之间的绝对距离。需要注意的是,干净训练图像不用于训练去模糊网络101执行辅助任务。然后,相对于去模糊网络101权重的梯度下降,根据辅助损失来更新去模糊网络101的权重,这可以由以下公式表示:
[0099][0100]
其中n是用于训练去模糊网络101以执行辅助任务的一次迭代的模糊图像的索引,表示基于一次迭代计算的去模糊网络101的临时权重,
←
表示更新操作(例如,用更新值替换权重的先前值),α是梯度下降的步长,是梯度操作。应当注意的是,针对去模糊网络的每次训练迭代以执行辅助任务(即对于每个相应模糊训练图像的每次训练迭代),计算用于去模糊网络101的相应临时权重集。
[0101]
标记训练数据的采样批次中的n个模糊输入图像中的每一个都通过去模糊网络101前向传播。通过计算相应的辅助损失并通过反向传播相应的辅助损失(例如,通过梯度下降)更新去模糊网络101的权重,来计算相应的临时权重集。因此,获得n个临时权重集,之后方法进入步骤512。伪代码的行608—614可以表示用于执行步骤510的指令。
[0102]
在步骤512中,对主要去模糊任务执行去模糊网络101的训练。这可以通过步骤514执行。
[0103]
在步骤514中,执行主要去模糊任务以对预测的干净图像进行预测,并且基于计算的主要损失更新去模糊网络101的权重。可以对每一轮训练执行步骤514的一次迭代。为了计算主要损失,为采样批次中的每n个模糊训练图像生成一个预测的干净图像,记为
[0104]
通过主要损失函数、基准真相干净图像和预测的干净图像计算主要损失(记为l
pri
)。来自采样批次中第n个标记训练数据的基准真相干净图像(与第n个模糊输入图像配对)被用作基准真相。主要损失l
pri
可以计算为,例如,生成的干净图像和干净训练图像之间的绝对距离。主要损失l
pri
的计算也基于训练去模糊网络101以执行辅助任务时计算的临时权重为标记训练数据的采样批次中的每个标记训练数据(输入-输出图像对)计算主要损失l
pri
,并对所有计算的主要损失的梯度进行求和。然后,使用求和的
梯度更新去模糊网络101的权重,这可以由以下公式表示:
[0105][0106]
其中β是梯度下降的步长。伪代码的行616—618可以表示用于执行步骤514的指令。
[0107]
应当注意,基于主要损失对去模糊网络101的训练是基于根据辅助损失计算的临时权重。训练去模糊网络101以执行主要去模糊任务被设计成使得基于辅助损失的更新可以提高去模糊网络101在执行主要去模糊任务时的性能。
[0108]
然后检查条件,以确定元训练是否应当结束。如果条件不满足(例如,去模糊网络101的辅助损失函数和主要损失函数没有都收敛),则方法返回步骤506以执行另一轮训练。如果满足条件,则方法进入步骤516。
[0109]
在步骤516中,在元训练完成之后,存储在元训练期间学习的权重,该权重可以被称为元训练权重。例如,如果元训练是在与应用设备110分离的元训练设备120中执行的,则元训练设备120可以将元训练权重传输给应用设备110,并且元训练权重可以由应用设备110存储在其本地存储器中。如果元训练是由应用设备110执行的,则元训练权重可以直接存储在应用设备110的本地存储器中。
[0110]
元训练权重可以被存储并用作去模糊网络101的初始权重,以用于去模糊网络101的应用时训练。应用时训练使用特定应用时模糊图像(例如,没有对应基准真相图像的现实模糊数字图像),以在相对较少的训练迭代(例如,少于十次迭代,或少于十次迭代)中更新去模糊网络101的元训练权重。更新的元训练权重是应用时训练权重。具有应用时训练权重的去模糊网络101在应用时训练完成后在对特定模糊输入图像去模糊方面的效果更好。
[0111]
如图4所示,去模糊网络101的应用时训练在去模糊网络101的元训练之后。然而,应当理解,去模糊网络101的应用时训练不一定紧跟着去模糊网络101的元训练。例如,元训练权重可以由应用设备110存储在本地存储器中。当期望对特定模糊输入图像进行去模糊时,例如响应于应用设备110上的用户输入(例如,用户选择对捕获图像去模糊的选项),元训练权重可用于在稍后的应用时训练权重。应用时训练可以被认为是在应用阶段对现实数据(例如,现实模糊图像,没有基准真相干净图像)进行的训练,不同于在包括标记训练数据(即包括输入-输出对的训练数据,其中输入-输出对包括模糊输入图像和对应的基准真相干净图像)的训练数据集上执行的元训练。
[0112]
图7为用于执行步骤406以执行去模糊网络101的应用时训练的一种示例方法的流程图。例如,图7中的方法可以由图1中所示的应用设备110执行。
[0113]
在步骤702中,初始化用于去模糊网络101应用时训练的参数。初始化可以包括获取具有元训练权重的去模糊网络101(例如,通过对具有存储的元训练权重的值的去模糊网络101的权重进行初始化)。可以在步骤702中初始化的用于应用时训练的其他参数包括用于通过梯度下降来适配权重的梯度步长。
[0114]
在步骤704中,获取应用时模糊输入图像。例如,应用时模糊输入图像可以是应用设备110的数码相机捕获的现实图像。应用时模糊输入图像可以在捕获图像时实时获得,或者可以是例如从应用设备110的本地存储器中检索到的先前捕获的图像。
[0115]
在去模糊网络101的应用时训练中,通过进一步训练去模糊网络101以执行辅助任
务(例如,自监督辅助重建任务)来更新去模糊网络101的权重。因为去模糊网络101(参见图3)包括从主子网314传递到辅子网316的特征,基于辅助任务更新去模糊网络101的权重也有利于主要去模糊任务。
[0116]
在步骤706中,对应用时模糊输入图像执行辅助任务,以预测重建后的模糊图像。本示例中的辅助任务是重建模糊输入图像,特征是从主要去模糊任务传递来的。然而,如上文讨论的,辅助任务可以被定义为支持学习主要去模糊任务的任何其他辅助任务(即学习执行辅助任务使去模糊网络101能够学习权重以生成与执行主要任务相关的特征图)。
[0117]
在步骤708中,基于计算的辅助损失,更新去模糊网络101的权重(这些权重在步骤702被初始化为元训练权重)。去模糊网络101的更新权重被称为应用时训练权重。辅助损失的计算可以与元训练中关于辅助损失的计算相同(例如,如伪代码600的行612所示)。也就是说,辅助损失可以根据辅助损失函数(与元训练中使用的辅助损失函数相同)、应用时模糊输入图像和重建后的模糊图像计算。去模糊网络101的权重的更新可以经过几次迭代(例如,少于十次或少于五次迭代)进行(通过重复步骤706和708)。或者,步骤706和708可以仅执行一次,作为一次迭代。通常,在应用时训练期间执行的迭代次数应等于在元训练期间执行辅助任务时执行的迭代次数,以获得更好的性能。
[0118]
在步骤710中,在应用时训练完成之后(例如,在步骤706和708的定义次数迭代已经执行之后),具有应用时训练权重的去模糊网络101用于根据应用时模糊输入图像生成预测的干净图像。例如,预测的干净图像可以本地存储在应用设备110上和/或可以输出给显示设备(例如,应用设备110的显示屏),以便用户观看。
[0119]
在各种示例中,本公开描述了用于图像去模糊的方法和系统。描述了一种基于机器学习的方法,可以实现动态场景的去模糊,并实现对具有均匀图像模糊的图像的去模糊。
[0120]
所公开的用于训练去模糊网络的方法涉及元训练和应用时(或测试时)训练,以执行辅助任务(也称为元辅助学习),可以使得去模糊网络101的权重能够在相对较少的迭代(例如,少于五次应用时迭代)中适配于每个特定应用时输入图像。去模糊网络101的权重的这种快速适配可以使所公开的去模糊方法和系统在实际应用中有用(例如,用于对由电子设备的数码相机捕获的现实图像进行去模糊)。
[0121]
设计去模糊网络(例如具有系统架构),使得对辅助任务(例如,自监督辅助重建任务)的训练有利于主要去模糊任务。
[0122]
在各种评估测试中,已经发现本公开的示例比不进行应用时适配的一些其他现有的基于机器学习的去模糊技术表现得更好。
[0123]
本公开描述了图像去模糊的背景下的示例,包括对捕获的数字图像的去模糊。应理解,本公开可同时适用于静态图像(例如,数字照片)和视频图像(例如,要去模糊的每个图像是视频中的相应帧)的去模糊。
[0124]
尽管在去模糊的背景下进行描述,但应当理解,本公开可以适用于其他图像复原任务,例如去雾、去噪或去雨等。例如,主要去模糊任务可以是主要去雾任务、主要去噪任务或主要去雨任务。应当理解,本公开并不限于仅图像去模糊。任何将受益于应用时训练并在应用时训练中没有基准真相数据的任务都可以受益于本公开的示例。
[0125]
本领域普通技术人员可以意识到,结合本公开中所公开的实施例描述的各示例的单元及算法步骤,能够以电硬件、或者计算机软件和电硬件的结合来实现。功能是由硬件还
是由软件执行取决于技术方案的特定应用和设计约束条件。本领域技术人员可以使用不同的方法实现每个特定应用的所描述的功能,但是不应认为该实现方式超出本公开的范围。
[0126]
本领域技术人员可以清楚地了解到,为描述的方便和简洁,关于上述描述的系统、装置和单元的具体工作过程,可以参考上述方法实施例中的对应过程,在此不再赘述。
[0127]
应理解,所公开的系统和方法可以以其他方式实现。作为分离部件描述的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,可以位于一个位置上,或者可以分布在多个网络单元上。可以根据实际需要选择部分或全部单元,以实现实施例的方案的目的。另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0128]
当这些功能通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以将这些功能存储在计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。该软件产品存储在一个存储介质中,包括若干指令用以指示一台计算机设备(可以是个人计算机、服务器或网络设备)执行本技术各个实施例所述方法的全部或部分步骤。上述存储介质包括任何可以存储程序代码的介质,例如通用串行总线(universal serial bus,简称usb)闪存驱动器、可移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁盘或光盘等。
[0129]
上述描述仅是本技术的具体实施方式,并不用于限制本公开的保护范围。本领域技术人员在本公开公开的技术范围内容易想到的任何变化或替换都应属于本公开的保护范围。
技术特征:
1.一种图像去模糊的方法,其特征在于,包括:获取具有元训练权重的去模糊神经网络,其中所述元训练权重先前通过在主要去模糊任务和辅助重建任务上对所述去模糊神经网络进行元训练而获得;获取应用时模糊输入图像;通过所述应用时模糊输入图像,对具有所述元训练权重的所述去模糊神经网络进行应用时训练,以通过以下步骤获得所述去模糊神经网络的应用时训练权重:对所述应用时模糊输入图像执行所述辅助重建任务,以预测重建后的模糊图像;以及基于根据辅助损失函数计算的辅助损失、所述应用时模糊输入图像和所述重建后的模糊图像,更新所述去模糊神经网络的所述元训练权重;以及在应用时训练完成后,通过具有所述应用时训练权重的所述去模糊神经网络,根据所述应用时模糊输入图像,生成去模糊输出图像。2.根据权利要求1所述的方法,其特征在于,所述应用时训练包括对所述应用时模糊输入图像进行的多次迭代,所述应用时模糊输入图像是单个模糊图像,其中每次迭代包括执行所述辅助重建任务和更新所述去模糊神经网络的权重。3.根据权利要求2所述的方法,其特征在于,所述应用时训练最多包括五次迭代。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述辅助重建任务是通过从所述主要去模糊任务传递的特征来执行的。5.根据权利要求1至3中任一项所述的方法,其特征在于,所述去模糊神经网络包括:一种用于处理所述应用时模糊输入图像的共享子网,其中所述共享子网耦合至用于执行所述主要去模糊任务的主子网和用于执行所述辅助重建任务的辅子网;所述主子网络包括用于执行所述主要去模糊任务的主输出神经网络层,所述主子网络对来自所述共享子网的输出进行处理以生成所述去模糊输出图像;所述辅子网络包括用于执行所述辅助重建任务的辅输出神经网络层,所述辅子网络对来自所述共享子网的输出进行处理以生成所述重建后的模糊图像。6.根据权利要求5所述的方法,其特征在于,由所述主输出神经网络层输出的特征被复制到所述辅子网络的神经网络层。7.根据权利要求5所述的方法,其特征在于,在所述主子网络中,来自所述主输出神经网络层的输出表示所述去模糊输出图像和所述应用时模糊输入图像之间的残差,并且所述残差被添加到所述应用时模糊输入图像中以生成所述去模糊输出图像。8.根据权利要求1至7中任一项所述的方法,其特征在于,所述去模糊神经网络的元训练是基于训练数据集执行的,其中所述训练数据集包括标记训练数据的输入-输出对。9.一种去模糊神经网络的训练方法,其特征在于,包括:初始化去模糊神经网络的权重;执行所述去模糊神经网络的一轮元训练,以执行主要去模糊任务和辅助重建任务,并通过以下步骤获得元训练权重:对训练数据的采样批次进行采样,其中所述采样批次包括多个模糊训练图像,每个模糊训练图像与所述采样批次中对应的干净训练图像配对;对于所述采样批次中的每个给定模糊训练图像,对所述给定模糊训练图像执行所述辅助重建任务,以预测相应的重建后的模糊图像,并基于根据辅助损失函数计算的辅助损失、
所述给定模糊训练图像和相应的重建后的模糊图像,计算相应的临时权重集;对于所述采样批次中的每对给定的模糊训练图像和对应的干净训练图像,执行所述主要去模糊任务,以预测相应的预测的干净图像,并根据主要损失函数、对应的干净训练图像、相应的预测的干净图像和相应的临时权重集,计算相应的主要损失;以及通过相应计算的主要损失的梯度求和,更新所述去模糊神经网络的权重;以及在元训练完成后,存储所述元训练权重,可对具有所述元训练权重的所述去模糊神经网络进行进一步训练以用于模糊输入图像的应用时去模糊。10.根据权利要求9所述的方法,其特征在于,所述辅助重建任务是通过从所述主要去模糊任务传递的特征来执行的。11.根据权利要求9或10中任一项所述的方法,其特征在于,所述去模糊神经网络包括:一种用于处理所述模糊训练图像的共享子网,其中所述共享子网耦合至用于执行所述主要去模糊任务的主子网和用于执行所述辅助重建任务的辅子网;所述主子网络包括用于执行所述主要去模糊任务的主输出神经网络层,所述主子网络对来自所述共享子网的输出进行处理以生成所述去模糊输出图像;所述辅子网络包括用于执行所述辅助重建任务的辅输出神经网络层,所述辅子网络对来自所述共享子网的输出进行处理以生成所述重建后的模糊图像。12.根据权利要求11所述的方法,其特征在于,由所述主输出神经网络层输出的特征被复制到所述辅子网络的神经网络层。13.根据权利要求11所述的方法,其特征在于,在所述主子网络中,来自所述主输出神经网络层的输出表示所述去模糊输出图像和所述应用时模糊输入图像之间的残差,并且所述残差被添加到所述应用时模糊输入图像中以生成所述去模糊输出图像。14.一种图像去模糊的设备,其特征在于,包括:处理器,用于执行指令以使所述设备:获取具有元训练权重的去模糊神经网络,其中所述元训练权重先前通过在主要去模糊任务和辅助重建任务上对所述去模糊神经网络进行元训练而获得;获取应用时模糊输入图像;通过所述应用时模糊输入图像,对具有所述元训练权重的所述去模糊神经网络进行应用时训练,以通过以下步骤获得所述去模糊神经网络的应用时训练权重:对所述应用时模糊输入图像执行所述辅助重建任务,以预测重建后的模糊图像;以及基于根据辅助损失函数计算的辅助损失、所述应用时模糊输入图像和所述重建后的模糊图像,更新所述去模糊神经网络的所述元训练权重;以及在应用时训练完成后,通过具有所述应用时训练权重的所述去模糊神经网络,根据所述应用时模糊输入图像,生成去模糊输出图像。15.根据权利要求14所述的设备,其特征在于,所述应用时训练包括对所述应用时模糊输入图像进行的多次迭代,所述应用时模糊输入图像是单个模糊图像,其中每次迭代包括执行所述辅助重建任务和更新所述去模糊神经网络的权重。16.根据权利要求15所述的设备,其特征在于,所述应用时训练最多包括五次迭代。17.根据权利要求14至16中任一项所述的设备,其特征在于,所述辅助重建任务是通过从所述主要去模糊任务传递的特征来执行的。
18.根据权利要求14至17中任一项所述的设备,其特征在于,所述去模糊神经网络包括:一种用于处理所述应用时模糊输入图像的共享子网,其中所述共享子网耦合至用于执行所述主要去模糊任务的主子网和用于执行所述辅助重建任务的辅子网;所述主子网络包括用于执行所述主要去模糊任务的主输出神经网络层,所述主子网络对来自所述共享子网的输出进行处理以生成所述去模糊输出图像;所述辅子网络包括用于执行所述辅助重建任务的辅输出神经网络层,所述辅子网络对来自所述共享子网的输出进行处理以生成所述重建后的模糊图像。19.根据权利要求18所述的设备,其特征在于,由所述主输出神经网络层输出的特征被复制到所述辅子网络的神经网络层。20.根据权利要求15至19中任一项所述的设备,其特征在于,所述去模糊神经网络的元训练是基于训练数据集执行的,其中所述训练数据集包括标记训练数据的输入-输出对。21.一种包括指令的计算机程序,其特征在于,当所述程序由计算机执行时,使得所述计算机执行根据权利要求1至13中任一项所述的方法。22.一种包括指令的计算机可读介质,其特征在于,当所述指令由计算机执行时,使得所述计算机执行根据权利要求1至13中任一项所述的方法。
技术总结
描述了一种图像去模糊的方法和系统(100)。首先,通过在主要去模糊任务和辅助重建任务上对去模糊网络(101)进行元训练,得到所述去模糊网络(101)的权重。然后,基于应用时模糊输入图像,执行所述去模糊网络(101)的应用时训练,以获得应用时训练权重的值。应用时训练包括对所述应用时模糊输入图像执行所述辅助重建任务,以及基于从所述辅助重建任务中计算的辅助损失更新所述去模糊网络(101)的权重。通过所述去模糊网络(101)中的应用时训练权重,根据所述应用时模糊输入图像,生成去模糊输出图像。糊输出图像。糊输出图像。
技术研发人员:池志祥 王洋 于远灏 唐进
受保护的技术使用者:华为技术有限公司
技术研发日:2021.11.03
技术公布日:2023/8/6
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
