WO2018074012A1 - 演算処理回路および認識システム - Google Patents

演算処理回路および認識システム Download PDF

Info

Publication number
WO2018074012A1
WO2018074012A1 PCT/JP2017/024422 JP2017024422W WO2018074012A1 WO 2018074012 A1 WO2018074012 A1 WO 2018074012A1 JP 2017024422 W JP2017024422 W JP 2017024422W WO 2018074012 A1 WO2018074012 A1 WO 2018074012A1
Authority
WO
WIPO (PCT)
Prior art keywords
dimensional
data
dimensional convolution
convolution operation
processing circuit
Prior art date
Application number
PCT/JP2017/024422
Other languages
English (en)
French (fr)
Inventor
坂口 浩章
Original Assignee
ソニーセミコンダクタソリューションズ株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ソニーセミコンダクタソリューションズ株式会社 filed Critical ソニーセミコンダクタソリューションズ株式会社
Priority to US16/331,727 priority Critical patent/US11461684B2/en
Priority to CN201780063513.9A priority patent/CN109844738A/zh
Publication of WO2018074012A1 publication Critical patent/WO2018074012A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Definitions

  • This technology relates to an arithmetic processing circuit.
  • the present invention relates to an arithmetic processing circuit that performs a convolution operation and a recognition system that performs data recognition using the arithmetic processing circuit.
  • a convolutional neural network As one of neural networks in which a plurality of processing layers are hierarchically connected, a convolutional neural network (CNN) has been attracting attention.
  • This convolutional neural network consists of a convolutional layer that performs convolution with multiple kernels, a pooling layer that functions as subsampling and serves as an abstraction, and a classification close to the output layer that matches the output. And a total coupling layer that functions as a vessel.
  • an apparatus for operating a plurality of arithmetic units in parallel has been proposed.
  • an apparatus has been proposed in which convolution operations at positions shifted in the column direction are executed in parallel by a plurality of product-sum operation units (see, for example, Patent Document 1).
  • an apparatus has been proposed in which two systolic arrays are connected to perform convolution operation processing of data at different positions in parallel (for example, see Patent Document 2).
  • JP 2010-134697 A Japanese Patent Laying-Open No. 2015-210709
  • This technology was created in view of such a situation, and aims to perform parallel processing suitable for convolution operations in a convolutional neural network.
  • a first aspect of the present technology is that a plurality of shift registers arranged in a first direction intersect perpendicularly with respect to the first direction.
  • a plurality of selections for sequentially selecting the two-dimensional shift registers arranged in the second direction and sequentially connected, and the data in a predetermined two-dimensional region at least partially different from each other held in the two-dimensional shift register
  • a coefficient memory for storing coefficient data for each of the data held in the two-dimensional shift register, the data selected corresponding to each of the plurality of selectors, and the data selected by the selector
  • the result of multiplying the coefficient data stored in the coefficient memory is cumulatively added to calculate the two-dimensional convolution operation result in the two-dimensional region in parallel with each other.
  • data is simultaneously supplied from the two-dimensional shift register to a plurality of two-dimensional convolution arithmetic circuits via a plurality of selectors, and the two-dimensional convolution arithmetic results are calculated in parallel with each other.
  • the coefficient memory stores a plurality of types of coefficient data
  • each of the plurality of two-dimensional convolution arithmetic circuits stores the data held in the two-dimensional shift register. You may make it perform the said two-dimensional convolution operation with the said data selected by the said several selector and the said several types of said coefficient data continuously, without replacing
  • the coefficient memory stores a plurality of types of coefficient data, and each of the plurality of two-dimensional convolution operation circuits performs the two-dimensional convolution operation on the plurality of types.
  • the coefficient data may be performed in parallel. This brings about the effect of improving the degree of parallelism by simultaneously performing convolution operations of different types of coefficients.
  • each of the plurality of two-dimensional convolution arithmetic circuits performs the two-dimensional convolution operation on the data in different two-dimensional areas among the data held in the two-dimensional shift register. Further, it may be performed in parallel. Thus, the parallelism is improved by further processing a plurality of different two-dimensional regions in parallel.
  • the first aspect further includes a two-dimensional convolution operation result holding unit that holds the respective operation results of the plurality of two-dimensional convolution operation circuits, and the plurality of addition circuits include the plurality of 2
  • Each calculation result by the two-dimensional convolution calculation circuit and the calculation result held in the two-dimensional convolution calculation result holding unit may be added in the channel direction.
  • the two-dimensional convolution calculation result is added in the channel direction, thereby generating a three-dimensional convolution calculation result.
  • the plurality of adder circuits add the operation results of the plurality of two-dimensional convolution operation circuits in parallel to each other in the channel direction and output the result as a three-dimensional convolution operation result. It may be.
  • the parallelism is improved by further processing the two-dimensional convolution operations related to a plurality of channels in the channel direction.
  • an activation processing circuit that performs a predetermined activation process on the three-dimensional convolution calculation result output from the plurality of addition circuits may be further provided. This brings about the effect
  • a pooling processing circuit that performs a pooling process on the three-dimensional convolution operation results output from the plurality of addition circuits may be further provided.
  • the pooling process may be a process of generating at least one pooling value of a sum, an average, and a maximum value for a plurality of values in the three-dimensional convolution calculation result.
  • the two-dimensional shift register holds (m ⁇ k w + p w ⁇ 1) +1) ⁇ ((k h + p h ⁇ 1) +1) or more of the data
  • a plurality of two-dimensional convolution operation circuit performs the multiplication and (m ⁇ p w ⁇ p h ) multipliers, performing the cumulative addition of the (m ⁇ p w ⁇ p h ) pieces of accumulator
  • the two-dimensional convolution operation having a size of (k w ⁇ k h ) is performed in parallel on the (p w ⁇ p h ) number of the two-dimensional regions, and the pooling processing circuit (p w ⁇ p h ) m of the three-dimensional convolution calculation results may be used as input data to generate the m pooling values.
  • each of the plurality of shift registers of the two-dimensional shift register includes a register connected every (p w ⁇ 1) with respect to the first direction, and the second shift registers are in units of p w .
  • a shift operation in one direction may be performed. This brings about the effect that the shift in parallel in the 2-dimensional shift register by p w pieces units.
  • the feature amount extraction processing of the convolutional layer and the pooling layer in the convolutional neural network may be performed using the data held in the two-dimensional shift register as an input.
  • a data acquisition unit that acquires data to be processed, and an arithmetic processing circuit that performs feature amount extraction processing of a convolution layer and a pooling layer in a convolution neural network using the data as an input
  • a plurality of shift registers arranged in a first direction arranged in a second direction perpendicular to the first direction and sequentially connected to each other.
  • a coefficient memory for storing coefficient data for each of the generated data and a corresponding one of the plurality of selectors.
  • a result obtained by multiplying the data selected by the selector and the coefficient data stored in the coefficient memory is accumulated to calculate a two-dimensional convolution operation result in the two-dimensional region in parallel with each other.
  • a two-dimensional convolution operation circuit and a three-dimensional convolution operation that is provided corresponding to the plurality of two-dimensional convolution operation circuits and adds the respective operation results of the plurality of two-dimensional convolution operation circuits in the channel direction.
  • FIG. 1 is a diagram showing an outline of a convolutional neural network.
  • a convolutional neural network is a type of neural network in which neurons corresponding to the visual cortex are arranged, and features are efficiently extracted by using a convolution operation.
  • the convolutional neural network assumed here obtains an output 90 by repeatedly processing the input image 10 by a plurality of layers.
  • This convolutional neural network is roughly divided into a feature quantity extractor 20 and a discriminator 30.
  • the feature amount extractor 20 is a layer for extracting feature amounts, and a convolution layer 40 that performs convolution with a plurality of kernels and a pooling layer 50 that functions as subsampling and plays an abstraction are alternately arranged.
  • the discriminator 30 is a layer for classification in which one or more fully connected layers 60 function as a classifier in accordance with the output.
  • the convolutional neural network is designed with reference to the visual cortex of the mammalian brain.
  • the primary visual cortex (V1 field) of cats and humans that are mammals is processed close to the Gabor filter (product of Gaussian and sine wave) with orientation selectivity, and the upper layers of V2 and V4 It has been experimentally found that it reacts to high-dimensional figures when going to.
  • filters obtained by learning in the first convolution layer 40 of the convolutional neural network include many simple filters such as an edge detection filter similar to a Gabor filter.
  • a filter is acquired by learning. Since they have a hierarchical structure, a feature extraction function that responds to higher-dimensional graphics can be acquired in deeper layers.
  • FIG. 2 is a diagram showing calculation contents of the convolution layer 40 in the convolution neural network.
  • the data input to the convolution layer 40 is a three-dimensional feature map a (x, y, k) output from the previous layer.
  • x is a horizontal coordinate position
  • y is a vertical coordinate position
  • k is a channel number, each of which is an integer.
  • This feature map a (x, y, k) has the size of the K channel in the channel direction.
  • K is an integer.
  • a convolutional neural network may handle feature maps of 512 channels or more.
  • weighting factors w m (i, j, k) for the output side map m are used.
  • i is a coordinate position in the horizontal direction
  • j is a coordinate position in the vertical direction
  • m is a channel number in the output side map, each of which is an integer.
  • the data output from the convolution layer 40 is a three-dimensional feature map z (x, y, m).
  • m is a channel number and is an integer.
  • This feature map z (x, y, m) has a size of M channel in the channel direction.
  • M is an integer.
  • a convolution operation is performed in which each of the M kinds of weighting factors w m (i, j, k) is convoluted with the feature map a (x, y, k) in the channel direction.
  • This convolution operation corresponds to a three-dimensional filter process using weighting factors w m (i, j, k).
  • the bias b m is added as necessary.
  • the activation function f () is applied as necessary.
  • I is a horizontal size
  • J is a vertical size
  • K is a channel size, each of which is an integer.
  • activation function f () a ramp function (ReLU), a sigmoid function, a hyperbolic tangent function (tanh), or the like is used, but it may not be applied.
  • FIG. 3 is a diagram showing calculation contents of the pooling layer 50 in the convolutional neural network.
  • the data input to the pooling layer 50 is a three-dimensional feature map a (x, y, m) output from the previous layer.
  • x is a horizontal coordinate position
  • y is a vertical coordinate position
  • m is a channel number, each of which is an integer.
  • This feature map a (x, y, m) has a size of M channel in the channel direction. M is an integer.
  • the data output from this pooling layer 50 is a three-dimensional feature map s (i, j, m).
  • i is a coordinate position in the horizontal direction
  • j is a coordinate position in the vertical direction
  • m is a channel number in the output side map, each of which is an integer.
  • This feature map s (i, j, m) has the size of the M channel in the channel direction, similar to the input.
  • the pooling function fp () is applied to the feature map a (x, y, m).
  • pooling function fp () a total value, an average value, a maximum value, or the like is used.
  • FIG. 4 is a diagram showing the calculation contents of the total connection layer 60 in the convolutional neural network.
  • the data input to this all connected layer 60 is a three-dimensional feature map a (x, y, k) output from the previous layer.
  • x is a horizontal coordinate position
  • y is a vertical coordinate position
  • k is a channel number, each of which is an integer.
  • This feature map a (x, y, k) has the size of the K channel in the channel direction.
  • K is an integer.
  • the weighting factor w m (x, y, k) for the output side map m is used.
  • i is a coordinate position in the horizontal direction
  • j is a coordinate position in the vertical direction
  • m is a channel number in the output side map, each of which is an integer.
  • the data output from the total coupling layer 60 is a three-dimensional feature map z (x, y, m).
  • m is a channel number and is an integer.
  • This feature map z (x, y, m) has a size of M channel in the channel direction.
  • M is an integer.
  • a convolution operation is performed in which each of the M kinds of weighting factors w m (x, y, k) is convoluted with the feature map a (x, y, k) in the channel direction. Further, the bias b m is added as necessary. Further, the activation function f () is applied as necessary.
  • X is the size in the horizontal direction
  • Y is the size in the vertical direction
  • K is the size in the channel direction, each of which is an integer.
  • activation function f () a ramp function (ReLU), a sigmoid function, a hyperbolic tangent function (tanh), or the like is used, but it may not be applied.
  • FIG. 5 is a diagram illustrating a configuration example of the image recognition system according to the embodiment of the present technology.
  • This image recognition system includes an image acquisition unit 101, an external memory 102, a memory controller 103, a DMA controller 104, a work memory 105, a control computer 106, and an image recognition processing circuit 200.
  • an image recognition system will be described as an example.
  • the present technology can be applied to general multidimensional data (tensor data) and can be used in a recognition system for data other than images.
  • the image acquisition unit 101 acquires image data to be subjected to image recognition.
  • the image acquisition unit 101 may be an image sensor that photoelectrically converts light from a subject and acquires it as image data, or may be an input unit that acquires image data from another device or a recording medium. .
  • the control computer 106 is a computer that controls the entire image recognition system.
  • the external memory 102 is an external memory of the image recognition system, and is accessed by the control computer 106 or the like.
  • the memory controller 103 is a controller for accessing the external memory 102.
  • the DMA controller 104 is a controller for transferring data between the external memory 102 and the work memory 105 through the bus 107 by DMA (Direct Memory Access).
  • the image recognition processing circuit 200 is a circuit that performs image recognition processing using the image acquired by the image acquisition unit 101 as an input image.
  • the image recognition processing circuit 200 performs feature amount extraction processing of the convolutional layer 40 and the pooling layer 50 in the convolutional neural network, and performs identification processing of all the connection layers 60.
  • the work memory 105 is a memory that holds data necessary for processing in the image recognition processing circuit 200. Specifically, the work memory 105 stores image data to be subjected to image recognition, and feature map that is input and output in each layer, the bias b m and the like.
  • the work memory 105 is an example of a two-dimensional convolution calculation result holding unit described in the claims.
  • FIG. 6 is a diagram illustrating a configuration example of the image recognition processing circuit 200 according to the first embodiment of the present technology.
  • the image recognition processing circuit 200 includes an input buffer 210, a two-dimensional shift register 220, a plurality of two-dimensional convolution arithmetic circuits 230, a plurality of addition circuits 240, a pooling processing circuit 250, and an activation processing circuit 260. And a control circuit 270.
  • the input buffer 210 is a buffer that reads a feature map from the work memory 105 and holds it as input data of the image recognition processing circuit 200.
  • the data held in the input buffer 210 is supplied to the two-dimensional shift register 220.
  • the two-dimensional shift register 220 is a shift register that holds the data supplied from the input buffer 210 in a two-dimensional area.
  • the two-dimensional shift register 220 has a configuration in which a plurality of shift registers arranged in the row direction are sequentially arranged in the column direction. Note that a plurality of shift registers arranged in the column direction may be sequentially connected in the row direction.
  • the two-dimensional shift register 220 includes a plurality of selectors, and supplies data to the two-dimensional convolution operation circuit 230 via the plurality of selectors.
  • the plurality of two-dimensional convolution operation circuits 230 accumulate and add the result obtained by multiplying the data supplied via the selector by the coefficient data, thereby performing the two-dimensional convolution operation in the two-dimensional region of the two-dimensional shift register 220. The results are calculated in parallel with each other.
  • the plurality of two-dimensional convolution operation circuits 230 include a coefficient memory, and read coefficient data necessary for multiplication from the coefficient memory. Each of the plurality of two-dimensional convolution operation circuits 230 performs a two-dimensional convolution operation on two-dimensional regions that are at least partially different from each other in the data held in the two-dimensional shift register.
  • each of the plurality of two-dimensional convolution operation circuits 230 calculates the two-dimensional convolution operation result in the two-dimensional region in parallel with reference to the coordinate positions shifted from each other.
  • the plurality of adder circuits 240 add the respective calculation results from the plurality of two-dimensional convolution operation circuits 230 in the channel direction and output the result as a three-dimensional convolution operation result.
  • the calculation results by the plurality of addition circuits 240 are held in the work memory 105.
  • each of the plurality of addition circuits 240 adds the calculation results held in the work memory 105 and the calculation results by the plurality of two-dimensional convolution calculation circuits 230 in the channel direction. By repeating this operation, each of the plurality of adder circuits 240 outputs a three-dimensional convolution operation result of the entire image.
  • the plurality of addition circuits 240 are also used to add the bias b m held in the work memory 105 to the calculation results by the plurality of two-dimensional convolution calculation circuits 230.
  • the adder circuit 240 is an example of an adder circuit described in the claims.
  • the pooling processing circuit 250 performs a pooling process on the three-dimensional convolution calculation results obtained by the plurality of addition circuits 240.
  • the pooling processing by the pooling processing circuit 250 applies a pooling function to the three-dimensional convolution calculation result.
  • a pooling function as described above, a total value, an average value, a maximum value, or the like is used. In some cases, the pooling layer 50 is not processed by the pooling processing circuit 250, and the convolution layer 40 is continuously processed.
  • the activation processing circuit 260 performs a predetermined activation process (Activation) on the three-dimensional convolution operation results output from the plurality of addition circuits 240.
  • Activation a predetermined activation process
  • a ramp function (ReLU) As the activation processing by the activation processing circuit 260, as described above, a ramp function (ReLU), a sigmoid function, a hyperbolic tangent function (tanh), or the like is used.
  • the output from the activation processing circuit 260 is held in the work memory 105 as a feature map input to the next layer. Note that the activation processing by the activation processing circuit 260 may not be performed, and may be output as a feature map as it is.
  • the control circuit 270 controls each part of the image recognition processing circuit 200.
  • FIG. 7 is a diagram illustrating a configuration example of the two-dimensional shift register 220 and the two-dimensional convolution operation circuit 230 according to the first embodiment of the present technology.
  • the two-dimensional shift register 220 is configured by further arranging one-dimensional shift registers in which registers 221 are arranged in the row direction in the column direction.
  • the shift operation is performed.
  • the pixel arrangement in the image is matched, and it is assumed that the one-dimensional shift register shifts from right to left.
  • the one-dimensional shift register arranged in the row direction is an example of a shift register described in the claims.
  • the two-dimensional shift register 220 configured by arranging these in the column direction is an example of the two-dimensional shift register described in the claims.
  • the register 221 is an example of a register described in the claims.
  • selectors 222 and 223 are provided, respectively.
  • the selector 222 is a selector for selecting one data from three registers arranged in the column direction.
  • the selector 223 is a selector for selecting one data from the three selectors 222 in the row direction. That is, one selector selects one data from nine registers by three selectors 222 and one selector 223.
  • the data used for the convolution operation has a 16-bit width, for example, and the register 221 and the selectors 222 and 223 need to handle the 16-bit width data.
  • the convolution operation of the four regions is performed by the four multipliers 231 and the four cumulative adders 233 of the two-dimensional convolution operation circuit 230.
  • the multiplier 231 multiplies the coefficient data stored in the coefficient memory 232 and the data selected by the selector 223.
  • the coefficient memory 232 is a memory that stores coefficient data (weighting coefficient) for each piece of data held in the two-dimensional shift register 220. Since coefficient data common to the four multipliers 231 can be used, the coefficient memory 232 is shared by the multipliers 231.
  • the accumulator 233 is provided corresponding to each of the multipliers 231.
  • the accumulator 233 accumulates the multiplication results of the multiplier 231 and outputs a two-dimensional convolution operation result.
  • FIG. 8 is a diagram illustrating a first configuration example of the input buffer 210 according to the embodiment of the present technology.
  • the first configuration example of the input buffer 210 includes an input FIFO 211 and a shift register 212.
  • the input FIFO 211 is a memory having a FIFO (First-In First-Out) structure that holds data input to the bottom row of the two-dimensional shift register 220.
  • the input FIFO 211 is composed of at least one stage register.
  • the shift register 212 is a shift register that holds data input to each row except the bottom row of the two-dimensional shift register 220.
  • FIG. 9 is a diagram illustrating a second configuration example of the input buffer 210 according to the embodiment of the present technology.
  • the second configuration example of the input buffer 210 includes an input buffer 213 and an address generation unit 214.
  • the input buffer 213 is a buffer that holds data input to each row of the two-dimensional shift register 220.
  • the data in the input buffer 213 is propagated from the lower row to the upper row as shown in the figure. That is, feature map data required for each row of the two-dimensional shift register 220 is read from the work memory 105 and supplied. Therefore, in the second configuration example of the input buffer 210, the address generation unit 214 generates the storage address of the feature map in the work memory 105. For this reason, control for address generation is required.
  • data supply to the two-dimensional shift register 220 before the start of operation is relatively Can be done fast.
  • the frequency of the shift-in operation after the calculation is started is the same as that in the first configuration example described above.
  • FIG. 10 is a diagram illustrating a configuration example of the selector 224 according to the embodiment of the present technology.
  • three selectors 222 and one selector 223 are used to supply data from the two-dimensional shift register 220 to one multiplier 231.
  • the three selectors 222 and the one selector 223 are represented as selectors 224.
  • the selector 222 is shared by the plurality of selectors 223, the three selectors 222 are not required in proportion to the number of multipliers 231, and the selector 224 is virtual.
  • the selector 224 is an example of a selector described in the claims.
  • the related registers 221 are numbered # 0 to # 8 as shown in the figure.
  • Data output from the register 221 is also numbered D0 to D8.
  • the first of the selectors 222 selects any one of the data D0, D3, and D6.
  • the second of the selectors 222 selects one of the data D1, D4, and D7.
  • the third of the selectors 222 selects one of the data D2, D5, and D8.
  • the selector 223 selects any one of the outputs of the three selectors 222. That is, the selector 224 selects one of nine pieces of data D0 to D8.
  • FIG. 11 is a diagram illustrating a control example of the selector 224 according to the embodiment of the present technology.
  • the selector 222 is supplied with the selection signal “0”, the selector 223 is supplied with the selection signal “0”, and the data D0 is selected. Also, the address “0” is supplied to the coefficient memory 232, and the coefficient data “Coef [0]” is selected. As a result, the output of the accumulator 233 is “D0 ⁇ Coef [0]”. At this time, the valid bit of the output of the accumulator 233 is “L”, that is, invalid as a two-dimensional convolution operation result.
  • the selector 222 is supplied with the selection signal “0”, the selector 223 is supplied with the selection signal “1”, and the data D1 is selected. Also, the address “1” is supplied to the coefficient memory 232, and the coefficient data “Coef [1]” is selected. As a result, the output of the accumulator 233 is “(D0 ⁇ Coef [0]) + (D1 ⁇ Coef [1])”. At this time, the valid bit of the output of the accumulator 233 is “L”, that is, invalid as a two-dimensional convolution operation result.
  • the selection signal “2” and the selection signal “2” are supplied to the selector 222 and the selector 223, respectively, and the data D8 is selected. Further, the address “8” is supplied to the coefficient memory 232, and the coefficient data “Coef [8]” is selected. As a result, the output of the accumulator 233 is “(D0 ⁇ Coef [0]) +... + (D8 ⁇ Coef [8])”. At this time, the effective bit of the output of the accumulator 233 is output as “H”, that is, an effective value as a two-dimensional convolution operation result.
  • FIG. 12 is a diagram illustrating an example of parallel processing between offset regions in the embodiment of the present technology. As described above, assuming one virtual selector 224 for each multiplier 231, data in nine registers 221 are sequentially referred to. Here, an example is shown in which four offset areas of 3 ⁇ 3 pixels shifted by one in each of the horizontal direction and the vertical direction are processed in parallel. The offset regions are partially different from each other as shown in the figure.
  • the two-dimensional convolution operation result cnv_00 is output.
  • a region based on the coordinate position (+0, +1) a two-dimensional convolution calculation result cnv_01 is output.
  • a two-dimensional convolution calculation result cnv_10 is output.
  • a two-dimensional convolution calculation result cnv_11 is output.
  • the selector 224 is virtual, and the selectors 222 in the four selectors 224 shown here are shared with each other.
  • FIG. 13 is a diagram illustrating a timing example of parallel processing between offset areas in the first embodiment of the present technology.
  • the numerical value of the two-dimensional convolution operation circuit 230 represents the number of the register 221 shown in FIG.
  • FIG. 14 is a diagram illustrating an example of control of the selector 224 in the second embodiment of the present technology.
  • the coefficient memory 232 stores a plurality of types of coefficient data.
  • the first cycle to the ninth cycle are the same as those described with reference to FIG.
  • the selector 222 is supplied with the selection signal “0”
  • the selector 223 is supplied with the selection signal “0”
  • the data D0 is selected.
  • the address “9” is supplied to the coefficient memory 232, and the coefficient data “Coef [9]” is selected.
  • the output of the accumulator 233 is “D0 ⁇ Coef [9]”.
  • the valid bit of the output of the accumulator 233 is “L”, that is, invalid as a two-dimensional convolution operation result.
  • the selector 222 is supplied with the selection signal “0”, the selector 223 is supplied with the selection signal “1”, and the data D1 is selected. Further, the address “10” is supplied to the coefficient memory 232, and the coefficient data “Coef [10]” is selected. As a result, the output of the accumulator 233 is “(D0 ⁇ Coef [9]) + (D1 ⁇ Coef [10])”. At this time, the valid bit of the output of the accumulator 233 is “L”, that is, invalid as a two-dimensional convolution operation result.
  • the selection signal “3” and the selection signal “2” are supplied to the selector 222 and the selector 223, respectively, and the data D8 is selected.
  • the address “17” is supplied to the coefficient memory 232, and the coefficient data “Coef [17]” is selected.
  • the output of the accumulator 233 is “(D0 ⁇ Coef [9]) +... + (D8 ⁇ Coef [17])”.
  • the effective bit of the output of the accumulator 233 is output as “H”, that is, an effective value as a two-dimensional convolution operation result.
  • FIG. 15 is a diagram illustrating a timing example of parallel processing between offset regions in the control of the selector 224 according to the second embodiment of the present technology.
  • the numerical value of the two-dimensional convolution operation circuit 230 represents the number of the register 221 shown in FIG.
  • each of the four two-dimensional convolution arithmetic circuits 230 nine pieces of data are sequentially selected as described above, and multiplication and accumulation are performed. Thereafter, the read-in operation from the coefficient memory 232 is continuously changed without replacing the data held in the two-dimensional shift register 220 without performing the shift-in operation. Thereby, in each of the four two-dimensional convolution arithmetic circuits 230, nine pieces of data are sequentially selected, and multiplication and accumulation are performed. Thereafter, a shift-in operation is performed and the same processing is repeated.
  • a new coefficient convolution operation is performed continuously without shifting in new data.
  • the number of shift-in operations can be reduced and the overall power consumption can be reduced.
  • the coefficient memory 232 stores a plurality of types of coefficient data.
  • FIG. 16 is a diagram illustrating an example of a two-dimensional convolution operation according to the third embodiment of the present technology.
  • a two-dimensional convolution calculation result cnv0_00 is output for an area based on the coordinate position (+0, +0).
  • a two-dimensional convolution operation result cnv0_01 is output.
  • a two-dimensional convolution calculation result cnv0_10 is output.
  • a two-dimensional convolution operation result cnv0_11 is output.
  • the two-dimensional convolution calculation result cnv1_00 is output for the region based on the coordinate position (3, 0).
  • the region based on the coordinate position (3, 1) the two-dimensional convolution calculation result cnv1_01 is output.
  • the two-dimensional convolution calculation result cnv1_10 is output.
  • the two-dimensional convolution operation result cnv1_11 is output.
  • two-dimensional convolution operation is carried out simultaneously for p w ⁇ p h number of different pixel positions, M ⁇ p w ⁇ p h pieces of convolution results.
  • the calculation of the pooling values is performed using the M ⁇ p w ⁇ p h pieces of convolution operation result as inputs.
  • (M ⁇ k w + p w ⁇ 1) ⁇ (k h + p h ⁇ 1) registers 221, M ⁇ p w ⁇ p h multipliers 231, and M ⁇ p w ⁇ is a p h number of accumulator 233.
  • FIG. 17 is a diagram illustrating a timing example of parallel processing in the two-dimensional convolution operation according to the third embodiment of the present technology.
  • the numerical value of the two-dimensional convolution operation circuit 230 represents the number of the register 221 shown in FIG.
  • each of the eight two-dimensional convolution arithmetic circuits 230 nine pieces of data are sequentially selected as described above, and multiplication and accumulation are performed. At this time, different coefficient data is used between the four regions added in the third embodiment and the four regions in the first embodiment.
  • a two-dimensional convolution operation is simultaneously performed for four regions, which are partially different from each other, for one weighting factor.
  • a plurality of regions are used. Process them in parallel. As a result, the degree of parallelism is further improved for the two-dimensional convolution operation of one weight coefficient, and the overall processing is speeded up.
  • the system configuration in the fourth embodiment is the same as that in the first embodiment described above, and a detailed description thereof is omitted.
  • FIG. 18 is a diagram illustrating a configuration example of a main part of the image recognition processing circuit 200 according to the fourth embodiment of the present technology. Note that the input buffer 210, the pooling processing circuit 250, the activation processing circuit 260, and the control circuit 270 are the same as those in the first embodiment described above, and are not shown in the figure.
  • the image recognition processing circuit 200 in the fourth embodiment includes a plurality of sets (four sets in this example) of four two-dimensional convolution arithmetic circuits 230 for four regions.
  • the four areas in the same set are partly different and partly overlapped.
  • different sets do not need to overlap because they are convolutionally calculated independently.
  • the addition results by the four adders 234 are supplied to the four adder circuits 240, respectively.
  • These four adder circuits 240 are the same as those in the first embodiment described above, and are adders that mainly perform addition in the channel direction.
  • FIG. 19 is a diagram illustrating a configuration example of the two-dimensional shift register 220 and the two-dimensional convolution operation circuit 230 according to the fourth embodiment of the present technology.
  • each register 221 is numbered, and hereinafter this number is referred to as a coordinate position.
  • the two-dimensional convolution calculation result cnv00_00 is output for the region based on the coordinate position “0”.
  • a two-dimensional convolution calculation result cnv00_10 is output for the region based on the coordinate position “1”.
  • the two-dimensional convolution calculation result cnv00_01 is output.
  • the two-dimensional convolution calculation result cnv00 — 11 is output.
  • the two-dimensional convolution calculation result cnv01_00 is output.
  • the two-dimensional convolution calculation result cnv01_10 is output.
  • the two-dimensional convolution calculation result cnv01_01 is output.
  • the two-dimensional convolution calculation result cnv01_11 is output.
  • the two-dimensional convolution calculation result cnv10_00 is output.
  • the two-dimensional convolution calculation result cnv10_10 is output.
  • the two-dimensional convolution calculation result cnv10_01 is output.
  • the two-dimensional convolution calculation result cnv10_11 is output.
  • the two-dimensional convolution calculation result cnv11_00 is output.
  • the two-dimensional convolution calculation result cnv11_10 is output.
  • the two-dimensional convolution calculation result cnv11_01 is output.
  • the two-dimensional convolution calculation result cnv11_11 is output.
  • the adder 234 generates an addition value between corresponding coordinate positions of each set. That is, the addition value of the two-dimensional convolution calculation results cnv00_00, cnv01_00, cnv10_00, and cnv11_00 is output as the two-dimensional convolution calculation result cnv_00 of the region with the coordinate position (+0, +0) as a reference. In addition, the addition value of the two-dimensional convolution calculation results cnv00_01, cnv01_01, cnv10_01, and cnv11_01 is output as the two-dimensional convolution calculation result cnv_01 of the region with reference to the coordinate position (+0, +1).
  • the addition value of the two-dimensional convolution calculation results cnv00_10, cnv01_10, cnv10_10, and cnv11_10 is output as the two-dimensional convolution calculation result cnv_10 of the region with the coordinate position (+1, +0) as a reference.
  • the added value of the two-dimensional convolution calculation results cnv00_11, cnv01_11, cnv10_11, and cnv11_11 is output as the two-dimensional convolution calculation result cnv_11 of the region with the coordinate position (+1, +1) as a reference.
  • 3 ⁇ 3 pixels are used as a basic unit, and the total sum of the four outputs is calculated for each coordinate position (+0, +0), (+0, +1), (+1, +0), (+1, +1). is doing.
  • a 6 ⁇ 6 pixel convolution operation is performed for each coordinate position.
  • 5 ⁇ 5 pixels or 4 having a size smaller than 6 ⁇ 6 pixels. It is also possible to perform x4 pixel convolution.
  • FIG. 20 is a diagram illustrating a configuration example of a main part of the image recognition processing circuit 200 according to the fifth embodiment of the present technology. Note that the pooling processing circuit 250, the activation processing circuit 260, and the control circuit 270 are the same as those in the first embodiment described above, and are omitted in the figure. Although not shown, the input buffer 210 is provided with an independent input buffer 210 for each channel, and data is input for each channel, and the data is supplied to the independent two-dimensional shift register 220.
  • the image recognition processing circuit 200 includes four two-dimensional convolution arithmetic circuits 230 for one region for a plurality of channels (in this example, for four channels).
  • simultaneous operation for four channels is possible with respect to the reference coordinate positions (+0, +0), (+1, +0), (+0, +1), and (+1, +1).
  • FIG. 21 is a diagram illustrating a configuration example of the two-dimensional shift register 220 and the two-dimensional convolution operation circuit 230 according to the fifth embodiment of the present technology.
  • the two-dimensional convolution calculation result cnv0_00 is output for the region based on the coordinate position (+0, +0).
  • a two-dimensional convolution operation result cnv0_01 is output.
  • a two-dimensional convolution calculation result cnv0_10 is output.
  • a two-dimensional convolution operation result cnv0_11 is output.
  • the two-dimensional convolution calculation result cnv1_00 is output for the region based on the coordinate position (+0, +0).
  • a two-dimensional convolution operation result cnv1_01 is output.
  • a two-dimensional convolution calculation result cnv1_10 is output.
  • a two-dimensional convolution calculation result cnv1_11 is output.
  • the two-dimensional convolution calculation result cnv2_00 is output for the region based on the coordinate position (+0, +0).
  • a two-dimensional convolution operation result cnv2_01 is output.
  • the two-dimensional convolution calculation result cnv2_10 is output.
  • a two-dimensional convolution operation result cnv2_11 is output.
  • the two-dimensional convolution calculation result cnv3_00 is output for the region based on the coordinate position (+0, +0).
  • a two-dimensional convolution calculation result cnv3_01 is output.
  • a two-dimensional convolution operation result cnv3_10 is output.
  • a two-dimensional convolution calculation result cnv3_11 is output.
  • the adder 241 generates an addition value between corresponding coordinate positions of each channel. That is, the addition value of the two-dimensional convolution calculation results cnv0_00, cnv1_00, cnv2_00, and cnv3_00 is output as the two-dimensional convolution calculation result cnv_00 of the region with the coordinate position (+0, +0) as a reference. In addition, the addition value of the two-dimensional convolution calculation results cnv0_01, cnv1_01, cnv2_01, and cnv3_01 is output as the two-dimensional convolution calculation result cnv_01 of the region with the coordinate position (+0, +1) as a reference.
  • the addition value of the two-dimensional convolution calculation results cnv0_10, cnv1_10, cnv2_10, and cnv3_10 is output as the two-dimensional convolution calculation result cnv_10 of the region with the coordinate position (+1, +0) as a reference.
  • the added value of the two-dimensional convolution calculation results cnv0_11, cnv1_11, cnv2_11, and cnv3_11 is output as the two-dimensional convolution calculation result cnv_11 of the region with reference to the coordinate position (+1, +1).
  • the addition by the adder 241 may be performed for all channels or a part of channels. When processing is performed in parallel for all channels, saving and reading to the work memory 105 are not necessary.
  • the adder 241 adds a part of the channels, and the remaining channels are sequentially added in the channel direction by the adder circuit 240 in the same manner as in the above-described embodiment to generate a three-dimensional convolution calculation result. May be. Even in this case, since processing can be performed for each of a plurality of channels, the number of accesses to the work memory 105 can be reduced as compared with the case where parallel processing is not performed. Therefore, the required memory bandwidth can be reduced.
  • two-dimensional convolution operations related to a plurality of channels are further processed in parallel in the channel direction, thereby improving the degree of parallelism and increasing the overall processing speed. be able to.
  • the processing procedure described in the above embodiment may be regarded as a method having a series of these procedures, and a program for causing a computer to execute these series of procedures or a recording medium storing the program. You may catch it.
  • a recording medium for example, a CD (Compact Disc), an MD (MiniDisc), a DVD (Digital Versatile Disc), a memory card, a Blu-ray disc (Blu-ray (registered trademark) Disc), or the like can be used.
  • this technique can also take the following structures.
  • a plurality of selectors for sequentially selecting each of the data in a predetermined two-dimensional region at least partially different from each other of the data held in the two-dimensional shift register;
  • a coefficient memory for storing coefficient data for each of the data held in the two-dimensional shift register;
  • a result obtained by multiplying the data selected corresponding to each of the plurality of selectors and selected by the selector and the coefficient data stored in the coefficient memory is cumulatively added in the two-dimensional region.
  • a plurality of two-dimensional convolution operation circuits for calculating two-dimensional convolution operation results in parallel with each other;
  • a plurality of adder circuits provided corresponding to the plurality of two-dimensional convolution operation circuits and adding the respective operation results of the plurality of two-dimensional convolution operation circuits in the channel direction and outputting the result as a three-dimensional convolution operation result
  • An arithmetic processing circuit comprising: (2) The coefficient memory stores a plurality of types of coefficient data, Each of the plurality of two-dimensional convolution arithmetic circuits includes the data selected by the plurality of selectors and the coefficients of the plurality of types in succession without replacing the data held in the two-dimensional shift register.
  • the arithmetic processing circuit according to (1) wherein the two-dimensional convolution operation with data is performed.
  • the coefficient memory stores a plurality of types of coefficient data
  • the arithmetic processing circuit according to (1) wherein each of the plurality of two-dimensional convolution arithmetic circuits performs the two-dimensional convolution operation on the coefficient data of the plurality of types in parallel.
  • Each of the plurality of two-dimensional convolution operation circuits further performs the two-dimensional convolution operation in parallel on the data in different two-dimensional regions among the data held in the two-dimensional shift register.
  • the arithmetic processing circuit according to any one of 1) to (3).
  • (5) further comprising a two-dimensional convolution calculation result holding unit for holding each calculation result by the plurality of two-dimensional convolution calculation circuits;
  • the plurality of addition circuits add each calculation result of the plurality of two-dimensional convolution calculation circuits and the calculation result held in the two-dimensional convolution calculation result holding unit in the channel direction (1) To 4.
  • the plurality of addition circuits add the calculation results of the plurality of two-dimensional convolution operation circuits in parallel to each other in the channel direction and output the result as a three-dimensional convolution operation result (4) to (4)
  • the arithmetic processing circuit according to any one of the above.
  • the two-dimensional shift register holds (m ⁇ k w + p w ⁇ 1) +1) ⁇ ((k h + p h ⁇ 1) +1) or more of the data,
  • the plurality of two-dimensional convolution operation circuit and said multiplier performing (m ⁇ p w ⁇ p h ) multipliers, performs the cumulative addition (m ⁇ p w ⁇ p h ) pieces of the accumulator And performing the two-dimensional convolution operation of the size of (k w ⁇ k h ) on the (p w ⁇ p h ) number of the two-dimensional regions in parallel
  • the pooling processing circuit generates m pooling values using (m ⁇ p w ⁇ p h ) number of the three-dimensional convolution calculation results as input data,
  • the calculation processing according to (8) or (9) circuit.
  • Each of the plurality of shift registers of the two-dimensional shift register includes a register connected every (p w ⁇ 1) in the first direction, and the first shift unit in units of p w
  • a recognition system comprising an arithmetic processing circuit for performing feature amount extraction processing of a convolution layer and a pooling layer in a convolution neural network using the data as an input
  • the arithmetic processing circuit is: A two-dimensional shift register in which a plurality of shift registers arranged in a first direction are arranged side by side in a second direction perpendicular to the first direction and sequentially connected; A plurality of selectors for sequentially selecting each of the data in a predetermined two-dimensional region at least partially different from each other of the data held in the two-dimensional shift register; A coefficient memory for storing coefficient data for each of the data held in the two-dimensional shift register; A result obtained by multiplying the data selected corresponding to each of the plurality of selectors and selected by the selector and the coefficient data stored in the coefficient memory is cumulatively added in the two-dimensional region.
  • a plurality of two-dimensional convolution operation circuits for calculating two-dimensional convolution operation results in parallel with each other;
  • a plurality of adder circuits provided corresponding to the plurality of two-dimensional convolution operation circuits and adding the respective operation results of the plurality of two-dimensional convolution operation circuits in the channel direction and outputting the result as a three-dimensional convolution operation result
  • a pooling processing circuit that performs a pooling process on the three-dimensional convolution operation results output from the plurality of addition circuits;
  • the output feature amount is again the two-dimensional A recognition system that repeats an operation of holding a shift register to perform processing in the arithmetic processing circuit and outputting the three-dimensional convolution operation result as a new feature amount.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Databases & Information Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行う。 複数の選択器の各々は、2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域におけるデータをそれぞれ順次選択する。複数の2次元畳込み演算回路の各々は、対応する選択器によって選択されたデータと係数メモリに記憶されている係数データとを乗算した結果を累加算して、2次元領域における2次元畳込み演算結果を互いに並列に算出する。複数の加算回路の各々は、2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する。

