CN107368886B - 基于重复使用小规模卷积神经网络模块的神经网络系统 - Google Patents
基于重复使用小规模卷积神经网络模块的神经网络系统 Download PDFInfo
- Publication number
- CN107368886B CN107368886B CN201710386705.5A CN201710386705A CN107368886B CN 107368886 B CN107368886 B CN 107368886B CN 201710386705 A CN201710386705 A CN 201710386705A CN 107368886 B CN107368886 B CN 107368886B
- Authority
- CN
- China
- Prior art keywords
- sub
- images
- cnn
- module
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本文公开了基于有限分辨率的小规模CNN模块的卷积神经网络(CNN)系统的各实施例。系统包括用于接收适当高分辨率输入图像的接收模块,能将输入图像划分为有适当重叠的子图像;第一处理级包括仅能处理有限分辨率图像的小规模硬件CNN模块,能按顺序处理每个子图像,生成相应的输出;这些输出被另一个模块合并成一个完整的特征图集合。系统的第二处理级进一步处理合并后的特征图集合,并输出对输入图像内容的至少一个预测。本设计的结果等价于直接把一个大规模CNN系统作用到高分辨率输入图像的结果,因此非常适用于低端嵌入式系统。
Description
技术领域
本公开一般涉及机器学习和人工智能领域,更具体而言,涉及使用有限分辨率的小规模的卷积神经网络(CNN)模块来实现大规模卷积神经网络的系统、设备和技术。
背景技术
深度学习(DL)是机器学习和人工神经网络的一个分支,通过使用具有很多个处理层的人工神经网络来试图建模数据中的高层次抽象。典型的DL架构可包括许多层的神经元和数百万甚至数亿个参数。可以在配备有GPU的高速计算机上用海量数据训练这些参数,并由在深层网络也能适用的新的训练算法来指导,诸如修正线性单元(ReLU)、漏失(或丢弃)、数据集增强,以及随机梯度下降(SGD)。
在现有的DL架构之中,卷积神经网络(CNN)是最流行的架构之一。虽然CNN的核心思想20多年前就被发明了,但是,CNN的真正的能力只是在深度学习理论的近期发展之后才被认识到。到目前为止,CNN已经在许多人工智能和机器学习领域,诸如图像分类、图像字幕生成、可视问答以及自动驾驶汽车中取得了巨大成功。
然而,现有的CNN系统的复杂度仍非常高。例如,著名的大规模的CNN之一,AlexNet包括6000万个参数,并需要超过每秒7.29亿次FLOPs(浮点运算数)才能对单一图像进行分类,而来自牛津大学的VGG网络包括19层和1亿4400万个参数,对单一图像分类涉及的FLOPs的数量是196亿。令人遗憾的是,实现这样的高复杂度网络常常要求大量的昂贵的硬件资源,诸如NvidiaTM GPU核和大规模的FPGA芯片。例如,每片NvidiaTM TK1芯片需要花费至少US$80,而更强大的NvidiaTM TX1芯片花费至少US$120。对于常常受到成本约束的嵌入式系统,这些芯片过于昂贵。此外,这些芯片还要求比传统的嵌入式平台更大的功率才能操作,从而使得它们不适合许多需要基本的深度学习功能但对成本和功耗有严格要求的应用领域。
因此,对于许多嵌入式系统应用,现有的CNN架构和系统的成本效益并不理想。
发明内容
本公开所描述的各实施例提供基于使用小规模,低成本的硬件CNN模块构建较大规模卷积神经网络(CNN)的各种示例。所公开的CNN架构和系统可以在资源有限的嵌入式系统中实现,以使这些系统可以执行通常需要大规模,昂贵的CNN系统才能施行的任务。例如,所公开的CNN架构和系统使得可以把低成本的具有CNN功能的嵌入式系统用到高复杂度的CNN应用上,诸如在资源有限的嵌入式系统上处理原本不可用类似系统处理的高分辨率输入图像。
所公开的CNN系统的各实施例基于使用“分而治之”的方式来处理复杂任务。在一些实施例中,所公开的CNN系统构建有两层或更多层/级,其中,两层或更多层/级的每一层/级利用一个或多个对低分辨率输入进行操作的小规模,低成本硬件CNN模块来实现或者利用对低分辨率输入进行操作的软件来实现。如此,两层或更多层/级中的每一层/级都可以具有非常低的复杂度。更具体而言,为使用所公开的CNN系统,可以将原始高分辨率输入图像划分为一组比原始输入图像的尺寸小得多的相同尺寸的或者基本上相同尺寸的子图像,其中,划分后的图像可包括相邻子图像之间仔细设计的间隔和/或重叠。这些子图像被按顺序送给所公开的CNN系统的第一层/级,此第一层/级包括一个或多个被设计用于处理低分辨率输入图像的小规模硬件CNN模块。如此,高分辨率输入图像可以通过对子图像集合反复地重复调用小规模硬件CNN模块来处理。随后,来自第一层/级的基于子图像集合的输出可以合并在一起。在一些实施例中,所公开的CNN系统包括对输入图像和子图像的尺寸的仔细设计,以确保合并后的结果与直接处理完整的高分辨率输入图像(而不划分输入图像)的大规模的CNN的输出基本上相同或完全相同。接下来,合并后的结果由所公开的CNN系统的第二层/级处理,此第二层/级也可以利用一个或多个低复杂度处理单元实现。如此,所公开的CNN系统可以实现高复杂度任务,诸如处理高分辨率输入图像,而不要求大规模的昂贵的硬件模块,从而可以改善性能和成本之间的折衷。
一方面,本文件公开了一种基于子图像的卷积神经网络(CNN)系统。此CNN系统包括用于接收第一图像尺寸的输入图像的接收模块,而该接收模块可以被用来将所述输入图像划分为第二图像尺寸的子图像集合。CNN系统还包括第一处理级,该第一处理级包括配置有输入图像尺寸受限的第一硬件CNN模块。此第一硬件CNN模块按顺序接收并处理子图像集合中的每一个子图像,并生成对应所述子图像集合的输出集合。该CNN系统进一步包括合并模块,该合并模块按顺序从第一处理级接收所述输出集合,并将输出集合合并成一个完整的对应所述输入图像的特征图集合。该CNN系统另外还包括第二处理级,该第二处理级接收特征图集合,并处理特征图集合,以生成CNN系统的输出,而该输出包括对输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的的最大输入图像尺寸。
在一些实施例中,子图像集合包括子图像的第一子集和子图像的第二子集。所述接收模块通过下列操作,将输入图像划分为子图像集合:将输入图像划分为由水平和垂直方向有特定间隔的子图像集合成的的第一子集,其中,所述子图像集合的第一子集中水平方向的一对相邻子图像通过第一间隔来分隔,所述子图像集合的第一子集中垂直方向的一对相邻子图像通过第二间隔来分隔;以及,生成所述子图像的第二子集,以便所述子图像集合的第二子集中的每一个子图像与所述子图像集合的第一子集中的至少一对相邻子图像在水平方向或垂直方向有适当的重叠,并且覆盖所述相邻子图像对之间的第一间隔或者第二间隔。
在一些实施例中,所述第一硬件CNN模块包括串联的卷积(CONV)层集合、ReLU层集合、以及池化层集合。此外,使用第一硬件CNN模块来处理接收到的子图像集合中的每一个子图像,包括对所述接收到的子图像交替地使用CONV层集合中的一个CONV层、ReLU层集合中的一个ReLU层,以及池化层集合中的一个池化层。
在一些实施例中,所述第一硬件CNN模块的每一CONV层还包括滤波器集合,其中,与已处理的子图像集合中的每一个子图像相关联的所述输出集合对应于所述滤波器集合。
在一些实施例中,所生成的合并后的特征图集合与直接用一个大规模CNN系统的卷积-ReLU-池化层处理原始输入图像(而不划分所述输入图像)所得到的特征图集合结果完全或基本上相同。在一些实施例中,第二处理级包括串联的完全连接(FC)层集合和ReLU层集合。此外,处理所述已合并的特征图集合包括对所述已合并的特征图集合交替地使用FC层集合中的一个FC层、ReLU层集合中的一个ReLU层。
在一些实施例中,第二处理级以软件来实现。
在一些实施例中,所述第二处理级以硬件方式用第二硬件CNN模块实现第二。
在一些实施例中,所述第一硬件CNN模块和所述第二硬件CNN模块两者都是基于用嵌入式系统的小规模硬件CNN模块来实现的,所述小规模硬件CNN模块包括卷积层集合、第一ReLU层集合、池化层集合、完全连接(FC)层集合,以及第二ReLU层集合。此外,所述第一硬件CNN模块是通过跳过所述小规模硬件CNN模块中的FC层集合和第二ReLU层集合来实现的;而所述第二硬件CNN模块是通过跳过所述小规模硬件CNN模块中的卷积层集合、第一ReLU层集合,以及所述池化层集合来实现的。
在一些实施例中,所述第一硬件CNN模块是小规模,低成本的硬件CNN模块,一般仅适用于诸如手写数字识别以及汽车牌照识别之类的低分辨率、较简单的图像处理应用领域。第一在另一方面,本文件公开了使用基于子图像的CNN来执行图像处理的方法。此方法包括下列步骤:接收第一图像尺寸的输入图像;将所述输入图像划分为第二图像尺寸的子图像集合;使用最大输入图像尺寸受限的的第一硬件CNN模块来处理所述子图像集合,其中,所述处理包括按顺序接收子图像集合中的每一个子图像,以及按顺序处理接收到的每一个子图像,以生成对应所述子图像集合的输出集合。此过程进一步包括下列步骤:将所述输出集合合并成对应所述输入图像的特征图集合;以及,处理所述特征图集合,以生成对所述输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的最大输入图像尺寸。
在一些实施例中,子图像集合包括第一子集和子第二子集,划分所述输入图像包括:将输入图像划分为由水平和垂直方向有适当间隔分隔的子图像集合成的第一子集,以便所述子图像集合的第一子集中水平方向的一对相邻子图像由第一间隔分隔,而子图像集合的第一子集中垂直方向的一对相邻子图像由第二间隔分隔;以及,生成所述子图像集合的第二子集,以便所述子图像集合的第二子集中的每一个子图像都与所述子图像集合的第一子集中的至少一对相邻子图像在水平方向或垂直方向有适当的重叠,并且覆盖所述相邻子图像对之间的所述第一间隔或者所述第二间隔。
在一些实施例中,按顺序处理所述接收到的子图像集合中的每一个子图像的方法包括对所述接收到的子图像交替地使用卷积层集合中的一个卷积层、ReLU层集合中的一个ReLU层,以及池化层集合中的一个池化层。
在一些实施例中,按顺序处理所述接收到的子图像集合中的每一个子图像的方法进一步包括对所述接收到的子图像使用滤波器集合,其中,与所述已处理的子图像集合中的每一个子图像相关联的所述输出集合对应于所述滤波器集合。
在一些实施例中,所生成的合并后的特征图集合与直接用一个大规模CNN系统的卷积-ReLU-池化层处理原始输入图像(而不划分输入图像)所得到的特征图集合结果完全或基本上相同。在一些实施例中,处理所述已合并的特征图集合的方法包括对所述已合并的特征图集合交替地使用FC层集合中的一个FC层、ReLU层集合中的一个ReLU层。
在一些实施例中,处理所述已合并的特征图集合包括使用第二硬件CNN模块。
在又一方面,本文件公开了另一基于子图像的CNN系统。该CNN系统包括用于接收第一图像尺寸的输入图像的接收模块,而该接收模块可以被用来将输入图像划分为第二图像尺寸的子图像集合。该CNN系统还包括第一处理级,该第一处理级包括第一硬件CNN模块和第二硬件CNN模块,其中,第一和第二硬件CNN模块都受一个最大输入图像尺寸的限制。第一硬件CNN模块被配置成按顺序接收子图像集合的第一子集中的每一个子图像,以及按顺序处理接收到的第一子集中的每一个子图像,以生成第一输出集合。第二硬件CNN模块被配置成按顺序接收子图像集合的第二子集中的每一个子图像,以及按顺序处理接收到的第二子集中的每一个子图像,以生成第二输出集合。在一些实施例中,所述第一硬件CNN模块和所述第二硬件CNN模块被配置成并行地处理所述子图像集合的第一子集和所述子图像集合的第二子集。该CNN系统进一步包括合并模块,该合并模块被配置成按顺序从第一处理级接收第一输出集合和第二输出集合,并将第一和第二输出集合合并成对应所述输入图像的特征图集合。该CNN系统另外还包括第二处理级,该第二处理级被配置成接收特征图集合,并处理特征图集合,以生成所述CNN系统的输出,而该CNN系统的输出包括对输入图像的内容的至少一个预测。
在再一个方面,本文件公开了能够对图像进行深度学习的系统。此系统包括处理器,连接到处理器的存储器,以及连接到处理器和存储器并被配置成采集具有第一图像尺寸的图像的图像采集设备。此系统还包括连接到处理器和存储器的CNN子系统。此CNN子系统包括接收模块,所述接收模块用于接收由所述图像采集设备采集到的所述第一图像尺寸的输入图像,并且,所述接收模块被配置成将所述输入图像划分为第二图像尺寸的子图像集合。此CNN子系统还包括第一处理级,该第一处理级包括最大输入图像尺寸受限制的第一硬件CNN模块。此第一硬件CNN模块被配置成按顺序接收子图像集合中的每一个子图像,并按顺序处理接收到的每一个子图像以生成对应所述子图像集合的输出集合。此CNN子系统进一步包括合并模块,该合并模块被配置成按顺序从第一处理级接收输出集合,并将输出集合合并成对应所述输入图像的特征图集合。CNN子系统另外还包括第二处理级,该第二处理级被配置成接收特征图集合,并处理特征图集合,以生成CNN子系统的输出,而该输出包括对输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的最大输入图像尺寸。
在一些实施例中,系统包括诸如移动电话之类的移动设备或诸如监测摄像机之类的嵌入式系统。
附图说明
通过阅读下列详细描述和各个附图,可以理解本公开的结构和操作,在附图中,相同参考编号表示相同部件,其中:
图1A示出了根据本文所描述的一些实施例的用于处理低分辨率输入图像的小规模的硬件CNN模块的框图。
图1B示出了根据本文所描述的一些实施例的图1A中的硬件CNN模块的更为详细的实现。
图2A示出了用于处理较高分辨率输入图像的常规的基于完整图像的CNN系统的框图。
图2B示出了根据本文所描述的一些实施例所公开的基于子图像的CNN系统的框图。
图2C示出了根据本文所描述的一些实施例的三层结构的基于子图像的CNN系统的框图。
图3A示出了根据本文所描述的一些实施例的将输入图像划分为第一子集中的四个子图像,在相邻子图像之间带有适当地设计的间隔。
图3B示出了根据本文所描述的一些实施例的为相同输入图像生成第二子集中的五个边界子图像的过程。
图3C示出了根据本文所描述的一些实施例的输入图像的全部子图像集合,包括来自图3A的子图像以及来自图3B的边界子图像。
图4示出了当输入图像尺寸为86 62像素时根据本文所描述的一些实施例所生成的所有不相重叠的子图像以及边界子图像的示例性划分方案,以及相应的输出特征图的尺寸及排列。
图5呈现了一个流程图,示出了根据本文所描述的一些实施例的使用所公开的基于子图像的CNN系统来执行图像处理的过程。
图6示出了根据本文所描述的一些实施例的示例性嵌入式系统,在该嵌入式系统内,所公开的基于子图像的CNN系统用来对采集到的图像进行深度学习(DL)图像处理。
具体实施方式
下面阐述的详细描述旨在作为主题技术的各种配置的描述,并不旨在表示可以实施主题技术的唯一配置。附图包括在本文中,并构成详细描述的一部分。详细描述包括用于提供对主题技术的全面的理解的具体细节。然而,主题技术不仅限于本文所阐述的具体细节,没有这些具体细节也有可能实施。在某些情况下,结构和组件以框图的形式示出,以便避免使主题技术的概念变得模糊。在整个公开中,除非其上下文另行明确规定外,以下术语具有这里提供的含义。术语“图像分辨率”和“图像尺寸”可互换使用来表示一个给定二维(2D)图像内的像素数。
本公开所描述的各实施例提供基于使用小规模,低成本的硬件CNN模块构建较大规模的卷积神经网络(CNN)的各种示例。所公开的CNN架构和系统可以在资源有限的低成本的系统中实现,以使这些系统能够执行通常需要大规模的、高复杂度、昂贵的CNN系统才能施行的任务。所公开的CNN架构和系统也可以在现有的DL系统中实现,以替换大规模的、高复杂度的CNN模块以显著降低系统成本。例如,所公开的CNN架构和系统允许在需要高复杂度CNN的应用中使用低成本的带有小规模CNN模块的嵌入式系统,诸如在资源有限的嵌入式系统上处理原本不可用类似系统处理的高分辨率输入图像。
所公开的CNN系统的各实施例基于使用分而治之的方法来处理复杂任务。在一些实施例中,所公开的CNN系统构建有两层或更多层/级,其中,两层或更多层/级的每一层/级利用一个或多个对低分辨率输入进行操作的小规模,低成本硬件CNN模块来实现或者利用对低分辨率输入进行操作的软件来实现。如此,两层或更多层/级中的每一层/级都可以具有非常低的复杂度。更具体而言,为使用所公开的CNN系统,可以将原始高分辨率输入图像划分为一组比原始输入图像的尺寸小得多的相同尺寸的或者基本上相同尺寸的子图像,其中,划分后的图像可包括相邻子图像之间的适当地设计的间隔和/或重叠。这些子图像被按顺序送给所公开的CNN系统的第一层/级,此第一层/级包括一个或多个被设计用于处理低分辨率输入图像的小规模硬件CNN模块。更具体而言,可以通过对子图像组或子图像集合的一个子集反复地重复调用一个给定的小规模硬件CNN模块,按顺序处理子图像集合。如此,高分辨率输入图像可以由一个或多个小规模硬件CNN模块通过对子图像集合反复地重复调用该一个或多个小规模硬件CNN模块来处理。随后,系统将合并来自第一层/级的基于子图像集合的输出。在一些实施例中,所公开的CNN系统包括对输入图像和子图像的尺寸的规定,以确保合并后的结果与直接用大规模的高复杂度CNN模块处理整个高分辨率输入图像(而不是划分输入图像)的输出基本上相同或完全相同。接下来,合并后的结果由所公开的CNN系统的第二层/级处理,此第二层/级也可以利用一个或多个低复杂度处理单元实现。如此,所公开的CNN系统可以实现高复杂度任务,诸如处理高分辨率输入图像,而不要求大规模的,高复杂度,昂贵的硬件模块,从而改善性能和成本之间的折衷。
一方面,本文件公开了一种基于子图像的卷积神经网络(CNN)系统。此CNN系统包括用于接收第一图像尺寸的输入图像的接收模块,而该接收模块可以被用来将所述输入图像划分为第二图像尺寸的子图像集合。CNN系统还包括第一处理级,该第一处理级包括最大输入图像尺寸受限制的第一硬件CNN模块。此第一硬件CNN模块可以按顺序接收并处理子图像集合中的每一个子图像,并生成对应所述子图像集合的输出集合。该CNN系统进一步包括合并模块,该合并模块被配置成按顺序从第一处理级接收所述输出集合,并将输出集合合并成一个完整的对应所述输入图像的特征图集合。该CNN系统另外还包括第二处理级,该第二处理级被配置成接收特征图集合,并处理特征图集合,以生成CNN系统的输出,而该输出包括对输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的最大输入图像尺寸。
在另一方面,本文件公开了使用基于子图像的CNN来执行图像处理的方法。此方法包括下列步骤:接收第一图像尺寸的输入图像;将所述输入图像划分为第二图像尺寸的子图像集合;使用最大输入图像尺寸受限制的第一硬件CNN模块来处理所述子图像集合,其中,所述处理包括按顺序接收子图像集合中的每一个子图像,以及按顺序处理接收到的每一个子图像,以生成对应所述子图像集合的输出集合。此过程进一步包括下列步骤:将所述输出集合合并将所述输出集合合并成对应所述输入图像的特征图集合;以及,处理所述特征图集合,以生成对所述输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的最大输入图像尺寸。
在又一方面,本文件公开了另一基于子图像的CNN系统。此CNN系统包括用于接收第一图像尺寸的输入图像的接收模块,而该接收模块可以被用来将输入图像划分为第二图像尺寸的子图像集合。该CNN系统还包括第一处理级,该第一处理级包括第一硬件CNN模块和第二硬件CNN模块,其中,第一和第二硬件CNN模块都受一个最大输入图像尺寸的限制。第一硬件CNN模块被配置成按顺序接收子图像集合的第一子集中的每一个子图像,以及按顺序处理接收到的第一子集中的每一个子图像,以生成第一输出集合。第二硬件CNN模块被配置成按顺序接收子图像集合的第二子集中的每一个子图像,以及按顺序处理接收到的第二子集中的每一个子图像,以生成第二输出集合。在一些实施例中,所述第一硬件CNN模块和所述第二硬件CNN模块被配置成并行地处理所述子图像集合的第一子集和所述子图像集合的第二子集。该CNN系统进一步包括合并模块,该合并模块被配置成按顺序从第一处理级接收第一输出集合和第二输出集合,并将第一和第二输出集合合并成对应所述输入图像的特征图集合。该CNN系统另外还包括第二处理级,该第二处理级被配置成接收特征图集合,并处理特征图集合,以生成所述CNN系统的输出,而该CNN系统的输出包括对输入图像的内容的至少一个预测。
在再一个方面,本文件公开了能够对图像进行深度学习(DL)处理的系统。此系统包括处理器,连接到处理器的存储器,以及连接到处理器和存储器并被配置成采集第一图像尺寸的图像的图像采集设备。此系统还包括连接到处理器和存储器的CNN子系统。此CNN子系统包括接收模块,所述接收模块用于接收由所述图像采集设备采集到的所述第一图像尺寸的输入图像,并且,所述接收模块被配置成将所述输入图像划分为第二图像尺寸的子图像集合。此CNN子系统还包括第一处理级,该第一处理级包括最大输入图像尺寸受限制第一硬件CNN模块。此第一硬件CNN模块被配置成按顺序接收子图像集合中的每一个子图像,并按顺序处理接收到的每一个子图像以生成对应所述子图像集合的输出集合。此CNN子系统进一步包括合并模块,该合并模块被配置成按顺序从第一处理级接收输出集合,并将输出集合合并成对应所述输入图像的特征图集合。CNN子系统另外还包括第二处理级,该第二处理级被配置成接收特征图集合,并处理特征图集合,以生成CNN子系统的输出,而该输出包括对输入图像的内容的至少一个预测。在一些实施例中,第一图像尺寸比第一硬件CNN模块所能处理的最大输入图像尺寸大得多,而第二图像尺寸小于或等于第一硬件CNN模块所能处理的最大输入图像尺寸。
如上文所提及的,对于许多嵌入式系统应用,现有的CNN架构和系统成本效益不高。同时,基于低成本的芯片组的某些低成本的带有小规模CNN的嵌入式系统已经开始出现。一个著名的示例是由HiSilicon半导体有限公司(华为技术有限公司的子公司)开发的Hi3519芯片组。Hi3519芯片组的成本比NvidiaTM TK1/TX1芯片组低得多。Hi3519芯片组还包括一个内嵌的小规模硬件CNN模块。例如,Hi3519芯片组中的内嵌的CNN模块的参数是可重新配置的,即,用户可以修改网络架构和CNN模块的参数,该参数可以针对不同的应用得到相应的预先训练。此外,此内嵌的CNN模块速度非常快,例如,它大约只需要1ms来处理一个32x40分辨率的输入图像。然而,Hi3519芯片组具有非常有限的计算容量,因此,只能用于诸如手写数字识别或汽车牌照识别之类的简单应用。
在本公开中,公开了适于资源有限的系统(诸如嵌入式系统和移动设备)的新颖的CNN架构和系统。在一些实施例中,所公开的CNN架构和系统重复使用原本只能处理较低分辨率的输入图像的一个或多个小规模硬件CNN模块(因此,在下文中,也被称为“有限分辨率的CNN模块”),诸如如前所述的Hi3519芯片组内的内嵌的硬件CNN模块,以便本公开中的CNN架构和系统可以应用于通常要求昂贵的并且大规模的硬件CNN模块的场合,比如处理较高分辨率的输入图像,以及其他更具有挑战性的任务。
所公开的CNN系统是被配置成基于分而治之的方法来处理复杂任务的分层的系统。在一些实施例中,所公开的CNN系统构建有两层或更多层/级。两级或更多级中的每一层/级都可以利用一个或多个小规模低成本的硬件CNN模块(通常在嵌入式系统中使用),通过重复使用该一个或多个小规模的硬件CNN模块中的每一个来实现。如此,两层或更多层/级中的每一层/级都可以具有非常低的复杂度。更具体而言,为使用所公开的CNN系统,可以将原始高分辨率输入图像划分为一组比原始输入图像的尺寸小得多的相同尺寸的或者基本上相同尺寸的子图像,其中,划分后的图像可包括相邻子图像之间的适当地设计的间隔和/或重叠。这些子图像按顺序被送给所公开的CNN系统的第一级,该第一级包括处理低分辨率输入图像的至少一个小规模低成本的硬件CNN模块,并随后合并包括已处理的子图像集合的第一级的输出。更具体而言,可以通过对子图像组反复地重复使用至少一个小规模的硬件CNN模块,按顺序处理该子图像集合。如此,高分辨率输入图像可以由小规模的硬件CNN模块,通过对子图像集合反复地重复使用至少一个小规模的硬件CNN模块来处理。在适当地选择原始输入图像和子图像的尺寸的情况下,合并后的结果可以与用大规模高复杂度CNN模块直接处理整个高分辨率输入图像的输出基本上相同或完全相同。接下来,合并后的结果由所公开的CNN系统的第二级处理,此第二级可以基于一个或多个有限分辨率的小规模的硬件CNN模块或者软件。这种分层的CNN系统通过重复使用一个或多个小规模低复杂度的硬件CNN模块,可以模拟大规模的高复杂度CNN系统,使该系统适用于低成本的资源有限的系统,诸如各种监控摄像机、机器视觉摄像机、无人机、机器人、自驾驶汽车,以及移动电话。
在下面的讨论中,我们可以使用Hi3519芯片组内的内嵌的硬件CNN模块作为示例,来说明所公开的分层的CNN系统的某些示例性实现。然而,应该指出的是,所公开的CNN系统和技术不仅限于诸如Hi3519芯片组之类的特定芯片组。所公开的对于高复杂度DL和人工智能应用重复使用小规模,低成本的硬件CNN模块的概念可以应用于任何小规模的低成本的硬件CNN模块。此外,所公开的系统和技术还可被实现为单一现场可编程门阵列(FPGA)模块,并与许多低成本的嵌入式平台集成。
小规模的低成本的硬件CNN模块
图1A示出了根据本文所描述的一些实施例的用于处理低分辨率输入图像的小规模的硬件CNN模块100的框图。在一些实施例中,取决于应用,CNN模块100可以用来提取有限分辨率的输入图像的特征,并进行各种DL推理。在图1A中可以看出,CNN模块100包括至少两个子模块,表示为CNN1和CNN2。在一些实施例中,CNN模块100被配置成将输入图像102尺寸限制为不超过1280像素,例如,32x40像素的图像分辨率。这种对输入图像尺寸的限制也显著限制适用于CNN模块100的应用的类型。
图1B示出了根据本文所描述的一些实施例的CNN模块100的比较详细的实现。在图1B中可以看出,图1A中的第一子模块CNN1进一步包括串联的多个交替的卷积(CONV)层、修正线性单元(ReLU)层(未示出)和池化层。此外,对于多个CONV层中的每一层,诸如CONV(1)层,子模块CNN1使用一组卷积滤波器,来从输入图像102中提取一组特定特征。子模块CNN1中的多个CONV层中的每一CONV层后面是对应的ReLU层(未示出)和池化层,诸如POOL(1)层,该池化层POOL(1)用于缩小由对应的CONV(1)层生成的已滤波的图像尺寸,同时保留某些提取的特征。
也如图1B所示出的,图1A中的第二子模块CNN2进一步包括串联的多个交替的完全连接(FC)层和ReLU层(未示出)。子模块CNN2中的多个FC层中的每一层,诸如FC(1)层,都被配置成执行矩阵乘法。多个FC层中的每一层(最后一个FC层除外)后面是对应的ReLU层(未示出)。虽然在图1B中未显式地示出,但是,CNN1和CNN2中的多个ReLU层中的每一层都被配置成向CNN系统提供非线性特征。最后,在最后一个FC层(例如,FC(n)层)的输出端,决策模块(也未示出)用于对基于最后一个FC层的输出进行预测,从而生成CNN模块100的输出104。在一些实施例中,第一子模块CNN1包括1~8CONV层,ReLU层,以及池化层,而第二子模块CNN2包括3~8完全连接(FC)层和ReLU层。
在一些实施例中,多个CONV层中的每一层中的卷积滤波器的数量至多是50个,并只允许是3x3滤波器。此外,卷积跨距被固定于1,不使用补零。在一些实施例中,CNN1中的池化层可以使用最大池化技术来从滤波器图像中的2x2区域中的每一个中选择最大值。在一些实施例中,最大池化和平均池化都是可以使用的,但是,池化窗口尺寸固定于2x2,并且跨距固定于2。换言之,在每一池化层之后,图像宽度和高度中的每一个都缩小一半。
对于Hi3519芯片组内的硬件CNN模块的示例,第一FC层的最大输入尺寸是1024,中间FC层中的神经元的数量至多是256。CNN模块输出的尺寸至多是256。由于这些约束,Hi3519芯片组内的硬件CNN模块通常只适于执行简单任务,诸如手写数字识别和汽车牌照识别。对于诸如人脸识别之类的更具有挑战性的应用,至少由于下列原因,直接应用诸如CNN模块100之类的小规模的CNN模块是不能令人满意的。首先,1280像素的最大输入分辨率(诸如40x32)是非常有局限性的,因为下采样到此分辨率的人脸图像会丢失太多重要的面部信息。其次,小规模CNN模块100的学习容量也非常有限。
分层的基于子图像的CNN架构和系统
图2A示出了用于处理高分辨率输入图像的常规基于完整图像的CNN系统200的框图。可以看出,常规CNN系统200可以在第一卷积层CONV(1)上接收整个高分辨率输入图像202,并对高分辨率输入图像202开始施行特征提取操作。如此,常规CNN系统200可以直接处理完整高分辨率输入图像202,而不划分输入图像。然而,常规CNN系统200也要求使用能够处理这样的高分辨率输入图像的大规模的昂贵的芯片,诸如如前所述的NvidiaTM芯片。
图2B示出了根据本文所描述的一些实施例的所公开的基于子图像的CNN系统210的框图。在所公开的CNN系统210中,有限分辨率的小规模的CNN模块,诸如结合图1A和1B描述的CNN模块100或Hi3519芯片组内的硬件CNN模块可以用作基于子图像的CNN系统210的构件。如上文所提及的,这样的小规模的CNN模块对最大输入图像尺寸具有限制,例如,最多1280像素。为能够对高分辨率输入图像202(例如,具有超过1280像素的图像)使用此小规模的CNN模块,所公开的CNN系统210包括将高分辨率输入图像202划分为一组较小子图像204的输入模块212,其中,子图像204中的每一个都具有小于或等于被用作CNN系统210的构件的小规模的CNN模块允许的最大输入图像的尺寸。在一些实施例中,输入模块212可以通过在相邻的子图像204之间设定适当的间隔和重叠来划分高分辨率输入图像202,如图2B所示。需要注意的是,在图2B中示出了带有间隔和重叠的两行和两列的四个子图像集合204,是为了便于理解概念,而不是表示实际划分。本文件将在下面提供输入图像划分的一些示例和对于选择适当的间隔和重叠的考虑事项。
如图2B所示,CNN系统210包括基于使用和/或重复使用图1A和1B中所描述的小规模的CNN模块100的两个硬件子模块CNN1和CNN2中的一个或两个的双层处理结构。除输入模块212之外,CNN系统210还包括第一处理级220、合并模块222和第二处理级224。更具体而言,CNN系统210的第一处理级220包括至少一个CNN1处理模块,诸如CNN1模块214。在一些实施例中,CNN1模块214是通过图1A和1B中所描述的硬件子模块CNN1来实现的。在其他实施例中,CNN1模块214是通过包括CNN1和CNN2两个子模块的图1A和1B中所描述的整个CNN模块100来实现的。需要注意的是,在第一处理级220内所示出的CNN1模块214的多个实例表示在不同的时间t1,t2,t3,…,和tn使用同一个CNN1模块214,正如对于每一个这样的实例所注释的。因此,图2B中所示出的“t1时的CNN1214”,“t2时的CNN1 214”,“t3时的CNN1 214”,…,以及“tn的CNN1 214”对应于不同的处理时间时的单一CNN1模块214,而不应该被解释为具有相同编号214的多个CNN1模块。虽然未示出,但是,第一处理级220可包括类似于CNN模块214的额外的CNN1模块。例如,第一处理级220可包括两个或更多相同的CNN1模块。
CNN系统210的第二处理级224包括至少一个CNN2模块216。在一些实施例中,CNN2模块216是通过图1A和1B中所描述的硬件子模块CNN2来实现的。在其他实施例中,CNN2模块216是通过包括CNN1和CNN2两个子模块的图1A和1B中所描述的整个CNN模块100来实现的。在某些其他实施例中,第二处理级224内的CNN2模块216可以通过软件而不是通过硬件来实现。
具体而言,为处理由输入模块212所生成的子图像204组,可以多次使用单一CNN1模块214按顺序处理子图像204组,每一次处理一个子图像。即,CNN系统210的第一处理级220内的CNN1模块214的每一实例都表示在不同的处理时间同一CNN1模块214在子图像204组中的一个子图像204上的多次应用中的一次。然而,由于CNN1模块214对每一子图像204的处理速度非常快,处理子图像204组的总的处理时间也会十分快。CNN1模块214的多次应用的输出包含对应于在多层卷积、ReLU,以及池化操作之后的子图像204组的特征图206的阵列。
需要注意的是,虽然图2B所示出的实施例基于重复使用CNN系统210的第一处理级220中的单一硬件CNN1模块214,但是,其他实施例可以使用与CNN系统210的第一处理级220中的CNN1模块214类似或相同的额外的硬件CNN1模块,以便可以由多个硬件CNN1模块并行地处理子图像204组。对于一个给定设计,可以基于硬件成本约束和速度要求之间的折衷,来确定给定设计所使用的CNN1模块的实际数量。例如,CNN系统210的一些变动方案可在第一处理级中包括3到5个CNN1模块。
如上文所提及的,CNN1模块214可以通过诸如结合图1A和1B所描述的专用硬件子模块CNN1来实现,或者通过包括CNN1和CNN2两个子模块的结合图1A和1B所描述的整个CNN模块100来实现。在第一种情况下,CNN系统210内的CNN1模块214可只包括CONV层、ReLU层,以及池化层。在第二种情况下,在CNN系统210中实现CNN1模块214进一步包括跳过FC层和对应的ReLU层,即,跳过CNN模块100内的子模块CNN2。当跳过CNN2子模块时,CNN1模块214一般需要在其输出的特征图中保留空间位置信息。这是因为来自CNN1模块214的输出将被合并,用于进一步处理。对于一些内嵌的硬件CNN模块,诸如Hi3519芯片组内的硬件CNN模块,内嵌的CNN模块的参数是可重新配置的。通过使用此属性,可以通过迫使CNN模块100内的FC层中的每一层成为一个单位矩阵,使得来自每一FC层的输出变成将二维特征图重新组织为一维矢量,来达到跳过子模块CNN2的目的。在这种情况下,每一FC层之后的ReLU层仍可以像通常那样使用。在划分实施例中,对于有三层FC-ReLU组合的CNN2子模块,最后两个ReLU层并不改变任何数据,因为多个ReLU层的串联相当于只有一个ReLU层。
回头参考图2B,在用CNN1模块214按顺序处理子图像204组中的每一子图像204之后,包含特征图206阵列的来自CNN1模块214的输出成为合并模块222的输入,此合并模块222被配置成合并特征图206的阵列以形成整个输入图像202的完整特征图。然后,合并的特征图可以被用作CNN系统210的第二处理级224的输入。在一些实施例中,来自第二处理级224的输出228是来自CNN2模块216的最后一个FC层的输出。理想情况下,输出228与图2A中的常规CNN系统200的输出226相同。
在一些实施例中,特征图206的阵列包括一组三维(3D)矩阵(即,二维特征图以及特征图的数量)。例如,特征图206的阵列可以由九个3D矩阵构成,每个的尺寸是2x2x48,其中,九是具有下标0,1,2,…,8(即3行3列子图像)的子图像204的数量),2x2是每一个子图像经CNN1模块214处理后的每个输出特征图的尺寸,48是每一子图像的特征图的数量。在一些实施例中,合并模块222被配置成通过基于相应的输出矩阵下标,串联所有的3D输出矩阵,以此合并特征图206的阵列,进而形成合并的3D特征图矩阵,与此同时保留子图像204组的空间关系。在上面的示例中,此步骤会生成6x6x48的3D矩阵。接下来,可以将已合并的3D矩阵平化为一维(1D)矢量。在上面的示例中,这会产生一个具有1728元素的1D矢量。最后,已平化的1D矢量被馈送给第二处理级224。
图2B示出了由合并模块222所生成的已合并的特征图208被馈送给CNN系统210的第二处理级224,供进一步处理。更具体而言,CNN系统210的第二处理级224包括至少一个CNN2模块216,该CNN2模块216进一步包括如上文所描述的FC层集合和ReLU层。如上文所提及的,CNN系统210中的CNN2模块216可以通过结合图1A和1B所描述的专用硬件子模块CNN2来实现。在这些实施例中,CNN系统210内的CNN2模块216可只包括FC层和ReLU层。在另外一些实施例中,CNN2模块216可以通过以包括CNN1和CNN2两个子模块的图1A和1B中所描述的整个硬件CNN模块100来实现。在这些实施例中,在CNN系统210中实现CNN2模块216进一步包括跳过CONV层-ReLU层-池化层,即,跳过CNN模块100内的子模块CNN1。在诸如Hi3519之类的一些系统中,可能难以跳过CONV层-ReLU层-池化层以直接使用FC层和ReLU层。在这些情况下,CNN2模块216,即,FC层和ReLU层可以通过软件来实现。由于CNN系统210的大部分计算位于CONV层,因此,以软件实现FC和ReLU层通常对系统的总的速度具有微小的影响。进一步地,诸如Hi3519之类的系统还能提供额外的工具用以优化这样的软件实现的CNN2模块216速度。
如上文所提及的,第二处理级224内的CNN2模块216可以通过软件而不是通过硬件CNN模块来实现。需要注意的是,因为FC层和ReLU层的复杂度一般比卷积层低得多,CNN系统210的大部分计算复杂度存在于由CNN1模块214实现的卷积层。基于这样的认识,由CNN系统210中的硬件CNN2模块216实现的低计算复杂度操作可以通过软件而不是上文所提及的硬件CNN2或CNN模块来实现。此外,这样的软件实现方法可以提供比基于硬件CNN模块的实施例更多的灵活性。
虽然所公开的基于子图像的CNN系统210是具有包括基于一个或多个CNN1模块的第一级和基于CNN2模块的第二级的双层系统,但是,所公开的基于子图像的CNN系统的其他实施例可包括超过两层的结构。例如,图2C示出了根据本文所描述的一些实施例的三层结构的基于子图像的CNN系统230的框图。
从图2C中可以看出,3层结构的CNN系统230包括第一划分模块232、第一处理级234、第一合并模块236、第二划分模块238、第二处理级240、第二合并模块242,以及第三处理级244。此外,第一处理级234包括第一CNN1模块246,在第一处理级之后的第二处理级240包括第二CNN1模块248,在第二处理级之后的第三处理级244包括CNN2模块250。
在一个实施例中,高分辨率输入图像202可以首先由第一划分模块232划分为第子图像集合,随后,该第子图像集合由第一CNN1模块246处理。在一些实施例中,来自第一处理级234的输出由第一合并模块236合并为第一特征图集合,该第一特征图集合的分辨率大于第三处理级244中的CNN2模块250允许的最大输入尺寸。因此,由合并模块236所生成的合并后的特征图再次由第二划分模块238划分为第二组子图像,随后,该第二组子图像由第二CNN1模块248处理。来自第二处理级240的输出由第二合并模块242合并为满足CNN2模块250的输入尺寸要求的第二特征图集合,然后,该第二特征图集合被馈送给第三处理级244的CNN2模块250,供进一步处理。虽然3层结构的CNN系统230被描述为具有两个CNN1级和一个CNN2级,但是,3层结构的CNN系统的其他实现可以在三个处理级中的每一处理级内具有不同的处理模块配置,而所述的其他实现并不偏离本公开的范围。
回头参考图2B,理想情况下,在第一FC层之前由图2A的大规模的CNN系统200直接处理整个高分辨率输入图像202生成的特征图和由CNN1模块214处理子图像204组后合并生成的特征图208应该完全相同或基本相同。在现实中,如果只是将高分辨率输入图像202划分为互不重叠的子图像,并分别进行处理,则将不会有横跨这些子图像边界的卷积运算。这会导致无法采集到子图像边界处的特征,从而不可能得到和直接处理整个高分辨率输入图像202生成的特征图相同的输出结果。
上文所描述的边界效应类似于基于离散余弦变换(DCT)的图像编码中的块效应。在图像编码领域,可以通过使用横跨图像块边界的滤波器来解决块效应,被称为“重叠变换”。在T.D.Tran等人所著的“Lapped transform via time-domain pre/post-processing”(2003年6月发表于IEEE Trans.Signal Processing,卷51,No.6,1557-1571页)一文中详细地描述了重叠变换的概念。在一些实施例中,可以将重叠变换的概念应用于CNN系统210以减轻或完全消除如前所述的边界效应。此“重叠变换”技术可包括跨子图像集合的边界生成额外的边界子图像集合,以及对子图像集合和边界子图像集合两者都使用CNN系统210的第一处理级220。
图3A-3C示出了根据本文所描述的一些实施例的将输入图像划分为子图像集合以及为减轻或完全消除边界效应生成一组边界子图像的示例性过程。在一些实施例中,图3A-3C所示出的示例性划分可以由CNN系统210内的输入模块212施行或由CNN系统230内的第一和第二划分模块232和238来施行。
更具体而言,图3A示出了根据本文所描述的一些实施例的将输入图像300划分为第一子集中的四个子图像302,在相邻子图像302之间带有适当地设计的间隔308和310。在一些实施例中,子图像集合302是具有相同尺寸的图像。图3B示出了根据本文所描述的一些实施例的为相同输入图像300生成第二子集中的五个边界子图像304的过程。在图3B中可以看出,边界子图像304中的每一个子图像都与图3A所示出的至少两个相邻子图像302的边界重叠。需要注意的是,边界子图像304中的一个子图像基本上位于输入图像300的中心处,而其他四个边界子图像位于这个中心边界子图像304的左边、右边、上方,以及下方。还要注意,每个子图像302和每个边界子图像304应当有相同尺寸。此外,在图3B中的四个虚线310、312、324,以及316是用来标记和延长中心边界子图像304的四个边缘。需要注意的是,使用虚线、圆形角以及不同的线宽度来示出边界子图像304,只是为了明确标出这些子图像的位置。因此,如图3B所示的边界子图像304的圆形角与子图像304的实际几何形状毫无关系。换言之,边界子图像304中的每一个仍是一个规则的矩形子图像。
图3C示出了根据本文所描述的一些实施例的输入图像300的所有的子图像集合,包括来自图3A的四个子图像302的组(也就是第一子集)以及来自图3B的五个边界子图像304的组(也就是第二子集),而未示出输入图像300。需要注意的是,在图3C中,为方便区分,利用实线和直角示出了四个子图像302的组,而利用虚线和圆形角示出了五个边界子图像304的组。此外,还为四个子图像302的组、沿着边缘的四个边界子图像304的组,以及中间的单一子图像304,使用了不同的线宽度。在所示出的特定实施例中,所有九个子图像实际中都具有相同图像尺寸。
图3C清楚地示出了每一个边界子图像304是如何定位在跨子图像302的边界区域的。需要注意的是,九个子图像的组还从“0”到“8”来索引。接下来,当使用所公开的CNN系统210来处理输入图像300时,可以按顺序将CNN1模块214应用于子图像302的组和边界子图像304的组。因此,来自CNN系统210的第一处理级220的输出包括与子图像302相关联的特征图以及与边界子图像304相关联的特征图。在一些实施例中,所有这些特征图合并后会形成整个输入图像300的特征图,而且不会有上文所提及的边界效应。下面将结合图4详细介绍如何使用CNN系统210来产生没有边界效应的特征图的。
回头参考图2B,需要注意的是,如果第一处理级220的CNN1模块214只包括卷积算子,则可以对子图像204应用传统的重叠相加方法来避免边界效应。然而,由于CNN1模块214中的池化算子,重叠相加方法的结果通常不等价于上文所描述的横跨子图像边界的重叠卷积技术。在下面的讨论中,我们将推导在常规基于完整图像的CNN系统200以及基于子图像的CNN系统210之间实现等价结果的条件和解决方案。
等效卷积和池化操作的条件和解决方案
在一些实施例中,为在常规的基于完整图像的CNN系统200和本公开的基于子图像的CNN系统210之间实现卷积和最大池化操作的等效结果,两个条件应该得到满足:(1)如上文所描述的,应该避免CNN系统210中的卷积运算的边界效应;以及(2)两个系统中的每一最大池化算子的输入图像尺寸应该是偶数。这是因为,在全局方法中(也就是CNN系统200),最大池化算子的输入通常是2x2像素区,图像边界处除外。因此,需要确保在基于子图像的方法中(也就是CNN系统210)每个最大池化算子的输入也是2x2像素区,包括在子图像边界处也是如此,以避免两种方法之间的不匹配。
在下面的确保等效性的可行的图像尺寸的讨论中,我们专注于基于子图像的CNN系统210的一个示例性实现,该示例性实现包括三层卷积和最大池化算子,一组3x3卷积滤波器,以及2x2最大池化算子的输入图像尺寸。然而,基于这样的系统配置的讨论可以很容易地扩展到具有更多层卷积和池化算子的系统。需要注意的是,这里不需要考虑此示例性实现的CNN1模块内的ReLU层,因为ReLU层并不改变图像尺寸。
假设K是输入图像的行或列的数量。在第一卷积层处理之后,将会有K+2个带有补零的输出系数。在K+2个输出系数中,只有K-2个系数不受边界效应的影响(因为所用的卷积滤波器在每一方向具有3个系数)。这K-2个有用输出系数被第一层最大池化算子处理后,输出结果变为(K-2)/2个系数。因此,为避免边界效应,我们需要K-2是偶数。即,
K-2=2x1→K=2x1+2, (1)
其中,x1是一个正整数。
在第二层中,卷积运算之后的有用输出系数的数量将是(K-2)/2-2,这个值也应该是偶数,即,
(K-2)/2-2=2x2→K=4x2+6, (2)
其中,x2是另一正整数。
在第二层最大池化操作之后,输出的图像的尺寸缩小为(K-2)/4-1。类似地,在第三层中,在卷积运算之后输出的图像的尺寸是(K-2)/4-3,这个值应该仍是偶数。即,
(K-2)/4-3=2x3→K=8x3+14, (3)
其中,x3也是正整数。
可以很容易确认,方程(3)给出的可行解K是方程(2)的解的子集,而后者又是方程(1)的解的子集。因此,方程(3)的解可以满足方程(1)到方程(3)中的所有三个约束。依此类推,如果在CNN1模块214内有三层以上的操作,则由最后一层的约束得到的可行解也是所有以前的层的可行解的子集。因此,最终的可行解仍由最后一层决定。
从方程(3)可以看出,可行的图像尺寸之间的距离是8的倍数。这是因为本示例性中的三层池化操作对输入图像进行了8倍的下采样。由方程(3)给出的头几个可行解可包括K=22,30,38,46,以及54。使用Hi3519芯片组作为示例,由于Hi3519内嵌的CNN模块的输入像素的最大数量是1280,因此,Hi3519可处理的最大的满足上述等效关系的子图像尺寸是54x22(1188个像素)。另一个较大的可行解为38x30(1140个像素)。以38x30的子图像为例,第一层卷积算子之后的尺寸是36x28。第一层最大池化算子之后尺寸变为18x14。第二层卷积和最大池化算子之后尺寸分别变为16x12和8x6。最后,在经过第三层卷积算子之后,尺寸缩小到6x4,经过第三层最大池化算子之后,最终输出尺寸为3x2。
另一方面,整个输入图像的尺寸也应该满足方程(3)。这意味着,简单地将输入图像分割为一些互不重叠的子图像并不能保证使用全局卷积和池化方法的常规CNN系统和基于子图像的CNN系统210之间的等效性,即使每一子图像的尺寸都满足方程(3)。例如,尺寸为76x60的图像不能在常规的全局CNN方法和公开的基于子图像的CNN技术之间实现相同结果,因为数字76和60不满足方程(3),即使可以将输入图像分成38x30像素的四个子图像。
在一些实施例中,为保证基于整个输入图像的CNN系统和基于子图像的CNN系统之间的等效性,在基于子图像的技术中,相邻子图像之间应该有一些额外的像素作为间隔。对于上面的示例,最近的整个输入图像的尺寸的可行解是78x62,即,在两个水平方向或垂直方向的相邻子图像之间,都需要有两个额外的像素作为间隔。然而,输入图像划分的其他实施例可以使用2个以上的间隔,只要整个图像尺寸满足方程(3)即可。这些作为间隔的像素可以用横跨在相邻子图像的边界上的一些特殊子图像来处理,以便与CNN系统200的全局卷积方法实现相同结果。如上文所述,这种使用边界子图像的技术类似于重叠变换中的边界滤波。这些边界子图像的卷积和池化结果可以和其他子图像的卷积和池化输出合并,形成整个输入图像的输出结果。
许多硬件CNN模块的另一共同的约束是,当使用FC层时,一旦为一个特定的应用训练了神经网络,此神经网络通常只支持某一固定的输入图像尺寸。因此,所有子图像,包括横跨在相邻子图像上的子图像(例如,图3中的子图像304),都应该有相同尺寸,例如,38x30。为满足此附加约束,相邻子图像之间的间隔需要仔细选择,以便合并来自不同的子图像的输出,即在合并的输出结果中没有间隔或重叠部分。
由于在三层卷积和池化算子之后,每一38x30子图像(包括38行30列)的输出都是3x2,因此,两个垂直方向相邻的重叠的子图像之间的位移应该确保它们的输出之间的垂直位移为3(例如,图3C中的左上角处的子图像302(0)和垂直相邻的子图像304(3)),并且两个水平方向相邻的重叠的子图像之间的位移应该确保它们的输出之间的水平位移为2(例如,图3C中的左上角处的子图像302(0)和水平相邻的子图像304(1))。这样才能保证这些重叠的子图像的输出之间没有重叠或者间隔。否则,如果在输出中有间隔,就不能确保等效性,而如果输出有重复会导致计算资源的浪费。
由于每一池化层都将子图像尺寸缩小一半,三个池化层之后的每一输出系数都对应于8个输入像素。因此,为了使输出分别位移2和3,我们需要分别将子图像位移16和24个像素。为避免相邻子图像输出中的任何间隔或重复,需要将如前所述的78x62的输入图像尺寸调整到86x62,这是因为86=38+24x 2,以及62=30+16x 2。这样的分辨率已能满足诸如人脸识别之类的任务的要求。
图4示出了根据本文所描述的一些实施例的对于一个86x62分辨率的输入图像400的包括不相重叠的子图像和边界子图像的示例性划分方案。在图4中可以看出,输入图像400被划分为一组九个38x30子图像,包括四个不相重叠的子图像,以及类似于图3B所示出的子图像配置的五个边界子图像。需要注意的是,图4中四个不相重叠的子图像以实线示出,而五个边界子图像以虚线示出。还要注意,图中使用小的人造的偏移来稍微分隔五个边界子图像,以便它们可以被更容易地与彼此以及与四个不相重叠的子图像区别开来。然而,这些人造的偏移只用于可视化这些重叠子图像的目的,不应该被解释为这些子图像之间的实际偏移。事实上,这些九个子图像的行坐标分别在1,25,以及49开始,而九个子图像的列坐标分别在1,17,以及33开始,即垂直位移为24,水平位移为16。例如,中间的边界子图像的四个角部像素分别具有(25,17)、(25,46),(62,17),(62,46)的(行,列)坐标。水平方向每一行两个不相重叠的子图像之间的间隔为2像素,而垂直方向每一列两个不相重叠的子图像之间的间隔为10像素。
在图4中可以看出,对于86x62分辨率的输入图像400,所公开的CNN系统210可以重复使用单一CNN1模块214九次,每一次处理一个38x30分辨率的子图像,并产生一个3x2像素的输出特征图。相邻子图像的输出之间既没有间隔,也没有重叠,因此可以被直接合并成为一个9x6像素的输出特征图402。这正好是把常规的CNN系统作用于一个未经划分的86x62分辨率的输入图像400所产生的输出结果。在示例Hi3519芯片组的内嵌CNN模块中,每一个子图像处理大约需要1毫秒(因此九个子一子图像需要9毫秒),输出特征图的最大数量是50(对应于50个滤波器)。因此,对于Hi3519芯片组,每一子图像的输出尺寸是3x2x50,总输出尺寸是9x6x50。用软件来实现FC层和ReLU层可在小于3毫秒内完成。因此,当使用Hi3519芯片组内的内嵌的硬件CNN模块时,对86x62分辨率的输入图像进行深度学习处理所需的运行时间只有大约12毫秒,完全可以满足实时计算的要求。
如上文所述,按此专利公开的基于子图像的CNN系统210可以对一组重叠的子图像应用一个或多个小规模的CNN1模块并合并所有输出,生成的结果可以得到与对整个输入图像应用具有相同滤波器集合的常规CNN系统200完全相同或基本上相同的结果。因此,在一些实施例中,可以通过训练常规的基于完整图像的CNN系统200,并将训练后的滤波器集合,即CNN系统200的网络权重,复制到本专利公开中的CNN1和CNN2模块中的对应的滤波器集合,来设计基于子图像的CNN系统。在对常规的基于完整图像的CNN系统200的训练过程中,只须确保完整图像尺寸满足公式(3),而不必针对基于子图像的CNN系统的实际实现专门训练响应的网络权重。因此在这些实施例中,训练此专利公开中的基于子图像的CNN系统的复杂度不会增大。
在此专利公开中,描述了基于重复使用小规模的硬件CNN模块和子图像的CNN架构和系统。所公开的CNN架构和系统适用于诸如嵌入式系统和移动设备之类的资源有限的系统。在一些实施例中,将原始输入图像划分为相同尺寸的子图像集合,在该组子图像之间使用正确地设计的间隔和/或重叠。这些子图像可以按顺序馈送给有限分辨率的小规模的硬件CNN模块,用于卷积-ReLU-池化操作。然后,可以将来自子图像集合的输出合并,合并后的特征图可以和把一个常规的大规模CNN系统直接作用在整个输入图像上所得到的特征图有完全相同或基本上相同的结果。然后,可以由所公开的CNN架构和系统的下一级处理合并后的特征图,该下一级可以通过小规模的硬件CNN模块以硬件来实现或者完全以软件来实现。因此,所公开的CNN架构和系统可以使用有限分辨率的小规模的CNN模块,在资源有限的嵌入式系统上执行高复杂度的CNN任务。
图5呈现了一个流程图,示出了根据本文所描述的一些实施例的使用所公开的基于子图像的CNN系统来执行图像处理的过程。当在诸如CNN系统210之类的所公开的基于子图像的CNN系统的输入端接收到高分辨率图像时,过程可以开始(步骤502)。在一些实施例中,可以由诸如监控摄像机、机器视觉摄像机、自动驾驶汽车上的摄像机,或移动电话摄像机之类的高分辨率摄像机采集高分辨率输入图像。接下来,在CNN系统的输入模块处将高分辨率输入图像划分为一组较小图像尺寸的子图像(步骤504)。在一些实施例中,来自步骤504的子图像集合包括不相重叠的子图像的二维阵列和横跨该组不相重叠的子图像的边界的一组边界子图像。
接下来,由CNN系统的第一处理级内的第一硬件CNN模块按顺序处理该组子图像,以生成输出特征图阵列(步骤506)。在一些实施例中,第一硬件CNN模块是被配置成处理低分辨率输入图像的小规模的低成本的硬件CNN模块。因此,高分辨率输入图像的尺寸比第一硬件CNN模块的最大输入图像尺寸大得多。在一些实施例中,第一硬件CNN模块可包括串联的卷积(CONV)层集合、ReLU层集合,以及池化层集合,而使用第一硬件CNN模块来处理接收到的子图像集合中的每一个子图像包括对接收到的每一个子图像交替地应用CONV层集合中的一个CONV层,以及池化层集合中的一个池化层。需要注意的是,作为步骤506的替代方案,可以由CNN系统的第一处理级内的两个或更多相同的硬件CNN模块来处理子图像集合,以生成相同特征图阵列。更具体而言,可以将子图像集合分割为两个或更多子集,可以由两个或更多硬件CNN模块中的一个按顺序处理子图像的两个或更多子集中的每一子集,并可以由两个或更多硬件CNN模块并行地处理子图像的两个或更多子集。
在图5中,接下来,CNN系统的合并模块将由第一硬件CNN模块输出的特征图阵列合并成表示整个高分辨率输入图像的一个完整的特征图集合(步骤508)。在一些实施例中,这个合并后的特征图集合和把一个大规模的常规CNN系统的卷积-ReLU-池化层直接作用到整个高分辨率输入图像(而不必划分输入图像)所生成的特征图集合完全或基本上相同。接下来,由CNN系统的第二处理级内的第二CNN模块处理合并后的特征图集合,以生成对整个高分辨率输入图像的内容的至少一个预测(步骤510)。在一些实施例中,处理所述已合并的特征图集合包括对所述已合并的特征图集合交替地应用FC层集合中的一个FC层、ReLU层集合中的一个ReLU层。
图6示出了根据本文所描述的一些实施例的示例性嵌入式系统,在该嵌入式系统内,所公开的基于子图像的CNN系统被用来对采集到的图像进行深度学习(DL)图像处理。嵌入式系统600可用于监控摄像机、机器视觉摄像机、无人机、机器人,或自动驾驶汽车。在图6中可以看出,嵌入式系统600可包括总线602、处理器604、存储器606、存储设备608、摄像机610、CNN子系统612、输出设备接口614,以及网络接口616。
总线602集合地表示可连接嵌入式系统600的各种组件的所有系统、外围,以及芯片组总线。例如,总线602可连接处理器604与存储器606、存储设备608、摄像机610、CNN子系统612、输出设备接口614,以及网络接口616。
处理器604从存储器606取回指令予以执行和数据予以处理,以便控制嵌入式系统600的各种组件。处理器604可以包括任何类型的处理器,包括,但不仅限于,微处理器、大型计算机、数字信号处理器、设备控制器和电器内的计算引擎,以及现在已知或以后开发的任何其他处理器。进一步地,处理器604可包括一个或多个核。处理器604本身可包括存储代码以及数据供处理器604执行的高速缓存。
存储器606可包括可以存储代码以及数据供处理器604执行的任何类型的存储器。这包括但不仅限于,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、只读存储器(ROM),以及现在已知或以后开发的任何其他类型的存储器。
存储设备608可包括可以与嵌入式系统600集成的任何类型的非易失性存储器设备。这包括,但不限于,磁性、光学,以及磁光存储设备,以及基于闪存和/或带蓄电池后备电源的存储器的存储设备。
总线602也连接到摄像机610。摄像机610被配置成以预定的分辨率采集静止图像和/或视频图像,并通过总线602,将采集到的图像数据传送到嵌入式系统600内的各种组件,诸如连接到存储器606供缓冲,连接到CNN子系统612供进行DL图像处理。摄像机610可以是数字摄像机。在一些实施例中,摄像机610是配备有广角镜头的数字摄像机。由摄像机610采集到的图像可以具有不同的分辨率,包括高分辨率,诸如1280x 720p,1920x 1080p或其他高分辨率。
CNN子系统612被配置成通过总线602,接收采集到的图像,诸如采集到的高分辨率图像,对接收到的图像执行如前所述的DL图像处理,并生成采集到的图像的结果。CNN子系统612可以通过本发明所公开的基于子图像的CNN系统的各实施例之一来实现。
输出设备接口614也连接到总线602。例如,它可以显示由CNN子系统612所生成的结果。与输出设备接口614一起使用的输出设备包括,打印机和显示设备,诸如阴极射线管显示器(CRT)、发光二极管显示器(LED)、液晶显示器(LCD),有机发光二极管显示器(OLED)、等离子体显示器,或电子纸。
最后,如图6所示,总线602还通过网络接口616将嵌入式系统600连接到网络(未示出)。如此,嵌入式系统600可以是网络(诸如局域网(“LAN”)、广域网(“WAN”),或内联网,或网络的网络,诸如因特网)的一部分。嵌入式系统600的任何或所有组件都可以与本公开一起使用。
这里所公开的各实施例所描述的各种说明性逻辑块、模块,电路、以及算法步骤,可以作为电子硬件、计算机软件或两者的组合来实现。为清楚地显示硬件和软件的此互换性,上文已经一般就其功能而言描述了各种说明性组件、单元、模块、电路,以及步骤。此类功能集是被实现为硬件还是软件取决于具体应用和整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能集,但此类设计决策不应被解释为能够脱离本公开的范围。
用于实现与本文所公开的各方面一起所描述的各种说明性逻辑、逻辑块、模块、以及电路的硬件可以与通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)或其他可编程逻辑器件,单独的栅极或晶体管逻辑、单独的硬件组件,或被设计为执行本文所描述的功能的其任何组合,来实现或执行。通用处理器可以是微处理器,但是在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以作为接收器设备的组合来实现,例如,DSP和微处理器的组合、多个微处理器、和DSP核一起的一个或多个微处理器,或任何其他这样的配置。可另选地,一些步骤或方法可以由给定功能特定的电路来执行。
在一个或更多示例性方面,所描述的功能可以以硬件、软件、固件,或其任何组合来实现。如果以软件来实现,则功能可以作为一个或多个指令或代码存储在非暂态的计算机可读取的存储介质上或非暂态的处理器可读取的存储介质上。本文所公开的方法或算法的步骤可以以能够驻留在非暂态的计算机可读取的或处理器可读取的存储介质上的处理器可执行指令来具体化。非暂态的计算机可读取的或处理器可读取的存储介质可以是能够被计算机或处理器访问的任何存储介质。作为示例但不作为限制,这样的非暂态的计算机可读取的或处理器可读取的存储介质可包括RAM、ROM、EEPROM、闪存、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或可以用来存储指令或数据结构形式的所需要的程序代码并可以被计算机访问的任何其他介质。如本文所使用的磁盘和光盘包括压缩光盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘,以及蓝光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述各项的组合也包括在非暂态的计算机可读取的和处理器可读取的介质的范围内。另外,方法或算法的操作可以作为一个代码和/或指令或代码和/或指令的任何组合或组,驻留在非暂态的处理器可读取的存储介质和/或计算机可读取的存储介质上,存储介质可以被包括到计算机程序产品中。
尽管本专利文件包含许多细节,但是,这些不应该被解释为对任何所公开的技术的或要求保护的东西的范围的限制,而是作为对特定的技术的特定实施例的特定的特征的描述。在本专利文件中在单独的实施例的上下文中所描述的某些特征也可以在单一实施例中组合地实现。相反,在单一实施例的上下文中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,虽然特征在上文可以被描述为以某些组合地起作用,甚至最初要求如此,来自要求保护的组合的一个或多个特征可以在某些情况下从组合中删除,要求保护的组合可以被定向到子组合或子组合的变体。
类似地,尽管操作在附图中是按特定顺序描绘的,但是,这不应该被理解为要求这样的操作以所示出的特定顺序或按先后顺序执行,或所有所示出的操作都被执行,以实现所需要的结果。此外,在本专利文件中所描述的各实施例中的各种系统组件的分离不应该被理解为在所有实施例中都要求这样的分离。
本专利文件只描述了几个实现和示例,可以基于在本专利文件中所描述的和示出的内容作出其他实现、增强和变化。
Claims (23)
1.一种卷积神经网络(CNN)系统,包括:
用于接收具有第一图像尺寸的输入图像的接收模块,其中,所述接收模块被配置成将所述输入图像划分为具有第二图像尺寸的子图像集合;
第一处理级,所述第一处理级包括最大输入图像尺寸受限制的第一硬件CNN模块,其中,所述第一硬件CNN模块进一步被配置成按顺序:
接收所述子图像集合中的每一个子图像;以及
处理所述接收到的每一个子图像,以生成对应所述子图像集合的输出集合;
合并模块,所述合并模块被配置成按顺序从所述第一处理级接收所述输出集合,并将所述输出集合合并成对应所述输入图像的特征图集合;以及
第二处理级,所述第二处理级被配置成接收已合并的特征图集合,并进一步处理所述已合并的特征图集合,以生成所述CNN系统的输出,其中,所述CNN系统的输出包括对所述输入图像的内容的至少一个预测,
其中,所述第一图像尺寸比所述第一硬件CNN模块所能处理的最大输入图像尺寸大得多;以及
其中,所述第二图像尺寸小于或等于所述第一硬件CNN模块所能处理的最大输入图像尺寸。
2.如权利要求1所述的CNN系统,其中,所述子图像集合包括两个子集,分别由下列操作生成:
将所述输入图像划分为由在水平和垂直方向有特定间隔的子图像集合成的第一子集,其中,所述子图像集合的第一子集中水平方向的一对相邻子图像通过第一间隔来分隔,所述子图像集合的第一子集中垂直方向的一对相邻子图像通过第二间隔来分隔;以及
生成所述子图像集合的第二子集,以便所述子图像集合的第二子集中的每一个子图像与所述子图像集合的第一子集中的至少一对相邻子图像在水平方向或垂直方向有适当的重叠。
3.如权利要求1所述的CNN系统,其中,所述第一硬件CNN模块包括串联的卷积(CONV)层集合、ReLU层集合,以及池化层集合,其中,使用所述第一硬件CNN模块来处理所述接收到的子图像集合中的每一个子图像,包括对所述接收到的子图像交替地使用所述CONV层集合中的一个CONV层,所述ReLU层集合中的一个ReLU层,以及所述池化层集合中的一个池化层。
4.如权利要求1所述的CNN系统,其中,所述第一硬件CNN模块的每一CONV层进一步包括滤波器集合,其中,与所述已处理的子图像集合中的每一个子图像相关联的所述输出集合对应于所述滤波器集合。
5.如权利要求1所述的CNN系统,其中,所生成的合并后的特征图集合与直接用一个大规模CNN系统的卷积-ReLU-池化层处理所述输入图像而不必划分所述输入图像所得到的特征图集合结果基本上相同。
6.如权利要求1所述的CNN系统,其中,所述第二处理级包括串联的完全连接(FC)层集合以及ReLU层集合, 其中,处理所述已合并的特征图集合包括对所述已合并的特征图集合交替地使用所述FC层集合中的一个FC层以及所述ReLU层集合中的一个ReLU层。
7.如权利要求1所述的CNN系统,其中,所述第二处理级以软件实现。
8.如权利要求1所述的CNN系统,其中,所述第二处理级以硬件方式用第二硬件CNN模块实现。
9.如权利要求8所述的CNN系统,其中,所述第一硬件CNN模块和所述第二硬件CNN模块两者都是用基于嵌入式系统的小规模硬件CNN模块来实现的,所述小规模硬件CNN模块包括卷积层集合、第ReLU层集合、池化层集合、完全连接(FC)层集合,以及第二ReLU层集合:
其中所述第一硬件CNN模块是通过跳过所述小规模硬件CNN模块中的所述FC层集合和所述第二ReLU层集合来实现的;以及
其中,所述第二硬件CNN模块是通过跳过所述小规模硬件CNN模块中的所述卷积层集合、所述第ReLU层集合,以及所述池化层集合来实现的。
10.如权利要求1所述的CNN系统,其中,所述第一硬件CNN模块是小规模,低成本的硬件CNN模块,适用于低分辨率、较简单的图像处理应用领域。
11.如权利要求10所述的CNN系统,其中,所述图像处理应用领域为手写数字识别或汽车牌照识别。
12.一种使用卷积神经网络(CNN)来执行图像处理的方法,所述方法包括:
接收具有第一图像尺寸的输入图像;
将所述输入图像划分为具有第二图像尺寸的子图像集合;
使用最大输入图像尺寸受限制的第一硬件CNN模块来处理所述子图像集合,其中,所述处理包括:
按顺序接收所述子图像集合中的每一个子图像;以及
按顺序处理所述接收到的每一个子图像,以生成对应所述子图像集合的输出集合;
将所述输出集合合并成对应所述输入图像的特征图集合;以及,
处理所述已合并的特征图集合,以生成对所述输入图像的内容的至少一个预测,
其中,所述第一图像尺寸比所述第一硬件CNN模块所能处理的最大输入图像尺寸大得多;以及
其中,所述第二图像尺寸小于或等于所述第一硬件CNN模块所能处理的最大输入图像尺寸。
13.如权利要求12所述的方法,其中,所述子图像集合包括第一子集以及第二子集,其中,划分所述输入图像包括:
将所述输入图像划分为由水平和垂直方向有适当间隔的子图像组成的所述第一子集,其中,所述子图像集合的第一子集中水平方向的一对相邻子图像通过第一间隔来分隔,所述子图像集合的第一子集中垂直方向的一对相邻子图像通过第二间隔来分隔;以及
生成所述子图像集合的第二子集,以便所述子图像集合的第二子集中的每一个子图像与所述子图像集合的第一子集中的至少一对相邻子图像在水平方向或垂直方向有适当的重叠。
14.如权利要求12所述的方法,其中,按顺序处理所述接收到的子图像集合中的每一个子图像包括对所述接收到的子图像交替地使用卷积层集合中的一个卷积层、ReLU层集合中的一个ReLU层,以及池化层集合中的一个池化层。
15.如权利要求12所述的方法,其中,按顺序处理所述接收到的子图像集合中的每一个子图像进一步包括对所述接收到的子图像使用滤波器集合,其中,与所述已处理的子图像集合中的每一个子图像相关联的所述输出集合对应于所述滤波器集合。
16.如权利要求12所述的方法,其中,所生成的合并后的特征图集合与直接用一个大规模CNN系统的卷积-ReLU-池化层处理所述输入图像而不必划分所述输入图像所得到的特征图集合结果基本上相同。
17.如权利要求12所述的方法,其中,处理所述已合并的特征图集合包括对所述已合并的特征图集合交替地使用FC层集合中的一个FC层、ReLU层集合中的一个ReLU层。
18.如权利要求12所述的方法,其中,处理所述已合并的特征图集合包括使用第二硬件CNN模块。
19.如权利要求18所述的方法,其中,所述第一硬件CNN模块和所述第二硬件CNN模块两者都是用基于嵌入式方法的小规模硬件CNN模块来实现的,所述小规模硬件CNN模块包括卷积层集合、第ReLU层集合、池化层集合、完全连接(FC)层集合,以及第二ReLU层集合:
其中所述第一硬件CNN模块是通过跳过所述小规模硬件CNN模块中的所述FC层集合和所述第二ReLU层集合来实现的;以及
其中,所述第二硬件CNN模块是通过跳过所述小规模硬件CNN模块中的所述卷积层集合、所述第ReLU层集合,以及所述池化层集合来实现的。
20.一种卷积神经网络(CNN)系统,包括:
用于接收具有第一图像尺寸的输入图像的接收模块,其中,所述接收模块被配置成将所述输入图像划分为具有第二图像尺寸的子图像集合;
包括第一硬件CNN模块和第二硬件CNN模块的第一处理级,其中,所述第一和第二硬件CNN模块都受最大输入图像尺寸的限制,并且,其中:
所述第一硬件CNN模块进一步被配置成按顺序:
接收所述子图像集合中的第一子集;以及
处理所述接收到的第一子集中的每一个子图像,以生成第一输出集合;以及
所述第二硬件CNN模块进一步被配置成按顺序:
接收所述子图像集合中的第二子集;以及
处理所述接收到的第二子集中的每一个子图像,以生成第二输出集合;
其中,所述第一硬件CNN模块和所述第二硬件CNN模块被配置成并行地处理所述子图像集合的第一子集和所述子图像集合的第二子集;
合并模块,所述合并模块被配置成从所述第一处理级接收所述第一输出集合和所述第二输出集合,并将所述第一和第二输出集合合并成对应所述输入图像的特征图集合;以及
第二处理级,所述第二处理级被配置成接收所述已合并的特征图集合,并处理所述已合并的特征图集合,以生成所述CNN系统的输出,其中,所述CNN系统的输出包括对所述输入图像的内容的至少一个预测。
21.一种能够对图像执行深度学习的系统,所述系统包括:
处理器;
连接到所述处理器的存储器;
图像采集设备,所述图像采集设备连接到所述处理器和所述存储器,并被配置成采集具有第一图像尺寸的图像;
连接到所述处理器和所述存储器的卷积神经网络(CNN)子系统,其中,所述CNN子系统进一步包括:
接收模块,所述接收模块被配置成接收由所述图像采集设备采集到的所述具有第一图像尺寸的输入图像,其中,所述接收模块进一步被配置成将所述输入图像划分为具有第二图像尺寸的子图像集合;
第一处理级,所述第一处理级包括最大输入图像尺寸受限制的第一硬件CNN模块,其中,所述第一硬件CNN模块进一步被配置成按顺序:
接收所述子图像集合中的每一个子图像;以及
处理所述接收到的每一个子图像,以生成对应所述子图像集合的输出集合;
合并模块,所述合并模块被配置成按顺序从所述第一处理级接收所述输出集合,并将所述输出集合合并成对应所述输入图像的特征图集合;以及
第二处理级,所述第二处理级被配置成接收所述已合并的特征图集合,并处理所述已合并的特征图集合,以生成所述CNN子系统的输出,其中,所述CNN子系统的输出包括对所述输入图像的内容的至少一个预测。
22.如权利要求21所述的系统,
其中,所述第一图像尺寸比所述第一硬件CNN模块所能处理的最大输入图像尺寸大得多;以及
其中,所述第二图像尺寸小于或等于所述第一硬件CNN模块所能处理的最大输入图像尺寸。
23.如权利要求21所述的系统,其中,所述系统包括移动设备或嵌入式系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/441,194 | 2017-02-23 | ||
US15/441,194 US10360494B2 (en) | 2016-11-30 | 2017-02-23 | Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368886A CN107368886A (zh) | 2017-11-21 |
CN107368886B true CN107368886B (zh) | 2020-10-02 |
Family
ID=60304885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710386705.5A Active CN107368886B (zh) | 2017-02-23 | 2017-05-26 | 基于重复使用小规模卷积神经网络模块的神经网络系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368886B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832807B (zh) * | 2017-12-07 | 2020-08-07 | 上海联影医疗科技有限公司 | 一种图像处理方法和系统 |
US10824907B2 (en) | 2017-12-07 | 2020-11-03 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image processing |
CN108073898B (zh) * | 2017-12-08 | 2022-11-18 | 腾讯科技(深圳)有限公司 | 人头区域识别方法、装置及设备 |
DE102018110828A1 (de) | 2018-03-16 | 2019-09-19 | Rockwell Collins Deutschland Gmbh | System zur Objekterkennung mittels verteilter Neuronaler Netze |
CN110322389B (zh) * | 2018-03-29 | 2023-03-21 | 上海熠知电子科技有限公司 | 池化方法、装置及系统、计算机可读存储介质 |
US11651206B2 (en) * | 2018-06-27 | 2023-05-16 | International Business Machines Corporation | Multiscale feature representations for object recognition and detection |
US11579921B2 (en) * | 2018-08-29 | 2023-02-14 | Alibaba Group Holding Limited | Method and system for performing parallel computations to generate multiple output feature maps |
US11176427B2 (en) | 2018-09-26 | 2021-11-16 | International Business Machines Corporation | Overlapping CNN cache reuse in high resolution and streaming-based deep learning inference engines |
CN111222624B (zh) * | 2018-11-26 | 2022-04-29 | 深圳云天励飞技术股份有限公司 | 一种并行计算方法及装置 |
CN109784295B (zh) * | 2019-01-25 | 2020-12-25 | 佳都新太科技股份有限公司 | 视频流特征识别方法、装置、设备及存储介质 |
CN109886160B (zh) * | 2019-01-30 | 2021-03-09 | 浙江工商大学 | 一种非限定条件下的人脸识别方法 |
CN109886416A (zh) * | 2019-02-01 | 2019-06-14 | 京微齐力(北京)科技有限公司 | 集成人工智能模块的系统芯片及机器学习方法 |
US10872258B2 (en) * | 2019-03-15 | 2020-12-22 | Huawei Technologies Co., Ltd. | Adaptive image cropping for face recognition |
CN112149463B (zh) * | 2019-06-27 | 2024-04-23 | 京东方科技集团股份有限公司 | 图像处理方法和装置 |
CN112257753B (zh) * | 2020-09-23 | 2023-04-07 | 北京大学 | 基于偏微分算子的广义等变卷积网络模型的图像分类方法 |
CN112712124B (zh) * | 2020-12-31 | 2021-12-10 | 山东奥邦交通设施工程有限公司 | 一种基于深度学习的多模块协同物体识别系统及方法 |
CN114386578B (zh) * | 2022-01-12 | 2024-09-24 | 西安石油大学 | 一种海思无npu硬件上实现的卷积神经网络方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095923A (zh) * | 2014-05-21 | 2015-11-25 | 华为技术有限公司 | 一种图像处理方法及装置 |
CN105590102A (zh) * | 2015-12-30 | 2016-05-18 | 中通服公众信息产业股份有限公司 | 一种基于深度学习的前车车脸识别方法 |
CN105678300A (zh) * | 2015-12-30 | 2016-06-15 | 成都数联铭品科技有限公司 | 一种复杂图像文字序列识别方法 |
CN106355578A (zh) * | 2016-09-13 | 2017-01-25 | 天津大学 | 基于卷积神经网络的超声颈动脉远端识别装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008133951A2 (en) * | 2007-04-24 | 2008-11-06 | Massachusetts Institute Of Technology | Method and apparatus for image processing |
-
2017
- 2017-05-26 CN CN201710386705.5A patent/CN107368886B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095923A (zh) * | 2014-05-21 | 2015-11-25 | 华为技术有限公司 | 一种图像处理方法及装置 |
CN105590102A (zh) * | 2015-12-30 | 2016-05-18 | 中通服公众信息产业股份有限公司 | 一种基于深度学习的前车车脸识别方法 |
CN105678300A (zh) * | 2015-12-30 | 2016-06-15 | 成都数联铭品科技有限公司 | 一种复杂图像文字序列识别方法 |
CN106355578A (zh) * | 2016-09-13 | 2017-01-25 | 天津大学 | 基于卷积神经网络的超声颈动脉远端识别装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107368886A (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107368886B (zh) | 基于重复使用小规模卷积神经网络模块的神经网络系统 | |
US10360494B2 (en) | Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules | |
CN107506707B (zh) | 采用嵌入式系统中的小规模卷积神经网络模块的人脸检测 | |
CN107909026B (zh) | 基于小规模卷积神经网络年龄和/或性别评估方法及系统 | |
JP7132824B2 (ja) | ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法 | |
US11315253B2 (en) | Computer vision system and method | |
US10467458B2 (en) | Joint face-detection and head-pose-angle-estimation using small-scale convolutional neural network (CNN) modules for embedded systems | |
CN110532955B (zh) | 基于特征注意力和子上采样的实例分割方法和装置 | |
KR20200066952A (ko) | 확장 컨벌루션 연산을 수행하는 장치 및 방법 | |
US11836971B2 (en) | Method and device with convolution neural network processing | |
CN111524150A (zh) | 图像处理的方法及装置 | |
CN114223019A (zh) | 用于参数有效的语义图像分割的反馈解码器 | |
Advani et al. | A multi-resolution saliency framework to drive foveation | |
US20220067429A1 (en) | Method and apparatus with image processing | |
US20200304831A1 (en) | Feature Encoding Based Video Compression and Storage | |
EP2924649B1 (en) | Method and an apparatus for generating an approximate nearest neighbor field (annf) for images and video sequences | |
CN115082867A (zh) | 用于对象检测的方法和系统 | |
CN115511690A (zh) | 一种图像处理方法和图像处理芯片 | |
Zhuang et al. | Improved Convolutional Neural Networks by Integrating High-frequency Information for Image Classification | |
US20240223917A1 (en) | Method and apparatus with high-resolution image zooming | |
US11281911B2 (en) | 2-D graphical symbols for representing semantic meaning of a video clip | |
Jing et al. | Biologically motivated spiral architecture for fast video processing | |
JP2020197999A (ja) | 画像学習プログラム、画像学習方法、及び画像認識装置 | |
CN118982689A (zh) | 基于密集连接注意力机制的图像识别方法 | |
CN114662667A (zh) | 一种基于pe架构通道的卷积神经网络加速器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |