用于合并交错通道数据的卷积引擎的制作方法

文档序号:19418617发布日期:2019-12-14 01:11阅读:481来源:国知局
用于合并交错通道数据的卷积引擎的制作方法



背景技术:

由图像传感器捕获的图像数据或从其他数据源接收的图像数据通常在进一步处理或消耗之前在图像处理管道中处理。例如,在提供给诸如视频编码器的后续部件之前,可校正、滤波或以其他方式修改原始图像数据。为了对捕获的图像数据执行校正或增强,可采用各种部件、单元级或模块。

可构造这样的图像处理管道,使得能够以有利的方式执行对捕获的图像数据的校正或增强,而不消耗其他系统资源。虽然可通过在中央处理单元(cpu)上执行软件程序来执行许多图像处理算法,但是在cpu上执行这些程序将消耗cpu和其他外围资源的大量带宽以及增加功耗。因此,图像处理管道通常被实现为与cpu分离的硬件部件,并且专用于执行一个或多个图像处理算法。

各种类型的图像处理涉及内核和数据之间的卷积。不同的内核可用于例如模糊、锐化、浮凸或在图像中执行边缘检测。此类卷积操作通常由cpu执行,这降低了cpu用于其他过程的可用性。



技术实现要素:

实施方案涉及一种可配置卷积引擎,该可配置卷积引擎用于通过配置卷积引擎中的部件的操作以期望的方式对各种通道的输入数据执行卷积和机器学习操作。卷积引擎包括第一卷积电路、第二卷积电路和耦合到第一卷积电路和第二卷积电路的通道合并电路。第一卷积电路和第二卷积电路各自通过对输入数据施加卷积内核来生成值流。值流可各自以交错方式定义图像数据的多个通道。通道合并电路将来自第一卷积电路和第二卷积电路的值流组合成单个输出流,以交错方式定义流的通道的组合。

附图说明

图1是根据实施方案的电子设备的高级图。

图2是示出根据一个实施方案的电子设备中的部件的框图。

图3是根据一个实施方案示出了使用图像信号处理器实现的图像处理管道的框图。

图4是根据一个实施方案示出了图像信号处理器中的视觉模块的框图。

图5是根据一个实施方案的卷积引擎的框图。

图6a是根据一个实施方案的卷积引擎的双卷积模式的框图。

图6b是根据一个实施方案的卷积引擎的级联模式的框图。

图6c是根据一个实施方案的卷积引擎的并行模式的框图。

图7是根据一个实施方案示出了以多种模式操作卷积引擎的方法的流程图。

图8是根据一个实施方案示出了卷积核心电路的框图。

图9是根据一个实施方案的由响应整流器单元施加的非线性变换的曲线图。

图10是根据一个实施方案示出了卷积核心的框图。

图11a是根据一个实施方案示出了多平面格式的卷积核心电路的输入和输出的概念图。

图11b是根据一个实施方案示出了平面化格式的卷积核心电路的输入和输出的概念图。

图12是根据一个实施方案的空间池化电路的框图。

图13a和图13b是根据一个实施方案示出了多平面格式的空间池化电路的输入和输出的概念图。

图13c和图13d是根据一个实施方案示出了平面化格式的空间池化电路的输入和输出的概念图。

图14是根据一个实施方案示出了操作空间池化电路的方法的流程图。

图15是根据一个实施方案示出了通道合并器的框图。

图16是根据一个实施方案示出了平面化格式的通道合并器的输入和输出的概念图。

仅仅出于示例目的,附图描绘以及详细说明描述各种非限定性实施方案。

具体实施方式

现在将详细地参考实施方案,这些实施方案的示例在附图中示出。下面的详细描述中示出许多具体细节,以便提供对各种所描述的实施方案的充分理解。然而,可以在没有这些具体细节的情况下实施所述实施方案。在其他情况下,没有详细地描述众所周知的方法、过程、部件、电路和网络,从而不会不必要地使实施方案的各个方面晦涩难懂。

本公开的实施方案涉及一种可配置卷积引擎,其用于通过配置卷积引擎中的部件的操作以期望的方式对各种通道的输入数据执行卷积和每通道机器学习操作。卷积引擎是一种电路,该电路包括第一卷积电路、第二卷积电路和耦合到第一卷积电路和第二卷积电路的通道合并电路。第一卷积电路和第二卷积电路各自尤其通过将卷积内核施加于输入数据来生成值流。值流可各自以交错方式定义图像数据的一个或多个通道。通道合并电路可根据所选择的操作模式来组合来自第一卷积电路和第二卷积电路的值流。在双卷积模式中,将值流组合成单个输出流,该单个输出流具有以交错方式布置的来自第一流的通道和来自第二流的通道。

示例性电子设备

本文描述了电子设备、此类设备的用户界面和使用此类设备的相关过程的实施方案。在一些实施方案中,该设备为还包含其他功能诸如个人数字助理(pda)和/或音乐播放器功能的便携式通信设备,诸如移动电话。便携式多功能设备的示例性实施方案包括但不限于来自appleinc.(cupertino,california)的设备、ipod设备、apple设备和设备。可选地使用其他便携式电子设备,诸如可穿戴设备、膝上型电脑或平板计算机。在一些实施方案中,该设备不是便携式通信设备,而是台式计算机或不是为便携式使用而设计的其他计算设备。在一些实施方案中,所公开的电子设备可包括触敏表面(例如,触摸屏显示器和/或触摸板)。下文结合图1描述的示例电子设备(例如,设备100)可包括用于接收用户输入的触敏表面。电子设备还可包括一个或多个其他物理用户接口设备,诸如物理键盘、鼠标和/或操纵杆。

图1是根据一个实施方案的电子设备100的高级图。设备100可包括一个或多个物理按钮,诸如“home”按钮或菜单按钮104。菜单按钮104例如用于导航到在设备100上执行的一组应用程序中的任何应用程序。在一些实施方案中,菜单按钮104包括识别菜单按钮104上的指纹的指纹传感器。指纹传感器能够被用来确定菜单按钮104上的手指是否具有与为解锁设备100存储的指纹匹配的指纹。另选地,在一些实施方案中,菜单按钮104被实现为触摸屏上显示的图形用户界面(gui)中的软键。

在一些实施方案中,设备100包括触摸屏150、菜单按钮104、用于使设备开/关机和用于锁定设备的下压按钮106、音量调节按钮108、订户身份模块(sim)卡槽110、耳麦插孔112和对接/充电外部端口124。下压按钮106能够被用于通过压下该按钮并且将该按钮保持在压下状态达预定义的时间间隔来对设备进行开关机;通过压下该按钮并在该预定义的时间间隔过去之前释放该按钮来锁定设备;和/或对设备进行解锁或发起解锁过程。在另选的实施方案中,设备100还通过麦克风113接受用于激活或去激活某些功能的语音输入。设备100包括各种部件,包括但不限于存储器(可包括一个或多个计算机可读存储介质)、存储器控制器、一个或多个中央处理单元(cpu)、外围设备接口、rf电路、音频电路、扬声器111、麦克风113、输入/输出(i/o)子系统和其他输入或控制设备。设备100可包括一个或多个图像传感器164、一个或多个接近传感器166,以及一个或多个加速度计168。设备100可包括图1中未示出的部件。

设备100仅是电子设备的一个示例,并且设备100可具有比上文列出的更多或更少的部件,其中一些部件可组合成一个部件或具有不同的配置或布置。以上列出的设备100的各种部件体现为硬件、软件、固件或其组合,包括一个或多个信号处理和/或专用集成电路(asic)。

图2是示出根据一个实施方案的设备100中的部件的框图。设备100可执行包括图像处理在内的各种操作。出于此目的和其他目的,设备100可包括图像传感器202、片上系统(soc)部件204、系统存储器230、永久存储器(例如,闪存)228、运动传感器234和显示器216,以及其他部件。图2中所示的部件仅为例示性的。例如,设备100可包括图2中未示出的其他部件(诸如扬声器或麦克风)。另外,一些部件(诸如运动传感器234)可从设备100中省略。

图像传感器202是用于捕获图像数据的部件,并且可实现为例如互补金属氧化物半导体(cmos)有源像素传感器、相机、摄像机或其他设备。图像传感器202生成原始图像数据,其被发送到soc部件204以进行进一步处理。在一些实施方案中,由soc部件204处理的图像数据显示在显示器216上,存储在系统存储器230、永久存储器228中,或经由网络连接发送到远程计算设备。由图像传感器202生成的原始图像数据可以是bayer滤色器阵列(cfa)图案(下文中也称为“bayer图案”)。

运动传感器234是用于感测设备100的运动的部件或一组部件。运动传感器234可生成指示设备100的取向和/或加速度的传感器信号。传感器信号被发送到soc部件204以用于各种操作,诸如打开设备100或旋转显示器216上显示的图像。

显示器216是用于显示由soc部件204生成的图像的部件。显示器216可包括例如液晶显示器(lcd)设备或有机发光二极管(oled)设备。基于从soc部件204接收的数据,显示器116可显示各种图像,诸如菜单、所选择的操作参数、由图像传感器202捕获并由soc部件204处理的图像,和/或从设备100的用户界面接收的其他信息(未示出)。

系统存储器230是用于存储由soc部件204执行的指令以及用于存储由soc部件204处理的数据的部件。系统存储器230可体现为任何类型的存储器,包括例如动态随机存取存储器(dram)、同步dram(sdram)、双倍数据速率(ddr、ddr2、ddr3等)rambusdram(rdram)、静态ram(sram)或其组合。在一些实施方案中,系统存储器230可以各种格式存储像素数据或其他图像数据或统计。

永久存储器228是用于以非易失性方式存储数据的部件。即使电力不可用,永久存储器228也保留数据。永久存储器228可体现为只读存储器(rom)、nand或nor闪存或其他非易失性随机存取存储器设备。

soc部件204体现为一个或多个集成电路(ic)芯片并执行各种数据处理过程。soc部件204可包括图像信号处理器(isp)206、中央处理器单元(cpu)208、网络接口210、传感器接口212、显示控制器214、图形处理器(gpu)220、存储器控制器222、视频编码器224、存储控制器226和各种其他输入/输出(i/o)接口218以及连接这些子部件的总线232等其他子部件。soc部件204可包括比图2中所示的子部件更多或更少的子部件。