Description

演算処理回路および認識システム
 本技術は、演算処理回路に関する。詳しくは、畳込み演算を行う演算処理回路、および、その演算処理回路を用いてデータの認識を行う認識システムに関する。
 複数の処理層が階層的に接続されたニューラルネットワークの一つとして、畳込みニューラルネットワーク(CNN:Convolutional Neural Network)が注目されている。この畳込みニューラルネットワークは、複数のカーネルによる畳込みを行う畳込み層と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層と、出力層に近い層に配置されて出力に合わせた分類器として機能する全結合層とから構成される。この畳込みニューラルネットワークにおける畳込み演算を高速に実行するために、複数の演算器を並列に動作させる装置が提案されている。例えば、列方向にずれた位置の畳込み演算を複数の積和演算器によって並列に実行する装置が提案されている(例えば、特許文献1参照。)。また、2つのシストリックアレイを接続して、互いに異なる位置のデータの畳込み演算処理を並列に実行する装置が提案されている(例えば、特許文献2参照。)。
特開2010-134697号公報 特開2015-210709号公報
 上述の従来技術では、複数の畳込み演算を並列に実行することにより、畳込みニューラルネットワークにおける演算処理の高速化を図っている。しかしながら、並列演算の対象を列方向のみに限定し、または、互いに異なる位置のみに限定すると、十分な並列性を確保することが困難になるおそれがある。
 本技術はこのような状況に鑑みて生み出されたものであり、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、上記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、上記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路とを具備する演算処理回路である。これにより、2次元シフトレジスタから複数の選択器を介して複数の2次元畳込み演算回路に同時にデータを供給して、2次元畳込み演算結果を互いに並列に算出させるという作用をもたらす。
 また、この第1の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の2次元畳込み演算回路の各々は、上記2次元シフトレジスタに保持された上記データを入れ替えることなく連続して上記複数の選択器によって選択された上記データと上記複数の種類の上記係数データとの上記2次元畳込み演算を行うようにしてもよい。これにより、2次元シフトレジスタにおいて新しいデータをシフトインせずに連続して新たな係数の畳込み演算を行って、シフトイン動作の回数を抑制させるという作用をもたらす。
 また、この第1の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の2次元畳込み演算回路の各々は、上記2次元畳込み演算を上記複数の種類の上記係数データについて並列に行うようにしてもよい。これにより、異なる種類の係数の畳込み演算を同時に行うことにより、並列度を向上させるという作用をもたらす。
 また、この第1の側面において、上記複数の2次元畳込み演算回路の各々は、上記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における上記データについて上記2次元畳込み演算をさらに並列に行うようにしてもよい。これにより、互いに異なる複数の2次元領域同士をさらに並列処理することにより、並列度を向上させるという作用をもたらす。
 また、この第1の側面において、上記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、上記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と上記2次元畳込み演算結果保持部に保持されている演算結果とを上記チャネル方向に加算するようにしてもよい。これにより、2次元畳込み演算結果をチャネル方向に加算して3次元畳込み演算結果を生成するという作用をもたらす。
 また、この第1の側面において、上記複数の加算回路は、上記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力するようにしてもよい。これにより、複数チャネルに関する2次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させるという作用をもたらす。
 また、この第1の側面において、上記複数の加算回路から出力された上記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備してもよい。これにより、畳込み層の演算に必要な活性化処理をさせるという作用をもたらす。
 また、この第1の側面において、上記複数の加算回路から出力された上記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備してもよい。これにより、プーリング層の演算に必要なプーリング処理をさせるという作用をもたらす。この場合において、上記プーリング処理は、上記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理であってもよい。
 また、この第1の側面において、上記2次元シフトレジスタは、(m×k+p-1)+1)×((k+p-1)+1)個以上の上記データを保持し、上記複数の2次元畳込み演算回路は、上記乗算を行う(m×p×p)個の乗算器と、上記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの上記2次元畳込み演算を、(p×p)個の上記2次元領域に対して並列に行い、上記プーリング処理回路は、(m×p×p)個の上記3次元畳込み演算結果を入力データとしてm個の上記プーリング値を生成してもよい。但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。これにより、(m×p×p)個の乗算器により(k×k)のサイズの上記2次元畳込み演算を、(p×p)個の上記2次元領域に対して並列に処理させるという作用をもたらす。この場合において、上記2次元シフトレジスタの上記複数のシフトレジスタは、各々が上記第一の方向に対して(p-1)個おきに結線されたレジスタからなり、p個単位で上記第一の方向へのシフト動作を行うようにしてもよい。これにより、2次元シフトレジスタにおいてp個単位で並列にシフトさせるという作用をもたらす。
 また、この第1の側面において、上記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行うようにしてもよい。
 また、本技術の第2の側面は、処理対象となるデータを取得するデータ取得部と、上記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路とを具備する認識システムであって、上記演算処理回路は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、上記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、上記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、上記複数の加算回路から出力された上記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、上記データを上記2次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記3次元畳込み演算結果を上記データの特徴量として出力した後、出力された上記特徴量を再び上記2次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システムである。これにより、2次元シフトレジスタから複数の選択器を介して複数の2次元畳込み演算回路に同時にデータを供給して、2次元畳込み演算結果を互いに並列に算出させて、3次元畳込み演算結果を新たな特徴量として出力させるという作用をもたらす。
 本技術によれば、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
