大尺寸图像的训练和放大
文献发布时间:2023-06-19 11:17:41
相关申请的交叉引用
本申请援引35U.S.C.§119(e)要求于2018年10月18日提交的标题为“Machine-Learning Based Single Image Upscaling Application for Motion Pictures”的共同待决的美国临时专利申请No.62/747,453的优先权权益。上面引用的申请的公开内容通过引用并入本文。
技术领域
本公开涉及训练和放大图像,并且更具体而言,涉及训练和放大大尺寸输入图像。
背景技术
机器学习(ML)可以用于执行图像超分辨率放大。但是,常规的基于ML的训练和放大过程存在一些已观察到的问题。例如,当目标图像尺寸增加时,基于ML的训练和放大所需的存储器尺寸将呈指数增长,尤其是用具有许多层的深度神经网络的情况下。为了在使用先进的基于神经网络的训练和放大过程的同时将所需的存储器尺寸维持在实际范围内,期望一种独立于输入/输出图像尺寸的方法。
发明内容
本公开提供了训练和放大大尺寸输入图像。
在一个实施方式中,公开了一种用于训练和放大大尺寸输入图像的方法。该方法包括:将大尺寸输入图像划分成小尺寸的多个子图片;使用目标填充像素扩展小尺寸的多个子图片中的每个子图片,以产生扩展的子图片;使用基于ML的放大器对每个子图片进行放大以产生扩展的放大的子图片;将扩展的放大的子图片裁剪成等于每个子图片的原始尺寸乘以放大因子的放大尺寸;对多个子图片重复扩展、放大和裁剪;以及级联多个裁剪的子图片以产生输出图像。
在一个实施方式中,扩展每个子图片包括:确定如何在每个子图片周围填充额外像素;以及在每个子图片周围添加额外像素的子区(sub-region)。在一个实施方式中,添加子区包括确定每个子区的类型。在一个实施方式中,第一类型的子区包括具有完全在大尺寸图像的有效图片区域内的像素的子区。在一个实施方式中,该方法还包括:当确定子区是第一类型时,将每个子图片延展到子区的方向中。在一个实施方式中,第二类型的子区包括具有不在大尺寸图像的有效图片区域内,而是在每个子图片的边缘上的像素的子区。在一个实施方式中,该方法还包括:当确定子区为第二类型时,在边缘上使用蝴蝶图像(butterfly image)来延展每个子图片。在一个实施方式中,第三类型的子区包括具有不在大尺寸图像的有效图片区域内,而是在每个子图片的角上的像素的子区。在一个实施方式中,该方法还包括:当确定子区为第三类型时,在角上使用蝴蝶图像来延展子图片。
在另一个实施方式中,公开了一种大尺寸图像放大系统。该系统包括:图像划分器,被配置为将大尺寸的输入图像划分成多个子图片;子图片延展器,被配置为通过在每个子图片周围添加额外的像素来延展多个子图片中的每个子图片,以产生扩展的子图片,其中扩展的子图片被馈送到神经网络中以训练并放大扩展的子图片;子图片裁剪器,被配置为接收扩展和放大的子图片,并将其裁剪为与原始子图片的尺寸乘以放大因子对应的尺寸;以及图像充填器,被配置为将多个子图片中的所有裁剪的子图片进行级联以重构输出图像。
在一个实施方式中,子图片延展器通过在每个子图片周围添加额外像素的子区来在每个子图片周围添加额外像素。在一个实施方式中,添加子区包括确定每个子区的类型。在一个实施方式中,第一类型的子区包括具有完全在大尺寸输入图像的有效图片区域内的像素的子区。在一个实施方式中,子图片延展器还被配置为:当确定子区为第一类型时,将每个子图片延展到子区的方向中。在一个实施方式中,第二类型的子区包括具有不在大尺寸输入图像的有效图片区域内,而是在每个延展的子图片的边缘上的像素的子区。在一个实施方式中,子图片延展器还被配置为:当确定子区为第二类型时,在边缘上使用蝴蝶图像来延展每个子图片。在一个实施方式中,第三类型的子区包括具有不在大尺寸输入图像的有效图片区域内,而是在每个延展子图片的角上的像素的子区。在一个实施方式中,子图片延展器还被配置为:当确定子区为第三类型时,在角上使用蝴蝶图像来延展每个子图片。
在又一个实施方式中,公开了一种非暂态计算机可读存储介质,其存储用于训练和放大大尺寸输入图像的计算机程序。该计算机程序包括可执行指令,该可执行指令使计算机:将大尺寸输入图像划分成多个小尺寸的子图片;使用目标填充像素扩展多个小尺寸子图片中的每个子图片,以产生扩展的子图片;使用基于ML的放大器对每个子图片进行放大以产生扩展的放大子图片;将扩展的放大子图片裁剪成等于每个子图片的原始尺寸乘以放大因子的放大尺寸;重复使计算机扩展、放大和裁剪多个子图片的可执行指令;以及级联多个裁剪的子图片以产生输出图像。
在一个实施方式中,使计算机扩展每个子图片的可执行指令包括使计算机执行以下操作的可执行指令:确定如何在每个子图片周围填充额外像素;以及添加额外像素的子区。
其它特征和优点应当从通过举例说明本公开的各方面的本描述中显而易见。
附图说明
关于本公开的结构和操作的细节,可以通过研究附图来部分地收集,其中相同的附图标记指代相同的部分,并且其中:
图1A示出了被划分成六个小尺寸子图片的大尺寸输入图像;
图1B示出了子图片的处理以及从子图片形成输出图像;
图2是图示根据本公开的一个实施方式的(相对于图1B描述的)扩展过程的详细流程图;
图3是图示根据本公开的一个实施方式的用于训练和放大大尺寸图像的过程的流程图;
图4是图示根据本公开的一个实施方式的填充过程的详细流程图;
图5是图示根据本公开的一个实施方式的裁剪过程的详细流程图;
图6是示出根据本公开的一个实施方式的大尺寸图像放大系统的框图;
图7A是根据本公开的实施方式的大尺寸图像放大系统和用户的表示;以及
图7B是图示根据本公开的实施方式的托管大尺寸图像放大应用的计算机系统的功能框图。
具体实施方式
如上所述,常规的基于ML的训练和放大过程具有一些已观察到的问题。例如,当目标图像尺寸增加时,基于ML的训练和放大所需的存储器尺寸将呈指数增长,尤其是用具有许多层的深度神经网络的情况下。为了在使用先进的基于神经网络的训练和放大过程的同时将所需的存储器尺寸维持在实际范围内,期望一种独立于输入/输出图像尺寸的方法。
为了解决常规过程的上述问题,本公开的某些实施方式提供:
(1)将大尺寸输入图像划分成多个小尺寸的子图片;(2)通过目标填充围绕子图片的像素来扩展每个子图片;(3)放大扩展的子图片;(4)从扩展和放大的子图片中裁剪出图像区域;以及(5)级联裁剪的子图片图像以重构输出的放大图像。
在阅读这些描述之后,如何在各种实施方式和应用中实现本公开将变得显而易见。虽然本文将描述本公开的各种实施方式,但是应该理解的是,这些实施方式仅以示例而非限制的方式给出。照此,各种实施方式的这种详细描述不应当被解释为限制本公开的范围或广度。
图1A和1B形成了流程图,该流程图图示了根据本公开的一个实施方式的用于训练和放大大尺寸图像的过程。在一个实施方式中,大尺寸图像包括高清晰度(HD)或更高清晰度的图像。例如,HD图像可以被定义为具有1920x1080像素的分辨率,而更高分辨率的图像(诸如,4K)可以被定义为具有3840x2160像素的分辨率。因此,HD或4K图像可以被分类为大尺寸图像,其不能作为单个输入图像被处理成复杂的神经网络层进行训练。
图1A所示的实施方式示出了被划分成六个小尺寸子图片110、120、130、140、150、160的大尺寸输入图像100。图1B示出了子图片的处理以及从子图片形成输出图像。图1B示出了用于六个子图片中的两个子图片的过程。但是,其它四个子图片可以类似于用于所示的两个子图片的过程进行处理。
关于小尺寸的子图片需要有多小,取决于存储器尺寸和训练中使用的神经网络的复杂性。即,较大的存储器尺寸允许使用较大尺寸的子图片进行处理,而更复杂的神经网络需要较小尺寸的子图片。在一个示例中,可以被发送用于训练的子图片的最大尺寸是64x64或128x128像素。
在图1B所示的实施方式中,子图片的每个130、160被分别处理。最初,使用扩展过程170,通过目标填充子图片周围的像素来扩展每个子图片。该扩展过程170在图2中图示,并且在图2的描述部分中详细描述。
在图1B所示的实施方式中,填充每个子图片(通过扩展过程170)以形成扩展的子图片132、162。然后,扩展的子图片132、162被放大(通过基于神经网络的放大过程180)。因此,在图1B的放大过程180中,所需的存储器尺寸由每个子图片的尺寸和神经网络的复杂度定义,而不是由总体输入图像的尺寸定义。
图1B示出了扩展和放大的子图片134、164。扩展和放大的子图片134、164中的每一个都被裁剪以产生子图片136、166的原始图像区域。裁剪的子图片图像116、126、136、146、156、166被级联,以重构输出的放大图像190。
图2是图示根据本公开的一个实施方式的扩展处理170(参考图1B描述的)的详细流程图。图2所示的实施方式示出了一个子图片130用附加的填充/像素区A、B、C进行扩展以产生扩展的子图片132。虽然图2仅示出了用于子图片130的扩展过程,但是可以使用这里针对子图片130描述的相同过程来扩展其它子图片。
在一个实施方式中,要添加到子图片130的附加填充/像素区包括八个子区(例如,两侧、顶部和底部,以及四个角)。在这个实施方式中,八个子区被分为3种类型的填充设计(例如,A、B、C)。
在一个示例中,类型A填充设计用于有效图片区域100内的子区。因此,通过将图像区域延展到四个方向来形成类型A填充设计。在图2中,类型A填充设计用于左侧子区、底部子区和底部左角子区。因此,扩展子图片132示出了通过将图像区域延展到四个方向而形成的那些子区(即,左子区、底部子区和左下角子区)。
在另一个示例中,类型B填充设计用于不在有效图片区域100内但在边缘(例如,左、右、上或下)中的子区。因此,在边缘上使用蝴蝶图像形成类型B填充设计。在图2中,类型B填充设计用于不在有效图片区域100中并且不在任何角中的顶部子区和右侧子区。因此,扩展的子图片132示出了在边缘上使用蝴蝶图像形成的那些子区(即,顶部子区和右侧子区)。
在另一个示例中,类型C填充设计用于不在有效图片区域100内但在角(例如,左上角、右上角、左下角或右下角)中的子区。因此,在角点上使用蝴蝶图像形成类型C填充设计。在图2中,类型C填充设计用于不在有效图片区域100中并且在角中的左上角子区、右上角子区和右下角子区。因此,扩展的子图片132示出了在角点上使用蝴蝶图像形成的那些子区(即,左上角子区、右上角子区和右下角子区)。
图3是图示根据本公开的一个实施方式的用于训练和放大大尺寸图像的过程300的流程图。在图3所示的实施方式中,在方框310处将大尺寸输入图像划分成多个小尺寸子图片。图1A示出了被划分成六个小尺寸子图片110、120、130、140、150、160的大尺寸输入图像100的一个示例。
在方框320处,使用子图片周围的目标填充像素来扩展每个子图片。在一个实施方式中,扩展过程包括在每个子图片周围添加额外的填充/像素以产生扩展的子图片。在图2中所示的流程图和图4中所示的流程图中图示了如何将额外的填充/像素添加到每个子图片的详细信息。
在一个实施方式中,在方框330处,将每个填充的子图片馈送到基于ML的放大处理器(例如,神经网络)中,以产生放大的填充的子图片。在方框340处,将每个放大和填充的子图片裁剪成子图片的原始尺寸乘以放大因子。如果在方框350处确定存在更多的(一个或多个)子图片要处理,那么过程300被引导到方框320以处理更多的(一个或多个)子图片。在方框360处,所有裁剪的子图片被级联,以重构输出图像。
图4是图示根据本公开的一个实施方式的填充过程(图3中的方框320)的详细流程图。在图4所示的实施方式中,首先在方框400处确定如何填充子图片周围的像素。在一个实施方式中,要在子图片周围填充的像素被分组成多个子区(类型A、B和C)。
在图4所示的实施方式中,要填充的像素被分组成三个子区。在方框410处,检查要在子图片周围填充的每个子区,以确定它是否是第一类型(例如,图2中的类型A),其中该子区在有效图片区域内(例如,图1A中的100)。如果子区在有效图片区域内,那么在方框412处,子图片的图像区域然后被延展到子区的方向中。
否则,如果在方框420处确定子区在有效图片区域之外,但是在边缘中(例如,图2中的类型B),那么在方框422处在边缘上使用蝴蝶图像填充子图片。如上所述,类型B填充设计用于不在有效图片区域中并且不在任何角中的顶部子区和右侧子区。
否则,如果在方框430处确定子区在有效图片区域之外,但是在角中(例如,图2中的类型C),那么在方框432处在角点上使用蝴蝶图像填充子图片。如上所述,类型C填充设计用于不在有效图片区域中并且在角中的左上角子区、右上角子区和右下角子区。
如果在方框440处确定有更多子区要处理,那么在方框450处,该过程移动到下一个子区,并且返回到方框410。否则,该过程终止。
虽然以特定顺序布置了图4中的过程320的方框410、420、430,但是可以以任何顺序执行这些方框而不影响过程320的结果。
图5是图示根据本公开的一个实施方式的裁剪过程(图3中的方框340)的详细流程图。在图5所示的实施方式中,在方框500处,接收扩展和放大的子图片。在方框510处,确定子图片的原始尺寸和放大因子。然后在方框520处,通过将原始尺寸乘以放大因子来确定放大尺寸。在方框530处,子图片被裁剪成放大尺寸。在方框540处,输出裁剪的子图片。
图6是示出根据本公开的一个实施方式的大尺寸图像放大系统600的框图。在图6所示的实施方式中,大尺寸图像放大系统600包括图像划分器610、子图片延展器620、子图片裁剪器640和图像充填器650。
在图6所示的实施方式中,图像划分器610被配置为将大尺寸输入图像划分成多个小尺寸子图片。在一个实施方式中,将大尺寸输入图像划分成多个小的等尺寸的子图片。子图片延展器620被配置为通过在子图片周围添加额外的填充/像素来延展子图片,以产生扩展的子图片。
在图6所示的实施方式中,将扩展的子图片馈送到基于ML的放大处理器(例如,神经网络630)中以产生扩展的和放大的子图片。子图片裁剪器640被配置为将扩展和放大的子图片裁剪成与在放大过程之前原始子图片的尺寸乘以放大因子对应的尺寸。图像充填器650然后被配置为级联所有裁剪的子图片以重构输出图像。
在一个实施方式中,大尺寸图像放大系统600是完全用硬件配置的系统,包括一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门/逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路系统。在另一个实施方式中,大尺寸图像放大系统600用硬件和软件的组合配置。
图7A是根据本公开的实施方式的大尺寸图像放大系统700和用户702的表示。用户702使用计算机系统700来实现用于放大过程中的帧处理的应用。
计算机系统700存储并执行图7B的大尺寸图像放大应用790。另外,计算机系统700可以与软件程序704通信。软件程序704可以包括用于大尺寸图像放大应用的软件代码。可以将软件程序704加载在诸如CD、DVD或存储驱动器之类的外部介质上,如将在下面进一步解释的。
此外,计算机系统700可以连接到网络780。网络780可以以各种不同的体系架构连接,例如,客户端-服务器体系架构、对等网络体系架构或其它类型的体系架构。例如,网络780可以与服务器785通信,该服务器785协调在大尺寸图像放大应用中使用的引擎和数据。而且,网络可以是不同类型的网络。例如,网络780可以是互联网、局域网,或局域网、广域网、城域网、内联网或外联网或无线网络的任何变体。
图7B是图示根据本公开的实施方式的托管大尺寸图像放大应用790的计算机系统700的功能框图。控制器710是可编程处理器,并且控制计算机系统700及其组件的操作。控制器710从存储器720或嵌入式控制器存储器(未示出)加载指令(例如,以计算机程序的形式),并执行这些指令以控制系统。在其执行中,控制器710向大尺寸图像放大应用790提供软件系统,诸如以使得能够在大尺寸图像放大应用内创建和配置引擎和数据提取器。可替代地,这个服务可以被实现为控制器710或计算机系统700中的分离的硬件组件。
存储器720临时存储数据以供计算机系统700的其它组件使用。在一个实施方式中,存储器720被实现为RAM。在一个实施方式中,存储器720还包括长期或永久存储器,诸如闪存和/或ROM。
存储装置730临时或长时间存储数据,以供计算机系统700的其它组件使用。例如,存储装置730存储由大尺寸图像放大应用790使用的数据。在一个实施方式中,存储装置730是硬盘驱动器。
介质设备740接收可移除介质,并向插入的介质读取和/或写入数据。在一个实施方式中,例如,介质设备740是光盘驱动器。
用户接口750包括用于接受来自计算机系统700的用户的用户输入并将信息呈现给用户702的组件。在一个实施方式中,用户接口750包括键盘、鼠标、音频扬声器和显示器。控制器710使用来自用户702的输入来调节计算机系统700的操作。
I/O接口760包括一个或多个I/O端口,以连接到对应的I/O设备,诸如外部存储装置或补充设备(例如,打印机或PDA)。在一个实施方式中,I/O接口760的端口包括诸如USB端口、PCMCIA端口、串行端口和/或并行端口之类的端口。在另一个实施方式中,I/O接口760包括用于与外部设备无线通信的无线接口。
网络接口770包括支持以太网连接的有线和/或无线网络连接,诸如RJ-45或“Wi-Fi”接口(包括但不限于802.11)。
计算机系统700包括计算机系统所特有的附加硬件和软件(例如,电源、冷却、操作系统),但是为简单起见在图7B中未具体示出这些组件。在其它实施方式中,可以使用计算机系统的不同配置(例如,不同的总线或存储配置或多处理器配置)。
提供本文所公开的实施方式的描述以使本领域的任何技术人员能够制造或使用本公开。对这些实施方式的许多修改对于本领域技术人员而言将是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中定义的原理可以应用于其它实施方式。例如,虽然以上描述提到了放大大尺寸图像的问题,但是放大的困难还可以包括放大具有更大位深度(例如,16位深度相对8位深度)的图像的困难。因此,本公开并不旨在限于本文中所示的实施方式,而是应被赋予与本文中公开的原理和新颖特征一致的最广范围。
本公开的各种实施方式以电子硬件、计算机软件或这些技术的组合来实现。一些实施方式包括由一个或多个计算设备执行的一个或多个计算机程序。一般而言,计算设备包括一个或多个处理器、一个或多个数据存储组件(例如,易失性或非易失性存储器模块以及持久性的光和磁存储设备,诸如硬盘和软盘驱动器、CD-ROM驱动器和磁带驱动器)、一个或多个输入设备(例如,游戏控制器、鼠标和键盘),以及一个或多个输出设备(例如,显示设备)。
计算机程序包括可执行代码,该可执行代码通常存储在持久性存储介质中,然后在运行时复制到存储器中。至少一个处理器通过以规定顺序从存储器中检索程序指令来执行代码。当执行程序代码时,计算机从输入和/或存储设备接收数据、对数据执行操作,然后将结果数据传递到输出和/或存储设备。
本领域技术人员将认识到的是,本文描述的各种说明性模块和方法步骤可以被实现为电子硬件、软件、固件或前述的组合。为了清楚地说明硬件和软件的这种互换性,在本文已总体上根据其功能性描述了各种说明性模块和方法步骤。将这种功能性实现为硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用以各种方式来实现所描述的功能性,但是此类实施方式决定不应当被解释为导致脱离本公开的范围。此外,模块或步骤内的功能的分组是为了便于描述。可以在不脱离本公开的情况下将具体功能从一个模块或步骤移动到另一个模块或步骤。
不是每个上面讨论的示例的所有特征在本公开的特定实施方式中都是必需的。另外,应理解的是,本文给出的描述和附图代表本公开广泛预期的主题。还应理解的是,本公开的范围完全涵盖对于本领域技术人员而言将变得显而易见的其它实施方式,并且本公开的范围因此仅由所附权利要求书来限制。
- 大尺寸图像的训练和放大
- 一种图像放大方法及用于实现图像放大的VLSI