isp206是执行图像处理管道的各级的硬件。在一些实施方案中,isp206可从图像传感器202接收原始图像数据,并且将原始图像数据处理成soc部件204的其他子部件或设备100的部件可用的形式。isp206可执行各种图像处理操作,诸如图像转译操作、水平和垂直缩放、颜色空间转换和/或图像稳定化变换,如下面参考图3详细描述的。

cpu208可使用任何合适的指令集架构来实现,并且可被配置为执行在该指令集架构中定义的指令。cpu108可以是使用各种指令集架构(isa)中的任一者的通用或嵌入式处理器,诸如x86、powerpc、sparc、risc、arm或mipsisa,或任何其他合适的isa。尽管图2中示出了单个cpu,但是soc部件204可包括多个cpu。在多处理器系统中,每个cpu可共同实现相同的isa,但不是必需的。

图形处理单元(gpu)220是用于执行图形数据的图形处理电路。例如,gpu220可渲染要显示到帧缓冲器中的对象(例如,包括整个帧的像素数据的帧缓冲器)。gpu220可包括一个或多个图形处理器,该图形处理器可执行图形软件以执行部分或全部的图形操作或某些图形操作的硬件加速。

i/o接口218是用于与设备100中的各种输入/输出部件交接的硬件、软件、固件或其组合。i/o部件可包括诸如键盘、按钮、音频设备和诸如全球定位系统的传感器之类的设备。i/o接口218处理用于将数据发送到此类i/o部件的数据或处理从这些i/o部件接收的数据。

网络接口210是支持经由一个或多个网络(例如,载体或代理设备)在设备100和其他设备之间交换数据的子部件。例如,视频或其他图像数据可经由网络接口210从其他设备接收并且被存储在系统存储器230中以用于后续处理(例如,经由诸如下文在图3中讨论的到图像信号处理器206的后端接口)和显示。网络可包括但不限于局域网(lan)(例如,以太网或公司网络)和广域网(wan)。经由网络接口210接收的图像数据可由isp206进行图像处理过程。

传感器接口212是用于与运动传感器234交接的电路。传感器接口212从运动传感器234接收传感器信息并且处理传感器信息以确定设备100的取向或移动。

显示控制器214是用于发送要在显示器216上显示的图像数据的电路。显示控制器214从isp206、cpu208、图形处理器220或系统存储器230接收图像数据,并且将图像数据处理成适于在显示器216上显示的格式。

存储器控制器222为用于与系统存储器230通信的电路。存储器控制器222可从系统存储器230读取数据以供isp206、cpu208、gpu220或soc部件204的其他子部件处理。存储器控制器222还可将数据写入从soc部件204的各种子部件接收的系统存储器230。

视频编码器224是硬件、软件、固件或其组合,用于将视频数据编码成适于存储在永久存储器128中的格式,或者用于将数据传递到网络接口210以通过网络传输到另一设备。

在一些实施方案中,soc部件204的一个或多个子部件或这些子部件的一些功能可由在isp206、cpu208或gpu220上执行的软件部件来执行。此类软件部件可存储在系统存储器230、永久存储器228或经由网络接口210与设备100通信的另一设备中。

图像数据或视频数据可流过soc部件204内的各种数据路径。在一个示例中,可从图像传感器202生成并由isp206处理原始图像数据,然后经由总线232和存储器控制器222发送到系统存储器230。在图像数据存储在系统存储器230中之后,它可由视频编码器224访问以进行编码,或者由显示器116访问以通过总线232进行显示。

在另一示例中,从图像传感器202以外的源接收图像数据。例如,视频数据可经由有线或无线网络流式传输、下载或以其他方式传送到soc部件204。可以经由网络接口210接收图像数据并经由存储器控制器222将图像数据写入系统存储器230。然后,图像数据可由isp206从系统存储器230获得,并通过一个或多个图像处理管道级处理,如下面参考图3详细描述的。然后可将图像数据返回到系统存储器230或者将其发送到视频编码器224、显示控制器214(用于在显示器216上显示)或存储控制器226以便存储在永久存储器228中。

示例性图像信号处理管道

图3是根据一个实施方案示出了使用isp206实现的图像处理管道的框图。在图3的实施方案中,isp206耦合到图像传感器202以接收原始图像数据。isp206实现图像处理管道,该图像处理管道可包括从创建、捕获或接收到输出的处理图像信息的一组级。除了其他部件之外,isp206可包括传感器接口302、中央控制320、前端管道级330、后端管道级340、图像统计模块304、视觉模块322、后端接口342和输出接口316。isp206可包括图3中未示出的其他部件或者可省略图3中所示的一个或多个部件。

在一个或多个实施方案中,isp206的不同部件以不同的速率处理图像数据。在图3的实施方案中,前端管道级330(例如,原始处理级306和重新采样处理级308)可以初始速率处理图像数据。因此,由这些前端管道级330以初始速率执行各种不同技术、调整、修改或其他处理操作。例如,如果前端管道级330每个时钟循环处理2个像素,则原始处理级308操作(例如,黑电平补偿、高亮恢复和缺陷像素校正)可一次处理2个像素的图像数据。相比之下,一个或多个后端管道级340可以小于初始数据速率的不同速率处理图像数据。例如,在图3的实施方案中,可以降低的速率(例如,每个时钟循环1个像素)来处理后端管道级340(例如,噪声处理级310、颜色处理级312和输出重缩放314)。尽管本文所述的实施方案包括其中一个或多个后端管道级340以与初始数据速率不同的速率处理图像数据的实施方案,但在一些实施方案中,后端管道级340可以初始数据速率处理图像数据。

传感器接口302从图像传感器202接收原始图像数据,并将原始图像数据处理成可由管道中的其他级处理的图像数据。传感器接口302可执行各种预处理操作,诸如图像裁剪、合并或缩放以减小图像数据尺寸。在一些实施方案中,像素以光栅顺序(即,水平地、逐行地)从图像传感器202发送到传感器接口302。管道中的后续处理也可以光栅顺序执行,并且结果也可以光栅顺序输出。尽管图3中仅示出了单个图像传感器202和单个传感器接口302,当在设备100中提供多于一个图像传感器时,可在isp206中提供相应数量的传感器接口以处理来自每个图像传感器的原始图像数据。

前端管道级330处理原始或全色域中的图像数据。前端管道级330可包括但不限于原始处理级306和重新采样处理级308。例如,原始图像数据可是bayer原始格式。在bayer原始图像格式中,在每个像素中提供专用于特定颜色(而不是所有颜色)的值的像素数据。在图像捕获传感器中,图像数据通常以bayer模式提供。原始处理级308可以bayer原始格式处理图像数据。

原始处理级308执行的操作包括但不限于传感器线性化、黑电平补偿、固定模式噪声降低、缺陷像素校正、原始噪声滤波、镜头阴影校正、白平衡增益和突出显示恢复。传感器线性化是指将非线性图像数据映射到线性空间以进行其他处理。黑电平补偿是指为图像数据的每个颜色分量(例如,gr,r,b,gb)独立地提供数字增益、偏移和剪辑。固定模式噪声降低是指通过从输入图像中减去暗帧并将不同增益乘以像素来去除偏移固定模式噪声并获得固定模式噪声。缺陷像素校正是指检测缺陷像素,然后替换缺陷像素值。原始噪声滤波是指通过平均亮度相似的相邻像素来降低图像数据的噪声。突出显示恢复是指对从其他通道剪辑(或接近剪辑)的那些像素的像素值进行估计。镜头阴影校正是指对每像素施加增益来补偿与距离透镜光学中心的距离大致成比例的强度下降。白平衡增益是指为所有颜色分量(例如bayer格式的gr,r,b,gb)独立地提供针对白平衡的数字增益、偏移和剪辑。isp206的部件可将原始图像数据转换为全色域中的图像数据,因此,除了原始图像数据之外或代替原始图像数据,原始处理级308可处理全色域中的图像数据。

重采样处理级308执行各种操作以转换、重采样或缩放从原始处理级306接收的图像数据。由重采样处理级308执行的操作可包括但不限于去马赛克操作、每像素颜色校正操作、γ映射操作、颜色空间转换和缩小或子带分割。去马赛克操作是指将颜色缺失样本从原始图像数据(例如,在bayer模式中)转换或内插成输出图像数据到全色域中。去马赛克操作可包括对内插样本进行的低通定向滤波以获得全色像素。每像素颜色校正操作是指使用关于每个颜色通道的相对噪声标准偏差的信息在每个像素的基础上执行颜色校正以校正颜色而不放大图像数据中的噪声的处理。γ映射是指将图像数据从输入图像数据值转换为输出数据值以执行特殊图像效果,包括黑白转换、棕褐色调转换、负转换或曝光转换。出于γ映射的目的,可使用针对每个像素的不同颜色分量或通道的查找表(或将像素值索引到另一值的其他结构)(例如,针对y,cb和cr颜色分量的单独查找表)。颜色空间转换是指将输入图像数据的颜色空间转换为不同的格式。在一个实施方案中,重采样处理级308将rbd格式转换为ycbcr格式以供进一步处理。

中央控制320可控制和协调isp206中的其他部件的整体操作。中央控制320执行包括但不限于以下项的各种操作:监视各种操作参数(例如,记录时钟循环、存储器等待时间、服务质量和状态信息)、更新或管理isp206的其他部件的控制参数以及与传感器接口302交接以控制isp206的其他部件的开始和停止。例如,在isp206中的其他部件处于空闲状态时,中央控制320可更新其他部件的可编程参数。在更新可编程参数之后,中央控制320可将isp206的这些部件置于运行状态以执行一个或多个操作或任务。中央控制320还可指示isp206的其他部件在重采样处理级308之前、期间或之后存储图像数据(例如,通过写入图2中的系统存储器230)。以这种方式,除了处理从重采样处理级308通过后端流水线级340输出的图像数据之外或代替处理从重采样处理级308通过后端流水线级340输出的图像数据,可存储原始或全色域格式的全分辨率图像数据。