畳込みニューラルネットワークの概要を示す図である。 畳込みニューラルネットワークにおける畳込み層40の演算内容を示す図である。 畳込みニューラルネットワークにおけるプーリング層50の演算内容を示す図である。 畳込みニューラルネットワークにおける全結合層60の演算内容を示す図である。 本技術の実施の形態における画像認識システムの構成例を示す図である。 本技術の第1の実施の形態における画像認識処理回路200の構成例を示す図である。 本技術の第1の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。 本技術の実施の形態における入力バッファ210の第1の構成例を示す図である。 本技術の実施の形態における入力バッファ210の第2の構成例を示す図である。 本技術の実施の形態におけるセレクタ224の構成例を示す図である。 本技術の実施の形態におけるセレクタ224の制御例を示す図である。 本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。 本技術の第1の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。 本技術の第2の実施の形態におけるセレクタ224の制御の例を示す図である。 本技術の第2の実施の形態のセレクタ224の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。 本技術の第3の実施の形態における2次元畳込み演算の例を示す図である。 本技術の第3の実施の形態の2次元畳込み演算における並列処理のタイミング例を示す図である。 本技術の第4の実施の形態における画像認識処理回路200の要部の構成例を示す図である。 本技術の第4の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。 本技術の第5の実施の形態における画像認識処理回路200の要部の構成例を示す図である。 本技術の第5の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.畳込みニューラルネットワーク
 2.第1の実施の形態(オフセット領域同士を並列処理する例)
 3.第2の実施の形態(複数の異なる係数の畳込み演算を連続して行う例)
 4.第3の実施の形態(複数の異なる係数の畳込み演算を同時に行う例)
 5.第4の実施の形態(複数領域同士をさらに並列処理する例)
 6.第5の実施の形態(チャネル方向にさらに並列処理する例)
 <1.畳込みニューラルネットワーク>
 図1は、畳込みニューラルネットワークの概要を示す図である。畳込みニューラルネットワークは、それぞれ視覚野と対応するニューロンが配置されたニューラルネットワークの一種であり、畳込み演算を利用することにより特徴量の抽出を効率的に行うものである。ここで想定する畳込みニューラルネットワークは、入力画像10に対して複数の層による処理を繰り返して出力90を得る。
 この畳込みニューラルネットワークは、特徴量抽出器20と、識別器30とに大別される。特徴量抽出器20は、特徴量を抽出するための層であり、複数のカーネルによる畳込みを行う畳込み層40と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層50とが交互に繰り返される。識別器30は、出力に合わせた分類器として機能する全結合層60が1つ以上続く分類のための層である。
 畳込みニューラルネットワークは、哺乳類の脳の視覚野を参考にして設計されている。例えば、哺乳類である猫や人間の一次視覚野(V1野)は、方位選択性のあるガボールフィルタ(ガウシアンと正弦波の積)に近い処理がされており、V2野、V4野と上位の階層にいくと高次元の図形に反応することが実験により判明している。
 畳込みニューラルネットワークの一段目の畳込み層40において学習で獲得されるフィルタも、ガボールフィルタに似たエッジ検出フィルタのような単純なフィルタが多いことが分かっており、後段へ行くに従ってより複雑なフィルタが学習で獲得される。それらが階層構造になっていることにより、深い層ではより高次元の図形に反応する特徴量抽出機能が獲得できるようになる。
 昨今、ディープラーニング(Deep Learning:深層学習)としてニューラルネットワークの復活が議論されている。これは、ネットワークの層を深くすることによって、識別器だけでなく特徴量抽出も同時に学習することができるからである。また、ブースティング(Boosting)などの既存の認識器よりもよい性能を出すネットワークの学習が、大量のデータセットを用意するだけで可能であることが明らかになったからである。
 図2は、畳込みニューラルネットワークにおける畳込み層40の演算内容を示す図である。
 この畳込み層40に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,k)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、kはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,k)は、チャネル方向にKチャネルのサイズを有する。なお、Kは整数である。畳込みニューラルネットワークでは、512チャネル以上の特徴マップを扱う場合もある。
 この畳込み層40では、出力側マップmに対する重み係数w(i,j,k)が用いられる。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。
 この畳込み層40から出力されるデータは、3次元の特徴マップz(x,y,m)である。ここで、mはチャネル番号であり、整数である。この特徴マップz(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
 この畳込み層40では、チャネル方向にM種類の重み係数w(i,j,k)のそれぞれを、特徴マップa(x,y,k)に対して畳み込む畳込み演算が行われる。この畳込み演算は、重み係数w(i,j,k)による3次元のフィルタ処理に相当する。また、必要に応じてバイアスbが加算される。また、必要に応じて活性化関数f()が適用される。これらを式に表すと次式のようになる。
  u(x,y,m)=b+Σk=0…K-1Σj=0…J-1Σi=0…I-1
           (w(i,j,k)×a(x+i,y+j,k))
  z(x,y,m)=f(u(x,y,m))
なお、Iは水平方向のサイズ、Jは垂直方向のサイズ、Kはチャネル方向のサイズであり、それぞれ整数である。同図の例では、5×5×5(I=J=K=5)のサイズの場合を示している。
 なお、活性化関数f()としては、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられるが、適用されない場合もある。
 図3は、畳込みニューラルネットワークにおけるプーリング層50の演算内容を示す図である。
 このプーリング層50に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,m)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、mはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
 このプーリング層50から出力されるデータは、3次元の特徴マップs(i,j,m)である。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。この特徴マップs(i,j,m)は、入力と同様に、チャネル方向にMチャネルのサイズを有する。
 このプーリング層50では、特徴マップa(x,y,m)に対してプーリング関数fp()が適用される。このプーリング層50における処理を式に表すと次式のようになる。
  s(i,j,m)=fp(a(2×i,  2×j,  m),
              a(2×i+1,2×j,  m),
              a(2×i,  2×j+1,m),
              a(2×i+1,2×j+1,m))
 なお、プーリング関数fp()としては、合計値、平均値、最大値などが用いられる。
 図4は、畳込みニューラルネットワークにおける全結合層60の演算内容を示す図である。
 この全結合層60に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,k)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、kはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,k)は、チャネル方向にKチャネルのサイズを有する。なお、Kは整数である。
 この全結合層60では、出力側マップmに対する重み係数w(x,y,k)が用いられる。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。
 この全結合層60から出力されるデータは、3次元の特徴マップz(x,y,m)である。ここで、mはチャネル番号であり、整数である。この特徴マップz(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
 この全結合層60では、チャネル方向にM種類の重み係数w(x,y,k)のそれぞれを、特徴マップa(x,y,k)に対して畳み込む畳込み演算が行われる。また、必要に応じてバイアスbが加算される。また、必要に応じて活性化関数f()が適用される。これらを式に表すと次式のようになる。
  u(m)=b+Σk=0…K-1Σy=0…Y-1Σx=0…X-1
           (w(x,y,k)×a(x,y,k))
  z(m)=f(u(m))
なお、Xは水平方向のサイズ、Yは垂直方向のサイズ、Kはチャネル方向のサイズであり、それぞれ整数である。同図の例では、5×5×5(X=Y=K=5)のサイズの場合を示している。
 なお、活性化関数f()としては、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられるが、適用されない場合もある。
 <2.第1の実施の形態>
 [画像認識システム]
 図5は、本技術の実施の形態における画像認識システムの構成例を示す図である。この画像認識システムは、画像取得部101と、外部メモリ102と、メモリコントローラ103と、DMAコントローラ104と、ワークメモリ105と、制御コンピュータ106と、画像認識処理回路200とを備える。なお、この実施の形態では一例として画像認識システムについて説明するが、本技術は多次元データ全般(テンソルデータ)に適用可能であり、画像以外のデータに対する認識システムに利用することができる。
 画像取得部101は、画像認識の対象となる画像データを取得するものである。この画像取得部101は、被写体からの光を光電変換して画像データとして取得する画像センサであってもよく、また、他の装置や記録媒体から画像データを取得する入力部であってもよい。
 制御コンピュータ106は、この画像認識システムの全体を制御するコンピュータである。外部メモリ102は、この画像認識システムの外部メモリであり、制御コンピュータ106などによってアクセスされる。メモリコントローラ103は、外部メモリ102にアクセスするためのコントローラである。DMAコントローラ104は、バス107を介して外部メモリ102とワークメモリ105との間で、DMA(Direct Memory Access)によりデータを転送するためのコントローラである。
 画像認識処理回路200は、画像取得部101によって取得された画像を入力画像として、画像認識処理を行う回路である。この画像認識処理回路200は、畳込みニューラルネットワークにおける畳込み層40およびプーリング層50の特徴量抽出処理を行い、全結合層60の識別処理を行う。
 ワークメモリ105は、画像認識処理回路200における処理に必要なデータを保持するメモリである。具体的には、このワークメモリ105は、画像認識の対象となる画像データ、各層において入出力される特徴マップや、バイアスbなどを保持する。なお、ワークメモリ105は、特許請求の範囲に記載の2次元畳込み演算結果保持部の一例である。
 [画像認識処理回路]
 図6は、本技術の第1の実施の形態における画像認識処理回路200の構成例を示す図である。この画像認識処理回路200は、入力バッファ210と、2次元シフトレジスタ220と、複数の2次元畳込み演算回路230と、複数の加算回路240と、プーリング処理回路250と、活性化処理回路260と、制御回路270とを備える。
 入力バッファ210は、ワークメモリ105から特徴マップを読み出して画像認識処理回路200の入力データとして保持するバッファである。この入力バッファ210に保持されたデータは、2次元シフトレジスタ220に供給される。
 2次元シフトレジスタ220は、入力バッファ210から供給されたデータを2次元の領域に保持するシフトレジスタである。この2次元シフトレジスタ220は、行方向に配置された複数のシフトレジスタを、列方向に並べて順次接続した構成を備える。なお、列方向に配置された複数のシフトレジスタを、行方向に並べて順次接続するようにしてもよい。この2次元シフトレジスタ220は、後述するように、複数の選択器を備えており、これら複数の選択器を介して2次元畳込み演算回路230にデータを供給する。
 複数の2次元畳込み演算回路230は、選択器を介して供給されたデータに対して係数データを乗算した結果を累加算して、2次元シフトレジスタ220の2次元領域における2次元畳込み演算結果を、互いに並列に算出するものである。これら複数の2次元畳込み演算回路230は、係数メモリを備え、乗算に必要な係数データをこの係数メモリから読み出す。複数の2次元畳込み演算回路230の各々は、2次元シフトレジスタに保持されたデータのうち、互いに少なくとも一部が異なる2次元領域について2次元畳込み演算を行う。この例では、座標位置(+0,+0)を基準として、水平方向に1つずれた座標位置(+1,+0)、垂直方向に1つずれた座標位置(+0,+1)、水平方向および垂直方向にそれぞれ1つずれた座標位置(+1,+1)の4つの領域(オフセット領域)を想定する。そして、これら互いにずれた座標位置を基準として、複数の2次元畳込み演算回路230の各々は、2次元領域における2次元畳込み演算結果を並列に算出する。
 複数の加算回路240は、複数の2次元畳込み演算回路230によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力するものである。これら複数の加算回路240による演算結果は、ワークメモリ105に保持される。そして、複数の加算回路240の各々は、ワークメモリ105に保持されている演算結果と、複数の2次元畳込み演算回路230による演算結果とをチャネル方向に加算する。その動作を繰り返すことにより、複数の加算回路240の各々は、画像全体の3次元畳込み演算結果を出力する。また、複数の加算回路240は、ワークメモリ105に保持されているバイアスbを、複数の2次元畳込み演算回路230による演算結果に加算するためにも用いられる。なお、加算回路240は、特許請求の範囲に記載の加算回路の一例である。
 プーリング処理回路250は、複数の加算回路240による3次元畳込み演算結果に対してプーリング処理を行うものである。このプーリング処理回路250によるプーリング処理は、3次元畳込み演算結果に対してプーリング関数を適用するものである。プーリング関数としては、上述のように、合計値、平均値、最大値などが用いられる。なお、このプーリング処理回路250によるプーリング層50の処理が行われずに、畳込み層40の処理が連続する場合もある。
 活性化処理回路260は、複数の加算回路240から出力された3次元畳込み演算結果に対して所定の活性化処理(Activation)を行うものである。この活性化処理回路260による活性化処理としては、上述のように、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられる。この活性化処理回路260による出力は、次層に入力される特徴マップとしてワークメモリ105に保持される。なお、この活性化処理回路260による活性化処理が行われずに、そのまま特徴マップとして出力される場合もある。
 制御回路270は、画像認識処理回路200の各部を制御するものである。
 [2次元畳込み演算回路]
 図7は、本技術の第1の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
 ここでは、k×kのカーネルサイズの同じ重み係数の2次元フィルタを同時に畳込み演算することを想定する。すなわち、上述の重み係数w(i,j,k)の種類は1つ(M=1)である。また、2次元の畳込み演算は、画素位置の異なるp×p個について同時に行われる。その結果、p×p個の畳込み演算結果が得られ、そのp×p個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、(k+p-1)×(k+p-1)個のレジスタ221、p×p個の乗算器231、および、p×p個の累加算器233である。以下では、k=k=3、p=p=2とした例について説明する。
 2次元シフトレジスタ220は、レジスタ221を行方向に配置した1次元シフトレジスタを、さらに列方向に並べて構成される。1次元シフトレジスタにおけるレジスタ221は、(p-1)個(=1個)おきに(すなわち、p個先と)結線されており、p個(=2個)単位で行方向へのシフト動作を行う。なお、この例では、画像における画素の配置と合致させており、これにより、1次元シフトレジスタにおいては右から左にシフトすることを想定している。なお、行方向に配置した1次元シフトレジスタは、特許請求の範囲に記載のシフトレジスタの一例である。これらを列方向に並べて構成された2次元シフトレジスタ220は、特許請求の範囲に記載の2次元シフトレジスタの一例である。また、レジスタ221は、特許請求の範囲に記載のレジスタの一例である。
 この例では、k×k画素(3×3画素)の2次元フィルタをp×p(=2×2)の4つの領域に対して同時に畳込み演算することを想定する。ここで、4つの領域とは、上述の、座標位置(+0,+0)、水平方向に1つずれた座標位置(+1,+0)、垂直方向に1つずれた座標位置(+0,+1)、水平方向および垂直方向にそれぞれ1つずれた座標位置(+1,+1)の各々を基準とした4つの領域である。
 4つの領域の各々の畳込み演算に必要なデータを参照するために、それぞれセレクタ222および223が設けられる。セレクタ222は、列方向に配置された3つのレジスタから1つのデータを選択するためのセレクタである。セレクタ223は、行方向の3つのセレクタ222から1つのデータを選択するためのセレクタである。すなわち、3つのセレクタ222と1つのセレクタ223とによって、9つのレジスタから1つのデータを選択する構成になっている。なお、畳込み演算に用いられるデータは例えば16ビット幅であり、レジスタ221、セレクタ222および223においてもこの16ビット幅のデータを扱う必要がある。
 4つの領域の畳込み演算は、2次元畳込み演算回路230の4つの乗算器231および4つの累加算器233によって行われる。乗算器231は、係数メモリ232に記憶されている係数データとセレクタ223によって選択されたデータとを乗算するものである。係数メモリ232は、2次元シフトレジスタ220に保持されたデータのそれぞれに対する係数データ(重み係数)を記憶するメモリである。係数データは4つの乗算器231において共通のものを使用できるため、係数メモリ232は乗算器231に共有される。累加算器233は、乗算器231のそれぞれに対応して設けられ、その乗算器231による乗算結果を累加算して、2次元畳込み演算結果を出力するものである。
 [入力バッファ]
 図8は、本技術の実施の形態における入力バッファ210の第1の構成例を示す図である。この入力バッファ210の第1の構成例は、入力FIFO211と、シフトレジスタ212とを備える。
 入力FIFO211は、2次元シフトレジスタ220の最下行に入力されるデータを保持するFIFO(First-In First-Out)構造のメモリである。この入力FIFO211は、少なくとも1段のレジスタからなる。この入力FIFO211は、p個(=2個)設けられ、2次元シフトレジスタ220の最下行の右端p個のレジスタ221にそれぞれデータを供給する。
 シフトレジスタ212は、2次元シフトレジスタ220の最下行を除く各行に入力されるデータを保持するシフトレジスタである。このシフトレジスタ212は、2次元シフトレジスタ220の最下行を除く各行に対応してp個(=2個)ずつ設けられ、各行の右端p個のレジスタ221にそれぞれデータを供給する。なお、シフトレジスタ212は、FIFO構造により実現されてもよい。
 この入力バッファ210の第1の構成例では、2次元シフトレジスタ220の各行の左端p個のデータは、その上の行の対応するシフトレジスタ212に入力される。2次元シフトレジスタ220の各行のレジスタ数とシフトレジスタ212の段数は、特徴マップの横幅のデータ数と一致する。これにより、入力バッファ210および2次元シフトレジスタ220の全体で特徴マップを全て保持することができ、順次シフトしていく単純な制御により、2次元畳込み演算を行うことができる。この例では、k×k画素(3×3画素)の2次元畳込み演算が行われるたびに、左にまとめてシフトイン動作が行われる。すなわち、9サイクルに1回の割合でシフトイン動作が行われる。
 図9は、本技術の実施の形態における入力バッファ210の第2の構成例を示す図である。この入力バッファ210の第2の構成例は、入力バッファ213と、アドレス生成部214とを備える。
 入力バッファ213は、2次元シフトレジスタ220の各行に入力されるデータを保持するバッファである。この入力バッファ213は、2次元シフトレジスタ220の各行に対応してp個(=2個)ずつ設けられ、各行の右端p個のレジスタ221にそれぞれデータを供給する。
 この入力バッファ210の第2の構成例では、入力バッファ213のデータが、図示するように下行から上行に伝搬される。すなわち、2次元シフトレジスタ220の各行に必要な特徴マップのデータがワークメモリ105から読み出されて供給される。そのため、この入力バッファ210の第2の構成例では、ワークメモリ105における特徴マップの格納アドレスをアドレス生成部214が生成する。そのため、アドレス生成のための制御が必要になるが、第1の構成例のように全てのデータを順次シフトする必要がないため、演算開始前の2次元シフトレジスタ220へのデータ供給を比較的速く行うことができる。ただし、演算開始後のシフトイン動作の頻度は上述の第1の構成例と同様である。
 [セレクタ]
 図10は、本技術の実施の形態におけるセレクタ224の構成例を示す図である。上述のように、2次元シフトレジスタ220から1つの乗算器231にデータを供給するために、3つのセレクタ222および1つのセレクタ223が用いられる。ここでは、2次元シフトレジスタ220と乗算器231との関係を理解し易くするために、3つのセレクタ222および1つのセレクタ223をセレクタ224として表す。ただし、実際には、セレクタ222は複数のセレクタ223によって共有されるため、乗算器231の数に比例して3つのセレクタ222が必要になるわけではなく、セレクタ224は仮想的なものである。なお、セレクタ224は、特許請求の範囲に記載の選択器の一例である。
 上述のように、3×3画素の畳込み演算を想定して、関係するレジスタ221に図のように#0から#8の番号を付す。レジスタ221から出力されるデータにもD0からD8の番号を付す。セレクタ222のうち1つ目はデータD0、D3およびD6の何れか1つを選択する。セレクタ222のうち2つ目はデータD1、D4およびD7の何れか1つを選択する。セレクタ222のうち3つ目はデータD2、D5およびD8の何れか1つを選択する。セレクタ223は、3つのセレクタ222の出力の何れか1つを選択する。すなわち、セレクタ224は、データD0からD8の9つから1つを選択する。
 図11は、本技術の実施の形態におけるセレクタ224の制御例を示す図である。
 第1サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「0」がそれぞれ供給され、データD0が選択される。また、係数メモリ232にアドレス「0」が供給され、係数データ「Coef[0]」が選択される。その結果、累加算器233の出力は、「D0×Coef[0]」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
 第2サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「1」がそれぞれ供給され、データD1が選択される。また、係数メモリ232にアドレス「1」が供給され、係数データ「Coef[1]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[0])+(D1×Coef[1])」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
 以降、同様の処理が繰り返され、第9サイクルでは、セレクタ222に選択信号「2」、セレクタ223に選択信号「2」がそれぞれ供給され、データD8が選択される。また、係数メモリ232にアドレス「8」が供給され、係数データ「Coef[8]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[0])+…+(D8×Coef[8])」となる。このとき、累加算器233の出力の有効ビットは「H」、すなわち2次元畳込み演算結果として有効な値であるとして出力される。
 [オフセット領域間の並列処理]
 図12は、本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。上述のように、1つの乗算器231に対して仮想的なセレクタ224を1つずつ想定すると、9つのレジスタ221のデータを順次参照することになる。ここでは、水平方向および垂直方向の各方向にそれぞれ1つずつずれた3×3画素のオフセット領域を、4つ並列に処理する例を示す。オフセット領域は、図示するように、互いに一部が異なっている。
 座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv_11が出力される。上述のように、セレクタ224は仮想的なものであり、ここに示した4つのセレクタ224内のセレクタ222は互いに共有されている。
 図13は、本技術の第1の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図12に示したレジスタ221の番号を表している。
 シフトイン動作の後、4つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われ、再び4つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。2次元シフトレジスタ220におけるシフトイン動作は、2次元畳込み演算回路230における演算とパイプライン処理されるため、図示したようにシフトイン動作のサイクルは隠蔽することができる。
 このように、本技術の第1の実施の形態では、2次元シフトレジスタ220からセレクタ224を介して複数の乗算器231に同時にデータを供給することにより、1つの重み係数に対する複数の2次元畳込み演算結果を互いに並列に算出する。これにより、全体の処理を高速化することができる。
 <3.第2の実施の形態>
 上述の第1の実施の形態では、重み係数w(i,j,k)の種類は1つ(M=1)であることを想定したが、この第2の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を連続して行う。すなわち、上述の第1の実施の形態では畳込み演算を行った後に毎回シフトイン動作を行っていたが、この第2の実施の形態では、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行う。これにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
 なお、この第2の実施の形態におけるシステム構成および回路構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 図14は、本技術の第2の実施の形態におけるセレクタ224の制御の例を示す図である。なお、係数メモリ232には、複数の種類の係数データが記憶されているものとする。
 第1サイクルから第9サイクルまでは上述の図11により説明したものと同様である。 続く第10サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「0」がそれぞれ供給され、データD0が選択される。また、係数メモリ232にアドレス「9」が供給され、係数データ「Coef[9]」が選択される。その結果、累加算器233の出力は、「D0×Coef[9]」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
 第11サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「1」がそれぞれ供給され、データD1が選択される。また、係数メモリ232にアドレス「10」が供給され、係数データ「Coef[10]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[9])+(D1×Coef[10])」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
 以降、同様の処理が繰り返され、第18サイクルでは、セレクタ222に選択信号「3」、セレクタ223に選択信号「2」がそれぞれ供給され、データD8が選択される。また、係数メモリ232にアドレス「17」が供給され、係数データ「Coef[17]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[9])+…+(D8×Coef[17])」となる。このとき、累加算器233の出力の有効ビットは「H」、すなわち2次元畳込み演算結果として有効な値であるとして出力される。
 図15は、本技術の第2の実施の形態のセレクタ224の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図12に示したレジスタ221の番号を表している。
 シフトイン動作の後、4つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作は行われずに、2次元シフトレジスタ220に保持されたデータを入れ替えることなく連続して、係数メモリ232からの読出しアドレスが変更される。これにより、再び4つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
 このように、本技術の第2の実施の形態によれば、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行うことにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
 <4.第3の実施の形態>
 上述の第1の実施の形態では、重み係数w(i,j,k)の種類は1つ(M=1)であることを想定したが、この第3の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を同時に行う。すなわち、上述の第1の実施の形態では互いに一部が異なる4つの領域について2次元畳込み演算を行っていたが、この第3の実施の形態では、その4つの領域とは重ならない他の4つの領域においても2次元畳込み演算を行う。
 なお、この第3の実施の形態におけるシステム構成および回路構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。係数メモリ232には、複数の種類の係数データが記憶されているものとする。
 図16は、本技術の第3の実施の形態における2次元畳込み演算の例を示す図である。
 上述の第1の実施の形態と同様に、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_11が出力される。
 また、この第3の実施の形態においては、座標位置(3,0)を基準とした領域に関しては2次元畳込み演算結果cnv1_00が出力される。座標位置(3,1)を基準とした領域に関しては2次元畳込み演算結果cnv1_01が出力される。座標位置(4,0)を基準とした領域に関しては2次元畳込み演算結果cnv1_10が出力される。座標位置(4,1)を基準とした領域に関しては2次元畳込み演算結果cnv1_11が出力される。第3の実施の形態において追加されたこれら4つの領域と、第1の実施の形態の4つの領域との間では異なる係数データが用いられる。すなわち、2種類の重み係数の2次元フィルタを同時に畳込み演算することになる(M=2)。
 この第3の実施の形態では、2次元の畳込み演算は、画素位置の異なるp×p個について同時に行われて、M×p×p個の畳込み演算結果が得られる。そして、そのM×p×p個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、(M×k+p-1)×(k+p-1)個のレジスタ221、M×p×p個の乗算器231、および、M×p×p個の累加算器233である。
 図17は、本技術の第3の実施の形態の2次元畳込み演算における並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図16に示したレジスタ221の番号を表している。
 シフトイン動作の後、8つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。このとき、第3の実施の形態において追加された4つの領域と、第1の実施の形態の4つの領域との間では異なる係数データが用いられる。
 その後、シフトイン動作が行われ、再び8つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
 このように、本技術の第3の実施の形態によれば、異なる種類の係数の畳込み演算を、異なる領域について同時に行うことにより、並列度を向上させて全体の処理を高速化することができる。
 <5.第4の実施の形態>
 上述の第1の実施の形態では、1つの重み係数に対して、互いに一部が異なる4つの領域について同時に2次元畳込み演算を行っていたが、この第4の実施の形態では、複数領域同士をさらに並列処理する。これにより、1つの重み係数の2次元畳込み演算についてさらに並列度を向上させて、全体の処理を高速化する。
 なお、この第4の実施の形態におけるシステム構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 [画像認識処理回路]
 図18は、本技術の第4の実施の形態における画像認識処理回路200の要部の構成例を示す図である。なお、入力バッファ210、プーリング処理回路250、活性化処理回路260、制御回路270については、上述の第1の実施の形態と同様であるため、同図において省略している。
 この第4の実施の形態における画像認識処理回路200は、4つの領域に対する4つの2次元畳込み演算回路230を複数組(この例では4組)備えることを想定する。同じ組における4つの領域は、一部が異なり、一部が重なっている。一方、異なる組同士は、独立に畳込み演算されるため、重なっている必要はない。
 座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)のそれぞれを基準とする領域の演算結果は、4つの異なる加算器234によってそれぞれ加算される。すなわち、これら4つの加算器234は、異なる組の対応する領域の2次元畳込み演算を加算する加算器である。
 4つの加算器234による加算結果は、4つの加算回路240にそれぞれ供給される。これら4つの加算回路240は、上述の第1の実施の形態のものと同様であり、主にチャネル方向の加算を行う加算器である。
 [2次元畳込み演算回路]
 図19は、本技術の第4の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。この例では、各レジスタ221に番号を付しており、以下ではこの番号を座標位置として参照する。
 ここでは、座標位置「0」を基準とした領域に関しては2次元畳込み演算結果cnv00_00が出力される。座標位置「1」を基準とした領域に関しては2次元畳込み演算結果cnv00_10が出力される。座標位置「7」を基準とした領域に関しては2次元畳込み演算結果cnv00_01が出力される。座標位置「8」を基準とした領域に関しては2次元畳込み演算結果cnv00_11が出力される。これら4つの値は1つの組を形成する。
 また、座標位置「3」を基準とした領域に関しては2次元畳込み演算結果cnv01_00が出力される。座標位置「4」を基準とした領域に関しては2次元畳込み演算結果cnv01_10が出力される。座標位置「10」を基準とした領域に関しては2次元畳込み演算結果cnv01_01が出力される。座標位置「11」を基準とした領域に関しては2次元畳込み演算結果cnv01_11が出力される。これら4つの値は1つの組を形成する。
 また、座標位置「21」を基準とした領域に関しては2次元畳込み演算結果cnv10_00が出力される。座標位置「22」を基準とした領域に関しては2次元畳込み演算結果cnv10_10が出力される。座標位置「28」を基準とした領域に関しては2次元畳込み演算結果cnv10_01が出力される。座標位置「29」を基準とした領域に関しては2次元畳込み演算結果cnv10_11が出力される。これら4つの値は1つの組を形成する。
 また、座標位置「24」を基準とした領域に関しては2次元畳込み演算結果cnv11_00が出力される。座標位置「25」を基準とした領域に関しては2次元畳込み演算結果cnv11_10が出力される。座標位置「31」を基準とした領域に関しては2次元畳込み演算結果cnv11_01が出力される。座標位置「32」を基準とした領域に関しては2次元畳込み演算結果cnv11_11が出力される。これら4つの値は1つの組を形成する。
 加算器234は、各組の対応する座標位置同士の加算値を生成する。すなわち、2次元畳込み演算結果cnv00_00、cnv01_00、cnv10_00、cnv11_00の加算値が座標位置(+0,+0)を基準とした領域の2次元畳込み演算結果cnv_00として出力される。また、2次元畳込み演算結果cnv00_01、cnv01_01、cnv10_01、cnv11_01の加算値が座標位置(+0,+1)を基準とした領域の2次元畳込み演算結果cnv_01として出力される。また、2次元畳込み演算結果cnv00_10、cnv01_10、cnv10_10、cnv11_10の加算値が座標位置(+1,+0)を基準とした領域の2次元畳込み演算結果cnv_10として出力される。また、2次元畳込み演算結果cnv00_11、cnv01_11、cnv10_11、cnv11_11の加算値が座標位置(+1,+1)を基準とした領域の2次元畳込み演算結果cnv_11として出力される。
 この例では、3×3画素を基本単位として、4つを組み合わせた出力の総和を座標位置(+0,+0)、(+0,+1)、(+1,+0)、(+1,+1)毎に算出している。これにより、座標位置毎の6×6画素の畳込み演算を行っていることになる。このとき、係数メモリ232に記憶される係数の適切な場所に「0」を設定し、または、セレクタにより選択するデータを制限することにより、6×6画素より小さいサイズの5×5画素や4×4画素の畳込みを行うことも可能である。
 また、この例に示したのと同様の要領により、6×6画素を4つ組み合わせて、12×12画素の畳込みを行うことも可能である。また、上述の第3の実施の形態に示したのと同様の要領により、6×6画素を2つ組み合わせて、異なる2つの係数の6×6画素の畳込み演算を同時に行うことも可能である。
 このように、本技術の第4の実施の形態によれば、互いに異なる複数の2次元領域同士をさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
 <6.第5の実施の形態>
 上述の実施の形態では、チャネル方向に対しては加算回路240によって逐次的に加算を繰り返していたが、この第5の実施の形態においてはさらにチャネル方向にも並列処理を行う。これにより、さらに並列度を向上させて、全体の処理を高速化する。
 なお、この第5の実施の形態におけるシステム構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 [画像認識処理回路]
 図20は、本技術の第5の実施の形態における画像認識処理回路200の要部の構成例を示す図である。なお、プーリング処理回路250、活性化処理回路260、制御回路270については、上述の第1の実施の形態と同様であるため、同図において省略している。また、入力バッファ210については図示を省略しているが、チャネル毎に独立した入力バッファ210を備え、チャネル毎にデータが入力され、それぞれ独立した2次元シフトレジスタ220にデータが供給される。
 この第5の実施の形態における画像認識処理回路200は、1つの領域に対する4つの2次元畳込み演算回路230をチャネル方向に複数チャネル分(この例では4チャネル分)備えることを想定する。これにより、基準となる座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)に対して、4チャネル分の同時動作が可能となる。
 基準となる座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)のそれぞれの演算結果は、4つの異なる加算器241によってそれぞれ加算される。すなわち、これら4つの加算器241は、チャネル方向に異なるチャネルの2次元畳込み演算を加算して、3次元畳込み演算結果を生成する加算器である。
 [2次元畳込み演算回路]
 図21は、本技術の第5の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
 ここでは、チャネルCH0について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_11が出力される。
 また、チャネルCH1について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv1_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv1_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv1_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv1_11が出力される。
 また、チャネルCH2について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv2_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv2_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv2_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv2_11が出力される。
 また、チャネルCH3について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv3_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv3_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv3_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv3_11が出力される。
 加算器241は、各チャネルの対応する座標位置同士の加算値を生成する。すなわち、2次元畳込み演算結果cnv0_00、cnv1_00、cnv2_00、cnv3_00の加算値が座標位置(+0,+0)を基準とした領域の2次元畳込み演算結果cnv_00として出力される。また、2次元畳込み演算結果cnv0_01、cnv1_01、cnv2_01、cnv3_01の加算値が座標位置(+0,+1)を基準とした領域の2次元畳込み演算結果cnv_01として出力される。また、2次元畳込み演算結果cnv0_10、cnv1_10、cnv2_10、cnv3_10の加算値が座標位置(+1,+0)を基準とした領域の2次元畳込み演算結果cnv_10として出力される。また、2次元畳込み演算結果cnv0_11、cnv1_11、cnv2_11、cnv3_11の加算値が座標位置(+1,+1)を基準とした領域の2次元畳込み演算結果cnv_11として出力される。
 加算器241による加算は、全てのチャネルに関してでもよく、一部のチャネルに関してでもよい。全てのチャネルに関して並列に処理を行った場合、ワークメモリ105への保存および読出しが不要になる。加算器241によって一部のチャネルについて加算して、残りのチャネルに関しては、上述の実施の形態と同様に加算回路240によって、逐次的にチャネル方向に加算を行って3次元畳込み演算結果を生成してもよい。この場合であっても、複数チャネル毎に処理できるため、並列処理しない場合と比べてワークメモリ105へのアクセス回数を減らすことができる。そのため、必要なメモリバンド幅を削減することができる。
 このように、本技術の第5の実施の形態によれば、複数チャネルに関する2次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
 前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
 前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
 前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
 前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と
を具備する演算処理回路。
(2)前記係数メモリは、複数の種類の前記係数データを記憶し、
 前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記2次元畳込み演算を行う
前記(1)に記載の演算処理回路。
(3)前記係数メモリは、複数の種類の前記係数データを記憶し、
 前記複数の2次元畳込み演算回路の各々は、前記2次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
前記(1)に記載の演算処理回路。
(4)前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における前記データについて前記2次元畳込み演算をさらに並列に行う
前記(1)から(3)のいずれかに記載の演算処理回路。
(5)前記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、
 前記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と前記2次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
前記(1)から(4)のいずれかに記載の演算処理回路。
(6)前記複数の加算回路は、前記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力する
前記(1)から(4)のいずれかに記載の演算処理回路。
(7)前記複数の加算回路から出力された前記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する前記(1)から(6)のいずれかに記載の演算処理回路。
(8)前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する前記(1)から(7)のいずれかに記載の演算処理回路。
(9)前記プーリング処理は、前記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理である
前記(8)に記載の演算処理回路。
(10)前記2次元シフトレジスタは、(m×k+p-1)+1)×((k+p-1)+1)個以上の前記データを保持し、
 前記複数の2次元畳込み演算回路は、前記乗算を行う(m×p×p)個の乗算器と、前記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの前記2次元畳込み演算を、(p×p)個の前記2次元領域に対して並列に行い、
 前記プーリング処理回路は、(m×p×p)個の前記3次元畳込み演算結果を入力データとしてm個の前記プーリング値を生成する
前記(8)または(9)に記載の演算処理回路。
但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。
(11)前記2次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して(p-1)個おきに結線されたレジスタからなり、p個単位で前記第一の方向へのシフト動作を行う
前記(10)に記載の演算処理回路。
(12)前記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う前記(8)から(11)のいずれかに記載の演算処理回路。
(13)処理対象となるデータを取得するデータ取得部と、
 前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
を具備する認識システムであって、
 前記演算処理回路は、
 第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
 前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
 前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
 前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
 前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、
 前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
 前記データを前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
 10 入力画像
 20 特徴量抽出器
 30 識別器
 40 畳込み層
 50 プーリング層
 60 全結合層
 90 出力
 101 画像取得部
 102 外部メモリ
 103 メモリコントローラ
 104 DMAコントローラ
 105 ワークメモリ
 106 制御コンピュータ
 107 バス
 200 画像認識処理回路
 210 入力バッファ
 212 シフトレジスタ
 213 入力バッファ
 214 アドレス生成部
 220 2次元シフトレジスタ
 221 レジスタ
 222~224 セレクタ
 230 2次元畳込み演算回路
 231 乗算器
 232 係数メモリ
 233 累加算器
 234、240、241 加算器
 250 プーリング処理回路
 260 活性化処理回路
 270 制御回路

