图像处理装置
本申请基于日本专利申请2020-46914号(申请日:2020年3月17日)主张优先权,这里引用其全部内容。
技术领域
本发明的实施方式涉及图像处理装置。
背景技术
有通过神经网络实现对于图像数据的识别处理等的技术。例如,卷积神经网络(Convolutional Neural Network:CNN。以下称作CNN)中的核(kernel)运算,在将图像的图像数据整体保持在DRAM等的片外存储器中的帧缓存中之后,一边使规定尺寸的窗口相对于该被保持的图像数据整体滑动,一边执行。
因此,由于将图像数据整体保存到片外存储器中、以及在用于每次核运算时进行的特征图的写入及读出的向片外存储器的访问花费时间,所以CNN运算的等待时间(latency)较大。在图像处理处理器(Image Signal Processor)那样的装置中,优选的是等待时间较小。
为了减小CNN运算的等待时间,也可以使用比帧缓存的尺寸小的线缓存,但由于较多地发生用于核运算的向线缓存的访问,所以在线缓存中需要使用能够高速访问的存储器,图像处理装置的成本变高。
发明内容
本发明的目的是提供一种等待时间较小并且能够以低成本实现的图像处理装置。
技术方案的图像处理装置具有:第1处理器,被输入图像数据;缓存,设在上述第1处理器内;以及第2处理器,使用上述图像数据的多个像素数据和保存在上述缓存中的循环型神经网络运算的运算结果中的至少一方,进行上述循环型神经网络运算。
附图说明
图1是有关实施方式的图像处理装置的框图。
图2是用来说明有关实施方式的图像处理处理器的处理内容的图。
图3是表示有关实施方式的图像处理处理器的结构的框图。
图4是有关实施方式的循环型神经网络单元处理器的结构图。
图5是用来说明有关实施方式的从输入图像数据向流数据的变换的图。
图6是用来说明有关实施方式的对于输入图像数据中包含的多个像素值的循环型神经网络单元的处理顺序的图。
图7是用来说明有关变形例1的对于各行的最终列的输出值的线端单元的处理顺序的图。
图8是用来说明有关变形例2的对于输入图像数据中包含的多个像素值的循环型神经网络单元的处理顺序的图。
图9是用来说明卷积神经网络的感受野(Receptive Field)的图。
图10是用来说明实施方式的感受野的图。
图11是用来说明卷积神经网络和循环型神经网络的感受野的范围的差异的图。
图12是用来说明有关变形例2的循环型神经网络单元的输入步长的图。
图13是用来说明有关变形例2的感受野的设定范围的图。
具体实施方式
以下,参照附图说明实施方式。
(结构)
图1是有关本实施方式的图像处理装置的框图。使用本实施方式的图像处理装置的图像处理系统1对来自照相机装置的图像数据进行处理,进行图像识别等的处理,将其处理结果的信息输出。
图像处理系统1包括图像处理处理器(Image Signal Processor:ISP。以下称作ISP)11、片外存储器12和处理器13。
ISP11通过遵循MIPI(Mobile Industry Processor Interface:移动产业处理器接口)CSI(Camera Serial Interface:相机串行接口)标准等的接口与照相机装置(未图示)连接。ISP11接受来自照相机装置的图像传感器14的摄像信号,对摄像信号进行规定的处理,将规定的处理的结果数据输出。即,对于作为处理器的ISP11,序列地输入图像数据的多个像素数据。这里,ISP11以来自作为摄像元件的图像传感器14的摄像信号(以下称作输入图像数据)IG为输入,作为结果数据而输出图像数据(以下称作输出图像数据)OG。例如,ISP11对输入图像数据IG进行噪声除去等,输出没有噪声等的输出图像数据OG。
另外,也可以将来自图像传感器14的输入图像数据IG的全部向ISP11输入,对输入图像数据IG的全部执行后述的RNN运算,也可以对输入图像数据IG的一部分执行后述的RNN运算。
ISP11包括状态缓存21、和反复执行基于循环型神经网络(Recurrent NeuralNetwork:RNN。以下称作RNN)的规定的运算的RNN单元处理器22。关于ISP11的结构在后面叙述。
片外存储器12是DRAM等的存储器。在ISP11中生成并从ISP11输出的输出图像数据OG被保存到片外存储器12中。
处理器13基于保存在片外存储器12中的输出图像数据OG进行识别处理等。处理器13输出由识别处理等得到的结果数据RD。由此,ISP11、片外存储器12及处理器13例如构成对图像进行图像识别处理等的图像识别装置(由图1的虚线表示)2。
图2是用来说明ISP11的处理内容的图。如图2所示,ISP11使用RNN单元处理器22(后述)对来自图像传感器14的输入图像数据IG进行噪声除去等的规定的处理,生成输出图像数据OG。
例如,当图像识别装置2通过处理器13基于输出图像数据OG进行识别处理等时,由于输出图像数据OG是被除去了噪声的数据,所以能够期待处理器13中的识别处理等的精度的提高。
图3是表示ISP11的结构的框图。图4是RNN单元处理器22的结构图。ISP11包括状态缓存21、RNN单元处理器22及像素流解码器23。像素流解码器23是将输入图像数据IG变换为流数据SD而向RNN单元处理器22输出的电路。
图5是用来说明从输入图像数据IG向流数据SD的变换的图。这里,为了使说明变得简单,在图5中,输入图像数据IG的图像由6行图像数据构成。各行包含多个像素数据。即,图像由多行(这里是6行)多列的像素数据构成。
像素流解码器23如果接收到来自图像传感器14的输入图像数据IG,则将接收到的输入图像数据IG的多个像素数据变换为规定的顺序的流数据SD。
像素流解码器23从输入图像数据IG生成由从第1行的第1列的像素(即最上行的左端的像素)到第1行的最终列的像素(即最上行的右端的像素)的行数据L1、接着行数据L1而从第2行的第1列的像素(即上起第2行的左端的像素)到第2行的最终列的像素(即第2行的右端的像素)的行数据L2、…、从作为第最终行的第6行的第1列的像素(即最下行的左端的像素)到第6行的最终列的像素(即最下行的右端的像素)的数据列LL的多个像素数据构成的流数据SD并输出。
由此,像素流解码器23是将输入图像数据IG变换为流数据SD并向RNN单元处理器22输出的电路。
如图4所示,RNN单元处理器22是包括1个RNN单元31的处理器。RNN单元31是简单RNN单元(Simple RNN Cell),是将对于两个输入值IN1、IN2进行规定的运算而得到的隐藏状态(hidden state)作为两个输出值OUT1、OUT2输出的硬件电路。
另外,这里RNN单元处理器22包括1个RNN单元31,但也可以包括两个以上的RNN单元31。或者,RNN单元31的数量也可以与后述的层的数量相同。
RNN单元31的输入值IN1是il,t。l表示层,t表示步长(step)。RNN单元31的输入值IN2是隐藏状态hl,t-1。RNN单元31的输出值OUT1是隐藏状态hl,t,为下一层(l+1)的步长t的输入值IN1(即il+1,t)。RNN单元31的输出值OUT2是隐藏状态hl,t,为相同层的下一步长(t+1)的RNN单元31的输入值IN2。
步长t也被称作时间步长(time step),是每当在RNN中被输入1个序列数据而隐藏状态被更新时增加的数字,作为隐藏状态及输入输出的索引而被分配,是并不一定与现实的时刻相同的虚拟的单位。
如图3所示,RNN单元31能够将在RNN运算中使用的各种参数(用虚线表示)从片外存储器12读出并保持在RNN单元31的内部。参数包括后述的每层的各RNN运算的权重参数w及偏置(bias)值b等。
另外,RNN单元31也可以通过由中央处理装置(CPU)执行的软件实现。
RNN单元31按照后述的每个层而执行对应的动作,在最初的层(第1层)中,将流数据SD作为RNN单元31的输入值IN1顺序地输入。RNN单元31进行规定的运算,将作为运算结果的隐藏状态hl,t生成输出值OUT1、OUT2,向状态缓存21输出。
在各层中得到的各输出值OUT1、OUT2被保存到状态缓存21中的规定的存储区域中。状态缓存21例如是线缓存。
由于状态缓存21设在ISP11内,所以RNN单元31能够高速地进行向状态缓存21的数据的写入及读出。RNN单元31将进行规定的运算而得到的隐藏状态h保存到状态缓存21中。状态缓存21是包括线缓存的SRAM,是至少保存流数据数的数据的缓存。
RNN单元31能够执行多个层运算。这里,RNN单元31能够执行以流数据SD为输入而进行规定的运算的第1层运算、以作为第1层中的规定的运算的运算结果的隐藏状态h为输入而进行规定的运算的第2层运算、和以作为第2层中的规定的运算的运算结果的隐藏状态h为输入而进行规定的运算的第3层运算等。
对RNN单元31中的规定的运算进行说明。在第l(字母“L”)个层运算中,RNN单元31在某个步长t中,将输入值IN1作为像素数据i,作为规定的运算而使用作为非线性函数的激活函数tanh,将输出值OUT1、OUT2输出。输出值OUT1、OUT2是隐藏状态ht。这里,如图4所示,隐藏状态hl,t通过以下的式(1)计算。
hl,t=tanh(wl,ihil,t+wl,hhhl,t-1+bl)…(1)
这里,wl,ih及wl,hh分别是由以下的式(2)(3)表示的权重参数。
wl,ih∈Re×d…(2)
wl,hh∈Re×e…(3)
这里,Re×d及Re×e是由e行d列及e行e列的实数矩阵形成的空间,都表示是由实数形成的矩阵。
此外,输入值(像素数据il,t)及输出值(隐藏状态hl,t)分别由以下的式(4)(5)表示。
il,t∈Rd…(4)
hl,t∈Re…(5)
这里,Rd表示d维的实数空间,Re表示e维的实数空间,都表示是由实数形成的向量。
上述非线性型函数的各权重参数的值通过RNN的学习而被优化。
像素数据il,t是输入向量,例如在被输入了RGB图像的情况下是三维向量,在中间特征图的情况下是其通道(channel)数。隐藏状态hl,t是输出向量。D、e分别表示输入向量和输出向量的维度。l是层号,是序列数据的索引。B是偏置值。
另外,在图4中,RNN单元31根据输入值IN1、以及将来自之前的像素的输出值作为输入值IN2,生成相同值的两个输出值OUT1、OUT2并输出,但RNN单元31也可以输出相互不同的两个输出值OUT1、OUT2。
在第2层运算中,RNN单元31将输入值IN1作为第1层的输出值OUT1,使用作为规定的运算的作为非线性型函数的激活函数tanh,将输出值OUT1、OUT2输出。
当进行第2层运算的再接着的第3、第4等的层运算时,在第3、第4等的层运算中,与第2层运算同样,RNN单元31将输入值IN1设为之前的层的输出值OUT1,使用作为规定的运算的作为非线性型函数的激活函数tanh,将输出值OUT1、OUT2输出。
(作用)
接着,对ISP11的动作进行说明。这里,说明具有3个层的例子。如上述那样,像素流解码器23输出流数据SD(图5),该流数据SD是将输入图像数据IG以从第1行L1的左端的像素到右端的像素的多个像素数据、从第2行L2的左端的像素到右端的像素的多个像素数据、…、从第最终行的数据列LL(即L6)的左端的像素到右端的像素的多个像素数据的顺序(由箭头A表示的顺序)排列的。
在第1层中,向RNN单元31的最初的输入值IN1是流数据SD的最初的数据(即输入图像数据IG的第1行的第1列的像素),输入值IN2是规定的默认值。
在第1层中,RNN单元31如果在最初的步长t1中被输入两个输入值IN1、IN2,则执行规定的运算,将输出值OUT1、OUT2输出。输出值OUT1、OUT2被保存到状态缓存21中的规定的存储区域中。第1层的步长t1的输出值OUT1在下个第2层的最初的步长t1中被从状态缓存21读出,作为RNN单元31的输入值IN1使用。在第1层中,步长t1中的输出值OUT2作为下一步长t2中的输入值IN2使用。
以下同样,在第1层中,之后的各步长中的输出值OUT1在接着的第2层中、在对应的步长中被从状态缓存21读出,作为RNN单元31的输入值IN1使用。在第1层中,之后的各步长中的输出值OUT2在下一步长中被从状态缓存21读出,作为RNN单元31的输入值IN2使用。
如果第1层中的对于流数据SD的各像素数据的规定的运算结束,则执行第2层的处理。
如果第1层中的对于第1个像素数据的规定的运算结束,则执行与第2层的第1个像素对应的处理。
在第2层中,将第1层中的从最初到最后的步长得到的多个输出值OUT1作为输入值IN1,序列地向RNN单元31输入。与第1层中的处理同样,以第1层的从第1步长到最后的步长的顺序,在第2层中,RNN单元31执行规定的运算。
如果第2层中的对于第1层的各输出值OUT1的规定的运算结束,则执行第3层的处理。
如果第2层中的对于第1个像素数据的规定的运算结束,则执行第3层的与第1个像素对应的处理。
在第3层中,第2层中的从最初到最后的步长得到的多个输出值OUT1作为输入值IN1被序列地向RNN单元31输入。与第2层中的处理同样,以第2层的从第1步长到最后的步长的顺序,在第3层中,RNN单元31执行规定的运算。
图6是用来说明对于输入图像数据IG中包含的多个像素值的RNN单元31的处理顺序的图。图6表示多个步长中的、向RNN单元31输入的输入值IN1、IN2和从RNN单元31输出的输出值OUT1、OUT2的流。在第1层中,RNN单元31被表示为RNN单元(RNNCell)1,在第2层中,RNN单元被表示为RNN单元2,在第3层中,RNN单元被表示为RNN单元3。
在图6中,仅表示了对于输入图像数据IG中的行y的列x和其前方的列(x-1)、(x-2)的像素数据的处理的流。
如图6所示,第1层(层1)的列(x-2)的RNN单元1的输入值IN1是在步长tk中被输入的像素数据。第1层的列(x-2)的RNN单元1的输入值IN2是第1层的列(x-3)的RNN单元1的输出OUT2。第1层的列(x-2)的RNN单元1的输出值OUT1为第2层的列(x-2)的RNN单元2的输入值IN1。第1层的列(x-2)的RNN单元1的输出值OUT2为第1层的列(x-1)的RNN单元1的输入值IN2。
同样,第1层的列(x-1)的RNN单元1的输入值IN1是在步长t(k+1)中被输入的像素数据。第1层的列(x-1)的RNN单元1的输入值IN2是第1层的列(x-2)的RNN单元1的输出OUT2。第1层的列(x-1)的RNN单元1的输出值OUT1为第2层的列(x-1)的RNN单元2的输入值IN1。第1层的列(x-1)的RNN单元1的输出值OUT2为第1层的列(x)的RNN单元1的输入值IN2。
第1层的列(x)的RNN单元1的输入值IN1是在步长t(k+2)中被输入的像素数据。第1层的列(x)的RNN单元1的输入值IN2是第1层的列(x-1)的RNN单元1的输出OUT2。第1层的列(x)的RNN单元1的输出值OUT1为第2层的列(x)的RNN单元2的输入值IN1。第1层的列(x-1)的RNN单元1的输出值OUT2被作为下一步长中的RNN单元l的输入值IN2使用。
如以上这样,RNN处理器22的RNN单元31对于输入的多个像素数据,依次进行RNN运算,将隐藏状态的信息保存到状态缓存21中。隐藏状态是RNN单元31的输出。
第2层(层2)的列(x-2)的RNN单元2的输入值IN1是第1层的列(x-2)的RNN单元1的输出值OUT1。第2层的列(x-2)的RNN单元2的输入值IN2是第2层的列(x-3)的RNN单元2的输出OUT2。第2层的列(x-2)的RNN单元2的输出值OUT1为第3层的列(x-2)的RNN单元3的输入值IN1。第2层的列(x-2)的RNN单元2的输出值OUT2为第2层的列(x-1)的RNN单元2的输入值IN2。
同样,第2层的列(x-1)的RNN单元2的输入值IN1是第1层的列(x-1)的RNN单元1的输出值OUT1。第2层的列(x-1)的RNN单元2的输入值IN2是第2层的列(x-3)的RNN单元2的输出OUT2。第2层的列(x-1)的RNN单元2的输出值OUT1为第3层的列(x-1)的RNN单元3的输入值IN1。第2层的列(x-1)的RNN单元2的输出值OUT2为第2层的列(x)的RNN单元2的输入值IN2。
第2层的列(x)的RNN单元2的输入值IN1是第1层的列(x)的RNN单元1的输出值OUT1。第2层的列(x)的RNN单元2的输入值IN2是第2层的列(x-1)的RNN单元2的输出OUT2。第2层的列(x)的RNN单元2的输出值OUT1为第3层的列(x)的RNN单元3的输入值IN1。第2层的列(x)的RNN单元2的输出值OUT2被作为下一步长的RNN单元2的输入值IN2使用。
第3层(层3)的列(x-2)的RNN单元3的输入值IN1是第2层的列(x-2)的RNN单元2的输出值OUT1。第3层的列(x-2)的RNN单元3的输入值IN2是第3层的列(x-3)的RNN单元3的输出OUT2。第3层的列(x-2)的RNN单元3的输出值OUT1在这里被向softmax层输入,从softmax层将输出图像数据OG输出。第3层的列(x-2)的RNN单元3的输出值OUT2为第3层的列(x-1)的RNN单元3的输入值IN2。
同样,第3层的列(x-1)的RNN单元3的输入值IN1是第2层的列(x-1)的RNN单元2的输出值OUT1。第3层的列(x-1)的RNN单元3的输入值IN2是第3层的列(x-2)的RNN单元3的输出OUT2。第3层的列(x-1)的RNN单元3的输出值OUT1在这里被向softmax层输入,从softmax层将输出图像数据OG输出。第3层的列(x-1)的RNN单元3的输出值OUT2为第3层的列(x)的RNN单元3的输入值IN2。
第3层的列(x)的RNN单元3的输入值IN1是第2层的列(x)的RNN单元2的输出值OUT1。第3层的列(x)的RNN单元3的输入值IN2是第3层的列(x-1)的RNN单元3的输出OUT2。第3层的列(x)的RNN单元3的输出值OUT1在这里被向softmax层输入,从softmax层将输出图像数据OG输出。第3层的列(x)的RNN单元3的输出值OUT2被作为下一步长中的RNN单元3的输入值IN2使用。
由此,第3层的输出是在多个步长中得到的多个输出值OUT1的数据。第3层的输出被向softmax层输入。softmax层的输出被变换为y行x列的图像数据,作为输出图像数据OG被保存到片外存储器12中。
如以上这样,RNN单元处理器22使用图像数据的多个像素数据、和保存在状态缓存21中的作为RNN运算的运算结果的隐藏状态的至少一方,进行循环型神经网络运算。RNN处理器22能够执行多个作为执行多次RNN运算的处理单位的层。多个层包括以多个像素数据为输入而执行RNN运算的第1处理单位(第1层)、和以在第1处理单位(第1层)中得到的隐藏状态的数据为输入而执行RNN运算的第2处理单位(第2层)。
另外,如上述那样,RNN运算中的非线性型函数的各权重参数的值通过RNN的学习而被优化。
如以上这样,根据上述的实施方式,代替CNN而使用RNN,对图像数据进行规定的处理。
由此,与在将图像数据保持在片外存储器12中之后、一边使规定尺寸的窗口相对于图像数据整体滑动一边进行核运算的方法不同,本实施方式的图像处理装置由于将图像数据变换为流数据SD,顺序地执行RNN运算,所以能够等待时间较小且低成本地进行神经网络运算处理。
(变形例1)
在上述的实施方式中,由多行、多列的多个像素构成的图像数据被变换为流数据SD,将从第1行第1列的像素值到最终行的最终列的像素值顺序地作为1个RNN单元处理器31的输入值IN1而输入。
但是,在图像数据的情况下,在各行的第1列的像素的像素值与其之前的行的最终列的像素值之间,特征量的趋势不同。
所以,在本变形例1中,不是将各行的最终列的输出值OUT2原样作为下一行的最初的输入值IN2,而是追加了在变更为规定的值后设为下一行的RNN单元31的最初的输入值IN2的线端(line end)单元。
作为线端单元,既可以通过变更RNN单元31的执行内容以进行与上述非线性函数不同的非线性函数的运算而使用RNN单元31,或者也可以如在图3中用虚线表示那样,使用设在RNN单元处理器22内的、作为与RNN单元31不同的运算单元的线端单元31a。
线端单元的非线性函数的各权重参数的值也通过RNN的学习而被优化。
图7是用来说明对于各行的最终列的输出值OUT2的线端单元31a的处理顺序的图。这里,图像数据的各行具有W个像素值。即,图像数据具有W列。
如图7所示,在RNN单元31对于将第1列设为0时的最终列(W-1)的像素数据执行规定的运算后,输出值OUT2向线端单元31a输入。
如图7所示,线端单元31a按照每个层,对各行的最终列(W-1)的RNN单元31的输出值OUT2进行处理。在图7中,第1层中的线端单元31a被表示为线端单元(LineEndCell)1,第2层中的线端单元31a被表示为线端单元2,第3层中的线端单元31a被表示为线端单元3。
在第1层中,第y行的线端单元31a以第1层的第y行的最终列的RNN单元l的输出值OUT2(h1(W-1,y))为输入,将作为运算结果的输出值的隐藏状态h1(line)作为接着的第(y+1)行的RNN单元1的输入值IN2。
同样,在第2层中,第y行的线端单元31a也以第2层的第y行的最终列的RNN单元2的输出值OUT2(h2(W-1,y))为输入,将作为运算结果的输出值的隐藏状态h2(line)作为接着的第(y+1)行的RNN单元2的输入值IN2。
同样,在第3层中,第y行的线端单元31a也以第3层的第y行的最终列的RNN单元3的输出值OUT2(h3(W-1,y))为输入,将作为运算结果的输出值的隐藏状态h3(line)作为接着的第(y+1)行的RNN单元3的输入值IN2。
如以上这样,RNN单元处理器22当图像数据由n行m列的像素数据构成时,RNN处理器22具有在相邻的两个行间对隐藏状态进行规定的运算的线端单元31a。
由此,线端单元31a在各层中设在行的变化点。并且,线端单元31a进行将被输入的输出值OUT2变更的处理,将变更后的输出值作为进行下一行的处理时的RNN单元31的输入值IN2。
如以上这样,通过由线端单元31a将各行的最终列的输出值OUT2变更,能够将各行的最终的像素值与下一行的最初的像素值之间的特征量的倾向的差异的影响排除,进而能够期待噪声除去等的精度的提高。
(变形例2)
在上述的实施方式中,RNN单元31的输入值IN1在全部的层间以一致的步长被取得。相对于此,在本变形例2中,RNN单元31的输入值IN1不是以层间一致的步长被取得,而是具有偏移量延迟而被取得,以使RNN运算具有与CNN的感受野(Receptive Field)同样的感受野。换言之,本变形例2的图像处理装置构成为,在层间具有偏移量而执行RNN运算。
图8是用来说明有关本变形例2的、对于输入图像数据IG中包含的多个像素值的RNN单元31的处理顺序的图。
如图8所示,流数据SD的像素数据i在第1层中被序列地处理。但是,在第2层中,作为RNN单元2的输入值IN1,在图像的x方向上延迟偏移量u1、在图像的y方向上延迟偏移量v1而使用RNN单元1的输出值OUT1。另外,偏移量信息被写入到片外存储器12中,作为参数而从片外存储器12向RNN单元处理器22写入。
在图8中,RNN单元2的输入值IN1由以下的式(6)表示。
i2(x-u1,y-v1)=h1(x-u1,y-v1)…(6)
进而,在第3层中,RNN单元3的输入值IN1在图像的x方向上延迟偏移量(u1+u2)、在图像的y方向上延迟偏移量(v1+v2)而使用RNN单元1的输出值OUT1。即,在图8中,RNN单元3的输入值IN1由以下的式(7)表示。
第3层的各RNN单元3的输出值OUT1由以下的式(8)表示。
图9是用来说明CNN的感受野(Receptive Field)的图。感受野是给核运算带来影响的输入值的范围。通过对输入图像数据IG进行CNN运算的层LY1,生成输出图像数据OG。在此情况下,层LY1的比核尺寸R1宽的范围R2对输出图像数据的输出值P1带来了影响。由此,在CNN的情况下,如果反复进行CNN运算,则作为为了得到输出值而直接或间接地参照的输入值的范围的感受野变大。
相对于此,在上述的实施方式中,由于进行RNN运算,所以可以将按照每个层在运算步长中在比该步长靠前进行的RNN运算的结果的范围称作感受野。
图10是用来说明上述实施方式的感受野的图。图11是用来说明CNN和RNN的感受野的范围的差异的图。RNN单元31如果在层LY11中对输入图像数据IG的流数据SD进行RNN运算,则在图10中在输入图像数据IG中由虚线表示的范围R12是感受野。层LY11的输出值P1的感受野,比输出值P1的运算步长靠前的步长的运算结果为范围R11。
因此,在上述的实施方式中,在图9中表示的CNN那样的输出值P1的周围的像素值的运算结果在RNN运算中没有被使用。如图11所示,RNN的感受野RNNR与CNN的感受野CNNR不同。
所以,在上述的实施方式中,也与CNN同样,为了进行考虑到感受野的RNN运算,RNN单元31将从状态缓存32读出的输入值IN1的范围错开,以使在某层的某步长中使用的RNN单元31的输入值IN1成为在其之前的层中与该步长不同的步长中的RNN单元31的隐藏状态h(输出值)。即,将在作为第1处理单位的第1层中得到的隐藏状态的数据在作为第2处理单位的第2层中以延迟了设定的偏移量的步长从状态缓存21向RNN处理器22给出。
如图8所示,在第2层中,RNN单元2的输入值IN1成为在x方向上偏移u1并且在y方向上偏移v1后的像素位置的输出值OUT1。即,在第2层中,RNN单元2在图像数据的横向及纵向上分别错移了规定的值(u1,v1)的像素位置处的第1层的RNN运算的输出值OUT1成为第2层的RNN单元2的输入值IN1。
此外,在第3层中,RNN单元3的输入值IN1成为在第2层的输出图像中在x方向上偏移(u1+u2)并且在y方向上偏移了(v1+v2)的输出值OUT1。
并且,RNN单元3的输出值OUT1成为在第2层的输出图像中在x方向上偏移(u1+u2+u3)并且在y方向上偏移了(v1+v2+v3)的输出值。
图12是用来说明RNN单元31的输入步长的图。如图12所示,将最初的像素数据i1(0,0)作为输入值IN1的RNN单元1的输出值OUT1在第2层中在与偏移值对应的步长ta中被用作输入值IN1。第2层中的偏移量值是相对于在第1层中流数据SD的像素数据的取得步长的步长差。这里,偏移量值是与从1行第1列的像素的位置(0,0)到u1行第v1列的像素位置(u1,v1)的步长差对应的值。
由此,在第2层的最初的步长ta中,RNN单元2的输入值IN1成为从第1层中的最初的步长tb偏移了偏移值后的步长的输出值OUT1。
进而,偏移值也可以在层间是相同的,但这里按照每个层而不同。如图12所示,第3层中的步长ta的RNN单元31的输出值OUT1偏移了像素位置(u11,v11)量的值成为第3层中的RNN单元31的输入值IN1。
图13是用来说明本变形例2的感受野的设定范围的图。在设置层LY21的输入值IN的偏移值的情况下,通过填充(padding)对输入图像数据IG追加规定的区域AA。并且,如图13所示,输出值P1受到感受野RNNR内的输入值P2的影响而被输出。由此,输出值P1受到层LY21的感受野RNNR的输出值的影响,并且层LY21的感受野RNNR受到输入图像数据IG的感受野RNNR的输入值的影响。输出值PE受到被追加的区域AA的输入值P3的影响。
如以上这样,按照每个层设置各RNN运算中的输入值IN1的输入步长的偏移量,在使用RNN的图像处理中,也能够进行与CNN同样的感受野的设定。
如以上这样,根据上述实施方式及各变形例,能够提供等待时间较小并且能够以低成本实现的图像处理装置。
另外,上述的RNN单元31是简单RNN,但也可以具有LSTM(Long Short TermMemory:长短期记忆)网络、GRU(Gated Recurrent Unit:门控循环单元)等的构造。
以上说明了本发明的几个实施方式,但这些实施方式是作为例子例示的,不是要限定发明的范围。这些新的实施方式能够以其他各种各样的形态实施,在不脱离发明的主旨的范围中能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围及主旨中,并且包含在权利要求书所记载的发明和其等价的范围中。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种基于GPU的快速重建成像方法