图像统计模块304执行各种操作以收集与图像数据相关联的统计信息。收集统计信息的操作可包括但不限于传感器线性化、掩模图案缺陷像素、子样本原始图像数据、检测和替换非图案化缺陷像素、黑电平补偿、镜头阴影校正和反相黑电平补偿。在执行一个或多个此类操作之后,可收集或跟踪统计信息诸如3a统计(自动白平衡(awb)、自动曝光(ae)、自动聚焦(af))、直方图(例如,2d颜色或分量)和任何其他图像数据信息。在一些实施方案中,当先前的操作识别被剪辑的像素时,某些像素的值或像素值的区域可从某些统计数据的集合(例如,af统计)中排除。尽管图3中仅示出了单个统计模块304,多个图像统计模块可包括在isp206中。在此类实施方案中,每个统计模块可由中央控制320编程,以收集相同或不同图像数据的不同信息。

视觉模块322执行各种操作以促进cpu208处的计算机视觉操作,诸如图像数据中的人脸检测。视觉模块322可执行各种操作,包括预处理、全局色调映射和γ校正、视觉噪声滤波、尺寸调整、关键点检测,卷积以及取向梯度直方图(hog)的生成。如果输入图像数据不是ycrcb格式,则预处理可包括子采样或合并操作以及亮度计算。可对亮度图像上的预处理数据执行全局映射和γ校正。执行视觉噪声滤波以去除像素缺陷并减少图像数据中存在的噪声,从而改善后续计算机视觉算法的质量和性能。此类视觉噪声滤波可包括检测和固定点或缺陷像素,以及通过平均相似亮度的相邻像素来执行双边滤波以降低噪声。各种视觉算法使用不同尺寸和比例的图像。例如,通过合并或线性插值操作来执行图像的尺寸调整。关键点是图像内被非常适合于匹配同一场景或对象的其他图像的图像块包围的位置。此类关键点在图像对齐、计算相机姿势和对象跟踪方面很有用。关键点检测是指识别图像中的此类关键点的过程。卷积可用于图像/视频处理和机器视觉。例如,可以执行卷积以生成图像的边缘图或使图像平滑。hog提供图像分析和计算机视觉中用于任务的图像块的描述。例如,可通过(i)使用简单的差分滤波器计算水平梯度和垂直梯度,(ii)根据水平梯度和垂直梯度计算梯度方向和量值,以及(iii)对梯度方向进行合并来生成hog。

后端接口342从图像传感器202之外的其他图像源接收图像数据,并将其转发到isp206的其他部件以进行处理。例如,可通过网络连接接收图像数据并将其存储在系统存储器230中。后端接口342检索存储在系统存储器230中的图像数据,并将其提供给后端流水线级340以进行处理。由后端接口342执行的许多操作之一是将检索的图像数据转换为可由后端处理级340使用的格式。例如,后端接口342可将rgb、ycbcr4:2:0或ycbcr4:2:2格式化的图像数据转换为ycbcr4:4:4颜色格式。

后端流水线级340根据特定的全色格式(例如,ycbcr4:4:4或rgb)处理图像数据。在一些实施方案中,后端流水线级340的部件可在进一步处理之前将图像数据转换为特定的全色格式。后端流水线级340可包括噪声处理级310和颜色处理级312等其他级。后端流水线级340可包括图3中未示出的其他级。

噪声处理级310执行各种操作以减少图像数据中的噪声。由噪声处理级310执行的操作包括但不限于颜色空间转换、γ/去γ映射、时间滤波、噪声滤波、亮度锐化和色度噪声降低。颜色空间转换可将图像数据从一种颜色空间格式转换为另一种颜色空间格式(例如,转换为ycbcr格式的rgb格式)。γ/去γ操作将图像数据从输入图像数据值转换为输出数据值以执行特殊图像效果。时间滤波使用先前滤波的图像帧来滤除噪声以减少噪声。例如,先前图像帧的像素值与当前图像帧的像素值组合。噪声滤波可包括例如空间噪声滤波。亮度锐化可锐化像素数据的亮度值,而色度抑制可将色度衰减为灰色(即,没有颜色)。在一些实施方案中,亮度锐化和色度抑制可与空间噪声滤波同时进行。可针对图像的不同区域不同地确定噪声滤波的积极性。可包括空间噪声滤波作为实现时间滤波的时间循环的一部分。例如,先前的图像帧可以在被存储为用于待处理的下一个图像帧的参考帧之前由时间滤波器和空间噪声滤波器处理。在其他实施方案中,空间噪声滤波可不被包括作为用于时间滤波的时间循环的一部分(例如,空间噪声滤波器可以在图像帧被存储为参考图像帧(并且因此不是空间上滤波的参考帧)之后应用于图像帧)。

颜色处理级312可执行与调整图像数据中的颜色信息相关联的各种操作。在颜色处理级312中执行的操作包括但不限于局部色调映射、增益/偏移/剪辑、颜色校正、三维颜色查找、γ转换和颜色空间转换。局部色调映射指的是空间变化的局部色调曲线,以便在渲染图像时提供更多控制。例如,色调曲线的二维网格(其可以由中央控制320编程)可以是双线性内插的,由此使得在图像上产生平滑变化的色调曲线。在一些实施方案中,局部色调映射还可应用空间变化和强度变化的颜色校正矩阵,其可例如用于使天空更蓝,同时在图像中的阴影中调低蓝色。可为每个颜色通道或图像数据的分量提供数字增益/偏移/剪辑。颜色校正可将颜色校正变换矩阵应用于图像数据。3d颜色查找可利用颜色分量输出值的三维阵列(例如,r,g,b)来执行高级色调映射、颜色空间转换和其他颜色变换。例如,可通过将输入图像数据值映射到输出数据值来执行γ转换,以便执行γ校正、色调映射或直方图匹配。可以实现颜色空间转换以将图像数据从一个颜色空间转换为另一个颜色空间(例如,rgb到ycbcr)。其他处理技术也可以作为颜色处理级312的一部分来执行,以执行其他特殊图像效果,包括黑白转换、棕褐色调转换、负转换或曝光转换。

当isp206处理图像数据时,输出重缩放模块314可以即时重采样、变换和校正失真。输出重缩放模块314可以计算每个像素的分数输入坐标,并且使用该分数坐标来经由多相重采样滤波器内插输出像素。可以从输出坐标的多种可能的变换产生分数输入坐标,诸如对图像调整尺寸或裁剪(例如,经由简单的水平和垂直缩放变换)、旋转和剪切图像(例如,经由不可分离的矩阵变换)、透视翘曲(例如,经由附加的深度变换)以及以条纹状分段施加的每像素透视分割以说明图像数据捕获期间(例如,由于卷帘式快门所引起的)的图像传感器中的变化的原因,以及几何失真校正(例如,经由计算距光学中心的径向距离以便索引内插的径向增益表,并且将径向扰动施加于坐标以说明径向透镜失真的原因)。

当在输出重缩放模块314处处理图像数据时,输出重缩放模块314可将变换应用于图像数据。输出重缩放模块314可包括水平缩放部件和垂直缩放部件。该设计的垂直部分可实现一系列图像数据行缓冲器以保持该垂直滤波器所需的“支持”。由于isp206可以是流设备,因此可能只有行的有限长度滑动窗口中的图像数据行可供滤波器使用。一旦行被丢弃来为新进来的行腾出空间,则该行可能不可用。输出重缩放模块314可统计地监视先前行上的计算输入y坐标,并使用它来计算要保持在垂直支持窗中的一组最佳行。对于每个后续行,输出重缩放模块可自动生成关于垂直支持窗的中心的猜测。在一些实施方案中,输出重缩放模块314可实现被编码为数字差分分析器(dda)步进器的分段透视变换表,以在输入图像数据和输出图像数据之间执行每像素透视变换,以便校正在图像帧的捕获期间由传感器运动引起的伪像和运动。如上文关于图1和图2所讨论,输出重缩放可以经由输出接口314将图像数据提供到系统100的各种其他部件。

在各种实施方案中,部件302到342的功能可以与图3中所示的图像处理流水线中的这些功能单元的顺序所暗含的顺序不同的顺序执行或者可由与图3中所示的功能部件不同的功能部件来执行。此外,如图3中所描述的各种部件可以硬件、固件或软件的各种组合来体现。

示例性视觉模块

如上文参考图3所述,视觉模块322执行各种操作以促进cpu208处的计算机视觉操作。为此目的,除其他部件之外,如图4所示,视觉模块322可包括取向梯度(hog)直方图模块412、复用器420和卷积引擎414。视觉模块322可包括图4中未示出的其他部件,诸如缩放模块。

hog引擎400处理图像以生成每个图像的hog数据426。hog数据426的示例是基于图像内所识别的梯度取向为图像生成的取向梯度的直方图。hog数据426可用于各种计算机视觉应用,诸如图像分类、场景检测、面部表情检测、人员检测、对象检测、场景分类和文本分类。

复用器420从hog引擎412接收hog数据426并从除hog引擎412之外的图像处理器206的部件接收像素数据424(例如,dram存储器),并且根据各种操作模式选择hog数据426或像素数据424作为输入数据422以转发到卷积引擎414。在一种模式中,复用器420可将hog数据426作为输入数据422转发到卷积引擎414。在另一种模式中,复用器420可将像素数据424作为输入数据422转发到卷积引擎414,以用于执行诸如锐化、模糊和边缘检测之类的操作。用于控制复用器420的配置信号可从中央控制320接收。像素数据422是多个通道的交错像素值流。

卷积引擎414是对输入数据422执行卷积操作的可配置电路。为此目的,如下文结合图5详细描述,卷积引擎414包括用于存储卷积内核信息、用于执行计算和用于累加相乘值以生成输出428的部件。

如图4所示的视觉模块322的结构仅为例示性的,并且可对图4的结构进行各种改变。例如,可省略诸如hog引擎412和复用器420的部件。或者,复用器420可接收来自两个以上来源的像素数据并选择一个源以作为流输入数据422输入到卷积引擎414。

在以下描述中,为了说明起见,假定输入数据422是像素值。但需注意,输入数据422可以是适用于卷积操作的其他类型的数据(例如,hog数据)。

示例性卷积引擎架构

图5是根据一个实施方案示出了卷积引擎414的框图。卷积引擎414是对交错的多通道图像数据执行操作以促进图像/视频处理和计算机视觉的电路。卷积引擎414可对多通道图像数据执行各种类型的操作,诸如卷积操作,通道间处理操作和每通道处理操作。示例卷积操作可包括生成边缘映射或使图像平滑。例如,以高斯内核卷积的图像可产生具有减小的噪声和混叠的平滑图像。在另一示例中,当图像以一组多方向卷积内核卷积时,卷积引擎414生成用于分类的图像特征,诸如gabor特征。另外,在一些实施方案中,卷积引擎414促进用于深度机器学习分类任务(诸如人员或对象检测)的模板匹配。

卷积引擎414执行各种操作以促进卷积神经网络(cnn)任务,诸如空间池化和局部响应归一化。cnn是一种深度学习架构,该架构可以执行图像分类、对象检测和其他计算机视觉任务。

卷积引擎414诸如从总线232接收输入数据422,并且基于所存储的卷积内核信息对输入数据422执行卷积操作,对卷积操作的结果执行通道间和每通道处理,并且生成输出数据428。

除了其他部件之外,卷积引擎414可包括第一卷积电路502、解复用器电路503、第二卷积电路504和通道合并电路506。尽管卷积引擎414被示出为包括第一卷积电路502和第二卷积电路504,但在一些实施方案中,卷积引擎414可包括n卷积电路。第一卷积电路502接收输入数据流422,并且对输入数据422施加一个或多个卷积内核以生成值流530。第二卷积电路504还接收输入数据流422(或是或者,从第一卷积电路502输出的值流530),并且将一个或多个卷积内核施加于输入数据422以生成值流532。由卷积电路502或504接收和处理的输入数据流各自以交错方式限定输入数据的一个或多个通道。

第一卷积电路502包括复用器508、预处理电路510、卷积核心电路512和空间池化电路514。复用器508耦合到预处理电路510,预处理电路510耦合到卷积核心电路512,并且卷积核心电路512耦合到空间池化电路514。

复用器508从总线232接收输入数据422并且向预处理电路510提供输入数据422。在一些实施方案中,复用器508在来自总线232的输入数据424和一个或多个其他数据源(例如,hog数据426)之间选择,并且向预处理电路510提供所选择的数据。在其他实施方案中,从第一卷积电路502省略复用器508,并且预处理电路510从总线232接收输入数据424。

预处理电路510对交错输入数据422执行预处理操作,诸如通过对输入数据422施加增益、偏移和剪辑操作。这些操作可用于在卷积之前施加各种类型的处理,诸如平均减算或对比度拉伸。在一些实施方案中,预处理电路510识别来自输入数据流422的每个通道的值,并且独立地处理每个通道以将不同的增益、偏移或剪辑操作施加到不同通道的输入值。例如,输入数据422可以是bayer原始格式,包括交错的gr、r、b和gb通道。预处理电路510可对不同通道的像素数据施加不同的增益、偏移或剪辑操作。在一些实施方案中,预处理电路510以旁路模式工作,该旁路模式将输入传递到卷积核心电路512而不施加预处理操作。

卷积核心电路512从预处理电路510接收经预处理的输入数据,并且对输入数据施加一个或多个卷积内核。卷积核心电路512还可对卷积结果执行后处理。后处理可包括产生导出用于深度机器学习的值的操作,诸如多通道归一化互相关(ncc)或通道间局部响应归一化(lrn)。多通道或通道间操作将来自两个或更多个通道的值组合为卷积结果。由卷积核心电路512生成的流中的值序列以交错方式限定多个数据通道。卷积核心电路512的结果被提供给空间池化电路514。在一些实施方案中,如由值流436所示,卷积核心电路512的结果由卷积引擎414输出。

空间池化电路514对卷积核心电路512的输出执行每通道操作,诸如每通道空间池和每通道局部响应归一化(lrn),并且输出值流530。每通道操作分别处理与每个通道相关联的值。每通道lrn在响应映射中归一化局部对比度。每通道操作可在卷积层之后施加以促进深度机器学习。与卷积层相比,空间池化电路514的每通道操作具有较低的计算成本,因为它们通常被施加在较小的局部窗中并且不使用卷积内核系数。

第二卷积电路504包括复用器518、预处理电路520、卷积核心电路522和空间池化电路525。以上关于第一卷积电路502的讨论可适用于第二卷积电路504以及卷积引擎414中可包括的任何其他卷积电路。复用器518在从第一卷积核心电路502输出的值流530与来自总线232的输入值422之间选择,并且将所选择的输入发送至预处理电路520。第二卷积电路504可对值流530或输入值流424施加类似的操作,因为两个流包括交错方式的数据通道。预处理电路520、卷积核心电路522和空间池化电路524的操作和功能与预处理电路510、卷积核心电路512和空间池化电路514基本上相同,并且因此为了简洁起见,本文省略了对这些电路的详细描述。

解复用器电路503是接收值流530并将输出路由到通道合并电路506或第二卷积电路504的电路。解复用器503可基于来自中央控制320的指令来选择路由。中央控制320基于其中卷积电路502和504串行操作的级联模式与卷积电路502和504并行操作的其他模式之间的操作模式来设置解复用器503的选择。在一些实施方案中,卷积引擎414中省略了解复用器电路503。

通道合并电路506具有耦合到第一卷积电路502的输出的输入和耦合到第二卷积电路504的输出的另一输入。通道合并电路506分别从卷积电路502和504接收值流530和值流532,并且将值组合成输出值428的一个或多个输出流,诸如值流428a和值流428b。如下文结合图6a至图6c更详细讨论,可取决于针对卷积引擎414选择的操作模式以各种方式处理从卷积电路502和504接收的值流。

通道合并电路506包括通道合并器526和复用器528。通道合并器526接收来自第一卷积核心电路502的值流530和来自第二卷积核心电路504的值流532,并且使值530和值532交错以生成值流534。值流534包括由通道合并器526以交错方式组合的来自值流530的通道和来自值流532的通道。

复用器528具有耦合到来自通道合并器526的值流534的输入,以及耦合到来自第二卷积核心电路504的值流532的输入。复用器528在值流534和值流532之间进行选择,以作为值流428b的输出。通道合并电路506还可将来自第一卷积电路502的值流530输出为值流428a。

卷积引擎处理模式

卷积引擎414以多种模式操作,包括双卷积模式、级联模式和并行模式。中央控制320将配置信息发送到卷积引擎414,将卷积引擎414配置为以指定模式操作。该配置信息包括对卷积引擎414的部件的指令。该配置信息还可以指定部件的输入和功能,诸如每个卷积电路502和504所使用的卷积内核。

图6a是根据一个实施方案示出了卷积引擎414的双卷积模式的框图。在双卷积模式中,卷积电路502和504通过将不同卷积内核施加到相同输入数据424而并行操作,并且通道合并电路506组合来自卷积电路502和504的结果以生成输出值428b的输出流。与每个卷积内核相关联的属性可包括卷积内核的滤波器元件值、内核尺寸(例如,由内核限定的窗的像素的高度和宽度)、卷积内核的稀疏度值,以及卷积之间的跨度值。从第一卷积电路502输出的值流530和从第二卷积电路504输出的值流532被输入到通道合并电路506。通道合并电路506通过使输出值530和532交错来生成输出值的输出流428b。值的输出流428b以双卷积模式从卷积引擎414输出。

在一些实施方案中,中央控制320通过控制复用器508、518、528和解复用器503对路由数据流的选择来将卷积引擎414设置为双卷积模式。解复用器503(如果使用的话)将值流530路由到通道合并电路506,该值流被输出为输出值的输出流428a。复用器518选择从第一卷积电路502输出的值流530作为第二卷积电路504的输入。复用器528选择从通道合并器526输出的值流534用于输出值的输出流428b。复用器508(如果使用的话)选择来自总线232的输入数据424作为第一卷积电路502的输入。

双卷积模式是卷积引擎414的一种配置,其在两个卷积核心电路502和504上并行地处理相同输入流。卷积电路502和504可将不同的卷积内核施加于输入数据。为了促进许多输出通道的计算,卷积引擎414在卷积电路502和504之间分配处理任务。例如,第一卷积电路502可处理输出通道的前半部分,而第二卷积电路504可处理输出通道的后半部分。通道合并电路506将来自卷积电路502和504的多个通道的流组合成单个流,该流具有来自两个彼此交错的流的通道。

在一些实施方案中,每个卷积电路502和504具有两个执行集群,每个执行集群每时钟生成一个像素值(ppc)。因此,每个卷积电路502和504生成两个ppc。通道合并电路506组合卷积电路502和504的结果,以在双卷积模式下在通道合并之后生成四个ppc输出。

图6b是根据一个实施方案示出了卷积引擎414的级联模式的框图。在级联模式中,卷积电路502和504串行操作。第一卷积电路502对来自总线232的输入数据422施加一个或多个卷积内核以生成值流530。第二卷积电路504接收值流530,并且对值530施加一个或多个第二卷积内核以生成值流532。卷积电路502和504可使用不同的卷积内核。通道合并电路506通过从卷积电路504穿过值流532来生成输出值的输出流428b。

中央控制320通过控制复用器508、518、528和解复用器503的选择来将卷积引擎414设置为级联模式。复用器508(如果使用的话)选择来自总线232的输入数据424作为第一卷积电路502的输入。解复用器503(如果使用的话)将值流530路由到复用器518。复用器518选择从卷积引擎414输出的值流530作为第二卷积电路504的输入。复用器528选择从第二卷积电路504输出的值流532用于输出值的输出流428b。

在级联模式中,卷积电路502和504串行执行两个卷积操作而不在操作之间进行存储器传送。级联中的第一卷积电路502诸如通过仅使用两个执行集群中的一个来生成一个ppc。如果第一卷积电路502生成两个ppc输出流,则后续第二卷积电路504将需要两个过程四个ppc。因此,在第一卷积电路502中使用单个执行集群以生成输入到第二卷积电路504的一个ppc流。第二卷积电路504从第一卷积电路502的一个ppc流中生成两个ppc输出流。

图6c是根据一个实施方案示出了卷积引擎414的并行模式的框图。在并行模式中,卷积电路502和504作为两个单独单元并行操作,以生成两个独立的交错输出流。例如,可将图像分割成两个垂直条,并且每个卷积电路502和504处理一个条。卷积电路502和504可处理相同的输入数据或不同的输入数据。当输入数据相同时,卷积电路502和504可对输入数据施加不同的卷积内核。在另一示例中,卷积电路502和504对不同的输入数据施加不同的内核。

第一卷积电路502对来自总线232的输入数据422施加一个或多个卷积内核以生成值流530。第二卷积电路504对来自总线232的输入数据422施加一个或多个第二卷积内核以生成值流532。通道合并电路506通过穿过值流530来生成输出值的输出流428a,并且通过穿过值流532来生成输出值的输出流428b。单独的输出流428a和428b可各自以交错方式限定多个数据通道。在并行模式中,来自卷积电路502和504的输出被保持在交错通道的单独流中,而不是被组合成交错通道的单个流。

中央控制320通过控制复用器508、518、528和解复用器503处的选择来将卷积引擎414设置为并行模式。复用器508(如果使用的话)选择来自总线232的输入数据422作为第一卷积电路502的输入。解复用器503(如果使用的话)将来自第一卷积电路502的输出的值流530路由到通道合并电路506,以输出为输出值的输出流428a。复用器518选择来自总线232的输入数据422作为第二卷积电路504的输入。复用器528选择从第二卷积电路504输出的值流532用于通道合并电路506的输出值的输出流428b。通道合并电路506还将值流530传送到输出值的输出流428a。

在并行模式中,每个卷积电路502和504可使用两个执行集群来生成两个ppc。通道合并电路506以两个ppc输出来自第一卷积电路502的第一流,并且以两个ppc输出来自第二卷积电路504的第二流。

图7是根据一个实施方案示出了以多种模式操作卷积引擎414的方法的流程图。中央控制320将配置信息发送702到卷积引擎414。配置信息可包括用于将卷积引擎置于特定操作模式(诸如双卷积模式、级联模式或串行模式)的卷积引擎的部件的参数。

配置信息还可以包括限定输入到每个卷积核心电路502和504的值流的信息。例如,配置信息可限定图像尺寸和/或通道计数,使得卷积引擎414的部件可识别来自串流的每个通道的像素。

配置信息还可包括限定由每个卷积核心电路502和504使用的一个或多个卷积内核的信息,诸如滤波器元件值、内核尺寸、稀疏度值和步长值。限定卷积内核的配置信息指定由每个卷积核心电路502和504执行的卷积操作。

在接收到配置信息之后,根据配置信息更新704卷积引擎414的配置以执行如配置信息中所述的操作。更新配置可包括根据所选择的操作模式在卷积引擎内路由流。如上文结合图6a至图6c所讨论,可使用卷积引擎414的复用器508、518和528来设置路由控制。更新配置可包括将卷积内核提供到卷积电路502和504。根据如上文所讨论的操作模式,卷积电路502和504还可被配置为使用一个或两个执行集群。

在一些实施方案中,配置指令还可在通道合并之前限定对每个卷积电路502和504处的卷积结果执行的一个或多个深度学习操作。示例性操作可包括归一化互相关计算、响应整流、空间池化和局部响应归一化。在一些实施方案中,通道间操作可由卷积核心电路502和504的后处理电路704执行,而每通道操作由空间池化电路514和524执行。

卷积引擎414的第一卷积电路502通过对第一输入数据施加一个或多个第一卷积内核来生成706第一值流。卷积引擎414的第二卷积电路504通过对第二输入数据施加一个或多个第二卷积内核来生成708第二值流。生成第一输入数据和第二输入数据可包括执行卷积,并且还可包括以卷积核心电路512/522的后处理电路或空间池化电路514/524施加一个或多个深度学习操作。

在双卷积模式中,由卷积电路502和504所使用的第一输入数据和第二输入数据可以是相同的,并且第一卷积内核和第二卷积内核可以是不同的。在级联模式中,由第二卷积电路504所使用的第二输入数据是第一卷积电路502的输出,并且第一卷积内核和第二卷积内核可以是不同的。在并行模式中,第一输入数据和第二输入数据可以是相同的,并且第一卷积内核和第二卷积内核可以是不同的。

通道合并电路基于来自第一卷积电路502的第一值流和来自第二卷积电路504的第二值流来生成710一个或多个输出流。在双卷积模式中,通道合并电路710通过将来自第一卷积电路502的交错通道值的交错第一流与来自第二卷积电路504的交错通道值的第二流以交错方式组合来生成输出流。在级联模式中,通道合并电路710生成包括来自第二卷积电路504的交错通道值的第二流的输出流,其中通过将一个或多个第二卷积内核施加到第二卷积电路504处的交错通道值的第一流来导出交错通道值的第二流。在串行模式中,通道合并电路710生成包括来自第一卷积电路502的交错通道值的第一流的第一输出流,以及包括来自第二卷积电路504的交错通道值的第二流的独立第二输出流。

如图7所示的过程仅是例示性的,并且可对该过程作出各种改变。例如,如由卷积引擎414的配置信息和操作模式所指定,可并行或串行地生成706第一值流并且并行或串行地生成708第二值流。

卷积核心电路

图8是根据一个实施方案示出卷积核心电路800的框图。如图5所示,卷积核心电路800是第一卷积电路502的卷积核心电路512或第二卷积电路504的卷积电路522的示例。卷积核心电路800包括卷积核心802和后处理电路804。卷积核心802接收输入数据836,并且通过对输入数据836施加一个或多个卷积内核h来执行卷积操作。输入数据836可以是来自总线323的输入数据422、另一个卷积电路的输出、或来自一些其他源的输入数据,并且可如上文所讨论由预处理电路510进行预处理。后处理电路804对卷积核心802的输出执行后处理。

卷积核心电路802包括卷积前端806、内核存储器808、执行集群810、执行集群812和卷积后端814。卷积前端806耦合到执行集群810和812。卷积前端806接收输入数据836并准备输入数据836以供执行集群810和812处理。卷积前端806在执行集群810和812之间分配涉及输入数据和卷积内核的处理任务。

每个执行集群810和812耦合到卷积前端和内核存储器808。每个执行集群810和812可包括多个乘法和累加(mac)单元。当使用多个输出通道时,具有偶数索引的输出通道可由一个执行集群处理,而具有偶数索引的输出通道可由另一执行集群处理。每个执行集群810和812可生成一个ppc,且因此卷积核心802整体可生成两个ppc。执行集群810生成包括偶数索引输出通道的偶数数据值842的流和包括奇数索引输出通道的奇数数据值844的流。

内核存储器808存储被提供给执行集群810和812的一个或多个卷积内核h。在一些实施方案中,中央控制320向内核存储器808提供一个或多个卷积内核h以控制卷积操作。每个执行集群810和812将卷积内核从内核存储器808施加到如由卷积前端806所准备的输入数据836。执行集群810和812可并行地执行以例如以两个ppc生成输出值。在一些实施方案中,仅支持单个执行集群810或812例如以一个ppc生成输出值。

在一个示例中,执行集群810和812将一系列卷积内核施加到输入数据的不同部分,以生成包括偶数索引输出通道的偶数数据值流842和包括奇数索引输出通道的奇数数据值流844。偶数数据值842和奇数数据值844表示多通道数据,它们在后处理管道中以通道间操作予以独立地处理,诸如局部响应归一化和归一化互相关。

在一些实施方案中,卷积前端806生成用于卷积内核的内核统计840,该内核统计被存储到内核存储器808中并由执行集群810和812处理。内核统计可从卷积内核的属性中导出。内核统计840可包括∑h和∑h2,其中h为卷积内核的内核数据。卷积核心802将内核统计840发送至后处理电路804。

卷积后端814耦合到执行集群810和812的输出。卷积后端814对来自每个执行集群的输出值执行进一步处理。此类操作可包括但不限于用于大型位尺寸数据的多循环累加。

在一些实施方案中,卷积后端814或卷积核心802的一些其他部件基于输入数据836生成局部统计。局部统计可包括∑i、∑i2和∑i*h,其中i是输入数据836并且h是施加到输入数据836的卷积内核。在一些实施方案中,局部统计经由偶数数据值流842和奇数数据值流844传输到后处理电路804。例如,局部统计可以是流842和844的辅助通道,诸如多通道流的最后有效通道。在其他实施方案中,局部统计可以与内核统计840一起在流中传输,或者在单独的流中传输。

因此,卷积核心802生成偶数数据值流842、奇数数据值流844、内核统计840和局部统计。这些值被提供给后处理电路804供额外处理。下文结合图10更详细地讨论卷积核心802的示例电路。

后处理电路804包括用于每个执行集群810和812的处理管道以处理相应输出流842和844。为了处理来自执行集群810的流842,后处理电路804包括多通道归一化互相关(ncc)单元816、响应整流器单元818、通道间局部响应归一化(lrn)单元820和输出生成单元822。为了处理来自执行集群812的流844,后处理电路804包括多通道ncc单元824、响应整流器单元826、通道间lrn单元828和输出生成单元830。后处理电路804还可包括峰值查找器843、解复用器832和核心合并器846。

多通道ncc单元816计算偶数数据值流842的ncc得分和归一化内核统计。多通道ncc单元816耦合到卷积核心802以接收偶数数据值流842、局部统计和内核统计840。多通道ncc单元816基于偶数数据值842、局部统计和内核统计840来确定每个卷积内核的ncc得分。

多通道ncc单元816可计算每个卷积内核的ncc得分。ncc得分通过由局部统计限定的输入方差和由内核统计限定的内核的方差进行归一化。ncc得分可用于查找两个帧之间的最佳对应。

对于每个卷积内核,ncc得分可由公式1限定:

其中i是输入数据,h是内核数据,mi和mh是i和h的均值,σi和σh是i和h的标准方差,并且n是卷积内核的尺寸。可施加额外的缩放和偏移因子以避免除以零并减少量化误差。

多通道ncc单元816还可计算归一化内核统计。例如,多通道ncc单元816计算由公式2限定的内核统计:

(n∑h2-(∑h)2)(2)

其中n是卷积内核的尺寸,并且h是内核数据。公式2构成公式1的分母的一部分,且因此可在计算ncc得分的过程中计算内核统计。