Claims (13)

  1.  第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
     前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
     前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
     前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
     前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と
    を具備する演算処理回路。
  2.  前記係数メモリは、複数の種類の前記係数データを記憶し、
     前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記2次元畳込み演算を行う
    請求項1記載の演算処理回路。
  3.  前記係数メモリは、複数の種類の前記係数データを記憶し、
     前記複数の2次元畳込み演算回路の各々は、前記2次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
    請求項1記載の演算処理回路。
  4.  前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における前記データについて前記2次元畳込み演算をさらに並列に行う
    請求項1記載の演算処理回路。
  5.  前記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、
     前記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と前記2次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
    請求項1記載の演算処理回路。
  6.  前記複数の加算回路は、前記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力する
    請求項1記載の演算処理回路。
  7.  前記複数の加算回路から出力された前記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する請求項1記載の演算処理回路。
  8.  前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する請求項1記載の演算処理回路。
  9.  前記プーリング処理は、前記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理である
    請求項8記載の演算処理回路。
  10.  前記2次元シフトレジスタは、(m×k+p-1)+1)×((k+p-1)+1)個以上の前記データを保持し、
     前記複数の2次元畳込み演算回路は、前記乗算を行う(m×p×p)個の乗算器と、前記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの前記2次元畳込み演算を、(p×p)個の前記2次元領域に対して並列に行い、
     前記プーリング処理回路は、(m×p×p)個の前記3次元畳込み演算結果を入力データとしてm個の前記プーリング値を生成する
    請求項8記載の演算処理回路。
    但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。
  11.  前記2次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して(p-1)個おきに結線されたレジスタからなり、p個単位で前記第一の方向へのシフト動作を行う
    請求項10記載の演算処理回路。
  12.  前記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う請求項8記載の演算処理回路。
  13.  処理対象となるデータを取得するデータ取得部と、
     前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
    を具備する認識システムであって、
     前記演算処理回路は、
     第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
     前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
     前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
     前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
     前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、
     前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
     前記データを前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
