使用深度神经网络来处理图像背景技术
本说明书涉及使用深度神经网络的图像处理,例如卷积神经网络。
卷积神经网络一般包括两种神经网络层,卷积神经网络层和全连接神经网络层。
卷积神经网络层具有稀疏的连接性,其中卷积层的每个节点接收来自更低一层的神经网络
层的节点子集的输入。一些卷积神经网络层具有与层中其它节点共享权重的节点。然而,全
连接层中的节点接收来自更低一层的神经网络层中的每个节点的输入。
发明内容
大体上,本说明书描述了用于使用深度神经网络处理图像的技术。
本说明书中所描述的主题的特定实施例能够被实现,以便实现以下优点中的一个
或多个。通过在深度神经网络中包括子网并且具体包括模块子网,该深度神经网络能够更
好地执行图像处理任务,例如对象识别或图像分类。此外,与不包含模块子网的深度神经网
络相比,包括模块子网的深度神经网络能够更快且更有效率地训练,同时维持图像处理任
务的提高的效能。
在附图以及下面的说明书中阐述了本说明书的主题的一个或多个实施例的细节。
本主题的其它特征、方面、和优点将根据说明书、附图、和权利要求书而变得显而易见。
附图说明
图1示出了图像处理系统的示例图像。
图2是根据输入图像来生成输出的示例过程的流程图。
图3是使用模块子网来处理输入的示例过程的流程图。
各个附图中相似的附图标记和名称指示相似的元素。
具体实施方式
图1示出了示例图像处理系统100。所述图像处理系统100为一个系统的示例,该系
统被实现为一个或多个位置中的一个或多个计算机上的计算机程序,在其中能够实现下文
中描述的系统、组件、和技术。
图像处理系统100接收表征输入图像的数据,例如输入图像的像素信息或表征该
输入图像的其它信息。例如,所述图像处理系统100能够接收输入图像数据102。图像处理系
统100使用深度神经网络150和输出层152来处理所接收的数据以生成该输入图像的输出,
例如来自输入图像数据102的输出154。
图像处理系统100能够被配置为接收输入图像数据并且基于该输入图像来生成任
何种类的分值或分类输出,即能够被配置为执行任何种类的图像处理任务。由本系统生成
的该分值或分类输出取决于图像处理系统已经被配置来确认的任务。例如,对于图像分类
或识别任务而言,由图像处理系统100针对给定图像所生成的输出可以是对象类别集合中
的每一个的分值,其中每个分值表示该图像包含属于该类别的对象的图像的可能性。作为
另一示例,对于对象检测任务而言,由图像处理系统100生成的输出能够识别输入图像中的
感兴趣对象的位置、大小,或者这两者。
深度神经网络150包括多个子网络的序列,其从序列中的最低子网到序列中的最
高子网来布置,例如包括子网A104、子网B106、和子网C108的序列。深度神经网络150通过序
列中的每个子网处理接收的输入图像数据,以生成输入图像的替选表示。一旦深度神经网
络150已生成输入图像的替选表示,输出层152就处理该替选表示以生成输入图像的输出。
如上所述,由输出层152生成的输出的类型取决于图像处理系统100已经被配置来确认的图
像分类任务。类似的,被用于根据该替选表示生成输出的输出层152的类型也取决于该任
务。具体的,输出层152是适合于该任务的输出层,即生成对于图像处理任务必要的种类的
输出。例如,对于图像分类任务,该输出层可以是softmax输出层,其针对对象类别的集合中
的每一个生成相应的分值。
序列中的子网包括多个模块子网以及可选地包括一个或多个其它子网,所述其他
子网均由一个或多个常规神经网络层组成,例如,最大池化层、卷积层、全连接层、正则化层
等。
在图1的示例中,子网B106被描绘为模块子网。虽然在图1的示例中仅示出了单个
模块子网络,但是深度神经网路150一般将包括多个模块子网。模块子网一般包括直通
(pass-through)卷积层,例如直通卷积层106、神经网络层的一个或多个群组、以及连结
(concatenation)层——如连结层130。模块子网B106接收来自序列中在前的子网的输入,
并根据接收的输入来生成输出表示。
连结层130接收由直通卷积层108生成的输出和由神经网络层的群组中的每一个
生成的相应输出,并且对接收到的输出进行连结以生成单个输出,其作为子网B106的输出
被提供给模块序列中的下一个模块或提供给输出层152。
模块子网络中的神经网络层的每个群组包括两个或更多神经网络层,其中初始神
经网络层后面跟随有一个或多个其它神经网络层。例如,子网B106包括:包括第一卷积层
110的一个群组,第一卷积层110后面跟随有第二卷积层112;包括卷积层114的另一个群组,
卷积层114后面跟随有卷积层116;以及包括最大池化层118的第三群组,最大池化层118后
面跟随有卷积层120。
一般,全连接层中的每个节点接收来自序列中的更低一层中的每个节点的输入,
并且根据该节点的权重集合来从接收的输入产生激活。给定的全连接层中的每个节点所生
成的激活作为输入来被提供给该序列中更高一个全连接层中的每个节点,或者如果该全连
接层是序列中的最高层,则提供给输出层152。
与全连接层不同,卷积层一般是稀疏连接的神经网络层。也就是说,卷积层中的每
个节点接收来自在前的神经网络层中的节点中的一部分——即少于全部节点的输入,或者
如果卷积层是序列中的最低层,则接收对图像处理系统100的输入的一部分,并且根据该输
入来产生激活。一般,卷积层具有节点,其通过根据每个节点的权重集合对接收的输入进行
卷积来生成激活。在一些情况下,卷积层中的节点可以被配置成共享权重。也就是说,该层
中的节点中的一部分可以被约束为总是具有与该层中的其它节点相同的权重值。
下面参照图3来更为详细地描述使用模块子网来处理输入以生成输出表示。
图2是用于根据接收的输入来生成输出的示例过程200的流程图。为了方便,过程
200将被描述为由位于一个或多个位置的一个或多个计算机的系统来执行。例如,根据本说
明书来适当地编程的图像处理系统——例如图1中的图像处理系统100,能够执行过程200。
该系统接收表征输入图像的数据(步骤202)。
该系统使用包括子网的深度神经网络——例如图1的深度神经网络150来处理数
据,以生成替选表示(步骤204)。深度神经网络包括子网的序列,其从序列的最低子网到序
列的最高子网来布置。该系统通过序列中的子网中国的每一个来处理数据以生成替选表
示。序列中的子网包括多个模块子网,并且可选地包括一个或多个子网,其包括一个或多个
常规神经网络层——例如最大池化层、卷积层、全连接层、正则化层等。下面参照图3描述通
过模块子网来处理输入。
该系统通过输出层处理替选表示以生成输入图像的输出(步骤206)。一般,由系统
生成的输入取决于系统被配置来执行的图像处理任务。例如,如果系统被配置来执行图像
分类或识别任务,则由输出层生成的输出可以是预定的对象类别集合中的每一个的相应分
值,其中给定对象类别的分值表示输入图像包含属于该对象类别的对象的图像的可能性。
图3是用于使用模块子网来处理输入的示例过程300的流程图。为了方便,过程300
将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,根据本说明
书来适当地编程的图像处理系统——例如图1的图像处理系统100,能够执行过程300。
该系统接收输入(步骤302)。具体的,该输入是在前的输出表示,即由子网的序列
中的在前的子网生成的输出表示。
该系统通过直通卷积层对该在前的输出表示进行处理,以生成直通输入(步骤
304)。在一些实施方式中,该直通卷积层是1×1卷积层。一般地,k×k卷积层是使用k×k滤
波器的卷积层。也就是说,k×k表示该卷积层所连接的前一层中的区块(patch)的大小。在
这些实施方式中,该1×1直通卷积层一般被用作维度降低模块,以降低在前的输出表示的
维度,并去除可能以其他方式限制深度神经网络的大小的计算瓶颈。在其它实施方式中,该
直通卷积层能够使用不同大小的滤波器,如3×3卷积层或5×5卷积层。
该系统通过一个或多个神经网络层的群组来处理在前的输出表示(步骤306)。神
经网络层的每个群组包括后面跟随有一个或多个附加神经网络层的初始神经网络层。通过
利用给定群组中的神经网络层中的每一个来处理在前的输出表示,该系统利用该群组来处
理在前的输出表示,以生成该群组的群组输出。
在一些实施方式中,该群组中的一个或多个群组包括后面跟随有另一卷积层的一
个卷积层。例如,一个群组可能包括后面跟随有3×3卷积层的1×1卷积层。作为另一示例,
另一群组可能包括后面跟随有5×5卷积层的1×1卷积层。如上所述,该1×1卷积层能够被
用作维度降低模块,以在在前的输出表示被由1×1卷积层之后的其它卷积层处理之前降低
其维度。无论如何,卷积层大小的其它组合也是可能的。
在一些实施方式中,所述群组中的一个或多个群组包括后面跟随有卷积层的最大
池化层。例如,该最大池层可以是后面跟随有1×1卷积层的3×3卷积层。无论如何,最大池
化层大小和卷积层大小的其它组合也是可能的。
系统将直通输出与群组输出连结,以生成输出表示(步骤308)。例如,系统能够将
由直通卷积层和所述群组生成的向量进行连结以生成单个向量,即输出表示。然后,系统能
够将该输出表示作为输入提供给序列中的下一个子网络或系统的输出层。
过程200和300能够被执行以针对图像生成分类数据,针对该图像的所期望分
类——即系统针对图像应当生成的输入是未知的。过程200和300也能够在训练图像集
合——即系统针对其应当预测出的输出是已知的图像集合中的文档上执行,以便训练深度
神经网络,即为该深度神经网络中的层——即模块子网和其它子网中的层的参数确定经训
练的值。具体的,过程200和300能够在从训练图像集合中选择的图像上重复执行,以作为反
向传播训练技术的一部分,所述反向传播训练技术为深度神经网络的层的参数确定经训练
的值。
在一些实施方式中,在训练期间,随着在深度神经网络被训练过之后去除了一个
或多个其它训练子网,该深度神经网络得以增强。每个其它训练子网(也称为“边楼(side
tower)”)包括:一个或多个卷积神经网络层,例如能够包括平均池化层、全连接层、浅层
(dropout layers)等中的一个或多个;以及输出层,其被配置为生成与系统的输出层相同
的分类。每个其它训练子网被配置为接收由深度神经网络的子网中的一个生成的输出——
即与已经接收子网输出的子网络并行来接收,并且处理该子网输出以针对训练图片来生成
训练子网输出。该训练子网输出也被用于调整深度神经网络中的层的参数值,以作为反向
传播训练技术的一部分。如上所述,一旦深度神经网络已被训练,训练子网就被去除。
本说明书中所描述的主题和功能操作的实施例能够以数字电子电路、以有形体现
的计算机软件或固件、以计算机硬件——包括在本说明书中公开的结构及其结构等同物、
或者它们中的一个或多个的组合来实现。本说明书中所描述的主题的实施例能够被实现为
一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在有形非暂时性
程序载体上,以用于由数据处理装置执行或控制数据处理装置的操作。替选地或另外地,程
序指令能够被编码在人工生成的传播信号上,该信号例如机器生成的电、光、或电磁信号,
其被生成以对信息进行编码以用于传输到合适的接收器装置,以用于由数据处理装置执
行。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储器
设备、或者它们中的一个或多个的组合。
术语“数据处理装置”包含用于处理数据的各种装置、设备、和机器,其包括例如可
编程处理器、计算机、或者多个处理器或多个计算机。该装置能够包括专用逻辑电路,例如
FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还能够包括创建
用于所讨论的计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系
统、操作系统,或它们中的一个或多个的组合的代码。
计算机程序(其也可被称为或描述为程序、软件、软件应用、模块、软件模块、脚本
或代码)能够以任何形式的编程语言编写,包括编译或解释语言、或者声明性或过程性语
言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子程序、或适合在计
算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。程序能够被
存储在保持其它程序或数据——如存储在标记语言文档中的一个或多个脚本——的文件
的一部分中、专用于所讨论的程序的单个文件中或多个协同文件——如存储一个或多个模
块、子程序、或代码部分的文件中。计算机程序能够被部署来在一个计算机或在位于一个站
点或跨多个地点分布并通过通信网络互连的多个站点执行。
本说明书中描述的过程和逻辑流程能够由一个或多个可编程计算机来执行,所述
计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过
程和逻辑流程也能够由专用逻辑电路——例如FPGA(现场可编程门阵列)或ASIC(专用集成
电路)执行,并且装置也能够被实现为专用逻辑电路。
适合于执行计算机程序的计算机包括:例如能够基于通用或专用微处理器或这两
者,或者任何其它种类的中央处理单元。一般地,中央处理单元将从只读存储器或随机存取
存储器或这两者接收指令和数据。计算机的必要元件是用于实施或执行指令的中央处理单
元以及用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括用于存储
数据的一个或多个大容量存储设备——例如磁盘、磁光盘、或光盘,或者可操作地耦合以从
其接收数据或向其传输数据,或者这两者。然而,计算机不需要具有这样的设备。此外,计算
机能够被嵌入另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游
戏控制台、全球定位系统(GPS)接收器、或便携式存储设备——例如通用串行总线(USB)闪
存驱动器,仅举数例。
适合于存储计算机程序指令和数据的计算机可读介质包括:所有形式的非易失性
存储器、介质及存储器设备,包括例如半导体存储器设备——例如EPROM、EEPROM和闪存设
备;磁盘——例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储
器能够由专用逻辑电路补充或并入其中。
为了提供与用户的交互,本说明书所描述主题的实施例能够在具有显示设备、键
盘及指示设备的计算机上实现,所述显示设备如CRT(阴极射线管)或LCD(液晶显示器)监视
器,其用于向用户提供显示信息,所述指示设备例如鼠标或轨迹球,用户通过其能够提供输
入给计算机。其它种类的设备也能够被用于提供与用户的交互;例如,提供给用户的反馈能
够是任何形式的感官反馈——例如视觉反馈、听觉反馈、或触觉反馈;并且来自用户的输入
能够以任何形式被接收,包括声音、语音、或触觉输入。此外,计算机能够通过以下方式与用
户进行交互:向用户所使用的设备发送文档以及从用户所使用的设备接收文档,例如通过
响应于从用户的客户端设备上的web浏览器接收的请求,将网页发送到该web浏览器。
本说明书所描述主题的实施例能够在计算系统中实现,该系统包括后端组件——
如数据服务器,或包括中间件组件——如应用服务器,或包括前端组件——如具有图形用
户界面或Web浏览器的客户端计算机——通过该Web浏览器用户能够与本说明书所描述主
题的实施方式进行交互,或者包括一个或多个这样的后端、中间件、或前端组件的任何组
合。该系统的组件能够通过例如通信网络的任何形式或介质的数字数据通信来进行互连。
通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),如互联网。
计算机系统能够包括客户端和服务器。客户端和服务器一般彼此处于远程并且通
常通过通信网络进行交互。客户端和服务器的关系依靠在相应计算机上运行并且彼此具有
客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实施方式细节,但是这些不应被解释为对任何发明或
要求保护的范围的限制,应当被解释为可以是特定发明的特定实施例所特有的特征的描
述。本说明书中在单独实施例的场境中所描述的某些特征也能够在单个实施例中以组合的
方式来实现。相反,在单个实施例的场境中描述的各个特征也能够在多个实施例中单独地
或以任何合适的子组合实现。此外,尽管可能将特征描述为在某些组合中起作用并且甚至
最初如此要求保护,但是在一些情况下来自所要求保护的组合的一个或多个特征能够从组
合中被删去,并且所要求保护的组合可以涉及子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这样的
操作以所示的特定顺序或连续顺序执行,或者需要执行所有图示的操作才能达到期望的结
果。在某些情况下,多任务和并行处理可能是有利的。此外,上述的实施例中的各个系统模
块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述
的程序组件和系统通常能够一起集成在单个软件产品中或者封装到多个软件产品中。
已经描述了本主题的特定实施例。其它实施例落入所附权利要求书的范围内。例
如,权利要求中所记载的操作能够以不同的顺序执行并且仍然达到期望的结果。作为一个
示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来达到期望的结果。在某
些实施方式中,多任务和并行处理可能是有利的。