归一化内核统计是使用缩放因子处理的内核统计的缩放版本。缩放因子可由公式3限定:

其中n为卷积内核的尺寸。缩放因子使内核统计归一化,使其与内核尺寸无关。多通道ncc单元816将归一化的内核统计852和/或ncc得分发送到峰值查找器834。

响应整流器单元818耦合到多通道ncc单元816。响应整流器单元818接收数据值842的流并对数据值842执行非线性变换。非线性变换促进描述高阶特征的深度机器学习。输入至响应整流器单元的数据值842的流可从多通道ncc单元816传输。在一些实施方案中,从后处理电路804中省略多通道ncc单元816,并且响应整流器单元818从执行集群接收数据值842的流。

图9是根据一个实施方案的由响应整流器单元818施加的非线性变换的曲线图。响应整流器单元818接收值842的流作为输入,并且将偏移参数912施加到值842。可选择偏移参数912以对深度学习架构中的卷积层之后施加的偏差进行建模。在施加偏移之后,响应整流器单元818基于可配置缩放因子904对负输入值施加缩放。响应整流器单元818输出整流数据值流。在一些实施方案中,响应整流器单元818将负值剪辑为0。在其他实施方案中,响应整流器单元818将负值转换为正值。

重新参考图8,响应整流器单元818可针对不同通道施加不同的偏移和缩放参数。响应整流器单元818的参数可由中央控制320指定。在一些实施方案中,中央控制320可去激活响应整流器单元818。此处,响应整流器单元818可操作为后处理管道中的值流的旁路。在一些实施方案中,从后处理电路804中省略响应整流器单元818。

通道间lrn单元820耦合到响应整流器单元818并且对响应整流器单元818的输出执行通道间lrn。特定而言,通道间lrn单元820接收数据值流842和局部统计,并且执行局部响应归一化以生成数据值的归一化卷积输出流。通道间lrn单元820促进用于深度学习架构的处理。通道间lrn单元1200可执行由公式4限定的操作的定点逼近:

其中xi是像素索引值,α是归一化强度,i’是xi周围的局部窗内部的像素索引,并且n为窗中的像素的数量。对局部窗的支持是通道间的,且因此表示为平面化格式的矩形区域。通道间lrn单元820在后处理阶段中执行通道间lrn以利用交错通道的串流,而每通道归一化单独地诸如通过空间池化电路514来处理。

输出生成单元822耦合到通道间lrn单元820。输出生成单元822对通道间lrn单元820的输出施加缩放、偏移和移位。

奇数值844的流的后处理管道可基本上与用于偶数值842的流的处理管道操作相同,因此为了简洁起见,本文省略了对这些电路的详细描述。

核心合并器846将具有偶数通道和奇数通道的偶数流842和奇数流844(例如,在后处理之后)合并成数据值流848,该数据值流848包括交错方式的偶数通道和奇数通道。核心合并器847耦合到输出生成单元822和输出生成单元830。

后处理电路804还可包括解复用器832。解复用器832耦合到输出生成单元830并且选择性地将来自输出生成单元830的值流提供至核心合并器846(用于组合成输出流848)或作为输出流850。值流848组合来自执行集群810和812两者的像素值,并且因此,核心合并器846例如以两个ppc生成输出。值流850仅使用来自执行集群812的值来生成,并且因此可例如以一个ppc生成。如上文结合图6a至图6c所讨论,卷积核心电路800可被设置成在卷积引擎414的不同操作模式下生成一个ppc或两个ppc。

峰值查找器834耦合到第一后处理管道的多通道ncc单元816和输出生成单元822,并且耦合到第二后处理管道的多通道ncc单元824和输出生成单元830。在一些实施方案中,归一化内核统计可用作模板匹配结果的可靠性的置信度测量。峰值查找器834接收归一化内核统计852和卷积结果,并且基于ncc得分来确定为模板提供最佳匹配最佳匹配位置的位置。峰值查找器843基于预定标准来确定位置。例如,峰值查找器843可查找所选择的通道的最小或最大像素位置。当将高维特征向量的列表作为输入数据提供时,峰值查找器可基于由卷积核心所评估的距离度量来查找最靠近原点的向量。

在一些实施方案中,峰值查找器834监视来自输出生成单元822和830的数据流。对于所选择的通道,峰值查找器834存取流中的通道的每个值以跟踪具有最小或最大值的位置。所选择的输出通道可包含ncc得分或任何其他卷积结果。如果通道包含ncc得分(例如,所选择的通道支持多通道ncc单元816),则峰值查找器834输出具有峰值位置和峰值ncc得分的归一化内核统计。如果ncc不支持,则峰值查找器834输出峰值位置和峰值。

在一些实施方案中,中央控制320将配置信息发送到卷积核心电路800的卷积核心802和后处理电路804。配置指令可包括每个后处理电路804的每个管道的后处理指令,并且限定要施加到来自卷积核心802的卷积结果的后处理。

后处理指令限定是否支持或不支持多通道ncc单元、响应整流器单元、通道间lrn单元或峰值查找器。在一些实施方案中,后处理电路804以如由后处理指令所指定的多个模式操作。在ncc模式下,支持多通道ncc单元并且不支持通道间lrn单元。在lrn方式下,不支持多通道ncc单元并且支持通道间lrn单元。在混合lrn/ncc模式下,支持多通道ncc单元和通道间lrn单元。在直通模式下,不支持多通道ncc单元和通道间lrn单元。后处理管道中的不支持部件可将其输入数据流传递至后处理管道中的下一个部件而不处理该流。

图10是根据一个实施方案示出了卷积核心802的框图。如上所讨论,卷积核心802包括诸如卷积前端806、执行集群810和812以及卷积后端814的电路。

卷积前端806可包括输入缓冲器1002、数据路径路由器1006、定序器1018和内核统计单元1024。输入缓冲器1002在输入数据836被流到卷积前端806中时存储该输入数据836。输入数据836可以是具有交错方式的多个输入通道的数据的流值。输入数据836可以是像素数据、hog数据、卷积电路800的先前循环的输出、另一个卷积电路800的输出,或从设备100的其他部件接收的其他数据。

数据路径路由器1006是在扫描序列中读取输入缓冲器1002的预定位置中的一组数据1004并且将读取数据1008发送到执行集群810或812以计算卷积值的电路。数据路径路由器1006可将输入数据836的不同部分发送到执行集群810和812,以便用卷积内核进行并行处理。本文所述的扫描序列是指处理输入数据的子集的操作。数据路径路由器1006可对卷积引擎414的处理循环内的多个扫描序列执行读取和发送数据,以用像素值填充执行集群810和812。在一个实施方案中,数据路径路由器1006选择性地读取中心像素的像素值和邻近中心像素的像素子集的像素值,同时根据稀疏度值跳过其他相邻像素。此外,要在扫描序列内处理的中心像素可由步长值限定的多个像素隔开。在后续扫描中,可处理由相同或不同数量的像素隔开的一组新中心像素。

内核存储器808是存储内核信息的电路。内核信息包括卷积内核中的滤波器元件的值、稀疏度值、步长值、内核尺寸等。内核信息1022被发送到执行集群810以在执行集群810的乘法器电路fe0到fen中填充寄存器。内核信息1022还被发送到执行集群812以在执行集群812的乘法器电路fe0至fen填充寄存器。内核存储器808可存储多个卷积内核,以与像素数据的不同通道执行卷积和/或与像素数据的相同通道执行卷积。

执行集群810和812是执行计算操作的可编程电路。为此目的,执行集群810和812可包括乘法器电路fe0至fen、压缩器1010和多循环累加器1014。乘法器电路fe0至fen中的每一个可将像素值存储在读取数据1008中,并且将对应的滤波器元件值存储在内核存储器808中。在乘法器电路中将像素值和对应的滤波器元件值相乘以生成相乘值1009。在一些实施方案中,压缩器1010接收相乘值1009并累加相乘值1009的子集以生成压缩值1012。在其他实施方案中,除了累加相乘值1009的子集之外,压缩器1010可选择来自相乘值1009的每个子集的(i)最小值;(ii)最大值,或(iii)中值。多循环累加器1014接收压缩值1012并且对在卷积核心802的多个处理循环中生成的压缩值1012执行累加(或选择最小值、最大值或中值)。

返回到卷积前端806,定序器1018控制卷积核心802的其他部件的操作以执行多个循环的操作。定序器1018可有效地在执行集群810和812之间分配处理任务。如上文所讨论,执行集群810和812可将一系列卷积内核施加到输入数据的不同部分,以生成包括偶数索引输出通道的偶数数据值流842和包括奇数索引输出通道的奇数数据值流844。例如,内核存储器808为存储在乘法器电路fe0到fen中的每组像素数据提供卷积内核序列的滤波器元件。每个卷积内核生成偶数数据值842和奇数数据据值844的不同输出通道。

在定序器1018的另一个示例操作中,输入数据的尺寸和/或卷积内核的数量或尺寸可能过大,以致无法在执行集群的单个处理循环中执行所有计算。定序器1018划分偶数输出通道和奇数输出通道之间的计算操作,将用于偶数通道的处理任务分配给执行集群810并且将奇数通道的任务分配给执行集群812。

在一些实施方案中,输入数据的尺寸和/或卷积内核的数量或尺寸可能过大,以致无法使用这两个执行核心在卷积核心802的单个处理循环中执行所有计算。在这种情况下,定序器1018将计算操作分成多个批次,并且在单个循环中基于输入数据的子集或卷积内核的子集来执行计算。每个循环中的计算结果由多循环累加器1014处理以生成跨多个循环的输出值1013。为了将其他部件配置为执行多循环操作,定序器1018将多循环控制信号1019发送至其他部件。

卷积后端814包括输出缓冲器1024、大数据处理程序1028和输出缓冲器1030,以及大数据处理程序1032。输出缓冲器1024是在其指定位置存储输出值1013的电路。在一个实施方案中,多个输出通道的一系列输出值在输出缓冲器1024中交错。在其中执行集群810的输出值1015被再次反馈为卷积前端806处的输入数据836的操作中,输出缓冲器1024中的数据可被复制到输入缓冲器1002以用于下一个卷积操作循环。输出缓冲器1024处理执行集群810的输出值1013,并且输出缓冲器1030处理执行集群812的输出值1013。