PCT/JP2017/024422 2016-10-19 2017-07-04 演算処理回路および認識システム WO2018074012A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/331,727 US11461684B2 (en) 2016-10-19 2017-07-04 Operation processing circuit and recognition system
CN201780063513.9A CN109844738A (zh) 2016-10-19 2017-07-04 运算处理电路和识别系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-205451 2016-10-19
JP2016205451A JP2018067154A (ja) 2016-10-19 2016-10-19 演算処理回路および認識システム

Publications (1)

Publication Number Publication Date
WO2018074012A1 true WO2018074012A1 (ja) 2018-04-26

Family

ID=62019479

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/024422 WO2018074012A1 (ja) 2016-10-19 2017-07-04 演算処理回路および認識システム

Country Status (4)

Country Link
US (1) US11461684B2 (ja)
JP (1) JP2018067154A (ja)
CN (1) CN109844738A (ja)
WO (1) WO2018074012A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020013226A1 (ja) * 2018-07-11 2020-01-16 ソニー株式会社 信号処理回路、信号処理装置及び信号処理方法
CN110705701A (zh) * 2019-09-05 2020-01-17 福州瑞芯微电子股份有限公司 一种高并行度的卷积运算方法和电路
WO2020044566A1 (ja) * 2018-08-31 2020-03-05 オリンパス株式会社 データ処理システムおよびデータ処理方法
JP2021532498A (ja) * 2019-06-10 2021-11-25 平安科技(深▲せん▼)有限公司Ping An Technology (Shenzhen) Co., Ltd. 畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
US12010418B2 (en) 2019-01-08 2024-06-11 Sony Group Corporation Solid-state imaging element, signal processing method thereof, and electronic device

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878310B2 (en) 2016-11-29 2020-12-29 Mellanox Technologies, Ltd. Accelerated convolution in convolutional neural networks
KR102061408B1 (ko) * 2017-03-24 2019-12-31 (주)제이엘케이인스펙션 가상 3차원 심층 신경망을 이용하는 영상 분석 장치 및 방법
US11468302B2 (en) * 2018-03-13 2022-10-11 Recogni Inc. Efficient convolutional engine
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11295200B1 (en) 2018-04-20 2022-04-05 Perceive Corporation Time-multiplexed dot products for neural network inference circuit
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11468145B1 (en) 2018-04-20 2022-10-11 Perceive Corporation Storage of input values within core of neural network inference circuit
KR102557572B1 (ko) * 2018-05-23 2023-07-24 한국전자통신연구원 인공 신경망 장치 및 그 동작 방법
JP6902318B2 (ja) * 2018-08-06 2021-07-14 Kddi株式会社 ニューラルネットワークの全結合層を畳み込み層に置き換えるプログラム
US20200175355A1 (en) * 2018-11-30 2020-06-04 Electronics And Telecommunications Research Institute Neural network accelerator with systolic array structure
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
JP7152107B2 (ja) * 2019-01-30 2022-10-12 Necプラットフォームズ株式会社 演算処理装置、演算処理方法及びプログラム
JP6791540B2 (ja) * 2019-02-28 2020-11-25 Necプラットフォームズ株式会社 畳み込み演算処理装置および畳み込み演算処理方法
JP7353772B2 (ja) 2019-03-07 2023-10-02 キヤノン株式会社 データ処理装置及びその方法、プログラム
US11580386B2 (en) 2019-03-18 2023-02-14 Electronics And Telecommunications Research Institute Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
JP7402623B2 (ja) 2019-06-17 2023-12-21 キヤノン株式会社 フィルタ処理装置及びその制御方法
WO2021070303A1 (ja) * 2019-10-09 2021-04-15 オリンパス株式会社 演算処理装置
CN111260586B (zh) * 2020-01-20 2023-07-04 北京百度网讯科技有限公司 扭曲文档图像的矫正方法和装置
EP4115346A4 (en) * 2020-03-10 2024-03-20 Aip Semi, Inc. HARDWARE ARCHITECTURE FOR PROCESSING DATA IN A NEURAL NETWORK
JP7467786B2 (ja) 2020-03-12 2024-04-16 公立大学法人会津大学 データ処理装置及びデータ処理方法
TWI768326B (zh) * 2020-04-20 2022-06-21 國立陽明交通大學 卷積運算模組及方法以及其適用之卷積神經網路系統
JPWO2021241460A1 (ja) * 2020-05-29 2021-12-02
JP7358312B2 (ja) 2020-08-25 2023-10-10 株式会社東芝 記憶装置およびニューラルネットワーク装置
GB2599098B (en) * 2020-09-22 2024-04-10 Imagination Tech Ltd Hardware implementation of windowed operations in three or more dimensions
WO2022259427A1 (ja) * 2021-06-09 2022-12-15 日本電信電話株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
CN113240103B (zh) * 2021-06-25 2022-10-04 清华大学 神经网络池化电路
US11762946B1 (en) * 2022-09-23 2023-09-19 Recogni Inc. Systems for using shifter circuit and 3×3 convolver units to emulate functionality of larger sized convolver units
CN116861973B (zh) * 2023-09-05 2023-12-15 深圳比特微电子科技有限公司 用于卷积运算的改进的电路、芯片、设备及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067338A (ja) * 1999-08-30 2001-03-16 Mitsubishi Precision Co Ltd 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
JP2009080693A (ja) * 2007-09-26 2009-04-16 Canon Inc 演算処理装置および方法
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP2015210709A (ja) * 2014-04-28 2015-11-24 株式会社デンソー 演算処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4833690B2 (ja) * 2006-03-03 2011-12-07 川崎マイクロエレクトロニクス株式会社 演算回路および演算方法
CN102065309B (zh) * 2010-12-07 2012-12-05 青岛海信信芯科技有限公司 一种dct实现方法及dct实现电路
CN105681628B (zh) * 2016-01-05 2018-12-07 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
US10032110B2 (en) * 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10176551B2 (en) * 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067338A (ja) * 1999-08-30 2001-03-16 Mitsubishi Precision Co Ltd 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
JP2009080693A (ja) * 2007-09-26 2009-04-16 Canon Inc 演算処理装置および方法
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP2015210709A (ja) * 2014-04-28 2015-11-24 株式会社デンソー 演算処理装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020013226A1 (ja) * 2018-07-11 2020-01-16 ソニー株式会社 信号処理回路、信号処理装置及び信号処理方法
CN112334905A (zh) * 2018-07-11 2021-02-05 索尼公司 信号处理电路、信号处理装置和信号处理方法
US12001810B2 (en) 2018-07-11 2024-06-04 Sony Corporation Signal processing circuit, signal processing device, and signal processing method to suppress power consumption
WO2020044566A1 (ja) * 2018-08-31 2020-03-05 オリンパス株式会社 データ処理システムおよびデータ処理方法
JPWO2020044566A1 (ja) * 2018-08-31 2021-06-10 オリンパス株式会社 データ処理システムおよびデータ処理方法
JP7000586B2 (ja) 2018-08-31 2022-01-19 オリンパス株式会社 データ処理システムおよびデータ処理方法
US12010418B2 (en) 2019-01-08 2024-06-11 Sony Group Corporation Solid-state imaging element, signal processing method thereof, and electronic device
JP2021532498A (ja) * 2019-06-10 2021-11-25 平安科技(深▲せん▼)有限公司Ping An Technology (Shenzhen) Co., Ltd. 畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
JP7174831B2 (ja) 2019-06-10 2022-11-17 平安科技(深▲せん▼)有限公司 畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
CN110705701A (zh) * 2019-09-05 2020-01-17 福州瑞芯微电子股份有限公司 一种高并行度的卷积运算方法和电路
CN110705701B (zh) * 2019-09-05 2022-03-29 瑞芯微电子股份有限公司 一种高并行度的卷积运算方法和电路

