WO2023112581A1 - 推論装置 - Google Patents
推論装置 Download PDFInfo
- Publication number
- WO2023112581A1 WO2023112581A1 PCT/JP2022/042421 JP2022042421W WO2023112581A1 WO 2023112581 A1 WO2023112581 A1 WO 2023112581A1 JP 2022042421 W JP2022042421 W JP 2022042421W WO 2023112581 A1 WO2023112581 A1 WO 2023112581A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- image data
- data
- row
- module
- processing
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 102
- 230000008569 process Effects 0.000 claims abstract description 100
- 230000015654 memory Effects 0.000 claims abstract description 65
- 238000011176 pooling Methods 0.000 claims abstract description 43
- 238000013500 data storage Methods 0.000 claims description 18
- 238000005070 sampling Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 description 76
- 238000004364 calculation method Methods 0.000 description 28
- 238000005516 engineering process Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000003384 imaging method Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 3
- 239000013256 coordination polymer Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Definitions
- the technology of the present disclosure relates to an inference device.
- Japanese Patent Application Laid-Open No. 2009-080693 discloses an arithmetic processing device that generates arithmetic result data by performing arithmetic on input data and executes network arithmetic in a hierarchical network in which a plurality of logical processing nodes are connected.
- the arithmetic processing unit uses a network for each of a plurality of types of buffer allocation methods for allocating memory areas for intermediate buffers for holding operation result data corresponding to each of a plurality of processing nodes constituting a network.
- the amount of memory required for the calculation is calculated based on the configuration of the network calculation, and the network calculation is executed in the order of execution according to the buffer allocation method selected based on the calculated memory amount.
- One embodiment according to the technology of the present disclosure provides an inference device capable of increasing the processing speed.
- an inference apparatus of the present disclosure is an inference apparatus that performs inference using machine-learned data, and includes a first arithmetic module and a second arithmetic module that execute arithmetic processing including convolution processing and pooling processing.
- a first memory for storing a plurality of first row data generated by dividing input first image data by a first number of pixels in a row direction; and a plurality of first computing units that perform a first convolution process on a plurality of first row data, and the second computing module converts the input second image data in the row direction for each second number of pixels.
- a second memory storing a plurality of second row data generated by the division; and a plurality of second calculators performing a second convolution process on the plurality of second row data;
- the number of channels of one image data and the number of channels of the second image data are different from each other, and are the number of first computing units that execute the first convolution processing once on a plurality of first row data in parallel.
- the second number which is the number of second calculators that execute the second convolution process once on a plurality of second row data in parallel.
- the second image data is image data including a feature amount generated by performing arithmetic processing on the first image data by the first arithmetic module.
- the number of channels of the second image data is preferably greater than the number of channels of the first image data, and the first number is preferably greater than the second number.
- the number of pixels processed in the second image data input to the second computation module is preferably smaller than the number of pixels processed in the first image data input to the first computation module.
- the arithmetic processing by the first arithmetic module and the arithmetic processing by the second arithmetic module are preferably executed in parallel.
- the data storage unit of the first memory preferably corresponds to the first number of pixels, the size of the filter used in the first convolution process, and the number of channels of the filter used in the first convolution process.
- the data storage unit of the second memory preferably corresponds to the second number of pixels, the size of the filter used in the second convolution process, and the number of channels of the filter used in the second convolution process.
- the number of filters used in the second convolution process is preferably greater than the number of filters used in the first convolution process.
- the first row data is preferably data corresponding to some rows of the first image data.
- a third memory having a larger data storage capacity than the first memory and the second memory and storing feature image data including feature amounts generated by the first arithmetic module; and a third memory for up-sampling input image data.
- a computing module wherein the first computing module is a module for down-sampling the first image data; and the third computing module is for up-sampling the input image data and for generating the feature image stored in the third memory.
- the data is used to generate corrected first image data.
- FIG. 4 shows the configuration of the kth channel of the filter; It is a block diagram which shows an example of a structure of a feature-value extraction part. It is a figure which shows an example of the division process of image data. 4 is a diagram showing an example of the configuration of a line memory included in the first arithmetic module; FIG. FIG. 4 is a diagram showing an example of the configuration of a line memory included in a second arithmetic module; FIG.
- FIG. 4 is a block diagram showing an example of the configuration of an ALU;
- FIG. FIG. 10 is a flowchart showing an example of the flow of one first convolution process by the ALU;
- FIG. FIG. 4 is a diagram conceptually showing one first convolution process by an ALU;
- It is a figure which shows notionally a 1st feature-value extraction process and a 2nd feature-value extraction process.
- It is a figure which shows the timing of a 1st feature-value extraction process and a 2nd feature-value extraction process.
- FIG. 5 is a block diagram showing the configuration of a feature quantity extraction unit according to a modification of the first embodiment;
- FIG. 10 is a flowchart showing an example of the flow of one first convolution process by the ALU;
- FIG. FIG. 4 is a diagram conceptually showing one first convolution process by an ALU;
- It is a figure which shows notionally a 1st feature-value extraction process and a 2nd feature-value extraction process.
- FIG. 11 is a block diagram showing an example of the configuration of a third computing module; FIG. It is a figure explaining a 3rd convolution process.
- FIG. 4 is a diagram conceptually showing first to third feature amount extraction processing;
- FIG. 11 is a block diagram showing an example of the configuration of a feature extraction unit according to the second embodiment;
- FIG. 3 is a block diagram showing an example of the configuration of a plurality of arithmetic modules included in the decoder;
- 1 is a diagram conceptually showing the hierarchical structure of a CNN composed of encoders and decoders;
- FIG. It is a figure explaining the pipeline process performed with respect to a feature map.
- IC is an abbreviation for "Integrated Circuit”.
- DRAM is an abbreviation for “Dynamic Random Access Memory”.
- FPGA is an abbreviation for “Field Programmable Gate Array”.
- PLD is an abbreviation for "Programmable Logic Device”.
- ASIC is an abbreviation for "Application Specific Integrated Circuit”.
- CNN is an abbreviation for “Convolutional Neural Network”.
- ALU is an abbreviation for "Arithmetic Logic Unit”.
- FIG. 1 shows an example of the configuration of the inference device 2.
- the inference device 2 is incorporated in an imaging device such as a digital camera.
- the inference device 2 is a device that performs inference by machine learning, and obtains, for example, the type of subject appearing in the image data by inference. Based on the inference results output from the inference device 2, the imaging device performs various controls related to imaging.
- the inference device 2 includes an input unit 3, a feature extraction unit 4, an output unit 5, and a learned data storage unit 6.
- the input unit 3 acquires image data generated by imaging by the imaging device, and inputs the acquired image data to the feature amount extraction unit 4 as input data.
- the feature quantity extraction unit 4 and the output unit 5 constitute a so-called convolutional neural network (CNN).
- the learned data storage unit 6 stores weights 7A and biases 7B. Weight 7A and bias 7B are machine-learned data generated by machine learning.
- the feature quantity extraction unit 4 is an intermediate layer composed of multiple convolution layers and pooling layers.
- the output unit 5 is an output layer configured including a fully connected layer.
- the feature amount extraction unit 4 extracts feature amounts by executing convolution processing and pooling processing on the image data input from the input unit 3 .
- the output unit 5 classifies the image data input to the inference device 2 based on the feature amount extracted by the feature amount extraction unit 4 . For example, the output unit 5 classifies the types of subjects appearing in the image data.
- the feature amount extraction unit 4 and the output unit 5 perform feature amount extraction processing and classification processing using a learned model configured using the weights 7A and biases 7B stored in the learned data storage unit 6 .
- the feature quantity extraction process is an example of the "arithmetic process" according to the technology of the present disclosure.
- FIG. 2 conceptually shows an example of feature quantity extraction processing and classification processing.
- the image data P1 input from the input unit 3 to the feature extraction unit 4 is composed of three channels of R (Red), G (Green), and B (Blue).
- the feature amount extraction unit 4 repeatedly executes convolution processing and pooling processing on the input image data P1 a plurality of times.
- the image data P1 is an example of "first image data" according to the technology of the present disclosure.
- the feature quantity extraction unit 4 performs convolution processing on the 3-channel image data P1 to generate a 6-channel feature map FM1, and performs pooling processing on the generated feature map FM1 to generate image data Generate P2.
- the image data P1 and the image data P2 have different numbers of channels.
- the number of channels of image data P2 is greater than the number of channels of image data P1.
- the image data P2 has a smaller number of pixels (that is, the image size is reduced) than the image data P1.
- the image data P2 is image data including a feature amount generated by performing feature amount extraction processing on the image data P1 by the first calculation module 11 .
- the image data P2 is an example of "second image data" according to the technology of the present disclosure.
- the feature quantity extraction unit 4 performs convolution processing on the image data P2 to generate a 12-channel feature map FM2, and performs pooling processing on the generated feature map FM2 to obtain the image data P3. to generate
- the image data P2 and the image data P3 have different numbers of channels.
- the number of channels of image data P3 is greater than the number of channels of image data P2.
- the image data P3 has a smaller number of pixels (that is, the image size is reduced) than the image data P2.
- the image data P3 is image data including a feature amount generated by performing feature amount extraction processing on the image data P2 by the second calculation module 12 .
- image data P3 is input from the feature amount extraction unit 4 to the output unit 5.
- the output unit 5 is configured including a fully connected layer, and classifies the image data P1 based on the image data P3 including the feature amount.
- the output unit 5 outputs a result of classifying the image data P1 as an inference result.
- FIG. 3 details the convolution and pooling process.
- K is the number of channels of the image data P1.
- the feature amount extraction unit 4 generates N image data CP 1 to CP N by executing a convolution operation on the image data P1 as input data using N filters F 1 to F N. do.
- the filters F 1 to F N are configured with the weights 7A described above.
- Each of the image data CP 1 to CP N has K channels.
- the feature quantity extraction unit 4 integrates the channels for each of the image data CP 1 to CP N , and then adds the biases b 1 to b N to each to generate a feature map FM1. It should be noted that integration of channels refers to conversion into one channel by adding corresponding pixel values of a plurality of channels.
- the feature map FM1 has N channels.
- the biases b 1 to b N correspond to the bias 7B described above.
- the feature quantity extraction unit 4 generates image data P2 by performing pooling processing on the feature map FM1 using, for example, a 2 ⁇ 2 kernel Q.
- the pooling process is, for example, a maximum pooling process of obtaining the maximum value of the pixel values in the kernel Q.
- An average pooling process for obtaining an average value of pixel values in the kernel Q may be used instead of the maximum pooling process.
- the number of pixels of the image data P2 is 1/4 times the number of pixels of the image data P1.
- the feature quantity extraction unit 4 applies an activation function in the convolution process or pooling process.
- FIG. 3 omits illustration of the application of the activation function.
- FIG. 4 shows the configuration of the kth channel of filter Fn .
- Filter F n is one of N filters F 1 to F N .
- the filter Fn is of size 3 ⁇ 3 and has K channels.
- the kth channel of filter Fn is represented by nine weights wp,q,k,n .
- p represents the horizontal coordinate within the filter Fn
- q represents the vertical coordinate within the filter Fn .
- Weights w p,q,k,n correspond to weight 7A above.
- the size of the filter Fn is not limited to 3 ⁇ 3, and can be changed to a size such as 5 ⁇ 5 as appropriate.
- Equation 1 The above-described convolution processing is expressed by Equation 1 below.
- Equation 1 ax+p,y+q,k represents the pixel value of the pixel multiplied by the weight wp,q,k,n in the k-th channel of the image data P1.
- x and y represent coordinates in the feature map FM1.
- c x, y, n represents the pixel value of the pixel with the coordinates x, y in the n-th channel of the feature map FM1.
- bn represents the bias added to each pixel of the nth channel of the feature map FM1.
- the feature amount extraction unit 4 performs similar processing using the image data P2 as input data instead of the image data P1.
- FIG. 5 shows an example of the configuration of the feature quantity extraction unit 4.
- the feature quantity extraction unit 4 includes an input data storage unit 10 , a first calculation module 11 , a second calculation module 12 and a calculation control unit 18 .
- the input data storage section 10 stores image data P1 input from the input section 3 .
- the first arithmetic module 11 includes a line memory 20A, a convolution processing section 21A, and a pooling processing section 22A.
- One pooling processor 22A may be provided for each of the ALUs 23A to 23D.
- the second arithmetic module 12 includes a line memory 20B, a convolution processing section 21B, and a pooling processing section 22B.
- One pooling processor 22B may be provided for each of the ALUs 23A to 23D.
- the calculation control unit 18 controls the operations of the input data storage unit 10, the first calculation module 11, and the second calculation module 12.
- the first arithmetic module 11 generates the above-described image data P2 by performing feature amount extraction processing on the image data P1.
- the second arithmetic module 12 generates the image data P3 described above by performing feature amount extraction processing on the image data P2.
- the first arithmetic module 11 and the second arithmetic module 12 perform feature quantity extraction processing in parallel by performing pipeline processing. Specifically, the feature quantity extraction process of the second calculation module 12 for the data processed by the first calculation module 11 and the feature quantity extraction process of the next data by the first calculation module 11 are executed in parallel.
- the convolution processing unit 21A includes multiple ALUs that perform convolution operations.
- the convolution processing unit 21A has four ALUs 23A to 23D. Although details will be described later, the ALUs 23A to 23D perform convolution processing on input data in parallel.
- the convolution processing unit 21B includes multiple ALUs that perform convolution operations.
- the convolution processing unit 21B has four ALUs 23A to 23D. Although details will be described later, the ALUs 23A to 23D perform convolution processing on input data in parallel.
- the ALUs 23A to 23D included in the convolution processing unit 21A of the first arithmetic module 11 are examples of the "plurality of first arithmetic units” according to the technology of the present disclosure.
- the ALUs 23A to 23D included in the convolution processing unit 21B of the second arithmetic module 12 are examples of the "plurality of second arithmetic units” according to the technology of the present disclosure.
- the arithmetic control unit 18 divides the image data P1 stored in the input data storage unit 10 in the row direction by the first number of pixels G1 to generate a plurality of strip-shaped data (hereinafter referred to as first strip-shaped data PS1). Generate. Further, the arithmetic control unit 18 causes the line memory 20A of the first arithmetic module 11 to sequentially store the plurality of first row data R1 included in the first strip-shaped data PS1. The ALUs 23A to 23D of the first arithmetic module 11 perform convolution processing on a plurality of first row data R1. The first row data R1 is data corresponding to some rows of the image data P1.
- the calculation control unit 18 causes the line memory 20B of the second calculation module 12 to sequentially store the plurality of second row data R2 forming the image data P2 output from the first calculation module 11 .
- the plurality of second row data R2 are included in a plurality of strip-shaped data (hereinafter referred to as second strip-shaped data PS2) generated by dividing the image data P2 by the second number of pixels G2 in the row direction.
- the ALUs 23A to 23D of the second arithmetic module 12 perform convolution processing on the plurality of second row data R2.
- first convolution processing the convolution processing performed by the first computation module 11
- second convolution processing the convolution processing performed by the second computation module 12
- the line memory 20A is an example of the "first memory” according to the technology of the present disclosure.
- the line memory 20B is an example of the "second memory” according to the technology of the present disclosure.
- the number of filters used in the second convolution process is greater than the number of filters used in the first convolution process.
- FIG. 6 shows an example of division processing of the image data P1 by the arithmetic control unit 18.
- the image data P1 has pixels arranged two-dimensionally in the x and y directions for each of the R, G, and B channels.
- the arithmetic control unit 18 generates four first strip-shaped data PS1 by, for example, dividing the image data P1 into four in the x direction (corresponding to the row direction).
- the width of the first strip-shaped data PS1 in the x direction corresponds to the first number of pixels G1.
- the arithmetic control unit 18 divides the image data P1 so that the ends of the first strip-shaped data PS1 adjacent in the x direction overlap.
- convolution processing using filters of size 3 ⁇ 3 is performed twice, so the overlap width is 6 pixels.
- the overlap width is preferably changed according to the size of the filter and the number of convolutions.
- the convolution processing is performed without dividing the image data P1, it is necessary to increase the memory bandwidth in order to store the multi-channel data generated by the convolution processing in a large-capacity memory (DRAM, etc.). be.
- DRAM large-capacity memory
- the convolution process can be performed using a small-capacity line memory. .
- FIG. 7 shows an example of the configuration of the line memory 20A.
- the data storage unit of the line memory 20A corresponds to the first pixel number G1, the size of the filter used in the first convolution process, and the channel number K of the filter used in the first convolution process.
- M1 represents the number of lines for each channel.
- the number of lines M1 is determined according to the filter size.
- the line memory 20A stores the first row data R1 in units of M1 ⁇ K lines.
- the first row data R1 are sequentially input from the line memory 20A to the convolution processing section 21A.
- the first row data R1 is data of a line in which pixels for one channel are arranged in the x direction in the first strip-shaped data PS1.
- FIG. 8 shows an example of the configuration of the line memory 20B.
- the data storage unit of the line memory 20B corresponds to the second pixel number G2, the filter size used in the second convolution process, and the filter channel number N used in the second convolution process.
- M2 represents the number of lines for each channel.
- the number of lines M2 is determined according to the filter size.
- the second number of pixels G2 is half the first number of pixels G1. This is because the number of pixels in the x direction is halved in the pooling process in the first arithmetic module 11 .
- the line memory 20B stores the second row data R2 in units of M2 ⁇ N lines.
- the second row data R2 are sequentially input from the line memory 20B to the convolution processing section 21B.
- the second row data R2 refers to line data in which pixels for one channel are arranged in the x direction in the second strip-shaped data PS2.
- FIG. 9 explains the first convolution process.
- R1 i,k indicates the i-th first row data of the k channel read out from the line memory 20A.
- the first row data R1i ,k are divided into four blocks B1-B4 and input to ALUs 23A-23D, respectively.
- the width of each of the blocks B1 to B4 corresponds to the number of pixels which is 1/4 times the first number of pixels G1.
- Each of the ALUs 23A to 23D performs the first convolution process by multiplying the input block by weights while shifting pixels.
- the ALUs 23A to 23D execute the first convolution processing once on the three first row data R1 i,k , R1 i+1,k , R1 i+2,k in parallel. That is, in the first arithmetic module 11, the number of first arithmetic units (hereinafter referred to as the first number) that executes the first convolution processing once on a plurality of first row data R1 in parallel is "4". is.
- Data output from the ALUs 23A to 23D are input to the pooling processor 22A.
- the pooling processing unit 22A outputs the second row data R2 i,k having a width of the second number of pixels G2 by performing a 2 ⁇ 2 pooling process.
- a plurality of second row data R2i ,k output from the pooling processing unit 22A constitute the second strip-shaped data PS2.
- the image data P2 is composed of a plurality of second strip-shaped data PS2.
- FIG. 10 explains the second convolution process.
- R2i ,k indicates the i-th second row data of the k channel read out from the line memory 20B.
- the i-th second row data R2i ,k is divided into two blocks B1 and B2 and input to ALUs 23A and 23B, respectively.
- the i+1-th second row data R2i +1,k is divided into two blocks B1 and B2 and input to the ALUs 23C and 23D, respectively.
- the width of each of the blocks B1 and B2 corresponds to the number of pixels that is half the second number of pixels G2.
- Each of the ALUs 23A to 23D performs the second convolution process by multiplying the input block by a weight while shifting pixels.
- the ALUs 23A and 23B execute the second convolution process once on the three second row data R2i ,k , R2i+1,k and R2i+2,k in parallel.
- the ALUs 23C and 23D execute the second convolution processing once on the three second row data R2i +1,k , R2i +2,k and R2i+3,k in parallel. That is, in the second arithmetic module 12, the number of second arithmetic units (hereinafter referred to as the second number) that executes the second convolution processing in parallel on a plurality of second row data R2 is "2". is. That is, the first number and the second number are different. In this embodiment, the first number is greater than the second number.
- Data output from the ALUs 23A to 23D are input to the pooling processor 22B.
- the pooling processing unit 22B outputs third row data R3 i,k having a width of the third pixel number G3 by performing 2 ⁇ 2 pooling processing.
- a plurality of third row data R3i ,k output from the pooling processing unit 22B constitute the third strip-shaped data PS3.
- the image data P3 is composed of a plurality of third strip-shaped data PS3.
- the third pixel number G3 is half the second pixel number G2.
- the first arithmetic module 11 simultaneously processes one piece of first row data R1 using the ALUs 23A to 23D.
- the second arithmetic module 12 simultaneously processes two adjacent second row data R2 by means of the ALUs 23A-23D.
- the number of pixels processed in the image data P2 input to the second computation module 12 is smaller than the number of pixels processed in the image data P1 input to the first computation module 11 .
- the number of processed pixels refers to the number of pixels processed by the arithmetic module.
- FIG. 11 shows an example of the configuration of the ALU 23A.
- the ALU 23A includes a register 30, a shift calculator 31, a multiplier 32, a register 33, an adder 34, a selector 35, an adder 36, and a register 37.
- Multiplier 32 multiplies each pixel of block B1 input to register 30 by weight 7A.
- Register 33 receives block B1 multiplied by weight 7A.
- the shift calculator 31 shifts the block B1 stored in the register 30 by one pixel each time the multiplier 32 multiplies the weight 7A.
- Multiplier 32 multiplies each pixel of block B1 by a weight of 7A each time block B1 is pixel shifted.
- the adder 34 sequentially adds the block B1 input to the register 33 pixel by pixel.
- the above multiplication and addition processes are repeated the number of times corresponding to the size of the filter and the number of channels. For example, if the filter size is 3 ⁇ 3 and the number of channels is 3, the multiplication and addition process is repeated 27 times.
- the selector 35 selects the bias 7B corresponding to the filter.
- the adder 36 adds the bias 7B selected by the selector 35 to the added data stored in the register 33 .
- the data to which the bias 7B is added is stored in the register 37 .
- the data stored in the register 37 is output to the pooling processing section 22A.
- the ALUs 23B to 23D have the same configuration as the ALU 23A, so their description is omitted.
- FIG. 12 shows an example of the flow of one first convolution process by the ALU 23A.
- step S1 a block B1 divided from one first row data R1 is input to the register 30.
- step S2 the multiplier 32 performs multiplication processing with a weight of 7A.
- step S3 the adder 34 performs addition processing for each pixel.
- step S4 it is determined whether or not the pixel shift has been completed a predetermined number of times. If the size of the filter is 3 ⁇ 3, the pixel shift is performed twice, so the predetermined number of times is two. If pixel shifting has not been completed a predetermined number of times (step S4: NO), pixel shifting is performed in step S5. Steps S2 to S5 are repeatedly executed until the pixel shift is performed a predetermined number of times. If the pixel shift has been completed the predetermined number of times (step S4: YES), the process proceeds to step S6.
- step S6 it is determined whether or not the first row data R1 has been changed a predetermined number of times.
- the predetermined number of times is two because the first row data R1 is changed twice. If the first row data R1 has not been changed a predetermined number of times (step S6: NO), the first row data R1 is changed in step S7.
- the block B1 is changed, the block B1 divided from the changed first row data R1 is input to the register 30 in step S1. Steps S1 to S7 are repeated until the first row data R1 is changed a predetermined number of times.
- step S6: YES the process proceeds to step S8.
- step S8 it is determined whether or not the channel has been changed a predetermined number of times.
- the predetermined number of times is two because the channel is changed twice. If the channel has not been changed a predetermined number of times (step S8: NO), the channel is changed in step S9.
- block B1 of the changed channel is entered into register 30 in step S1. Steps S1 to S9 are repeatedly executed until the channel is changed a predetermined number of times. If the channel has been changed a predetermined number of times (step S8: YES), the process proceeds to step S10.
- step S10 the adder 36 performs addition processing of the bias 7B.
- step S11 the data to which the bias 7B has been added is output to the pooling processing section 22A.
- the process shown in FIG. 12 represents one first convolution process for three first row data R1 included in the first strip-shaped data PS1.
- the ALU 23A executes the first convolution process while sequentially changing the three target first row data R1.
- the ALUs 23B-23D perform the same processing as the ALU 23A.
- FIG. 13 conceptually shows one first convolution process by the ALU 23A.
- the ALU 23A shifts the blocks B1 divided from the three pieces of first row data R1 i,k , R1 i+1,k , R1 i+2,k in order by pixels, and assigns corresponding weights w p,q , k, n are multiplied and added. Pixel shifts, weight multiplications and additions are performed for all channels k, and the biases b_n are added to obtain one block that constitutes the image data CP_n .
- the ALUs 23A to 23D perform the first convolution processing while changing the set of three target first row data R1 i,k , R1 i+1,k , R1 i+2,k row by row. conduct.
- the ALUs 23A and 23B perform the second convolution processing while changing the set of three target second row data R2i ,k , R2i +1,k , R2i +2,k by two rows. conduct. Also, the ALUs 23A and 23B perform the second convolution processing while changing the set of three target second row data R2 i+1,k , R2 i+2,k , R2 i+3,k by two rows.
- the second convolution process is the same as the first convolution process described above, so detailed description is omitted.
- FIG. 14 conceptually shows the first feature amount extraction process and the second feature amount extraction process.
- the second strip-shaped data PS2 generated by performing the first feature amount extraction process on the first strip-shaped data PS1 has the number of vertical and horizontal pixels each halved. , the number of channels doubles.
- the third strip-shaped data PS3 generated by performing the second feature amount extraction processing on the second strip-shaped data PS2 has the number of vertical and horizontal pixels halved, and the number of channels reduced. be doubled.
- the second pixel number G2 of the second row data R2 generated by the first feature amount extraction process is half the first pixel number G1 of the first row data R1. Therefore, if the first arithmetic module 11 and the second arithmetic module 12 have the same configuration so that four ALUs process one second row data R2, the second arithmetic module 12 has four ALUs. 2 of the ALUs are unused and wasted.
- the first arithmetic module 11 is configured such that one first row data R1 is processed by four ALUs
- the second arithmetic module 12 is configured such that one second row data R2 is processed by two ALUs. Since it is configured to be processed by ALU, there is no wasteful ALU that is not used.
- the first feature amount extraction process is performed until all the channels are processed by the second feature amount extraction process. waiting occurs. Specifically, after outputting the data for one row to the second arithmetic module 12, the first arithmetic module 11 outputs the data for the next row unless the second feature quantity extraction processing is completed for all channels. Since it cannot be output, processing waiting occurs.
- the second arithmetic module 12 simultaneously processes two rows of data using two ALUs, so that the second feature amount extraction process is faster than the first feature amount extraction process. do. As a result, the wait for the first feature quantity extraction process is eliminated.
- FIG. 15 shows the timing of the first feature amount extraction process and the second feature amount extraction process.
- FIG. 15A shows an example of processing timing when the first arithmetic module 11 and the second arithmetic module 12 are configured to process one row data by four ALUs.
- a first process represents a process for a set of three row data. In this case, since the first feature amount extraction process takes less time than the second feature amount extraction process, the first feature amount extraction process has a waiting time.
- the first computation module 11 is configured to process one row data by four ALUs
- the second computation module 12 is configured to process one row data by two ALUs.
- An example of processing timing when configured as above is shown.
- a first process represents a process for a set of three row data.
- the second processing represents processing for the next three row data sets that are shifted by one row.
- the time required for the first process and the second process is shorter in the first feature amount extraction process than in the second feature amount extraction process. Since the first feature value extraction process is performed as described above, the process wait time is eliminated.
- the waiting time for the first feature amount extraction process is eliminated, so the processing speed for inference by the inference device 2 is increased.
- the feature quantity extraction unit 4 has two computation modules, the first computation module 11 and the second computation module 12, but the number of computation modules is not limited to two, and may be three or more. .
- FIG. 16 shows the configuration of the feature quantity extraction unit 4A according to the modification.
- the feature quantity extraction unit 4A has the same configuration as the feature quantity extraction unit 4 according to the first embodiment except that it has a third calculation module 13 in addition to the first calculation module 11 and the second calculation module 12 .
- FIG. 17 shows an example of the configuration of the third computing module 13.
- the third computing module 13 like the first computing module 11 and the second computing module 12, includes a line memory 20C, a convolution processing section 21C, and a pooling processing section 22C.
- the convolution processing unit 21C also includes four ALUs 23A to 23D.
- One pooling processor 22C may be provided for each of the ALUs 23A to 23D.
- the arithmetic control unit 18 causes the line memory 20C of the third arithmetic module 13 to sequentially store the plurality of third row data R3 forming the image data P3 output from the second arithmetic module 12 .
- the plurality of third row data R3 are included in the plurality of third strip data PS3 generated by dividing the image data P3 in the row direction by the third number of pixels G3.
- the ALUs 23A to 23D of the third arithmetic module 13 perform convolution processing on the plurality of third row data R3.
- the convolution processing performed by the third arithmetic module 13 is referred to as "third convolution processing”.
- FIG. 18 explains the third convolution process.
- R3 i,k indicates the i-th third row data of the k channel read out from the line memory 20C.
- the i-th third row data R3 i,k is input to the ALU 23A.
- the i+1-th third row data R3 i+1,k is input to the ALU 23B.
- the i+2th third row data R3i+2,k is input to the ALU 23C.
- the i+3-th third row data R3 i+3,k is input to the ALU 23D.
- Each of the ALUs 23A to 23D performs the third convolution process by multiplying the input third row data R3 by weights while shifting pixels.
- the ALU 23A executes the third convolution processing once on the three third row data R3i,k , R3i +1,k , R3i+2,k in parallel.
- the ALU 23B executes the third convolution processing once on the three third row data R3 i+1,k , R3 i+2,k , R3 i+3,k in parallel.
- the ALU 23C executes the third convolution processing once on the three third row data R3 i+2,k , R3 i+3,k , R3 i+4,k in parallel.
- the ALU 23D executes the third convolution processing once on the three third row data R3 i+3,k , R3 i+4,k , R3 i+5,k in parallel.
- the third convolution process is the same as the first convolution process and the second convolution process described above, so detailed description thereof will be omitted.
- Data output from the ALUs 23A to 23D are input to the pooling processor 22C.
- the pooling processing unit 22C outputs fourth row data R4 i,k having a width of the fourth pixel count G4 by performing 2 ⁇ 2 pooling processing.
- a plurality of fourth row data R4i ,k output from the pooling processing unit 22C constitute the fourth strip-shaped data PS4.
- the image data P4 is composed of a plurality of fourth strip-shaped data PS4.
- the fourth pixel count G4 is half the third pixel count G3. Also, the image data P4 has more channels than the image data P3.
- the third computing module 13 outputs the image data P4 to the output unit 5.
- the output unit 5 classifies the image data P1 based on the image data P4 including the feature amount.
- FIG. 19 conceptually shows the first to third feature quantity extraction processes.
- the second strip-shaped data PS2 generated by performing the first feature amount extraction process on the first strip-shaped data PS1 has the number of pixels in the vertical and horizontal directions halved. , the number of channels doubles.
- the third strip-shaped data PS3 generated by performing the second feature amount extraction processing on the second strip-shaped data PS2 has the number of vertical and horizontal pixels halved, and the number of channels reduced. be doubled.
- the fourth strip-shaped data PS4 generated by performing the third feature amount extraction process on the third strip-shaped data PS3 has the number of pixels in the vertical and horizontal directions halved, and the number of channels reduced to 1/2. be doubled.
- the inference apparatus uses a feature quantity extraction unit 4B shown in FIG. 20 instead of the feature quantity extraction unit 4.
- FIG. 20 The feature amount extraction unit 4B according to this embodiment constitutes a CNN used for object detection and/or area extraction.
- the feature quantity extraction unit 4B constitutes a so-called U-Net.
- the inference device performs object detection and/or region extraction instead of classification, so the output unit 5 outputs image data.
- the feature amount extraction unit 4B includes an input data storage unit 10, an encoder 40, a decoder 50, a DRAM 60, and an arithmetic control unit 18.
- the encoder 40 has three arithmetic modules 41-43.
- the decoder 50 comprises three arithmetic modules 51-53.
- the number of arithmetic modules provided in each of the encoder 40 and the decoder 50 is not limited to three, and may be two or four or more.
- the encoder 40 repeatedly performs convolution processing and pooling processing on image data P1 as input data.
- the computing modules 41 to 43 have the same configuration as the first computing module 11, the second computing module 12, and the third computing module 13 described above. Each time the arithmetic modules 41 to 43 sequentially perform convolution processing and pooling processing, the image size is reduced and the number of channels is increased.
- the pooling process is also called a downsampling process because the image size is reduced.
- the decoder 50 repeats the upsampling process and the deconvolution process multiple times on the image data P4 output by the encoder 40 .
- the computing modules 51-53 are configured to perform deconvolution and upsampling operations, unlike the computing modules 41-43. By sequentially performing deconvolution processing and upsampling processing by the arithmetic modules 51 to 53, the image size is increased and the number of channels is decreased.
- the decoder 50 performs a combining process of combining the feature map generated by the encoder 40 with the feature map generated by the decoder 50 .
- the DRAM 60 has a larger data storage capacity than the line memory included in the computing modules 41 and 42, and temporarily stores the feature maps FM1 and FM2 generated by the computing modules 41 and 42.
- FIG. The DRAM 60 is an example of the "third memory" according to the technology of the present disclosure.
- the DRAM 60 stores the generated data each time the calculation module 41 performs the first convolution process once and generates data forming part of the feature map FM1. Similarly, the DRAM 60 stores the generated data each time the calculation module 42 performs the second convolution processing once and generates data forming part of the feature map FM2.
- the arithmetic control unit 18 supplies the data stored in the DRAM 60 to the arithmetic modules 52 and 53 according to the timing required when the decoder 50 performs the combining process.
- the arithmetic module 43 performs the third convolution processing once and generates data forming part of the feature map FM3, the generated data is sent to the arithmetic module 51 of the decoder 50 without going through the DRAM 60. supplied. This is because the data generated by the computing module 43 does not need to be stored in the DRAM 60 since the combining process is performed in the computing module 51 after the computing module 43 .
- FIG. 21 shows an example of the configuration of the arithmetic modules 51-53 included in the decoder 50.
- the arithmetic module 51 includes a line memory 60A, a deconvolution processing section 61A, an upsampling processing section 62A, and a combination processing section 63A.
- the arithmetic module 52 includes a line memory 60B, a deconvolution processing section 61B, an upsampling processing section 62B, and a combination processing section 63B.
- the arithmetic module 53 includes a line memory 60C, a deconvolution processing section 61C, an upsampling processing section 62C, and a combination processing section 63C.
- the image data P4 output by the encoder 40 is input to the computing module 51 .
- the image data P4 is stored in the line memory 60A for each of a plurality of line data, and deconvolution processing is performed by the deconvolution processing section 61A.
- the number of channels is reduced by the deconvolution processing by the deconvolution processing unit 61A.
- the upsampling processor 62A generates a feature map FM4 by upsampling the data output from the deconvolution processor 61A.
- the upsampling process is a process for increasing the number of pixels, which is the opposite of the pooling process described above. In this embodiment, the upsampling processor 62A doubles the number of vertical and horizontal pixels of the image data.
- the size of the feature map FM4 is the same as the size of the feature map FM3 supplied from the encoder 40.
- the combining processing unit 63A generates image data P5 by combining the feature map FM3 with the feature map FM4.
- the combination processing unit 63A performs a concat type combination that adds the feature map FM3 to the feature map FM4 as a channel.
- the image data P5 output by the computing module 51 is input to the computing module 52 .
- the calculation module 52 performs the same processing as the calculation module 51 on the image data P5.
- the upsampling processor 62B generates a feature map FM5 by upsampling the data output from the deconvolution processor 61B.
- the size of feature map FM5 is the same as the size of feature map FM2 supplied from encoder 40 via DRAM 60.
- the combining processing unit 63B generates image data P6 by combining the feature map FM2 with the feature map FM5.
- the image data P6 output by the computing module 52 is input to the computing module 53 .
- the calculation module 53 performs the same processing as the calculation module 51 on the image data P6.
- the upsampling processor 62C generates a feature map FM6 by upsampling the data output from the deconvolution processor 61C.
- the size of the feature map FM6 is the same as the size of the feature map FM1 supplied from the encoder 40 via the DRAM60.
- the combining processing unit 63C generates image data P7 by combining the feature map FM1 with the feature map FM6.
- the image data P7 output by the computing module 53 is input to the output unit 5.
- the output unit 5 further performs deconvolution processing on the image data P7 to generate and output image data for output.
- the image data P7 has the same image size as the image data P1.
- the computing module 41 and computing module 42 of the encoder 40 respectively correspond to the “first computing module” and the “second computing module” according to the technology of the present disclosure.
- the calculation module 41 is a "module for down-sampling the first image data" according to the technology of the present disclosure.
- the feature map FM6 corresponds to "feature image data stored in the third memory” according to the technology of the present disclosure.
- the image data P6 corresponds to "input image data” according to the technology of the present disclosure.
- the computing module 53 corresponds to a “third computing module that upsamples input image data” according to the technology of the present disclosure.
- Image data P7 corresponds to "first image data corrected using feature image data” according to the technology of the present disclosure. Combining feature maps is an example of "correction” according to the technology of this disclosure.
- FIG. 22 conceptually shows the hierarchical structure of a CNN composed of encoders 40 and decoders 50 .
- FIG. 23 describes the pipeline processing performed on the feature maps FM1-FM6.
- the 18th line of the feature map FM1 is generated at the time when the first line of the feature map FM1 is combined with the first line of the feature map FM6. Therefore, if the DRAM 60 is not provided in the feature quantity extraction unit 4B, the 18 lines of the feature map FM1 are combined when the first line of the feature map FM1 is combined with the first line of the feature map FM6. must be kept. In order to store the feature map FM1 for 18 lines in the line memory (first memory) of the computation module 41, it is necessary to increase the storage capacity of the line memory. Similarly, when combining the first row of the feature map FM2 with the first row of the feature map FM5, it is necessary to hold eight rows of the feature map FM2. In order to store the feature map FM2 for 8 lines in the line memory (second memory) of the computation module 42, it is necessary to increase the storage capacity of the line memory.
- the feature maps FM1 and F2 generated by the computing modules 41 and 42 are stored in the DRAM 60 (third memory) having a large data storage capacity, and the required rows are processed according to the timing required for the combining process. are transferred to the calculation modules 52 and 53.
- the DRAM 60 may store the feature maps FM1 and FM2 of the number of rows necessary for the combining process.
- the technology of the present disclosure is not limited to digital cameras, and can also be applied to electronic devices such as smartphones and tablet terminals that have imaging functions.
- processors can be used for the ALU that performs the convolution operation described above.
- various processors can be used for the arithmetic control unit, pooling processing unit, and upsampling processing unit described above.
- These processors include, in addition to ICs, processors such as FPGAs whose circuit configuration can be changed after manufacturing.
- FPGAs include dedicated electric circuits, which are processors with circuitry specifically designed to perform specific processing, such as PLDs or ASICs.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
推論装置は、畳み込み処理及びプーリング処理を含む演算処理を実行する第1演算モジュール及び第2演算モジュールを備える。第1演算モジュールは、第1画像データが第1画素数ごとに行方向に分割されることによって生成された複数の第1行データを格納する第1メモリと、複数の第1行データに対して第1畳み込み処理を実行する複数の第1演算器とを有する。第2演算モジュールは、第2画像データが第2画素数ごとに行方向に分割されことによって生成された複数の第2行データを格納する第2メモリと、複数の第2行データに対して第2畳み込み処理を実行する複数の第2演算器とを有する。第1画像データと第2画像データとはチャネル数が互いに異なる。複数の第1行データに対して1回の第1畳み込み処理を並列で実行する第1演算器の数である第1数と、複数の第2行データに対して1回の第2畳み込み処理を並列で実行する第2演算器の数である第2数とが異なる。
Description
本開示の技術は、推論装置に関する。
特開2009-080693号公報には、入力データに対して演算を行うことによって演算結果データを生成し、かつ複数の論理的な処理ノードを接続した階層型ネットワークでネットワーク演算を実行する演算処理装置が開示されている。演算処理装置は、ネットワークを構成する複数の処理ノードの各々に対応して演算結果データを保持するための中間バッファ用の記憶領域をメモリに割り当てるための複数種類のバッファ割り当て方法のそれぞれについて、ネットワーク演算に必要なメモリ量を当該ネットワーク演算の構成に基づいて算出し、算出されたメモリ量に基づいて選択されたバッファ割り当て方法に応じた実行順でネットワーク演算を実行させる。
本開示の技術に係る一つの実施形態は、処理速度の高速化を可能とする推論装置を提供する。
上記目的を達成するために、本開示の推論装置は、機械学習済みデータを用いて推論を行う推論装置であって、畳み込み処理及びプーリング処理を含む演算処理を実行する第1演算モジュール及び第2演算モジュールを備え、第1演算モジュールは、入力される第1画像データが第1画素数ごとに行方向に分割されることによって生成された複数の第1行データを格納する第1メモリと、複数の第1行データに対して第1畳み込み処理を実行する複数の第1演算器とを有し、第2演算モジュールは、入力される第2画像データが第2画素数ごとに行方向に分割されることによって生成された複数の第2行データを格納する第2メモリと、複数の第2行データに対して第2畳み込み処理を実行する複数の第2演算器とを有し、第1画像データのチャネル数と第2画像データのチャネル数とは互いに異なり、複数の第1行データに対して1回の第1畳み込み処理を並列で実行する第1演算器の数である第1数と、複数の第2行データに対して1回の第2畳み込み処理を並列で実行する第2演算器の数である第2数とが異なる。
第2画像データは、第1画像データに対して第1演算モジュールが演算処理を行うことにより生成される特徴量を含む画像データであることが好ましい。
第2画像データのチャネル数は、第1画像データのチャネル数よりも多く、第1数は、第2数よりも大きいことが好ましい。
第2演算モジュールに入力される第2画像データの処理画素数は、第1演算モジュールに入力される第1画像データの処理画素数よりも小さいことが好ましい。
第1演算モジュールによる演算処理と、第2演算モジュールによる演算処理とは並列して実行されることが好ましい。
第1メモリのデータ格納単位は、第1画素数、第1畳み込み処理に用いられるフィルタのサイズ、及び、第1畳み込み処理に用いられるフィルタのチャネル数に対応することが好ましい。
第2メモリのデータ格納単位は、第2画素数、第2畳み込み処理に用いられるフィルタのサイズ、及び、第2畳み込み処理に用いられるフィルタのチャネル数に対応することが好ましい。
第2畳み込み処理に用いられるフィルタの数は、第1畳み込み処理に用いられるフィルタの数よりも多いことが好ましい。
第1行データは、第1画像データの一部の行に対応するデータであることが好ましい。
第1メモリ及び第2メモリよりもデータ格納容量が大きく、第1演算モジュールにより生成される特徴量を含む特徴画像データを格納する第3メモリと、入力された入力画像データをアップサンプリングする第3演算モジュールと、をさらに備え、第1演算モジュールは、第1画像データをダウンサンプリングするモジュールであり、第3演算モジュールは、入力画像データをアップサンプリングし、かつ第3メモリに格納された特徴画像データを用いることにより、補正された第1画像データを生成することが好ましい。
添付図面に従って本開示の技術に係る実施形態の一例について説明する。
先ず、以下の説明で使用される文言について説明する。
以下の説明において、「IC」は、“Integrated Circuit”の略称である。「DRAM」は、“Dynamic Random Access Memory”の略称である。「FPGA」は、“Field Programmable Gate Array”の略称である。「PLD」は、“Programmable Logic Device”の略称である。「ASIC」は、“Application Specific Integrated Circuit”の略称で
ある。「CNN」は、“Convolutional Neural Network”の略称である。「ALU」は、“Arithmetic Logic Unit”の略称である。
ある。「CNN」は、“Convolutional Neural Network”の略称である。「ALU」は、“Arithmetic Logic Unit”の略称である。
[第1実施形態]
図1は、推論装置2の構成の一例を示す。例えば、推論装置2は、デジタルカメラ等の撮像装置に組み込まれる。推論装置2は、機械学習による推論を行う装置であり、例えば、画像データに写る被写体の種類等を推論により求める。撮像装置は、推論装置2から出力される推論結果に基づいて、撮像に関する各種の制御を行う。
図1は、推論装置2の構成の一例を示す。例えば、推論装置2は、デジタルカメラ等の撮像装置に組み込まれる。推論装置2は、機械学習による推論を行う装置であり、例えば、画像データに写る被写体の種類等を推論により求める。撮像装置は、推論装置2から出力される推論結果に基づいて、撮像に関する各種の制御を行う。
推論装置2は、入力部3、特徴量抽出部4、出力部5、及び学習済みデータ記憶部6を備える。入力部3は、撮像装置が撮像を行うことにより生成された画像データを取得し、取得した画像データを入力データとして特徴量抽出部4に入力する。特徴量抽出部4及び出力部5は、いわゆる畳み込みニューラルネットワーク(CNN)を構成している。学習済みデータ記憶部6には、重み7A及びバイアス7Bが記憶されている。重み7A及びバイアス7Bは、機械学習により生成された機械学習済みデータである。
特徴量抽出部4は、複数の畳み込み層及びプーリング層で構成された中間層である。本実施形態では、出力部5は、全結合層を含んで構成された出力層である。
特徴量抽出部4は、入力部3から入力される画像データに対して畳み込み処理及びプーリング処理を実行することにより特徴量を抽出する。出力部5は、特徴量抽出部4により抽出された特徴量に基づいて、推論装置2に入力された画像データを分類する。例えば、出力部5は、画像データに写る被写体の種類を分類する。特徴量抽出部4及び出力部5は、学習済みデータ記憶部6に記憶された重み7A及びバイアス7Bを用いて構成される学習済みモデルにより特徴量抽出処理及び分類処理を行う。特徴量抽出処理は、本開示の技術に係る「演算処理」の一例である。
図2は、特徴量抽出処理及び分類処理の一例を概念的に示す。図2に示すように、入力部3から特徴量抽出部4に入力される画像データP1は、R(Red)、G(Green)、及びB(Blue)の3チャネルで構成されている。特徴量抽出部4は、入力された画像データP1に対して、畳み込み処理及びプーリング処理を複数回繰り返し実行する。画像データP1は、本開示の技術に係る「第1画像データ」の一例である。
特徴量抽出部4は、3チャネルの画像データP1に対して畳み込み処理を実行することにより6チャネルの特徴マップFM1を生成し、生成した特徴マップFM1に対してプーリング処理を実行することにより画像データP2を生成する。画像データP1と画像データP2とはチャネル数が互いに異なる。画像データP2のチャネル数は、画像データP1のチャネル数よりも多い。画像データP2は、画像データP1よりも画素数が減少(すなわち画像サイズが縮小)する。また、画像データP2は、画像データP1に対して第1演算モジュール11が特徴量抽出処理を行うことにより生成される特徴量を含む画像データである。画像データP2は、本開示の技術に係る「第2画像データ」の一例である。
また、特徴量抽出部4は、画像データP2に対して畳み込み処理を実行することにより12チャネルの特徴マップFM2を生成し、生成した特徴マップFM2に対してプーリング処理を実行することにより画像データP3を生成する。画像データP2と画像データP3とはチャネル数が互いに異なる。画像データP3のチャネル数は、画像データP2のチャネル数よりも多い。画像データP3は、画像データP2よりも画素数が減少(すなわち画像サイズが縮小)する。また、画像データP3は、画像データP2に対して第2演算モジュール12が特徴量抽出処理を行うことにより生成される特徴量を含む画像データである。
図2に示す例では、特徴量抽出部4から出力部5には画像データP3が入力される。出力部5は、全結合層を含んで構成されており、特徴量を含む画像データP3に基づいて画像データP1を分類する。出力部5は、画像データP1を分類した結果を推論結果として出力する。
図3は、畳み込み処理及びプーリング処理を詳細に説明する。図3では、画像データP1のチャネル数をKとしている。特徴量抽出部4は、入力データとしての画像データP1に対して、N個のフィルタF1~FNを用いて畳み込み演算を実行することにより、N個の画像データCP1~CPNを生成する。フィルタF1~FNは、上述の重み7Aにより構成される。画像データCP1~CPNの各々のチャネル数はKである。
また、特徴量抽出部4は、画像データCP1~CPNの各々についてチャネルを統合した後、バイアスb1~bNをそれぞれに加算することにより特徴マップFM1を生成する。なお、チャネルの統合とは、複数のチャネルについて対応する画素値を加算することにより1つのチャネルに変換することをいう。特徴マップFM1のチャネル数はNである。なお、バイアスb1~bNは、上述のバイアス7Bに対応する。
さらに、特徴量抽出部4は、特徴マップFM1に対して、例えば2×2のカーネルQを用いてプーリング処理を実行することにより、画像データP2を生成する。プーリング処理は、例えば、カーネルQ内の画素値の最大値を取得する最大プーリング処理である。なお、最大プーリング処理に代えて、カーネルQ内の画素値の平均値を取得する平均プーリング処理を用いてもよい。2×2のカーネルQを用いた場合には、画像データP2の画素数は、画像データP1の画素数の1/4倍となる。
なお、特徴量抽出部4は、畳み込み処理又はプーリング処理において活性化関数を適用する。図3では、活性化関数の適用については図示を省略している。
図4は、フィルタFnのk番目のチャネルの構成を示す。フィルタFnは、N個のフィルタF1~FNのうちの1つのフィルタである。図4に示す例では、フィルタFnは、サイズが3×3であり、チャネル数はKである。フィルタFnのk番目のチャネルは、9個の重みwp,q,k,nにより表される。ここで、pはフィルタFn内における横方向の座標を表し、qはフィルタFn内における縦方向の座標を表す。重みwp,q,k,nは、上述の重み7Aに対応する。なお、フィルタFnのサイズは、3×3に限られず、5×5等のサイズに適宜変更可能である。
式1において、ax+p,y+q,kは、画像データP1のk番目のチャネルにおいて重みwp,q,k,nが乗算される画素の画素値を表す。x,yは、特徴マップFM1における座標を表す。cx,y,nは、特徴マップFM1のn番目のチャネルにおいて、座標x,yの画素の画素値を表す。bnは、特徴マップFM1のn番目のチャネルの各画素に加算されるバイアスを表す。
なお、特徴量抽出部4は、画像データP2に対して畳み込み処理及びプーリング処理を行う場合には、画像データP1に代えて画像データP2を入力データとして、同様の処理を行う。
図5は、特徴量抽出部4の構成の一例を示す。特徴量抽出部4は、入力データ記憶部10、第1演算モジュール11、第2演算モジュール12、及び演算制御部18を備える。入力データ記憶部10は、入力部3から入力される画像データP1を記憶する。第1演算モジュール11は、ラインメモリ20A、畳み込み処理部21A、及びプーリング処理部22Aを備える。なお、プーリング処理部22Aは、ALU23A~23Dに対して1つずつ設けられていてもよい。
第2演算モジュール12は、ラインメモリ20B、畳み込み処理部21B、及びプーリング処理部22Bを備える。なお、プーリング処理部22Bは、ALU23A~23Dに対して1つずつ設けられていてもよい。
演算制御部18は、入力データ記憶部10、第1演算モジュール11、及び第2演算モジュール12の動作を制御する。第1演算モジュール11は、画像データP1に対して特徴量抽出処理を行うことにより、上述の画像データP2を生成する。第2演算モジュール12は、画像データP2に対して特徴量抽出処理を行うことにより、上述の画像データP3を生成する。第1演算モジュール11と第2演算モジュール12とは、パイプライン処理を行うことにより、特徴量抽出処理を並列して実行する。具体的には、第1演算モジュール11が処理したデータに対する第2演算モジュール12の特徴量抽出処理と、第1演算モジュール11による次のデータの特徴量抽出処理とが並列して実行される。
畳み込み処理部21Aは、畳み込み演算を行う複数のALUを含む。本実施形態では、畳み込み処理部21Aは、4つのALU23A~23Dを備える。詳しくは後述するが、ALU23A~23Dは、入力データに対する畳み込み処理を並列に実行する。
同様に、畳み込み処理部21Bは、畳み込み演算を行う複数のALUを含む。本実施形態では、畳み込み処理部21Bは、4つのALU23A~23Dを備える。詳しくは後述するが、ALU23A~23Dは、入力データに対する畳み込み処理を並列に実行する。
なお、第1演算モジュール11の畳み込み処理部21Aに含まれるALU23A~23Dは、本開示の技術に係る「複数の第1演算器」の一例である。第2演算モジュール12の畳み込み処理部21Bに含まれるALU23A~23Dは、本開示の技術に係る「複数の第2演算器」の一例である。
演算制御部18は、入力データ記憶部10に記憶された画像データP1を第1画素数G1ごとに行方向に分割して複数の短冊状データ(以下、第1短冊状データPS1という。)を生成する。また、演算制御部18は、第1短冊状データPS1に含まれる複数の第1行データR1を第1演算モジュール11のラインメモリ20Aに順に記憶させる。第1演算モジュール11のALU23A~23Dは、複数の第1行データR1に対して畳み込み処理を実行する。なお、第1行データR1は、画像データP1の一部の行に対応するデータである。
また、演算制御部18は、第1演算モジュール11から出力される画像データP2を構成する複数の第2行データR2を第2演算モジュール12のラインメモリ20Bに順に記憶させる。複数の第2行データR2は、画像データP2を第2画素数G2ごとに行方向に分割することによって生成される複数の短冊状データ(以下、第2短冊状データPS2という。)に含まれる。第2演算モジュール12のALU23A~23Dは、複数の第2行データR2に対して畳み込み処理を実行する。
以下、第1演算モジュール11が行う畳み込み処理を「第1畳み込み処理」といい、第2演算モジュール12が行う畳み込み処理を「第2畳み込み処理」という。なお、ラインメモリ20Aは、本開示の技術に係る「第1メモリ」の一例である。ラインメモリ20Bは、本開示の技術に係る「第2メモリ」の一例である。第2畳み込み処理に用いられるフィルタの数は、第1畳み込み処理に用いられるフィルタの数よりも多い。
図6は、演算制御部18による画像データP1の分割処理の一例を示す。画像データP1は、R,G,Bのチャネルごとにx方向及びy方向に2次元配列された画素を有する。図6に示すように、演算制御部18は、例えば、画像データP1をx方向(行方向に対応)に4分割することにより4つの第1短冊状データPS1を生成する。第1短冊状データPS1のx方向への幅は、第1画素数G1に対応する。
また、本実施形態では、演算制御部18は、x方向に隣接する第1短冊状データPS1の端部同士が重複するように画像データP1を分割する。本実施形態では、サイズが3×3のフィルタを用いた畳み込み処理を2回行うので、重複幅を6画素としている。重複幅は、フィルタのサイズ及び畳み込み処理の回数に応じて変更することが好ましい。
仮に、画像データP1を分割せずに畳み込み処理を行う場合には、畳み込み処理で生成される多チャネルのデータを大容量のメモリ(DRAM等)に格納するために、メモリ帯域幅を高める必要がある。しかし、バッテリー駆動のデジタルカメラ等の撮像装置では、メモリ帯域の高速化は容易ではないので、メモリ帯域が処理のボトルネックとなる。これに対して、上記のように、画像データP1を分割することにより、小容量のラインメモリを用いて畳み込み処理を行うことができるので、メモリ帯域によるボトルネックが生じず、処理が高速化する。
図7は、ラインメモリ20Aの構成の一例を示す。ラインメモリ20Aのデータ格納単位は、第1画素数G1、第1畳み込み処理に用いられるフィルタのサイズ、及び、第1畳み込み処理に用いられるフィルタのチャネル数Kに対応する。図7において、M1は、チャネルごとのライン数を表している。ライン数M1は、フィルタのサイズに応じて決定される。本実施形態では、K=3、M1=3としている。
ラインメモリ20Aには、第1行データR1が、M1×K本の単位で格納される。ラインメモリ20Aから畳み込み処理部21Aには、第1行データR1が順に入力される。第1行データR1とは、第1短冊状データPS1においてx方向に1チャネル分の画素が並んだラインのデータをいう。
図8は、ラインメモリ20Bの構成の一例を示す。ラインメモリ20Bのデータ格納単位は、第2画素数G2、第2畳み込み処理に用いられるフィルタのサイズ、及び、第2畳み込み処理に用いられるフィルタのチャネル数Nに対応する。図8において、M2は、チャネルごとのライン数を表している。ライン数M2は、フィルタのサイズに応じて決定される。本実施形態では、N=6、M2=4としている。また、第2画素数G2は、第1画素数G1の1/2倍である。これは、第1演算モジュール11におけるプーリング処理でx方向に関する画素数が1/2倍となることに起因する。
ラインメモリ20Bには、第2行データR2が、M2×N本の単位で格納される。ラインメモリ20Bから畳み込み処理部21Bには、第2行データR2が順に入力される。第2行データR2とは、第2短冊状データPS2においてx方向に1チャネル分の画素が並んだラインのデータをいう。
図9は、第1畳み込み処理について説明する。図9において、R1i,kは、ラインメモリ20Aから読み出されるkチャネルのi番目の第1行データを示している。第1行データR1i,kは、4つのブロックB1~B4に分割されて、ALU23A~23Dにそれぞれ入力される。ブロックB1~B4の各々の幅は、第1画素数G1の1/4倍の画素数に対応する。
ALU23A~23Dの各々は、入力されたブロックを画素シフトしながら重みを乗じることにより第1畳み込み処理を実行する。ALU23A~23Dは、3つの第1行データR1i,k,R1i+1,k,R1i+2,kに対して1回の第1畳み込み処理を並列で実行する。すなわち、第1演算モジュール11では、複数の第1行データR1に対して1回の第1畳み込み処理を並列で実行する第1演算器の数(以下、第1数という。)は「4」である。
ALU23A~23Dから出力されるデータは、プーリング処理部22Aに入力される。プーリング処理部22Aは、2×2のプーリング処理を行うことにより、第2画素数G2の幅を有する第2行データR2i,kを出力する。プーリング処理部22Aから出力される複数の第2行データR2i,kは、第2短冊状データPS2を構成する。画像データP2は、複数の第2短冊状データPS2により構成される。
図10は、第2畳み込み処理について説明する。図10において、R2i,kは、ラインメモリ20Bから読み出されるkチャネルのi番目の第2行データを示している。i番目の第2行データR2i,kは、2つのブロックB1,B2に分割されて、ALU23A,23Bにそれぞれ入力される。同時に、i+1番目の第2行データR2i+1,kは、2つのブロックB1,B2に分割されて、ALU23C,23Dにそれぞれ入力される。ブロックB1,B2の各々の幅は、第2画素数G2の1/2倍の画素数に対応する。
ALU23A~23Dの各々は、入力されたブロックを画素シフトしながら重みを乗じることにより第2畳み込み処理を実行する。ALU23A,23Bは、3つの第2行データR2i,k,R2i+1,k,R2i+2,kに対して1回の第2畳み込み処理を並列で実行する。同時に、ALU23C,23Dは、3つの第2行データR2i+1,k,R2i+2,k,R2i+3,kに対して1回の第2畳み込み処理を並列で実行する。すなわち、第2演算モジュール12では、複数の第2行データR2に対して1回の第2畳み込み処理を並列で実行する第2演算器の数(以下、第2数という。)は「2」である。すなわち、第1数と第2数とは異なる。本実施形態では、第1数は第2数より大きい。
ALU23A~23Dから出力されるデータは、プーリング処理部22Bに入力される。プーリング処理部22Bは、2×2のプーリング処理を行うことにより、第3画素数G3の幅を有する第3行データR3i,kを出力する。プーリング処理部22Bから出力される複数の第3行データR3i,kは、第3短冊状データPS3を構成する。画像データP3は、複数の第3短冊状データPS3により構成される。第3画素数G3は、第2画素数G2の1/2倍である。
第1演算モジュール11は、ALU23A~23Dにより1つの第1行データR1に対して同時に処理を実行する。これに対して、第2演算モジュール12は、ALU23A~23Dにより隣接する2つの第2行データR2に対して同時に処理を実行する。第2演算モジュール12に入力される画像データP2の処理画素数は、第1演算モジュール11に入力される画像データP1の処理画素数よりも小さい。処理画素数とは、演算モジュールが処理を行う画素数をいう。
図11は、ALU23Aの構成の一例を示す。ALU23Aは、レジスタ30、シフト演算器31、乗算器32、レジスタ33、加算器34、セレクタ35、加算器36、及びレジスタ37を含んで構成されている。
レジスタ30には、上述のブロックB1が入力される。乗算器32は、レジスタ30に入力されたブロックB1の各画素に重み7Aを乗算する。レジスタ33には、重み7Aが乗算されたブロックB1が入力される。
シフト演算器31は、乗算器32が重み7Aを乗算するたびにレジスタ30に格納されたブロックB1を1画素ずつシフトする。乗算器32は、ブロックB1が画素シフトされるたびにブロックB1の各画素に重み7Aを乗算する。加算器34は、レジスタ33に入力されるブロックB1を画素ごとに順次加算する。
以上の乗算及び加算処理は、フィルタのサイズ及びチャネル数に対応する回数だけ繰り返し行われる。例えば、フィルタのサイズが3×3であって、チャネル数が3である場合には、乗算及び加算処理は、27回繰り返し行われる。
セレクタ35は、フィルタに対応するバイアス7Bを選択する。加算器36は、セレクタ35により選択されたバイアス7Bを、レジスタ33に格納された加算後のデータに加算する。レジスタ37には、バイアス7Bが加算されたデータが格納される。レジスタ37に格納されたデータは、プーリング処理部22Aへ出力される。
ALU23B~23Dは、ALU23Aと同様の構成であるので説明は省略する。
図12は、ALU23Aによる1回の第1畳み込み処理の流れの一例を示す。ステップS1では、レジスタ30に1つの第1行データR1から分割されたブロックB1が入力される。ステップS2では、乗算器32により重み7Aの乗算処理が行われる。ステップS3では、加算器34により画素ごとの加算処理が行われる。ステップS4では、画素シフトが所定回数終了したか否かの判定が行われる。フィルタのサイズが3×3である場合には、画素シフトが2回行われることになるので、所定回数は2回である。画素シフトが所定回数終了していない場合には(ステップS4:NO)、ステップS5において画素シフトが行われる。画素シフトが所定回数行われるまで、ステップS2~S5が繰り返し実行される。画素シフトが所定回数終了した場合には(ステップS4:YES)、処理はステップS6に移行する。
ステップS6では、第1行データR1の変更が所定回数終了したか否かの判定が行われる。フィルタのサイズが3×3である場合には、第1行データR1の変更が2回行われることになるので、所定回数は2回である。第1行データR1の変更が所定回数終了していない場合には(ステップS6:NO)、ステップS7において第1行データR1が変更される。ブロックB1が変更されると、ステップS1において変更された第1行データR1から分割されたブロックB1がレジスタ30に入力される。第1行データR1の変更が所定回数行われるまで、ステップS1~S7が繰り返し実行される。第1行データR1の変更が所定回数終了した場合には(ステップS6:YES)、処理はステップS8に移行する。
ステップS8では、チャネルの変更が所定回数終了したか否かの判定が行われる。3チャネルのフィルタを用いる場合には、チャネルの変更が2回行われることになるので、所定回数は2回である。チャネルの変更が所定回数終了していない場合には(ステップS8:NO)、ステップS9においてチャネルが変更される。チャネルが変更されると、ステップS1において変更されたチャネルのブロックB1がレジスタ30に入力される。チャネルの変更が所定回数行われるまで、ステップS1~S9が繰り返し実行される。チャネルの変更が所定回数終了した場合には(ステップS8:YES)、処理はステップS10に移行する。
ステップS10では、加算器36によりバイアス7Bの加算処理が行われる。ステップS11では、バイアス7Bが加算されたデータがプーリング処理部22Aへ出力される。
図12に示す処理は、第1短冊状データPS1に含まれる3つの第1行データR1を対象とした1回の第1畳み込み処理を示している。ALU23Aは、対象とする3つの第1行データR1を順に変更しながら第1畳み込み処理を実行する。
ALU23B~23Dは、ALU23Aと同様の処理を行う。
図13は、ALU23Aによる1回の第1畳み込み処理を概念的に示す。図13に示すように、ALU23Aは、3つの第1行データR1i,k,R1i+1,k,R1i+2,kから分割されたブロックB1をそれぞれ順に画素シフトしながら対応する重みwp,q,k,nを乗じ、かつ加算する。全てのチャネルkについて画素シフト、重みの乗算及び加算を行い、バイアスbnを加算することにより画像データCPnを構成する1つのブロックが得られる。
第1演算モジュール11では、ALU23A~23Dは、それぞれ対象とする3つの第1行データR1i,k,R1i+1,k,R1i+2,kのセットを1行ずつ変更しながら第1畳み込み処理を行う。
第2演算モジュール12では、ALU23A,23Bは、それぞれ対象とする3つの第2行データR2i,k,R2i+1,k,R2i+2,kのセットを2行ずつ変更しながら第2畳み込み処理を行う。また、ALU23A,23Bは、それぞれ対象とする3つの第2行データR2i+1,k,R2i+2,k,R2i+3,kのセットを2行ずつ変更しながら第2畳み込み処理を行う。
第2畳み込み処理は、上述の第1畳み込み処理と同様であるので詳細な説明は省略する。
図14は、第1特徴量抽出処理と第2特徴量抽出処理とを概念的に示す。図14に示す例では、第1短冊状データPS1に対して第1特徴量抽出処理が行われることにより生成される第2短冊状データPS2は、縦横の画素数がそれぞれ1/2倍になるとともに、チャネル数が2倍になる。また、第2短冊状データPS2に対して第2特徴量抽出処理が行われることにより生成される第3短冊状データPS3は、縦横の画素数がそれぞれ1/2倍になるとともに、チャネル数が2倍になる。
このように、第1特徴量抽出処理により生成される第2行データR2の第2画素数G2は第1行データR1の第1画素数G1の1/2倍になる。このため、仮に第1演算モジュール11と第2演算モジュール12とを、1つの第2行データR2を4つのALUで処理するように構成を同一とすると、第2演算モジュール12では、4つのALUのうちの2つのALUが使用されず無駄になる。本実施形態では、第1演算モジュール11については、1つの第1行データR1を4つのALUで処理するように構成し、第2演算モジュール12については、1つの第2行データR2を2つのALUで処理するように構成しているので、使用されない無駄なALUが生じない。
また、第2特徴量抽出処理は第1特徴量抽出処理よりも処理するチャネル数が多いので、第2特徴量抽出処理がすべてのチャネルについて処理するまでの間、第1特徴量抽出処理に処理待ちが発生してしまう。具体的には、第1演算モジュール11は、1行分のデータを第2演算モジュール12に出力した後、第2特徴量抽出処理がすべてのチャネルについて処理を終了しないと次の行のデータを出力することができないため、処理待ちが発生してしまう。これに対して、本実施形態では、第2演算モジュール12が2つの行のデータを2つのALUで同時に処理するので、第2特徴量抽出処理が第1特徴量抽出処理よりも処理が高速化する。これにより、第1特徴量抽出処理の処理待ちが解消する。
図15は、第1特徴量抽出処理及び第2特徴量抽出処理のタイミングを示す。図15(A)は、第1演算モジュール11と第2演算モジュール12とを、それぞれ1つの行データを4つのALUで処理するように構成した場合の処理タイミングの一例を示す。第1処理は、3つの行データのセットに対する処理を表している。この場合、第2特徴量抽出処理よりも第1特徴量抽出処理のほうが第1処理に掛かる時間が短いので、第1特徴量抽出処理には処理待ちが発生する。
図15(B)は、第1演算モジュール11については、1つの行データを4つのALUで処理するように構成し、第2演算モジュール12については、1つの行データを2つのALUで処理するように構成した場合の処理タイミングの一例を示す。第1処理は、3つの行データのセットに対する処理を表している。第2処理は、1行分ずれた次の3つの行データのセットに対する処理を表している。この場合、第2特徴量抽出処理よりも第1特徴量抽出処理のほうが第1処理及び第2処理に掛かる時間が短いが、第2特徴量抽出処理では第1処理と第2処理とが並列して行われるので、第1特徴量抽出処理には処理待ちが解消する。
このように、本実施形態では、第1特徴量抽出処理の処理待ちが解消するので、推論装置2による推論に係る処理速度が高速化する。
[第1実施形態の変形例]
第1実施形態では、特徴量抽出部4は、第1演算モジュール11及び第2演算モジュール12の2つの演算モジュールを有するが、演算モジュールの数は2に限られず、3以上であってもよい。
第1実施形態では、特徴量抽出部4は、第1演算モジュール11及び第2演算モジュール12の2つの演算モジュールを有するが、演算モジュールの数は2に限られず、3以上であってもよい。
図16は、変形例に係る特徴量抽出部4Aの構成を示す。特徴量抽出部4Aは、第1演算モジュール11及び第2演算モジュール12に加えて第3演算モジュール13を有すること以外は、第1実施形態に係る特徴量抽出部4と同様の構成である。
図17は、第3演算モジュール13の構成の一例を示す。第3演算モジュール13は、第1演算モジュール11及び第2演算モジュール12と同様に、ラインメモリ20C、畳み込み処理部21C、及びプーリング処理部22Cを備える。また、畳み込み処理部21Cは、4つのALU23A~23Dを備える。なお、プーリング処理部22Cは、ALU23A~23Dに対して1つずつ設けられていてもよい。
演算制御部18は、第2演算モジュール12から出力される画像データP3を構成する複数の第3行データR3を第3演算モジュール13のラインメモリ20Cに順に記憶させる。複数の第3行データR3は、画像データP3を第3画素数G3ごとに行方向に分割することによって生成される複数の第3短冊状データPS3に含まれる。
第3演算モジュール13のALU23A~23Dは、複数の第3行データR3に対して畳み込み処理を実行する。以下、第3演算モジュール13が行う畳み込み処理を「第3畳み込み処理」という。
図18は、第3畳み込み処理について説明する。図18において、R3i,kは、ラインメモリ20Cから読み出されるkチャネルのi番目の第3行データを示している。i番目の第3行データR3i,kは、ALU23Aに入力される。i+1番目の第3行データR3i+1,kは、ALU23Bに入力される。i+2番目の第3行データR3i+2,kは、ALU23Cに入力される。i+3番目の第3行データR3i+3,kは、ALU23Dに入力される。
ALU23A~23Dの各々は、入力された第3行データR3を画素シフトしながら重みを乗じることにより第3畳み込み処理を実行する。ALU23Aは、3つの第3行データR3i,k,R3i+1,k,R3i+2,kに対して1回の第3畳み込み処理を並列で実行する。ALU23Bは、3つの第3行データR3i+1,k,R3i+2,k,R3i+3,kに対して1回の第3畳み込み処理を並列で実行する。ALU23Cは、3つの第3行データR3i+2,k,R3i+3,k,R3i+4,kに対して1回の第3畳み込み処理を並列で実行する。ALU23Dは、3つの第3行データR3i+3,k,R3i+4,k,R3i+5,kに対して1回の第3畳み込み処理を並列で実行する。
第3畳み込み処理は、上述の第1畳み込み処理及び第2畳み込み処理と同様であるので詳細な説明は省略する。
ALU23A~23Dから出力されるデータは、プーリング処理部22Cに入力される。プーリング処理部22Cは、2×2のプーリング処理を行うことにより、第4画素数G4の幅を有する第4行データR4i,kを出力する。プーリング処理部22Cから出力される複数の第4行データR4i,kは、第4短冊状データPS4を構成する。画像データP4は、複数の第4短冊状データPS4により構成される。第4画素数G4は、第3画素数G3の1/2倍である。また、画像データP4は、画像データP3よりもチャネル数が多い。
本変形例では、第3演算モジュール13は、画像データP4を出力部5に出力する。出力部5は、特徴量を含む画像データP4に基づいて画像データP1を分類する。
図19は、第1~第3特徴量抽出処理を概念的に示す。図19に示す例では、第1短冊状データPS1に対して第1特徴量抽出処理が行われることにより生成される第2短冊状データPS2は、縦横の画素数がそれぞれ1/2倍になるとともに、チャネル数が2倍になる。また、第2短冊状データPS2に対して第2特徴量抽出処理が行われることにより生成される第3短冊状データPS3は、縦横の画素数がそれぞれ1/2倍になるとともに、チャネル数が2倍になる。さらに、第3短冊状データPS3に対して第3特徴量抽出処理が行われることにより生成される第4短冊状データPS4は、縦横の画素数がそれぞれ1/2倍になるとともに、チャネル数が2倍になる。
[第2実施形態]
次に、本開示の第2実施形態について説明する。第2実施形態に係る推論装置は、特徴量抽出部4に代えて、図20に示す特徴量抽出部4Bを用いる。本実施形態に係る特徴量抽出部4Bは、物体検出及び/又は領域抽出に用いられるCNNを構成している。例えば、特徴量抽出部4Bは、いわゆるU-Netを構成している。本実施形態では、推論装置は、分類ではなく、物体検出及び/又は領域抽出を行うので、出力部5からは画像データが出力される。
次に、本開示の第2実施形態について説明する。第2実施形態に係る推論装置は、特徴量抽出部4に代えて、図20に示す特徴量抽出部4Bを用いる。本実施形態に係る特徴量抽出部4Bは、物体検出及び/又は領域抽出に用いられるCNNを構成している。例えば、特徴量抽出部4Bは、いわゆるU-Netを構成している。本実施形態では、推論装置は、分類ではなく、物体検出及び/又は領域抽出を行うので、出力部5からは画像データが出力される。
図20に示すように、特徴量抽出部4Bには、入力データ記憶部10、エンコーダ40、デコーダ50、DRAM60、及び演算制御部18を備える。エンコーダ40は、3つの演算モジュール41~43を備える。デコーダ50は、3つの演算モジュール51~53を備える。エンコーダ40及びデコーダ50のそれぞれが備える演算モジュールの数は、3に限られず、2又は4以上であってもよい。
エンコーダ40は、第1実施形態と同様に、入力データとしての画像データP1に対して、畳み込み処理及びプーリング処理を複数回繰り返し実行する。演算モジュール41~43は、上述の第1演算モジュール11、第2演算モジュール12、及び第3演算モジュール13と同様の構成である。演算モジュール41~43が順に畳み込み処理及びプーリング処理を行うたびに、画像サイズが縮小し、かつチャネル数が増加する。プーリング処理は、画像サイズが縮小するので、ダウンサンプリング処理とも称される。
デコーダ50は、エンコーダ40が出力する画像データP4に対して、アップサンプリング処理及び逆畳み込み処理を複数回繰り返し実行する。演算モジュール51~53は、演算モジュール41~43とは異なり、逆畳み込み処理及びアップサンプリング処理を実行するように構成されている。演算モジュール51~53が順に逆畳み込み処理及びアップサンプリング処理を行うことにより、画像サイズが拡大し、かつチャネル数が減少する。
また、デコーダ50は、エンコーダ40で生成される特徴マップを、デコーダ50で生成される特徴マップに結合する結合処理を行う。DRAM60は、演算モジュール41,42が備えるラインメモリよりもデータ格納容量が大きく、演算モジュール41,42で生成される特徴マップFM1,FM2を一時的に格納する。DRAM60は、本開示の技術に係る「第3メモリ」の一例である。
DRAM60には、演算モジュール41で1回の第1畳み込み処理が行われ、特徴マップFM1の一部を構成するデータが生成されるたびに、生成されたデータが格納される。同様に、DRAM60には、演算モジュール42で1回の第2畳み込み処理が行われ、特徴マップFM2の一部を構成するデータが生成されるたびに、生成されたデータが格納される。演算制御部18は、デコーダ50で結合処理を行う際に必要となるタイミングに応じて、DRAM60に格納されたデータを演算モジュール52,53に供給する。
演算モジュール43で1回の第3畳み込み処理が行われ、特徴マップFM3の一部を構成するデータが生成されるたびに、生成されたデータは、DRAM60を介さずにデコーダ50の演算モジュール51に供給される。これは、演算モジュール43の後段で演算モジュール51において結合処理が行われることから、演算モジュール43で生成されたデータをDRAM60に格納する必要がないためである。
図21は、デコーダ50が備える演算モジュール51~53の構成の一例を示す。演算モジュール51は、ラインメモリ60A、逆畳み込み処理部61A、アップサンプリング処理部62A、及び結合処理部63Aを備える。演算モジュール52は、ラインメモリ60B、逆畳み込み処理部61B、アップサンプリング処理部62B、及び結合処理部63Bを備える。演算モジュール53は、ラインメモリ60C、逆畳み込み処理部61C、アップサンプリング処理部62C、及び結合処理部63Cを備える。
演算モジュール51には、エンコーダ40が出力する画像データP4が入力される。画像データP4は、複数の行データごとにラインメモリ60Aに格納され、逆畳み込み処理部61Aにより逆畳み込み処理が行われる。逆畳み込み処理部61Aによる逆畳み込み処理により、チャネル数が減少する。アップサンプリング処理部62Aは、逆畳み込み処理部61Aから出力されるデータに対してアップサンプリング処理することにより、特徴マップFM4を生成する。アップサンプリング処理は、上述のプーリング処理とは逆に、画素数を増加させる処理である。本実施形態では、アップサンプリング処理部62Aは、画像データの縦横の画素数をそれぞれ2倍にする。
特徴マップFM4のサイズは、エンコーダ40から供給される特徴マップFM3のサイズと同一である。結合処理部63Aは、特徴マップFM4に特徴マップFM3を結合することにより、画像データP5を生成する。例えば、結合処理部63Aは、特徴マップFM4に特徴マップFM3をチャネルとして追加するconcat型の結合を行う。
演算モジュール52には、演算モジュール51が出力する画像データP5が入力される。演算モジュール52は、画像データP5に対して演算モジュール51と同様の処理を行う。アップサンプリング処理部62Bは、逆畳み込み処理部61Bから出力されるデータに対してアップサンプリング処理することにより、特徴マップFM5を生成する。特徴マップFM5のサイズは、エンコーダ40からDRAM60を介して供給される特徴マップFM2のサイズと同一である。結合処理部63Bは、特徴マップFM5に特徴マップFM2を結合することにより、画像データP6を生成する。
演算モジュール53には、演算モジュール52が出力する画像データP6が入力される。演算モジュール53は、画像データP6に対して演算モジュール51と同様の処理を行う。アップサンプリング処理部62Cは、逆畳み込み処理部61Cから出力されるデータに対してアップサンプリング処理することにより、特徴マップFM6を生成する。特徴マップFM6のサイズは、エンコーダ40からDRAM60を介して供給される特徴マップFM1のサイズと同一である。結合処理部63Cは、特徴マップFM6に特徴マップFM1を結合することにより、画像データP7を生成する。
演算モジュール53が出力する画像データP7は、出力部5に入力される。出力部5は、画像データP7に対してさらに逆畳み込み処理を行うことにより出力用の画像データを生成して出力する。画像データP7は、画像データP1と画像サイズが同一である。
なお、エンコーダ40の演算モジュール41及び演算モジュール42は、本開示の技術に係る「第1演算モジュール」及び「第2演算モジュール」にそれぞれ対応する。また、演算モジュール41は、本開示の技術に係る「第1画像データをダウンサンプリングするモジュール」である。特徴マップFM6は、本開示の技術に係る「第3メモリに格納された特徴画像データ」に対応する。画像データP6は、本開示の技術に係る「入力画像データ」に対応する。演算モジュール53は、本開示の技術に係る「入力画像データをアップサンプリングする第3演算モジュール」に対応する。画像データP7は、本開示の技術に係る「特徴画像データを用いて補正された第1画像データ」に対応する。特徴マップの結合は、本開示の技術に係る「補正」の一例である。
図22は、エンコーダ40及びデコーダ50により構成されるCNNの階層構造を概念的に示す。図23は、特徴マップFM1~FM6に対して行われるパイプライン処理を説明する。
パイプライン処理では、特徴マップFM6の1行目に特徴マップFM1の1行目を結合する時点において、特徴マップFM1の18行目が生成される。このため、仮に、特徴量抽出部4BにDRAM60が設けられていない場合には、特徴マップFM6の1行目に特徴マップFM1の1行目を結合する際に、18行分の特徴マップFM1を保持しておく必要がある。18行分の特徴マップFM1を演算モジュール41のラインメモリ(第1メモリ)で格納するには、ラインメモリの格納容量を増大させる必要がある。同様に、特徴マップFM5の1行目に特徴マップFM2の1行目を結合する際には、8行分の特徴マップFM2を保持しておく必要がある。8行分の特徴マップFM2を演算モジュール42のラインメモリ(第2メモリ)で格納するには、ラインメモリの格納容量を増大させる必要がある。
本実施形態では、演算モジュール41,42で生成された特徴マップFM1,F2を、データ格納容量が大きいDRAM60(第3メモリ)に格納し、結合処理で必要となるタイミングに応じて、必要な行のデータを演算モジュール52,53に転送する。このように、DRAM60を設けることにより、演算モジュール41,42のラインメモリの格納容量を増大させることが不要となる。なお、DRAM60には、結合処理において必要な行数の特徴マップFM1,FM2を格納すればよい。
なお、本開示の技術は、デジタルカメラに限られず、撮像機能を有するスマートフォン、タブレット端末などの電子機器にも適用可能である。
また、上述の畳み込み演算処理を行うALUには、各種のプロセッサを用いることができる。同様に、上述の演算制御部、プーリング処理部、及びアップサンプリング処理部には、各種のプロセッサを用いることができる。これらのプロセッサには、ICに加えて、FPGAなどの製造後に回路構成を変更可能なプロセッサが含まれる。FPGAには、PLD、又はASICなどの特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路などが含まれる。
以上に示した記載内容及び図示内容は、本開示の技術に係る部分についての詳細な説明であり、本開示の技術の一例に過ぎない。例えば、上記の構成、機能、作用、及び効果に関する説明は、本開示の技術に係る部分の構成、機能、作用、及び効果の一例に関する説明である。よって、本開示の技術の主旨を逸脱しない範囲内において、以上に示した記載内容及び図示内容に対して、不要な部分を削除したり、新たな要素を追加したり、置き換えたりしてもよいことは言うまでもない。また、錯綜を回避し、本開示の技術に係る部分の理解を容易にするために、以上に示した記載内容及び図示内容では、本開示の技術の実施を可能にする上で特に説明を要しない技術常識等に関する説明は省略されている。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
Claims (10)
- 機械学習済みデータを用いて推論を行う推論装置であって、
畳み込み処理及びプーリング処理を含む演算処理を実行する第1演算モジュール及び第2演算モジュールを備え、
前記第1演算モジュールは、入力される第1画像データが第1画素数ごとに行方向に分割されることによって生成された複数の第1行データを格納する第1メモリと、前記複数の第1行データに対して第1畳み込み処理を実行する複数の第1演算器とを有し、
前記第2演算モジュールは、入力される第2画像データが第2画素数ごとに行方向に分割されることによって生成された複数の第2行データを格納する第2メモリと、前記複数の第2行データに対して第2畳み込み処理を実行する複数の第2演算器とを有し、
前記第1画像データのチャネル数と前記第2画像データのチャネル数とは互いに異なり、
前記複数の第1行データに対して1回の前記第1畳み込み処理を並列で実行する前記第1演算器の数である第1数と、前記複数の第2行データに対して1回の前記第2畳み込み処理を並列で実行する前記第2演算器の数である第2数とが異なる、
推論装置。 - 前記第2画像データは、前記第1画像データに対して前記第1演算モジュールが前記演算処理を行うことにより生成される特徴量を含む画像データである、
請求項1記載の推論装置。 - 前記第2画像データのチャネル数は、前記第1画像データのチャネル数よりも多く、
前記第1数は、前記第2数よりも大きい、
請求項2に記載の推論装置。 - 前記第2演算モジュールに入力される前記第2画像データの処理画素数は、前記第1演算モジュールに入力される前記第1画像データの処理画素数よりも小さい、
請求項3に記載の推論装置。 - 前記第1演算モジュールによる前記演算処理と、前記第2演算モジュールによる前記演算処理とは並列して実行される、
請求項1から請求項4のうちいずれか1項に記載の推論装置。 - 前記第1メモリのデータ格納単位は、前記第1画素数、前記第1畳み込み処理に用いられるフィルタのサイズ、及び、前記第1畳み込み処理に用いられるフィルタのチャネル数に対応する、
請求項1から請求項5のうちいずれか1項に記載の推論装置。 - 前記第2メモリのデータ格納単位は、前記第2画素数、前記第2畳み込み処理に用いられるフィルタのサイズ、及び、前記第2畳み込み処理に用いられるフィルタのチャネル数に対応する、
請求項6に記載の推論装置。 - 前記第2畳み込み処理に用いられるフィルタの数は、前記第1畳み込み処理に用いられるフィルタの数よりも多い、
請求項7に記載の推論装置。 - 前記第1行データは、前記第1画像データの一部の行に対応するデータである、
請求項1から請求項8のうちいずれか1項に記載の推論装置。 - 前記第1メモリ及び前記第2メモリよりもデータ格納容量が大きく、前記第1演算モジュールにより生成される特徴量を含む特徴画像データを格納する第3メモリと、
入力された入力画像データをアップサンプリングする第3演算モジュールと、
をさらに備え、
前記第1演算モジュールは、前記第1画像データをダウンサンプリングするモジュールであり、
前記第3演算モジュールは、前記入力画像データをアップサンプリングし、かつ前記第3メモリに格納された前記特徴画像データを用いることにより、補正された前記第1画像データを生成する、
請求項1から請求項9のうちいずれか1項に記載の推論装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023567627A JPWO2023112581A1 (ja) | 2021-12-14 | 2022-11-15 | |
CN202280081871.3A CN118435201A (zh) | 2021-12-14 | 2022-11-15 | 推理装置 |
US18/676,409 US20240311663A1 (en) | 2021-12-14 | 2024-05-28 | Inference device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021202876 | 2021-12-14 | ||
JP2021-202876 | 2021-12-14 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/676,409 Continuation US20240311663A1 (en) | 2021-12-14 | 2024-05-28 | Inference device |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023112581A1 true WO2023112581A1 (ja) | 2023-06-22 |
Family
ID=86774028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2022/042421 WO2023112581A1 (ja) | 2021-12-14 | 2022-11-15 | 推論装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240311663A1 (ja) |
JP (1) | JPWO2023112581A1 (ja) |
CN (1) | CN118435201A (ja) |
WO (1) | WO2023112581A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109191491A (zh) * | 2018-08-03 | 2019-01-11 | 华中科技大学 | 基于多层特征融合的全卷积孪生网络的目标跟踪方法及系统 |
WO2020003345A1 (ja) * | 2018-06-25 | 2020-01-02 | オリンパス株式会社 | 演算処理装置 |
CN113570612A (zh) * | 2021-09-23 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种图像处理方法、装置及设备 |
-
2022
- 2022-11-15 CN CN202280081871.3A patent/CN118435201A/zh active Pending
- 2022-11-15 WO PCT/JP2022/042421 patent/WO2023112581A1/ja active Application Filing
- 2022-11-15 JP JP2023567627A patent/JPWO2023112581A1/ja active Pending
-
2024
- 2024-05-28 US US18/676,409 patent/US20240311663A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020003345A1 (ja) * | 2018-06-25 | 2020-01-02 | オリンパス株式会社 | 演算処理装置 |
CN109191491A (zh) * | 2018-08-03 | 2019-01-11 | 华中科技大学 | 基于多层特征融合的全卷积孪生网络的目标跟踪方法及系统 |
CN113570612A (zh) * | 2021-09-23 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种图像处理方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
IWAGAWA, HIDETOMO ET AL.: "A Construction of Al Inference Circuit Generation Environment using IP for FPGA", PROCEEDINGS OF THE 2020 IEICE GENERAL CONFERENCE: ENGINEERING SCIENCES/NOLT A, 3 March 2020 (2020-03-03), pages 51, XP009546274 * |
Also Published As
Publication number | Publication date |
---|---|
US20240311663A1 (en) | 2024-09-19 |
JPWO2023112581A1 (ja) | 2023-06-22 |
CN118435201A (zh) | 2024-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
US20120113133A1 (en) | System, device, and method for multiplying multi-dimensional data arrays | |
US11487845B2 (en) | Convolutional operation device with dimensional conversion | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
CN114358238A (zh) | 多核硬件中神经网络的实现方式 | |
US12136031B2 (en) | System and method for increasing utilization of dot-product based neural network accelerator | |
WO2022121474A1 (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
US20210012141A1 (en) | Method of performing data processing operation | |
CN110766127A (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
CN112884137A (zh) | 神经网络的硬件实现方式 | |
JPH1091780A (ja) | 畳み込み装置および畳み込みを実行する方法 | |
WO2023112581A1 (ja) | 推論装置 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
US20200026989A1 (en) | Performing consecutive mac operations on a set of data using different kernels in a mac circuit | |
CN112884138A (zh) | 神经网络的硬件实现方式 | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
US20210019602A1 (en) | Using and training cellular neural network integrated circuit having multiple convolution layers of duplicate weights in performing artificial intelligence tasks | |
US20210397864A1 (en) | Hardware Accelerator for Integral Image Computation | |
CN114662647A (zh) | 处理用于神经网络的层的数据 | |
US20210034956A1 (en) | Minimum memory digital convolver | |
WO2020194465A1 (ja) | ニューラルネットワーク回路 | |
US11748061B2 (en) | Custom mass multiplication circuits |
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: 22907112 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2023567627 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 202280081871.3 Country of ref document: CN |
|
NENP | Non-entry into the national phase |
Ref country code: DE |