大数据处理程序1032是对存储在输出缓冲器1024中的输出值执行进一步处理的电路。例如,卷积核心802可处理具有不同的位尺寸(诸如8位或16位精度)的输入数据和卷积内核。当输入数据或卷积内核具有16位精度时,每个输出像素使用两倍的时钟循环。当输入数据和卷积内核都具有16位精度时,使用四倍以上的时钟循环。卷积后端814可将来自多个时钟循环的8位像素数据卷积的结果合并成具有16位精度的数据。大数据处理程序1032可对存储在输出缓冲器1024且来自执行集群812的输出值执行类似处理。偶数数据值842的流从大数据处理程序1028输出,并且奇数数据值844的流从大数据处理程序1032输出。在一些实施方案中,从卷积后端814中省略大数据处理程序1028和1032。偶数数据值流842和奇数数据值流844分别从输出缓冲器1024和1030输出。较小的数据尺寸可能支持对机器推导任务或可以使用较低精度数据的其他任务进行更快的处理。相比之下,较大的数据尺寸可用于机器训练或更高精度的任务。

卷积核心802中的部件(以及卷积引擎414的其他部件)可在配置时段期间通过从中央控制320接收配置信息来配置。如配置信息中指示的可配置参数和模式可包括但不限于稀疏度值、步长值、像素数据值和滤波器元件之间的映射、要在压缩器1010处执行的操作的类型(例如,累加、最小、最大或中值)、输入数据或输出值的通道的数量,以及要在后处理电路804处执行的后处理操作的选择。

图10中的卷积核心802的结构仅为例示性的。例如,可省略多循环累加器1014,使得在卷积引擎处仅执行单个循环操作。

图11a是根据一个实施方案示出了多平面格式的卷积核心电路800的输入和输出的概念图。卷积核心电路800对多通道输入数据1102执行卷积并生成多通道输出数据1110。输入通道和输出通道的数量可以是不同的。图11a中所示的多平面格式将每个输入和输出通道表示作为单独的图像平面。多通道输入数据1102具有用于三个输入通道1104、1106和1108的像素值。每个输入通道1104、1106和1108可使用一个或多个内核来处理。例如,将如图11a所示的内核0至卷积内核3的四个卷积内核施加到通道1106,产生包括四个输出通道1112、1114、1116和1118的多通道输出数据1110。如果以每通道为基础(例如,使用稀疏内核)将相同的四个卷积内核0至3施加到输入通道1104、1106和1108中的每一个,则多通道输出将包括用于十二个总输出通道的每个经处理的输入通道的四个通道。可使用不同的卷积内核来生成每个不同的输出通道。卷积内核的尺寸、稀疏度值和步长值可以是灵活的,以允许有用于不同应用的不同类型的卷积。

图11b是根据一个实施方案示出了平面化格式的卷积核心电路800的输入和输出的概念图。多通道输入数据1102和多通道输出数据1110各自以交错方式由多个通道的流限定,其中每个通道的对应像素值(由图11b中具有不同影线图案的框识别)邻近流中的每一个,之后跟着以如由平面化格式所示的光栅样式来限定的下一个像素的每个通道的对应像素值,以此类推。平面化格式包括来自被表示为交错通道的单个图像平面的多个交错通道的图像。

多通道输入数据1102由流限定,其中来自不同通道的相关像素值以平面化格式彼此相邻。例如,第一通道像素1124、第二通道像素1126和第三通道像素1128表示由多通道输入数据1102限定的输入图像的第一(0,0)像素。多通道输入数据1102的下一个像素(0,1)的像素值跟随像素1124、1126和1128。下一像素(0,1)包括第一通道像素1130、第二通道像素132和第三通道像素1134。第一行(0)中的后续像素可相应地跟随(0,1)像素。后续行(1)的像素值可跟随第一行的像素值。例如,第二行(1,0)中的第一像素包括第一通道像素1136,之后是第二通道像素1138、然后是第三通道像素1140。

在一个示例中,多通道输入数据1102的输入通道包括rgb颜色通道。在另一示例中,多通道输入数据1102可包括ycbcr颜色通道。在另一示例中,多通道输入数据1102可包括由卷积内核导出的卷积结果的输出通道。

通过施加卷积内核(诸如卷积内核1150)而从多通道输入数据1102导出多通道输出数据1110。如由平面化格式所示,多通道输出数据1100包括来自在流中彼此相邻的不同输出通道的相关像素值流。例如,输出通道像素1142、1144、1146和1148与输出数据1110的(0,0)像素对应。输出通道像素1142、1144、1146和1148分别属于如图11a所示的输出通道1112、1114、1116和1118。因此,串流可以光栅样式限定输出数据1110的交错通道。

如上文参考图6b所讨论,当卷积引擎414以级联模式操作时,卷积核心电路800使用另一个卷积核心电路800的输出作为输入。卷积核心电路800的多通道输入数据1102和多通道输出数据1110具有共同交错的格式以促进多个操作模式,包括使用卷积核心电路800的输出数据作为另一个卷积核心电路800的输入数据的模式。

每通道空间池化和归一化

图12是根据一个实施方案示出了空间池化电路1200的框图。空间池化电路1200对具有多个交错通道的流执行每通道空间池化或归一化操作,并且还生成多个交错通道的输出流。如上文结合图5所讨论,卷积电路502和504分别包括空间池化电路514和空间池化电路524,以处理相应卷积核心电路512和522的输出流。空间池化电路1200是第一卷积电路502的空间池化电路512或第二卷积电路504的空间池化电路524的实施方案。根据来自中央控制320的指令,空间池化电路1200对输入交错通道中的一些或全部执行每通道空间池化和/或每通道局部响应归一化。

空间池化电路1200包括输入缓冲器1202、每像素计算块1204、列压缩器1206、列累加缓冲器1208、行压缩器1210、延迟器1222,以及空间池化和归一化(spn)处理器1212。spn处理器1212包括平方根单元1214、局部响应归一化单元(lrn)1216、复用器1218和spn后处理器1220。

输入缓冲器1202从卷积核心电路512接收值流1232并且存储输入数据。输入数据包括以交错方式限定多个通道的数据值流,并且这些数据值在其被接收在流中时被存储在输入缓冲器1202中。输入缓冲器1202存储相同通道的多个像素值以促进每通道处理。为了生成空间池化像素,输入缓冲器1202的尺寸被调整成存储至少足够的输入像素值以适配局部窗。在其中来自多个交错通道的像素值表示为单个图像平面的平面化格式中,局部窗具有仅针对单个通道选择像素值的稀疏度。局部窗的尺寸(例如,高度或宽度)限定了要空间池化的相同通道的像素值的数量,该尺寸可诸如通过来自中央控制320的指令来配置。局部窗的水平跨度(限定局部窗的中心像素之间的像素空间)也可以是可配置的,诸如通过来自中央控制320的指令。因为输入缓冲器1202接收在其中通道的像素值被一个或多个其他通道的像素值隔开的交错通道的流,所以输入缓冲器1202存储多个通道中的每一个的多个像素值。

局部窗可包括要空间池化成空间池化像素值的单个通道的多个像素值。对于每个空间池化像素,空间池化电路1200执行列池化以组合来自局部窗的列的像素值,并且然后执行行池化以组合局部窗的列池化值。应注意,“行”和“列”是指平面化图像的正交像素线,并且不一定是特定水平或垂直取向。

对于每个空间池化像素,每像素计算1204从输入缓冲器1202检索局部窗的通道的数据值,并且对数据值执行操作。操作可包括对数据值施加偏移、将数据值平方或确定数据值的绝对值。

列压缩器1206将来自与局部窗的列相关联的每个像素计算1204的多个数据值组合到代表该列的单个空间池化值中。列压缩器1206可以各种方式组合如由中央控制320所指定的多个数据值。例如,列压缩器1206可选择最小值、最大值或者可将这些值组合成和。

列累加缓冲器1208从列压缩器1204接收多个空间池化列值,并且存储空间池化列像素值。例如,列累加缓冲器1208存储局部窗的每列的至少空间池化列值。

行压缩器1210将局部窗的每列的空间池化列值组合。类似于列压缩器1206,行压缩器1210可以各种方式组合如由中央控制320所指定的多个数据值。例如,行压缩器1210可选择最小值、最大值或者可将这些值组合成和。行压缩器1210的输出表示从局部窗的每个像素导出的空间池化值。

spn处理器1202处理从行压缩器1210接收的空间池化值。例如,spn处理器1202可确定空间池化值的平方根。另外或除此之外,spn处理器1202可使用空间池化值来对输入流1222执行局部响应归一化。

spn处理器1202包括平方根单元1214、lrn单元1216、复用器1218和spn后置处理器1220。平方根单元1214计算来自行压缩器1210的空间池化值的平方根。

lrn单元1216通过将来自行压缩器的空间池化值施加到存储在延迟器1222中的输入值来执行局部响应归一化,以生成每通道归一化值。通过使空间池化的值与来自输入缓冲器1202的对应输入值同步,延迟器1222促进局部响应归一化。延迟器1222耦合到输入缓冲器1202和lrn单元1216。延迟器1222可包括先进先出(fifo)存储器缓冲器。

复用器1218从行压缩器1210的空间池化值、来自平方根单元1214的空间池化值的平方根或来自lrn单元1216的归一化值中选择输出。spn后处理器1220接收复用器1218的所选择的输出,并且执行缩放、偏移和/或移位操作。spn后处理器1220的输出是以交错方式限定多个通道的像素值流,其中像素值使用每通道空间池化和/或每通道归一化来处理。

在一些实施方案中,中央控制320通过为部件配置操作组合以不同的模式来操作空间池化电路1200。

如上文结合图5所讨论,第一卷积电路502的空间池化电路514的输出流530可用作第二卷积电路504的输入,或者可被提供给通道合并电路506以与第二卷积电路504的输出交错。

图13a和图13b是根据一个实施方案示出了多平面格式的空间池化电路1200的输入和输出的概念图。空间池化电路1300对多通道输入图像执行每通道空间池化和/或每通道lrn并生成多通道输出。输入和输出通道的数量被保留,其中每个图像的像素图像尺寸经由空间池化而减小。