Also Published As

Publication number Publication date
US11461684B2 (en) 2022-10-04
US20190205780A1 (en) 2019-07-04
CN109844738A (zh) 2019-06-04
JP2018067154A (ja) 2018-04-26

Similar Documents

Publication Publication Date Title
WO2018074012A1 (ja) 演算処理回路および認識システム
US11734006B2 (en) Deep vision processor
JP6775565B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行するための方法、装置、メモリ及びコンピュータプログラム
KR102216019B1 (ko) 콘볼루션 뉴럴 네트워크들을 위한 효율적인 데이터 레이아웃들
US11907826B2 (en) Electronic apparatus for operating machine learning and method for operating machine learning
KR102659997B1 (ko) 저전력 컨볼루션 신경망 추론 애플리케이션을 위한 메모리 대역폭 감소 기술
JP5376920B2 (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US20200202198A1 (en) Neural network processor
CN116541647A (zh) 运算加速器、处理方法及相关设备
CA2929403C (en) Multi-dimensional sliding window operation for a vector processor
EP3789892A1 (en) Method and apparatus for processing data
TW202123093A (zh) 實行卷積運算的系統及方法
CN108133265A (zh) 用于利用相同的处理单元实施不同类型的卷积运算的方法和装置
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US11164032B2 (en) Method of performing data processing operation
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
CN111914988A (zh) 神经网络设备、计算系统和处理特征图的方法
US10789072B2 (en) Parallel processor for calculating operand and result addresses as a function of a position of a field of action and predetermined positions of processing elements in non-homogeneous address zones within a topology
CN114595811A (zh) 用于执行深度学习操作的方法和设备
Devendran et al. Optimization of the Convolution Operation to Accelerate Deep Neural Networks in FPGA.
WO2019136747A1 (zh) 反卷积器及其所应用的人工智能处理装置
KR102441520B1 (ko) 필터 분해 기법을 이용한 에너지 효율적 재구성형 cnn 가속기 장치 및 방법
JP3860545B2 (ja) 画像処理装置及び画像処理方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17862476

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17862476

Country of ref document: EP

Kind code of ref document: A1