图13a和图13b的多平面格式将每个输入和输出通道表示为单独的图像平面。多通道输入数据1302具有来自多个通道(诸如通道1304、1306和1308)的像素值。在该示例中,空间池化具有三个像素的宽度和高度的局部窗1310的像素值,以生成用于输出通道1304的空间池化值1312。空间池化电路1200使用每个通道的局部窗1310在单个的基础上针对通道1304、1306和1308生成多通道输出数据1314。

在如图13a所示计算多个通道的第一空间池化值(例如,值1312)之后,局部窗1310如图13b所示被移位,以计算通道的下一个空间池化值(例如,值1322)。在该示例中,局部窗1310根据光栅样式在列维度上移位两个像素。这导致局部窗1310的中心像素在列维度上移位两个像素。每空间池化像素计算的局部窗1310的量中心像素移位可以是可配置的。局部窗可根据每个空间池化像素的预限定行(“跨度x”)和列(“跨度y”)参数以光栅样式移位,直到计算所有空间池化像素。使用大于1的跨度x和跨度y参数会导致进行子采样而减少数据尺寸和计算成本。当这些因子等于1时,不跳过输出像素。空间池化移位局部窗1310的像素值以生成输出通道1316的空间池化值1322。

图13c和图13d是根据一个实施方案示出了平面化格式的空间池化电路1300的输入和输出的概念图。图13c对应于图13a中所示的多平面格式,并且图13d对应于图13b中所示的多平面格式。在平面化格式中,每个输入通道表示为以cin的水平间隔放置的像素列,其中cin表示输入通道的数量。因此,当每通道操作被施加到局部窗时,如局部窗1310所示,内核支持在平面化格式中变得稀疏。

行(“跨度x”)和列(“跨度y”)移位值以多平面格式中像素在通道的空间坐标中的单位来限定。在平面格式中,通过将行移位值跨度x乘以输入通道cin的数量来确定行移位的实际量。

图14是根据一个实施方案示出了操作空间池化电路1200的方法1400的流程图。中央控制320将配置信息发送1402至空间池化电路1200。可以结合如方法700的702处所讨论的用于卷积引擎414的其他配置指令发送配置指令。

配置指令可包括限定空间池化电路1200的操作模式的指令。不同的操作模式可限定不同类型的空间池化或每通道lrn。在最大池化模式中,列压缩器1206和行压缩器1210选择最大值,并且复用器1218选择行压缩器1210的输出。此处,绕过spn处理器1212的后累加处理,使得空间池化电路1200的输出不施加局部响应归一化或平方根。在平均池化模式中,列压缩器1206和行压缩器1210生成和,并且复用器1218选择行压缩器1210的输出以绕过后累加处理。

在l1池化模式中,每像素计算1204确定绝对值,列压缩器1206和行压缩器1210计算绝对值的和,并且复用器1218选择行压缩器1210的输出以绕过后累加处理。在l2池化模式中,每像素计算1204确定平方值,列压缩器1206和行压缩器1210计算平方值的和,平方根单元1214确定平方值的和的平方根,并且复用器1218选择平方根单元1214的输出。

在每通道lrn模式中,每像素计算1204确定平方值,列压缩器1206和行压缩器1210使用平方值的和的平方根计算平方值的和,lrn单元1216归一化值,并且复用器1218选择lrn单元1216的输出。

在接收到配置信息之后,根据配置信息更新1404空间池化电路1200的配置以执行如配置信息中所述的操作。更新配置可包括根据由配置信息限定的操作模式来设置每像素计算1204、列压缩器1206和行压缩器1210、平方根单元1214和复用器1218的操作。

卷积核心电路512(或522)通过对输入数据执行卷积操作,以交错方式生成1406多个通道的值流。例如,卷积核心电路512使用多个卷积内核对输入数据执行卷积操作,以根据配置指令生成包括多个通道的值流。卷积电路512还可对卷积结果执行如有配置指令指定的一个或多个后处理操作。在一些实施方案中,后处理操作包括通道间操作,诸如多通道ncc和通道间lrn。这些操作组合来自不同通道的值并且不同于空间池化电路1200的每通道操作。如果卷积核心电路512包括多个执行集群,则可组合多个执行集群的输出流来以由卷积核心电路512输出的交错方式生成多个通道的值流。

空间池化电路1200通过将来自每个通道的值的子集彼此池化来生成1408空间池化值。例如,如果来自卷积核心电路512的流包括第一交错通道和第二交错通道,则空间池化电路1200通过池化第一通道的值的子集(例如,如由局部窗所限定)来生成第一空间池化值,并且通过池化第二通道的值的子集来生成第二空间池化值。输入缓冲器1202确保存储来自流1224的单个通道的值的子集以促进空间池化。基于每像素计算1204、列压缩器1206、行压缩器1210和spn处理器1212的所选择的操作,可以各种方式池化来自每个通道的值的子集。空间池化值可包括从不同类型的空间池化导出的值,诸如最大池化模式、平均池化模式、l1池化模式或l2池化模式。在另一示例中,空间池化值可包括从归一化导出的值,诸如每通道lrn模式。

空间池化电路1200将来自多个通道的空间池化值交错1410在输出流1226中。因此,空间池化电路1200保持在输出流1226处接收为输入流1224的多通道交错格式,同时对输入流1224执行每通道深度机器学习操作。

空间池化电路1200可从卷积核心电路512(或504)接收2ppc输入流,并且生成2ppc输出流。如果卷积核心电路512提供1ppc流,则空间池化电路1200忽略无效值并且仅处理有效值。如果输出帧的总宽度为奇数,则可在每条线的末端添加零以使宽度为偶数。

如图14所示的过程仅是例示性的,并且可对该过程作出各种改变。例如,在旁路模式下,空间池化电路1200可重新分组输入流以确保包含有效值的2ppc输出流。像素处理部件诸如每像素计算1204以及列和行压缩器1206和1210可在旁路模式中被绕过。

交错通道合并

当应用需要高吞吐量或者当使用大型深度学习模型时,两个卷积电路502和504可在如上文结合图6a所讨论的双卷积模式中并行运行。两个卷积电路502和504在相同输入流上施加不同的卷积内核。例如,第一卷积电路502利用一个或多个卷积内核生成前半部分输出通道,而第二卷积电路504利用一个或多个不同卷积内核生成后半部分。通道合并电路506从卷积电路502和504接收流,并且以交错方式将流组合成包括前半部分输出通道和后半部分输出通道的单个输出流。为了执行交错,通道合并电路具有通道合并器526。

图15是根据一个实施方案示出了通道合并器1500的框图。通道合并器1500是通道合并电路526的通道合并器506的实施方案。当以双卷积模式操作时,通道合并器1500的输出被选择为卷积引擎414的输出。

通道合并器1500包括输入缓冲器1502、复用器1504和通道选择器1506。输入缓冲器1502耦合到卷积电路502以接收值流530和卷积电路504以接收值流532。值流530和532可各自包括多个交错通道。输入缓冲器1502存储值530和532以促进用于交错的值的同步。

复用器1504耦合到输入缓冲器并且从输入缓冲器1502接收值流530和532。通道选择器1506对复用器1504提供选择信号以控制来自输入流的值的选择,以用于插入输出值534的输出流中。复用器诸如通过另选地从每个输入流中选择一个或多个值使值流530和532交错,以生成输出值534的输出流。从特定输入流中选择的顺序值的数量可由流中每个像素的通道数量来限定。输出值534的序列以交错方式限定值流530和532的通道。

通道合并器1500支持两个同步的2ppc输入流,而不会减慢任何输入流。合并的输出的吞吐量为4ppc。如果两个输入流不同步,则可使用输入缓冲器1502来存储一个或多个输入源以提供延迟,使得通道合并器1500从两个输入流接收同步输入。

图16是根据一个实施方案示出了平面化格式的通道合并器1500的输入和输出的概念图。在一些实施方案中,如多通道输入数据1602和多通道输入数据1604所示,通道合并器1500组合具有相同尺寸的两个输入帧。此外,输入流530和532具有相同数量的输入通道cin。在该示例中,cin为五个,因此每个像素p0、p1、p2等对于每个流具有五个值通道。通道合并器1500通过使多通道输入数据1602和多通道输入数据1604交错来生成多通道输出数据1606,使得第一流的p0像素的每个通道的像素值之后跟随第二流的p0像素的每个通道的像素值。以平面化格式且以光栅样式进行时,第一流的p1像素的每个通道的像素值跟随第二流的p0像素的像素值。对于p1像素,第一流的p1像素的每个通道的像素值之后跟随第二流的p1像素的每个通道的像素值。

通道合并器1500生成输出值534的输出流,该输出流具有双倍的通道数量作为来自输入流530(包括多通道输入数据1602)和532(包括多通道输入数据1604)中的每一个的输入通道的数量。例如,多通道输出数据的每个像素p0、p1等具有10通道输出cout。

在一些实施方案中,当输入流530和532中的图像的高度和宽度不匹配,或者当输入流530和532中的通道的数量不匹配时,通道合并电路506中不支持通道合并器1500。除了以双卷积模式操作之外,卷积引擎414可以绕过通道合并器1500的不同模式操作,诸如图6b中所示的级联模式或者图6c所示的并行模式。

在一些实施方案中,通道合并器1500是核心合并器846的实施方案。核心合并器847从每个执行集群810和812接收两个一ppc输入流(在独立管道中的后处理之后),并且将一ppc输入流组合到卷积核心电路800的2ppc输出流中。相比之下,通道合并器526接收2ppc输入流并生成4ppc输出流。因此,通道合并器526具有比核心合并器847更高的吞吐量。核心合并器847可包括从偶数流842和奇数流844中选择数据值以生成输出流的复用器,以及控制复用器对值的选择的通道选择器。在一些实施方案中,核心合并器846可包括一个或多个输入缓冲器,以通过存储偶数流842和奇数流844中的一个或多个来促进交错的同步。由于较低的吞吐量,核心合并器846的存储器和处理部件的尺寸可小于通道合并器1500的存储器和处理部件的尺寸。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1