WO2024237652A1 - 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치 - Google Patents
데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치 Download PDFInfo
- Publication number
- WO2024237652A1 WO2024237652A1 PCT/KR2024/006514 KR2024006514W WO2024237652A1 WO 2024237652 A1 WO2024237652 A1 WO 2024237652A1 KR 2024006514 W KR2024006514 W KR 2024006514W WO 2024237652 A1 WO2024237652 A1 WO 2024237652A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- input
- convolution operation
- data
- data flow
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0495—Quantised networks; Sparse networks; Compressed networks
Definitions
- the present invention relates to a method and device for performing a convolution operation based on an artificial neural network using a data flow optimization method, and more specifically, to a technology for performing a convolution operation more quickly and effectively by optimizing data flow so that data can be reused when performing convolution and operation using an artificial neural network.
- AI Artificial Intelligence
- a technology that realizes human learning abilities, reasoning abilities, perception abilities, and natural language comprehension abilities through computer programs. Unlike conventional rule-based smart systems, it refers to a system in which machines learn, make judgments, and become smarter on their own.
- Machine learning is an algorithm technology that classifies/learns the characteristics of input data on its own
- element technologies are technologies that use machine learning algorithms such as deep learning to imitate the functions of the human brain such as cognition and judgment, and consist of technology fields such as linguistic understanding, visual understanding, inference/prediction, knowledge expression, and motion control.
- the object recognition method based on Lidar/RGB-D sensors is the main one.
- the object recognition method based on Lidar/RGB-D sensors uses data in the form of a point cloud to distinguish the location and type of objects existing around the vehicle, and the point cloud data repeatedly performs convolution operations across multiple layers to extract features that can classify the objects of the corresponding data.
- the convolution operation method based on sparse data performed as a process of Gather-GEMM-Scatter gathers only non-zero input data in a buffer, performs an operation with the corresponding kernel, and scatters the output data in the memory. Therefore, there is a problem that the number of reuses by index and the number of output data due to the blurring effect are irregular depending on the arrangement of the input data. Therefore, there exists a disadvantage that it is impossible to evaluate the usage rate of the input/output buffer according to the tiling and the data reuse in each buffer due to the irregularity in the size of the input-kernel-output data and the number of operations.
- a convolution operation method and device based on an artificial neural network using a data flow optimization method is an invention designed to explain the above-described problem, and its purpose is to provide a method and device capable of efficiently performing a convolution operation based on the characteristics of sparse input data.
- the purpose is to effectively increase the overall speed of the convolution operation by minimizing the collection of unnecessary data by appropriately varying the size of the buffer using the location and size information of sparse input data when performing the convolution operation using an artificial neural network.
- a convolution operation method based on an artificial neural network using a data flow optimization method may include an index data extraction step of extracting input index data for sparse input data included in input data, a kernel weight group generation step of classifying weights of the kernel based on a size of the kernel and the input index data according to preset criteria and then generating a kernel weight group based on the classified information, a data flow rule generation step of generating a data flow rule by mapping input index data corresponding to the kernel weight group, and a convolution operation step of performing a convolution operation based on the data flow rule.
- the above kernel includes a 3X3 kernel, and the convolution operation may include a standard convolution or a stride convolution operation.
- the above kernel weight group generation step may include a step of symmetrically generating a plurality of weight groups by considering the characteristics of a convolution operation based on a 3X3 kernel.
- the above kernel weight group creation step may include a step of creating a 0th weight index (W0), a 2nd weight index (W2), a 6th weight index (W6), and an 8th weight index (W8) as a 0th weight group.
- the above kernel weight group creation step may include a step of creating a first weight index (W1) and a seventh weight index (W7) as a first weight group.
- the above kernel weight group creation step may include a step of creating a third weight index (W3) and a fifth weight index (W5) as a second weight group.
- the above kernel weight group creation step may include a step of creating a fourth weight index (W4) as a third weight group.
- the above data flow rule generation step may include a step of collecting input indices corresponding to the weight group, and then sequentially storing the collected input indices in the input buffer for each weight group.
- the above convolution operation includes deconvolution, and the kernel weight group generation step can determine the size of the weight group based on the sizes of the input buffer and the output buffer.
- the above data flow rule generation step may include a tiling size adjustment step that adjusts a tiling size for the input data based on a ratio of the input index and an output index corresponding to the input index.
- the above tiling size adjustment step may include a step of increasing a tiling size for an input channel in the case of standard convolution or stride convolution, and a step of decreasing a tiling size for an output channel in the case of deconvolution.
- a convolution operation device based on an artificial neural network using a data flow optimization method may include an index data collection module that collects input index data for sparse input data included in input data, a data flow rule generation module that classifies weights of the kernel based on a size of the kernel and the input index data according to preset criteria, and then creates a kernel weight group based on the classified information and maps input index data corresponding to the kernel weight group to create a data flow rule, and a convolution operation module that performs a convolution operation based on the data flow rule.
- the above kernel includes a 3X3 kernel, and the convolution operation may include a standard convolution or a stride convolution operation.
- the above data flow rule generation module can symmetrically generate multiple weight groups by considering the characteristics of a convolution operation based on a 3X3 kernel.
- the above data flow rule generation module can collect input indices corresponding to the weight group, and then sequentially store the collected input indices in the input buffer for each weight group.
- the above convolution operation includes deconvolution, and the data flow rule generation module can determine the size of the weight group based on the sizes of the input buffer and the output buffer.
- a convolution operation device based on an artificial neural network using a data flow optimization method includes an index data collection module that collects input index data for sparse input data included in input data, a data flow rule generation module that classifies weights of the kernel based on a size of the kernel and the input index data according to preset criteria, creates a kernel weight group based on the classified information, and maps input index data corresponding to the kernel weight group to create a data flow rule, and a convolution operation module that performs a convolution operation based on the data flow rule, wherein the data flow rule generation module can increase a tiling size for an input channel in the case of a standard convolution or a stride convolution, and can decrease a tiling size for an output channel in the case of a deconvolution.
- a method and device for performing a convolution operation based on location information of sparse input data have the advantage of performing a convolution operation based on sparse data faster than conventional techniques because data is collected and reused by considering the characteristics of input data and output data when performing a convolution operation based on sparse data.
- the convolution operation method according to the present invention has the advantage of being able to rapidly increase the operation speed of the convolution operation itself since it reuses information of input data collected in the past in the next operation.
- these features can increase the speed of object recognition in three-dimensional space, so there is an advantage in that it can efficiently perform high-speed forward obstacle recognition essential for high-dimensional autonomous driving, and also efficiently perform RGB-D-based position estimation for fast and accurate robot navigation.
- FIG. 1 is a diagram illustrating an example of input data input to a convolution operation device and an example of a kernel that performs a convolution operation according to one embodiment of the present invention.
- Figure 2 is a diagram for explaining a process of performing a convolution operation based on sparse data according to conventional technology.
- Figure 3 is a diagram for explaining a problem that occurs when performing a convolution operation based on sparse data according to conventional technology.
- FIG. 4 is a block diagram illustrating some components of a convolution operation device based on sparse data using an artificial neural network according to one embodiment of the present invention.
- FIG. 5 is a diagram for explaining a method for a data flow optimization module according to one embodiment of the present invention to adjust the size of a tile.
- FIG. 6 and FIG. 7 are diagrams for explaining a method for a data flow optimization module according to one embodiment of the present invention to collect input data based on weight groups.
- FIG. 8 and FIG. 9 are drawings for comparing and explaining a convolution operation method according to the present invention and a convolution operation method according to the prior art.
- Figure 10 is a diagram comparing experimental results of a convolution operation method according to the present invention and a convolution operation method according to the prior art.
- FIG. 11 is a diagram for explaining a method in which a data flow optimization module according to one embodiment of the present invention performs a scatter operation based on weight groups.
- FIG. 12 and FIG. 13 are diagrams comparing experimental results of convolution operation speeds according to the present invention and those according to conventional technology.
- the terms “include,” “comprise,” or “have” are intended to specify the presence of a feature, number, step, operation, component, part, or combination thereof described in the specification, but do not exclude in advance the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts, or combinations thereof.
- 'artificial neural network-based convolution operation method and device using data flow optimization method' are described as 'Artificial neural network-based convolution operation method and device using data flow optimization method', but for the convenience of explanation below, 'artificial neural network-based convolution operation method using data flow optimization method' is abbreviated as 'convolution operation method', and 'artificial neural network-based convolution operation device using data flow optimization method' is abbreviated as 'convolution operation device'.
- FIG. 1 is a diagram illustrating an example of input data input to a convolution operation device and an example of a kernel that performs a convolution operation according to one embodiment of the present invention.
- the convolution operation begins with the process of analyzing input data (10) and collecting input index information.
- the (index) information means location information about the point where valid data where actual data exists is located in the input data.
- the index information extraction module (210) can extract information on the location where the valid data is located in the input data as input index information.
- any known method for expressing matrix data can be used to express index information, and the CSR (Compressed Spare Row) format can be used as a representative example.
- the index information in the present invention will be described based on the CSR format.
- the CSR format includes CSR_row information, which is information about how many valid data exist in each row sequentially, and CSR_col information, which is information about which column the valid data is located in each row sequentially.
- CSR format coordinate representation method is generally the same as the matrix representation method, but there is a difference in that it starts at 0 instead of 1.
- the coordinates at the far left and far top in the data are not expressed as (1,1), but as (0,0). Therefore, the input data can be viewed as having rows and columns starting from row 0 and column 0, and if the kernel is also a 3X3 matrix kernel, the offset of the kernel becomes (0,1,2) for rows and (0,1,2) for columns. In other words, both the input data and the kernel are expressed based on row 0.
- the CSR_row value starts with 0 regardless of the data, and from the second value, it indicates the accumulated value corresponding to the number of valid data in each row. Therefore, as shown in the figure, CSR_row starts with 0.
- the CSR_row value considering up to the first row is expressed as [0,1,2].
- the CSR_row value considering up to the second row is expressed as [0,1,2,4].
- the CSR_row value considering up to the third row is expressed as [0,1,2,4,5].
- CSR_col is information that sequentially provides information about the column in which valid data is located in each row. Therefore, in row 0 based on Fig. 1, since data exists in the 4th column, CSR_col becomes [4], and since valid data exists in column 1 in row 1, CSR_col becomes [4,1]. In row 2, since valid data exists in the 2nd and 3rd columns, CSR_col becomes [4,1,2,3], and since valid data is located in column 3 in row 3, CSR_col becomes [4,1,2,3.3]. If data is generated in this manner, the final CSR_col becomes [4,1,2,3,3,2].
- FIG. 2 is a drawing for explaining a process of performing a convolution operation based on sparse data according to a conventional technology
- FIG. 3 is a drawing for explaining a problem that occurs when performing a convolution operation based on sparse data according to a conventional technology.
- the point cloud (20) for an object existing in a three-dimensional space obtained through LiDAR has sparse information as illustrated in the drawing. Therefore, rather than performing a convolution operation directly on these data, a process is performed to convert the input point cloud data into a sparse pseudo image. (S10) That is, the S10 process generates two-dimensional sparse convolution input data.
- the sparse image is converted into dense data, and then a dense convolution operation is performed based on the converted data.
- the sparsity of sparse data generally exceeds 95%, so the substitution operation for the dense convolution operation has the problem of being very inefficient.
- a spatial architecture accelerator can efficiently process tensor operations, which account for most of neural network operations, and is therefore commonly used for neural network acceleration.
- Tensor operations on an accelerator can be divided into data flows, which represent the partitioning (spatial division) and scheduling (temporal division) of data required to perform the operations.
- Spatial architecture accelerators can have various data flows, and depending on how the data flow is set, data reuse and hardware utilization within the accelerator change, which has a significant impact on performance and energy efficiency. Therefore, methods for optimizing performance and energy efficiency for a given accelerator configuration and tensor operation are being proposed, and this is called data flow optimization.
- convolution operations based on dense data perform regular tensor operations based on the characteristics of the kernel (height*width, stride, dilation), so they have the characteristics that the input data of a specific size (height*width), the size of the output data (height*width) according to the kernel operation, the reuse of data in the memory layer, and the number of operations per index are determined by the kernel.
- Conventional data flow optimization methods utilize these regularities to perform optimization, and specifically, they divide operations into tile units for multiple dimensions of data to match the input and output buffer sizes of the accelerator, and evaluate the performance of data flow according to the tile processing order to determine the optimal tile size and processing order.
- the convolution operation method based on sparse data performed as a process of Gather-GEMM-Scatter gathers only non-zero input data in a buffer, performs an operation with the corresponding kernel, and scatters the output data in the memory. Therefore, there is a problem that the number of reuses by index and the number of output data due to the blurring effect are irregular depending on the arrangement of the input data. Therefore, there exists a disadvantage that it is impossible to evaluate the usage rate of the input/output buffer according to the tiling and the data reuse in each buffer due to the irregularity in the size of the input-kernel-output data and the number of operations.
- a method and device for optimizing data flow of a convolution operation are designed to solve the above-described problems, and the purpose of the present invention is to provide a method for optimizing data flow that takes into account the influence of the blurring effect according to the characteristics of the convolution operation (Conv, Strided Conv, Deconv) and the sparsity/size of the input feature map when performing the convolution operation.
- the Gather-Scatter is performed based on the Weight Group so as to maximize the reuse of data, and the input channel size and output channel tile size are optimized according to the operation characteristics and sparsity of the layer in order to improve the imbalance of the input buffer and output buffer usage of the convolution operation under a fixed buffer size, thereby aiming to increase the overall speed of the convolution operation.
- FIG. 4 is a block diagram illustrating some components of a convolution operation device based on sparse data using an artificial neural network according to one embodiment of the present invention.
- a convolution operation device based on location information of sparse input data may include a processor (200) and a memory module (300).
- the processor (200) may include an input data collection module (210), a data flow rule generation module (220), and a convolution operation module (230), and the memory module (300) may include an input memory (310), an input buffer (320), an output buffer (330), and an output memory (340).
- the kernel moved to perform the convolution operation is described based on a 3X3 kernel and a stride of 2.
- this is only one embodiment of the present invention, and the principle of the present invention can be applied to kernels having sizes such as 2X2, 4X4, 5X5, etc., and the principle of the present invention can be applied as is to a 3D kernel, not a 2D kernel.
- processor (200) and the memory module (300) are separated and explained, and within the processor (200), the input data collection module (210), the data flow rule generation module (220), and the convolution operation module (230) are illustrated and explained as separate components, but this is for convenience of explanation, and the role of each module may be performed by one processor (200).
- the input data collection module (210) analyzes the input data (10) in the input memory (310), collects input index information of sparse input data in the input data (10), and collects sparse input data in the input data (10) according to the size of the input buffer (310).
- the data flow rule generation module (220) generates a rule for performing a convolution operation by adjusting the tile size for input/output channels based on the collected sparse input data and input index information, or by adjusting the input gather and output scatter based on weight groups. A detailed description thereof will be provided later.
- the convolution operation module (230) performs a convolution operation based on the sparse input data collected by the input data collection module (210) and the rules generated by the data flow rule generation module (220), and transmits output data generated by the convolution operation to the output buffer (330).
- the memory module (300) is a module in which input data and output data are stored.
- the output memory (340) may be implemented as DRAM
- the input buffer (310), the weight buffer (320), and the output buffer (330) may be implemented as SRAM.
- the input buffer (310) may temporarily store input data (10) containing sparse input data to be performed on the convolution operation.
- the input buffer (310) can temporarily store sparse input data collected by the input data collection module (210).
- the output buffer (330) can temporarily store output data performed by the convolution operation module (230), and the output memory (340) can store final output data.
- FIG. 5 is a drawing for explaining a method for a data flow optimization module according to one embodiment of the present invention to adjust the size of a tile, and specifically, is a drawing for explaining a data flow rule generated by a data flow rule generation module (220) when a convolution operation module (230) performs a standard convolution.
- the data flow rule generation module (220) calculates the ratio of the input index to the output index, and if the calculated ratio is higher than a preset standard, increases the size of the tile for the input channel, thereby resolving the problem of size imbalance between the input buffer and the output buffer in a way in which the input index is used a lot.
- the preset standard can be set to various numbers, but if it is 3 or more, the size of the tile can be increased, and as the calculated ratio of the input index to the output index increases, the size of the tile can also be set to increase proportionally.
- FIG. 6 and FIG. 7 are drawings for explaining a method for a data flow optimization module according to one embodiment of the present invention to collect input data based on weight groups, and are drawings for explaining a data flow rule generated by a data flow rule generation module (220) when a convolution operation module (230) performs strided convolution.
- Figure 6 (a) is a diagram illustrating a process in which an input index and a kernel weight index are convolved to generate output data
- Figure 6 (b) is a diagram in which input indices corresponding to each kernel weight group are grouped in generating output data.
- strided convolution has the characteristic of reusing data by grouping weight indices for the input indices.
- a convolution operation is performed by a 3X3 kernel
- the range of corresponding input indices can be grouped according to the position where the kernel weights are arranged, as shown in the drawing.
- Ta input indices corresponding to all indices (W0 to W8) of the kernel's weights are gathered into the input buffer.
- the number of input indices multiplied by a specific weight index among the Ta input indices of the input buffer is reduced to 1/4. Therefore, there is a disadvantage in that data reuse is reduced in the input buffer, making it difficult to perform the convolution operation efficiently.
- input data is collected based on weight groups by considering the characteristics of the kernel and the characteristics of the convolution operation, thereby maximizing the reuse of data.
- the efficiency of the convolution operation can be greatly improved because all input indices collected for all weights of the specific weight group can be reused.
- the 0th weight index (W0), the 2nd weight index (W2), the 6th weight index (W6), and the 8th weight index (W8) corresponding to the 0th weight group (WG0) perform convolution operations only with the 0th input index (I0), the 2nd input index (I2), the 4th input index (I4), the 6th input index (I6), the 17th input index (I17), the 19th input index (I19), the 21st input index (I21), the 23rd input index (I23), the 25th input index (I25), the 35th input index (I35), the 37th input index (I37), and the 39th input index (I39).
- the first weight index (W1) and the seventh weight index (W7) corresponding to the first weight group (WG1) perform convolution operations only with the first input index (I1), the third input index (I3), the fifth input index (I5), the eighteenth input index (I18), the twentieth input index (I20), the twenty-second input index (I22), the twenty-fourth input index (I24), the twenty-sixth input index (I26), the thirty-fourth input index (I34), the thirty-sixth input index (I36), and the thirty-eighth input index (I38).
- the third weight index (W3) and the fifth weight index (W5) corresponding to the second weight group (WG2) perform convolution operations only with the seventh input index (I7), the ninth input index (I9), the eleventh input index (I11), the thirteenth input index (I13), the fifteenth input index (I15), the twenty-eighth input index (I28), the thirtieth input index (I30), and the thirty-second input index (I32).
- the fourth weight index (W4) corresponding to the third weight group (WG3) performs a convolution operation only with the eighth input index (I8), the tenth input index (I10), the twelfth input index (I12), the fourteenth input index (I14), the sixteenth input index (I16), the twenty-seventh input index (I27), the twenty-ninth input index (I29), the thirty-first input index (I31), and the thirty-third input index (I33).
- FIGS. 8 and 9 are drawings for comparing and explaining a convolution operation method according to the present invention with a convolution operation method according to a conventional technology.
- FIG. 8 is a drawing for explaining an operation process when a convolution operation method based on a weight group according to a conventional technology is not applied
- FIG. 9 is a drawing for explaining an operation process when a convolution operation method based on a weight group according to the present invention is applied.
- the number of indices (Ta,eff) actually used in the operation in the array decreases compared to the number of input indices (Ta) collected in the input buffer, so the output buffer cannot efficiently reuse the input indices.
- input indices are collected from input data in units of weight groups as illustrated in FIG. 9, so that data can be collected for a wider index range, which can reduce the number of times input indices are collected.
- FIG. 10 is a diagram comparing experimental results of a convolution operation method according to the present invention and a convolution operation method according to a prior art, wherein (1) of FIG. 10 is a graph illustrating experimental results according to a convolution operation according to a prior art, (2) of FIG. 10 is a graph illustrating experimental results according to a convolution operation based on a weight group according to the present invention, and (3) of FIG. 10 is a diagram illustrating experimental results according to a convolution operation using a weight group-based and tiling optimization method according to the present invention.
- the reuse ratio of input data is only about 1/4 (255/1023), but when performing a convolution operation based on weight groups according to the present invention, it can be seen that the reuse ratio of input data is 100% (358/358), as shown in (2) of Fig. 10.
- FIG. 11 is a diagram for explaining a method in which a data flow optimization module according to one embodiment of the present invention performs a scatter operation based on a weight group, and is a diagram for explaining a data flow rule generated by a data flow rule generation module (220) when a convolution operation module (230) performs a deconvolution.
- deconvolution unlike the strided convolution described above, when performing a convolution operation, all weight indices share the input index, but due to its nature, it is difficult to reuse the output index between weight indices. Therefore, in the case of deconvolution, input data is first temporarily collected and stored in the input buffer (210), and then the weights are collected by grouping them according to a certain standard as shown in the drawing, and then a scatter operation is performed after the operation on the weight group is completed. By creating a data flow rule, the reuse of the input data can be maximized.
- the size of the weight group can be adjusted in a pattern of 16x1, 8x2, 4x4, 2x8, and 1x16 depending on the size of the output buffer (330), thereby minimizing the effect of the size imbalance between the input buffer and the output buffer.
- an artificial neural network-based convolution operation device using a data flow optimization method can perform tiling optimization for input channels and output channels described in FIG. 5 according to the usage of input buffers and output buffers after setting the data flow to maximize data reuse in the operation.
- the ratio of the input index to the output index is determined accordingly.
- the ratio is determined to be 1.5 times or more for general convolution, 0.5 times for strided convolution, and 1, 4, or 16 times for deconvolution depending on the size of the weight.
- the usage of a specific buffer becomes 100%, the speed of the convolution operation is inhibited. Therefore, if the usage of the output buffer becomes 100% (i.e., the usage of the input buffer is lower than that of the output buffer), the tile size for the input channel is increased to increase the usage of the input buffer. This can prevent the problem of the speed of the operation being inhibited due to the usage of the buffer.
- the problem of the operation speed being reduced due to the buffer usage can be prevented by increasing the tile size for the output channel to increase the output buffer usage.
- FIG. 12 and FIG. 13 are diagrams comparing experimental results of convolution operation speeds according to the present invention and those according to conventional technology.
- the imbalance in the usage of input buffers and output buffers due to the blurring effect can be improved through tiling that considers the operation characteristics and sparsity for each layer. It can be seen that the operation overhead is reduced by 20% (4.5% -> 3.6%) through this method.
- a method and device for performing a convolution operation based on location information of sparse input data have the advantage of performing a convolution operation based on sparse data faster than conventional techniques because data is collected and reused by considering the characteristics of input data and output data when performing a convolution operation based on sparse data.
- the convolution operation method according to the present invention has the advantage of being able to rapidly increase the operation speed of the convolution operation itself since it reuses information of output data collected in the past in the next operation.
- these features can increase the speed of object recognition in three-dimensional space, so there is an advantage in that it can efficiently perform high-speed forward obstacle recognition essential for high-dimensional autonomous driving, and also efficiently perform RGB-D-based position estimation for fast and accurate robot navigation.
- the devices described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components.
- the devices and components described in the embodiments may be implemented using one or more general-purpose computers or special-purpose computers, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing instructions and responding to them.
- the processing device may execute an operating system (OS) and one or more software applications running on the operating system.
- the processing device may access, store, manipulate, process, and generate data in response to the execution of the software.
- OS operating system
- the processing device may access, store, manipulate, process, and generate data in response to the execution of the software.
- processing device is sometimes described as being used alone, but those skilled in the art will appreciate that the processing device may include multiple processing elements and/or multiple types of processing elements.
- the processing device may include multiple processors, or one processor and one controller. Additionally, other processing configurations, such as parallel processors, are also possible.
- the software may include a computer program, code, instructions, or a combination of one or more of these, which may configure a processing device to perform a desired operation or may independently or collectively command the processing device.
- the software and/or data may be embodied in any type of machine, component, physical device, virtual equipment, computer storage medium, or device for interpretation by the processing device or for providing instructions or data to the processing device.
- the software may be distributed over network-connected computer systems and stored or executed in a distributed manner.
- the software and data may be stored on one or more computer-readable recording media.
- the method according to the embodiment may be implemented in the form of program commands that can be executed through various computer means and recorded on a computer-readable medium.
- the computer-readable medium may include program commands, data files, data structures, etc., alone or in combination.
- the program commands recorded on the medium may be those specially designed and configured for the embodiment or may be those known to and available to those skilled in the art of computer software.
- Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, and hardware devices specially configured to store and execute program commands such as ROMs, RAMs, and flash memories.
- Examples of the program commands include not only machine language codes generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Complex Calculations (AREA)
Abstract
일 실시예 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법은, 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 추출하는 인덱스 데이터 추출 단계, 커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하는 커널 웨이트 그룹 생성 단계, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 단계 및 상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 단계를 포함할 수 있다.
Description
본 발명은 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치에 관한 발명으로서, 보다 상세하게는 인공신경망을 이용하여 컨볼루션과 연산을 수행할 때, 데이터를 재사용할 수 있도록 데이터 플로우를 최적화하여 컨볼루션 연산을 보다 빠르고 효과적으로 수행하는 기술에 관한 발명이다.
인공 지능(Artificial Intelligence, AI) 기술은, 인간의 학습능력과 추론능력, 지각능력, 자연언어의 이해 능력 등을 컴퓨터 프로그램으로 실현한 기술을 의미하며, 종래의 룰(Rule) 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템을 의미한다.
인공지능 기술은 기계학습(딥 러닝) 및 기계 학습을 활용한 요소 기술들로 구성된다. 기계 학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소 기술은 딥 러닝 등의 기계학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공지능의 기술의 발달에 따라, 자율주행 분야에서도 주행중인 차량 주변에 존재하는 객체를 인식하는 분야에도 인공지능 기술이 적용되고 있다. 구체적으로, Lidar/RGB-D 센서 기반의 객체 인식 방법이 주를 이루고 있는데, Lidar/RGB-D 센서 기반의 객체 인식 방법은 점 구름(Point Cloud) 형태의 데이터를 활용해 차량 주변에 존재하는 객체의 위치와 종류를 분별하며, 점 구름 데이터는 컨볼루션(Convolution, 합성곱) 연산을 여러 레이어에 걸쳐 대해 반복적으로 수행함으로써, 해당 데이터의 객체를 분류할 수 있는 특징을 추출한다.
그러나, 객체 인식 방법의 특성상, 점 구름 데이터가 공간에 희박하게(Sparse) 존재하기 때문에 컨볼루션 연산 또한 희박하게 존재하는 데이터들에 대해 이루어진다. 따라서, 레이어 별로 추출하는 특징(Feature)이 불규칙적으로 메모리에 저장되고, 이로 인해 컨볼루션 연산에 사용되는 특징 데이터를 메모리로부터 불러오기 위해 불규칙적인 접근을 할 수 밖에 없다. 따라서, 종래 기술에 따라 컨볼루션 연산을 수행하는 경우, 전 과정을 마치기 위해 필요한 시간이 크게 증가하는 문제점이 존재한다.
또한, 컨볼루션 연산에 있어서, 컨볼루션 연산을 주어진 하드웨어의 특성과 버퍼 크기에 맞도록 타일링(연산을 시공간적으로 분할)하여 최적의 데이터 플로우(맵핑)를 생성하는 과정은 매우 중요한 부분을 차지한다.
종래의 기술들은 타일 크기에 따라 입력-커널-출력 크기와 연산이 규칙적인 밀집 데이터의 합성곱만을 타겟으로 하여, 입력-커널-출력의 크기와 연산이 불규칙한 희소 데이터의 희소 합성곱에 대한 최적화에 어려움이 있다
구체적으로, 종래 기술에 따라 Gather-GEMM-Scatter의 과정으로 수행되는 희소 데이터 기반의 컨볼루션 연산 방법은, 입력 데이터에서 0이 아닌 입력 데이터만 버퍼에 Gather하여 해당하는 커널과 연산을 수행하여 출력된 출력 데이터를 메모리에 Scatter 하므로, 입력 데이터의 배치에 따라 인덱스 별 재사용 횟수 및 번짐 효과로 인한 출력 데이터의 개수가 불규칙하게 나타나는 문제점이 있다. 따라서, 입력-커널-출력 데이터의 크기와 연산 횟수의 불규칙성으로 인하여, 타일링에 따른 입력/출력 버퍼의 사용률과, 각 버퍼에서의 데이터 재사용을 평가하는 것이 불가능한 단점이 존재한다.
일 실시예에 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치는 상기 설명한 문제점을 설명하기 위한 고안된 발명으로서, 희소 입력 데이터의 특성을 기초하여 컨볼루션 연산을 효율적으로 할 수 있는 방법 및 장치를 제공하는데 그 목적이 있다.
보다 상세하게는 인공신경망을 이용하여 컨볼루션 연산을 수행함에 있어서, 희소 입력 데이터의 위치 및 크기 정보를 이용하여 버퍼의 크기를 적절하게 가변함으로써, 불필요한 데이터의 수집을 최소화 하는 방법으로 컨볼루션 연산의 전체 속도를 효과적으로 높이는데 목적이 존재한다.
일 실시예 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법은, 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 추출하는 인덱스 데이터 추출 단계, 커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하는 커널 웨이트 그룹 생성 단계, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 단계 및 상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 단계를 포함할 수 있다.
상기 커널은, 3X3 커널을 포함하고, 상기 컨볼루션 연산은 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution) 연산을 포함할 수 있다.
상기 커널 웨이트 그룹 생성 단계는, 상기 웨이트 그룹은 3X3 커널에 기초한 컨볼루션 연산의 특성을 고려하여, 대칭적으로 복수 개의 웨이트 그룹을 생성하는 단계를 포함할 수 있다.
상기 커널 웨이트 그룹 생성 단계는, 제0웨이트 인덱스(W0), 제2웨이트 인덱스(W2), 제6웨이트 인덱스(W6) 및 제8웨이트 인덱스(W8)를 제0웨이트 그룹으로 생성하는 단계를 포함할 수 있다.
상기 커널 웨이트 그룹 생성 단계는, 제1웨이트 인덱스(W1) 및 제7웨이트 인덱스(W7)를 제1웨이트 그룹으로 생성하는 단계를 포함할 수 있다.
상기 커널 웨이트 그룹 생성 단계는, 제3웨이트 인덱스(W3) 및 제5웨이트 인덱스(W5)를 제2웨이트 그룹으로 생성하는 단계를 포함할 수 있다.
상기 커널 웨이트 그룹 생성 단계는, 제4웨이트 인덱스(W4)를 제3웨이트 그룹으로 생성하는 단계를 포함할 수 있다.
상기 데이터 플로우 규칙 생성 단계는, 상기 웨이트 그룹에 대응되는 입력 인덱스를 수집한 후, 수집된 입력 인덱스를 상기 인풋 버퍼에 상기 웨이트 그룹 별로 순차적으로 저장하는 단계를 포함할 수 있다.
상기 컨볼루션 연산은 디컨볼루션(decovolution)을 포함하며, 상기 커널 웨이트 그룹 생성 단계는, 입력 버퍼 및 출력 버퍼의 사이즈에 기초하여 웨이트 그룹의 크기를 결정할 수 있다.
상기 데이터 플로우 규칙 생성 단계는, 상기 입력 인덱스와 상기 입력 인덱스에 대응되는 출력 인덱스의 비율에 기초하여 상기 입력 데이터에 대한 타일링(tiling) 사이즈를 조절하는 타일링 사이즈 조절 단계를 포함할 수 있다.
상기 타일링 사이즈 조절 단계는, 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution)의 경우 입력 채널에 대한 타일링 사이즈를 증가시키고, 디컨볼루션(decovolution)의 경우 출력 채널에 대한 타일링 사이즈를 감소시키는 단계를 포함할 수 있다.
일 실시예 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치는, 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 수집하는 인덱스 데이터 수집 모듈 ,커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하고, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 모듈 및 상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 모듈을 포함할 수 있다.
상기 커널은, 3X3 커널을 포함하고, 상기 컨볼루션 연산은 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution) 연산을 포함할 수 있다.
상기 데이터 플로우 규칙 생성 모듈은, 상기 웨이트 그룹은 3X3 커널에 기초한 컨볼루션 연산의 특성을 고려하여, 대칭적으로 복수 개의 웨이트 그룹을 생성할 수 있다.
상기 데이터 플로우 규칙 생성 모듈은, 상기 웨이트 그룹에 대응되는 입력 인덱스를 수집한 후, 수집된 입력 인덱스를 인풋 버퍼에 상기 웨이트 그룹 별로 순차적으로 저장할 수 있다.
상기 컨볼루션 연산은 디컨볼루션(decovolution)을 포함하며, 상기 데이터 플로우 규칙 생성 모듈은, 입력 버퍼 및 출력 버퍼의 사이즈에 기초하여 웨이트 그룹의 크기를 결정할 수 있다.
일 실시예 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치는, 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 수집하는 인덱스 데이터 수집 모듈, 커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하고, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 모듈 및 상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 모듈을 포함하며,상기 데이터 플로우 규칙 생성 모듈은, 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution)의 경우 입력 채널에 대한 타일링 사이즈를 증가시키고, 디컨볼루션(decovolution)의 경우 출력 채널에 대한 타일링 사이즈를 감소시킬 수 있다.
일 실시예에 따른 희소 입력 데이터의 위치 정보에 기초한 컨볼루션 연산 방법 및 장치는 희소 데이터 기반의 컨볼루션 연산을 수행함에 있어서, 입력 데이터와 출력 데이터의 특징을 고려하여 데이터를 수집하고 재활용하므로, 종래 기술보다 빠르게 컨볼루션 연산을 수행할 수 있는 장점이 존재한다.
또한, 컨불루션 연산의 경우 그 특성상 중첩되는 계산 과정이 많은데, 본 발명에 따른 컨볼루션 연산 방법은 종래에 수집하였던 입력 데이터의 정보를 다음 연산에서 재사용하므로, 컨볼루션 연산 자체의 연산 속도를 빠르게 증가시킬 수 있는 장점이 존재한다.
또한, 이러한 특징으로 인해 3차원 공간에 존재하는 객체 인식의 속도를 증가시킬 수 있는바, 고차원 자율 주행에 필수적인 고속 전방 장애물 인식을 효율적으로 수행할 수 있고, 빠르고 정확한 로봇 네비게이션을 위한 RGB-D 기반의 위치 추정도 효율적으로 수행할 수 있는 장점이 존재한다.
본 발명의 효과들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따라 컨볼루션 연산 장치에 입력되는 입력 데이터의 일 예와 컨볼루션 연산을 수행하는 커널의 일 예를 도시한 도면이다.
도 2는 종래 기술에 따라 희소 데이터 기반의 컨볼루션 연산을 수행하는 과정을 설명하기 위한 도면이다.
도 3은 종래 기술에 따라 희소 데이터 기반의 컨볼루션 연산을 수행하는 경우 발생하는 문제점을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 인공신경망을 이용한 희소 데이터 기반의 컨볼루션 연산 장치의 일부 구성 요소를 도시한 블록도이다.
도 5는 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 타일의 크기를 조정하는 방법을 설명하기 위한 도면이다.
도 6및 도 7은 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 웨이트 그룹 기반의 입력 데이터를 수집하는 방법을 설명하기 위한 도면이다.
도 8과 도 9는 본 발명에 따른 컨볼루션 연산 방법과 종래 기술에 따른 컨볼루션 연산 방법을 비교 설명하기 위한 도면이다.
도 10은 본 발명에 따른 컨볼루션 연산 방법과 종래 기술에 따른 컨볼루션 연산 방법의 실험 결과를 비교 도시한 도면이다.
도 11은 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 웨이트 그룹 기반의 분산(scatter) 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 12 및 도 13은 본 발명에 따른 컨볼루션 연산과 종래 기술에 따른 컨볼루션 연산 속도의 실험 결과를 비교 도시한 도면이다.
본 명세서에 기재된 실시 예와 도면에 도시된 구성은 개시된 발명의 바람직한 일 예이며, 본 출원의 출원 시점에 있어서 본 명세서의 실시 예와 도면을 대체할 수 있는 다양한 변형 예들이 있을 수 있다.
또한, 본 명세서에서 사용한 용어는 실시 예를 설명하기 위해 사용된 것으로, 개시된 발명을 제한 및/또는 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 명세서에서, "포함하다", "구비하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 작동, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 작동, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는다.
또한, 본 명세서에서 사용한 "제 1", "제 2" 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되지는 않는다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략한다.
한편, 본 명세서에서 발명의 명칭은 '데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치'로 기재하였으나, 이하 설명의 편의를 위해 '데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법'은 '컨볼루션 연산 방법'으로 축약하고, '데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치'는 '컨볼루션 연산 장치'로 축약하여 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따라 컨볼루션 연산 장치에 입력되는 입력 데이터의 일 예와 컨볼루션 연산을 수행하는 커널의 일 예를 도시한 도면이다.
컨볼루션 연산은, 입력 데이터(10)를 분석하여, 입력 인덱스 정보를 수집하는 과정에서 시작된다. 본 발명에서의 (index) 정보는 입력 데이터 내에 서 실제 데이터가 존재하는 유효 데이터가 위치하고 있는 포인트에 대한 위치 정보를 의미한다.
일 예로, 도 1에 도시된 바와 같은 5 X 5행렬의 데이터가 입력 데이터로 입력이 된다면(행렬에서 빗금친 부분이 데이터가 존재하는 영역이고, 민무늬 부분이 데이터가 존재하지 않는 영역을 의미하며, 데이터가 존재하는 위치의 데이터를 유효 데이터라 지칭하기로 한다) 인덱스 정보 추출 모듈(210)은 입력 데이터 내에서 유효 데이터가 위치하고 있는 위치 정보를 입력 인덱스 정보로 추출할 수 있다.
인덱스 정보를 표현하는 방법은 행렬 데이터를 표현하는 공지되어 있는 방법이면 그 어느 것이든 차용될 수 있는데, 대표적으로 CSR(Compressed Spare Row) 포맷이 사용될 수 있다. 이하 설명의 편의를 위해 본 발명에서의 인덱스 정보는 CSR 형식을 기준으로 설명하기로 한다.
구체적으로, CSR 포맷 형식은 순차적으로 각각의 행에 유효 데이터가 몇 개가 존재하는지에 대한 정보인 CSR_row 정보와, 순차적으로 각각의 행에 유효 데이터가 몇 열에 위치하는지에 대한 정보인 CSR_col에 대한 정보를 포함하고 있으며, CSR 형식 좌표 표현 방식은 일반적으로 행렬 표현 방법과 동일하나, 시작이 1이 아니라 0에서 시작하는 것에 차이점이 존재한다.
따라서, 데이터에서 가장 왼쪽 및 가장 위쪽에 있는 좌표는 (1,1)로 표현하지 않고 (0,0)으로 표현된다. 따라서, 입력 데이터는 0행 0열을 기준으로 행과 열이 시작된다고 볼 수 있으며, 커널 또한 3X3 행렬의 커널인 경우 커널의 오프셋은 행 기준으로 (0,1,2), 열 기준으로 (0,1,2)가 된다. 즉, 입력 데이터와 커널 모두 0행을 기준으로 표현이 된다.
도 1에 표시된 입력 데이터에 대해 인덱스 정보가 생성되는 과정을 순차적으로 설명하면, CSR_row 값은 데이터와 무관하게 처음은 0으로 시작하며, 2번째 값부터 각 행별로 있는 유효 데이터의 개수 만큼 누적된 값을 나타낸다. 따라서, 도면에 표시된 바와 같이 CSR_row는 0으로 시작한다.
제0행에서는 유효 데이터가 1개 (I0)존재하므로 제0행까지 고려한 에 CSR_row의 값은 [0,1]로 표현된다.
제1행에서는 유효 데이터가 1개 (I1)존재하므로 제1행까지 고려한 CSR_row 값은 [0,1,2]로 표현이 된다.
제2행에서는 유효 데이터가 2개(I2, I3) 존재하므로 제2행까지 고려한 CSR_row 값은 [0,1,2,4]로 표현이 된다.
제3행에서는 유효 데이터가 1개(I4) 존재하므로 제3행까지 고려한 CSR_row값은 [0,1,2,4,5]로 표현이 된다.
제4행에서는 유효 데이터가 1개(I5) 존재하므로 제4행까지 고려한CSR_row값은 [0,1,2,4,5,6]로 표현이 된다.
CSR_col은 순차적으로 각각의 행에서 몇 번째 열(column)에 유효 데이터가 위치하고 있는지에 대한 정보를 알려주는 정보이다. 따라서, 도 1을 기준으로 제0행에서는 4번째 열의 위치에 데이터가 존재하므로 CSR_col은 [4]가 되고, 제1행에는 1 열에 유효 데이터가 존재하므로 CSR_col은 [4,1]이 된다. 제2행에는 유효 데이터가 2번째 열과 3번째 열에 존재하므로 CSR_col은 [4,1,2,3]이 되고, 제3행에는 유효 데이터가 3 열에 위치하므로 CSR_col은 [4,1,2,3.3]이 된다. 이러한 방식으로 데이터를 생성하면 최종CSR_col는 [4,1,2,3,3,2] 가 된다.
도 2는 종래 기술에 따라 희소 데이터 기반의 컨볼루션 연산을 수행하는 과정을 설명하기 위한 도면이고, 도 3은 종래 기술에 따라 희소 데이터 기반의 컨볼루션 연산을 수행하는 경우 발생하는 문제점을 설명하기 위한 도면이다.
도 2를 참고하면, LiDAR를 통해 얻는 3차원 공간에 존재해는 객체(object)에 대한 포인트 클라우드(point cloud, 20)는 도면에 도시된 바와 같이 밀도가 희박한(Sparse)한 정보를 가지고 있다. 따라서, 이러한 데이터들에서는 바로 컨볼루션 연산을 수행하지 않고 입력된 포인트 클라우드 데이터에 대해 희소 유사 이미지(pseudo image)로 변환과정을 거친다. (S10) 즉, S10 과정은 2차원 희소 컨볼루션(spare convolution) 입력 데이터를 생성하는 것이다.
다만, 희소 이미지 데이터에 대해 컨볼루션 연산을 수행하면 연산의 비효율 문제가 발생하게 되므로, 희소 이미지를 밀집된 형태의 데이터로 변환한 후, 변환된 데이터를 기초로 밀집(dense) 컨볼루션 연산을 수행하게 된다. 그러나, 이러한 과정을 거쳐서 컨볼루션 연산을 수행하더라도 희소 데이터의 희소 정도(sparsity)는 일반적으로 95%를 초과하기 때문에, 밀집 컨볼루션 연산을 위한 치환 연산은 매우 비효율적인 문제를 가지고 있다.
구체적으로, 이를 공간적 아키텍처 가속기와 연관 지어 설명하면, 공간적 아키텍처 가속기는 신경망 연산의 대부분을 차지하는 텐서 연산을 효율적으로 처리 할 수 있어, 신경망 가속에 일반적으로 많이 사용된다.
가속기의 텐서 연산은, 연산을 수행하기 위해 필요한 데이터의 파티셔닝(공간적 분할)과 스케줄링(시간적 분할)을 나타내는 데이터 플로우로 나뉘어 질 수 있다.
공간적 아키텍처 가속기는 다양한 데이터 플로우를 가질 수 있는데, 데이터 플로우를 어떻게 설정하는지에 따라 가속기 내에서 데이터 재사용과 하드웨어 사용률의 변화가 발생하므로, 이는 성능과 에너지 효율에 큰 영향을 미친다. 따라서, 주어진 가속기의 구성과 텐서 연산에 대해 성능과 에너지 효율을 최적화하는 방법들이 제안되고 있으며, 이를 데이터 플로우 최적화라고 한다.
기존의 데이터 플로우 최적화 방법은 밀집된 데이터 기반의 컨볼루션 연산에 적용되는 규칙적인 텐서 연산만을 고려하기 때문에, 이는 희소 데이터 기반의 희소 컨볼루션 연산에 적용되는 불규칙적인 텐서 연산의 최적화에 한계가 존재한다.
구체적으로, 밀집 데이터 기반의 컨볼루션 연산은 커널의 특성(높이*넓이, Stride, Dilation)에 기초하여 규칙적인 텐서 연산을 수행하므로, 특정 크기(높이*넓이)의 입력 데이터, 커널의 연산에 따른 출력 데이터의 크기(높이*넓이), 메모리 계층에서의 데이터 재사용 및 인덱스 별 연산 횟수가 커널에 의해서 결정되는 특징을 가지고 있다.
종래의 데이터 플로우 최적화 방법은 이러한 규칙성을 활용하여 최적화를 진행하며, 구체적으로 가속기의 입력 버퍼와 출력 버퍼 크기에 맞도록 연산을 데이터의 여러 Dimension에 대하여 타일 단위로 분할하고, 타일의 처리 순서에 따른 데이터 플로우의 성능을 평가하여, 최적의 타일 크기와 처리 순서를 결정한다.
그러나 이러한 방법은 Gather-GEMM-Scatter의 과정으로 수행되는 희소 데이터의 희소 합성곱의 불규칙한 연산에 대한 최적화에는 많은 어려움이 존재한다.
구체적으로, 종래 기술에 따라 Gather-GEMM-Scatter의 과정으로 수행되는 희소 데이터 기반의 컨볼루션 연산 방법은, 입력 데이터에서 0이 아닌 입력 데이터만 버퍼에 Gather하여 해당하는 커널과 연산을 수행하여 출력된 출력 데이터를 메모리에 Scatter 하므로, 입력 데이터의 배치에 따라 인덱스 별 재사용 횟수 및 번짐 효과로 인한 출력 데이터의 개수가 불규칙하게 나타나는 문제점이 있다. 따라서, 입력-커널-출력 데이터의 크기와 연산 횟수의 불규칙성으로 인하여, 타일링에 따른 입력/출력 버퍼의 사용률과, 각 버퍼에서의 데이터 재사용을 평가하는 것이 불가능한 단점이 존재한다.
즉, 희소 입력 데이터에 기반한 컨볼루션 연산의 경우, 입력 특성맵의 Non-zero 데이터의 배치, 희소성에 따른 번짐 효과로 인해 입력-출력 인덱스의 비율과 데이터의 재사용이 불규칙적인 문제가 발생한다.
구체적으로, 이를 도 3을 통해 알아보면, 도 3의 위쪽에 도시된 바와 같이 동일한 입력 인덱스 크기(Ta=3)를 기준으로 제1타일(Tile1) 영역에 대해 3x3 커널을 적용해 컨볼루션 연산을 하게 되면(스트라이딩 2 기준) 입력 인덱스와 아웃풋 인덱스의 비율은 25/3으로 8.33이 되나, 제2타일(Tile2) 영역을 기준으로 3x3 커널을 적용해 컨볼루션 연산을 하면(스트라이딩 2 기준) 입력 인덱스와 아웃풋 인덱스의 비율은 15/3으로 5가 된다.
즉, 불규칙적인 입력-출력 인덱스의 비율로 인해 입력 버퍼와 출력 버퍼의 사용량 예측 어렵게 되고, 불규칙적인 커널 인덱스의 재사용으로 인해 Mapping의 메모리 액서스 예측 어려운 단점이 존재한다. 이러한 현상은 도 3의 아래쪽 그래프에 도시된 바와 같이 밀집 데이터에 기반한 컨볼루션 연산보다 희소 데이터에 기반한 컨볼루션 연산에 더 많이 발생하게 된다.
따라서, 본 발명의 일 실시예에 따른 컨볼루션 연산의 데이터 플로우 최적화 방법 및 장치는 상기 설명한 문제점을 해결하기 위해 고안된 발명으로서, 컨볼루션 연산을 수행함에 있어서, 컨볼루션 연산의 특성(Conv, Strided Conv, Deconv), 입력 특성맵의 희소성/크기에 따른 번짐 효과의 영향을 고려한 데이터 플로우 최적화 방법을 제공하는데 목적이 존재한다.
보다 구체적으로는, Gather-GEMM-Scatter의 과정으로 수행되는 희소 입력 데이터에 대한 컨볼루션 연산에서, 데이터의 재사용이 극대화되도록 위이트 그룹(Weight Group)을 기반으로 Gather-Scatter을 수행하며, 고정된 버퍼 사이즈 하에서 컨볼루션 연산의 입력 버퍼와 출력 버퍼 사용량의 불균형을 개선하기 위해 계층의 연산 특성 및 희소성에 따른 입력 채널 사이즈와 출력 채널 타일 사이즈의 최적화를 수행하므로서, 컨볼루션 연산의 전반적인 속도를 높이는데 목적이 있다. 이하 도면을 통해 구체적으로 알아보도록 한다.
도 4는 본 발명의 일 실시예에 따른 인공신경망을 이용한 희소 데이터 기반의 컨볼루션 연산 장치의 일부 구성 요소를 도시한 블록도이다.
도 4를 참조하면, 일 실시예에 따른 희소 입력 데이터의 위치 정보에 기초한 컨볼루션 연산 장치는 프로세서(200)와 메모리 모듈(300)을 포함할 수 있고, 프로세서(200)는 입력 데이터 수집 모듈(210), 데이터 플로우 규칙 생성 모듈(220) 및 컨볼루션 연산 모듈(230)을 포함할 수 있으며, 메모리 모듈(300)은 입력 메모리(310), 입력 버퍼(320), 출력 버퍼(330) 및 출력 메모리(340)를 포함할 수 있다.
한편, 본 발명에서 컨볼루션 연산을 수행하기 이동되는 커널은, 3X3커널 및 스트라이드는 2를 기준으로 하여 설명한다. 그러나, 이는 본 발명의 일 실시예에 불과할 뿐, 본 발명의 원리는 2X2, 4X4, 5X5 등의 크기를 가지는 커널에 대해서도 적용될 수 있으며, 2차원 커널이 아닌 3차원 커널에서도 본 발명의 원리가 그대로 적용될 수 있다.
또한, 도 4에서는 설명의 편의를 위해 프로세서(200)와 메모리 모듈(300)을 분리하여 설명하였고, 프로세서(200) 내에서도 입력 데이터 수집 모듈(210), 데이터 플로우 규칙 생성 모듈(220) 및 컨볼루션 연산 모듈(230)을 각각의 별도의 구성 요소로 도시하여 설명하였지만, 이는 설명의 편의를 위해 구분한 것이고 각각의 모듈이 하는 역할을 하나의 프로세서(200)가 수행할 수도 있다.
입력 데이터 수집 모듈(210)은 입력 메모리(310)에 있는 입력 데이터(10)를 분석하여, 입력 데이터(10) 내에 있는 희소 입력 데이터의 입력 인덱스 정보를 수집하고, 입력 데이터(10) 내에 존재하는 희소 입력 데이터를 입력 버퍼(310)의 크기에 맞춰 수집한다.
데이터 플로우 규칙 생성 모듈(220)은 수집된 희소 입력 데이터와 입력 인덱스 정보를 기초로 입력/출력 채널에 대한 타일(tile) 사이즈를 조정하거나, 웨이트 그룹(weight group)기반의 인풋 가더(input gather) 및 아웃풋 스카터(output scatter)를 조정하여 컨볼루션 연산 수행에 대한 규칙을 생성한다. 이에 대한 자세한 설명은 후술하도록 한다.
컨볼루션 연산 모듈(230)은 입력 데이터 수집 모듈(210)이 수집한 희소 입력 데이터 및 데이터 플로우 규칙 생성 모듈(220)이 생성한 규칙을 기초로 컨볼루션 연산을 수행하고, 컨볼루션 연산에 의해 생성된 출력 데이터를 출력 버퍼(330)로 송신한다.
메모리 모듈(300)은 입력 데이터와 출력 데이터가 저장되는 모듈로서, 그 특성에 따라 출력 메모리(340)는 DRAM으로 구현될 수 있으며, 입력 버퍼(310), 웨이트 버퍼(320) 및 출력 버퍼(330)는 SRAM으로 구현될 수 있다.
입력 버퍼(310)에는 컨볼루션 연산에 수행될 희소 입력 데이터가 포함되어 있는 입력 데이터(10)가 임시적으로 저장되어 있을 수 있다.
입력 버퍼(310)에는 입력 데이터 수집 모듈(210)이 수집한 희소 입력 데이터가 임시적으로 저장될 수 있다.
출력 버퍼(330)에는 컨볼루션 연산 모듈(230)에 의해 수행된 출력 데이터가 임시적으로 저장될 수 있으며, 출력 메모리(340)에는 최종 출력 데이터가 저장될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 타일의 크기를 조정하는 방법을 설명하기 위한 도면으로서, 구체적으로는 컨볼루션 연산 모듈(230)이 스탠다드 컨볼루션(Standard Convolution)을 수행할 때, 데이터 플로우 규칙 생성 모듈(220)이 생성하는 데이터 플로우 규칙을 설명하기 위한 도면이다.
도 5의 (a)를 참조하면, 입력 데이터(10) 내에서 희소 입력 데이터의 희소성이 높거나 입력 특성맵의 크기가 상대적으로 큰 경우에는 컨볼루션 연산을 수행함에 있어서 번짐 효과가 크게 발생하여 출력 버퍼와 입력 버퍼 크기의 불균형이 발생하게 된다.
구체적으로 도 5의 (a)에 도시된 바와 같이 아웃풋 인덱스와 입력 인덱스의 비율이 36/6=6이 되어 상당히 높은 비율로 불균형이 발생하게 된다. 따라서, 이러한 경우네는 입력 인덱스의 사용량이 적은 대신 아웃풋 인덱스의 사용량이 많아 인풋 버퍼는 상대적으로 적게 사용되나, 아웃풋 버퍼는 상대적으로 많이 사용되어, 버퍼 사용의 불균형 문제가 발생하게 된다.
그러나, 도 5의 (b)에 도시된 바와 같이 입력 데이터(10) 내에서 희소 입력 데이터의 희소성이 낮거나 입력 특성맵의 크기가 상대적으로 작은 경우에는 컨볼루션 연산을 수행함에 있어서 번짐 효과가 상대적으로 작게 발생하여 출력 버퍼와 입력 버퍼 크기의 불균형이 상대적으로 작게 발생하게 된다. 구체적으로 도 5의 (b)에 도시된 바와 같이 아웃풋 인덱스와 입력 인덱스의 비율이 75/36=2.08이 되어 도 5의 (a)의 경우와 다르게 불균형이 작아진다.
따라서, 본 발명에 따른 데이터 플로우 규칙 생성 모듈(220)은 입력 인덱스와 아웃풋 인덱스의 비를 계산하여, 미리 설정된 기준보다 계산된 비가 높은 경우에는 입력 채널에 대한 타일(tile)의 사이즈를 증가시켜, 입력 인덱스가 많이 사용되는 방법으로 입력 버퍼와 출력 버퍼 사이의 크기 불균형 문제를 해소시킬 수 있다. 일 예로 미리 설정된 기준은 다양한 숫자로 설정될 수 있으나 3 이상인 경우 타일의 사이즈를 증가시키도록 할 수 있으며, 계산된 입력 인덱스와 아웃풋 인덱스의 비가 커지면 커질수록 증가되는 타일의 사이즈 또한 비례하여 커지도록 설정할 수 있다.
도 6및 도 7은 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 웨이트 그룹 기반의 입력 데이터를 수집하는 방법을 설명하기 위한 도면으로서, 컨볼루션 연산 모듈(230)이 스트라이드 컨볼루션(Strid Convolution)을 수행할 때, 데이터 플로우 규칙 생성 모듈(220)이 생성하는 데이터 플로우 규칙을 설명하기 위한 도면이다.
도 6 (a)는 입력 인덱스와 커널의 웨이트 인덱스가 컨볼루션 연산이 되어 출력 데이터가 생성되는 과정을 도시한 도면이고, 도 6의 (b)는 출력 데이터가 생성됨에 있어서 커널의 웨이트 그룹별로 대응되는 입력 인덱스를 그룹화 해놓은 도면이다.
도 6의 (a)를 참조하면, 입력 데이터(10)에 3x3 커널이 슬라이딩하면서 컨볼루션 연산을 수행하는 경우 제0입력 인덱스(O0)와 제1입력 인덱스(O1) 및 제5입력 인덱스(O5)는 도면에 도시된 바와 같이 입력 인덱스와 이에 대응되는 커널의 웨이트 인덱스의 곱에 의해 생성된다.
일반적으로 스트라이드 컨볼루션(Strided Convolution)은 입력되는 입력 인덱스에 대하여 웨이트 인덱스 간에 그룹을 지어 데이터를 재사용 하는 특성을 가지고 있는데, 3X3 커널에 의해 컨볼루션 연산이 이루어지면 도면에 도시된 바와 같이 커널의 웨이트들은 배치되어 있는 위치에 따라 대응되는 입력 인덱스의 범위가 그룹화되어 질 수 있다.
기본적인 데이터 플로우에서는 커널의 웨이트의 모든 인덱스(W0부터 W8)에 해당하는 Ta 개의 인풋 인덱스를 입력 버퍼에 수집(gather)하게 되는데, 이런 경우에는 입력 버퍼의 입력 인덱스 Ta 개 중 특정 웨이트 인덱스와 곱해지는 입력 인덱스는 1/4 로 감소하게 된다. 따라서, 입력 버퍼에서는 데이터 재사용이 감소하여 컨볼루션 연산의 효율적으로 이루어지지 못하는 단점이 존재한다.
그러나 본 발명의 경우 이를 개선하기 위해 커널의 특성 및 컨볼루션 연산의 특성을 고려하여 웨이트 그룹 기반으로 입력 데이터를 수집하므로 데이터의 재사용을 극대화를 수행할 수 있게 된다.
구체적으로, 특정 웨이트 그룹에 대응되는 입력 인덱스만을 입력 버퍼에 수집하게 되면, 특정 웨이트 그룹의 모든 웨이트에 대해 수집된 입력 인덱스가 모두 재사용될 수 있으므로 컨볼루션 연산을 효율성을 크게 향상시킬 수 있게 된다.
이를 도면을 통해 구체적으로 살펴보면, 제0웨이트 그룹(WG0)의 경우 제0웨이트 그룹에 포함되어 있는 제0,2,6,8웨이트 인덱스에 대응되는 입력 인덱스만을 입력 버퍼에 수집하게 되면, 제0웨이트 그룹(WG0)의 모든 웨이트 인덱스에 대하여 모든 입력 인덱스가 항상 재사용 되므로, 연산의 효율성을 높일 수 있다.
이를 웨이트 그룹별로 구체적으로 살펴보면, 제0웨이트 그룹(WG0)에 해당하는 제0웨이트 인덱스(W0), 제2웨이트 인덱스(W2), 제6웨이트 인덱스(W6) 및 제8웨이트 인덱스(W8)들은 제0입력 인덱스(I0), 제2입력 인덱스(I2), 제4입력 인덱스(I4), 제6입력 인덱스(I6), 제17입력 인덱스(I17), 제19입력 인덱스(I19), 제21입력 인덱스(I21), 제23입력 인덱스(I23), 제25입력 인덱스(I25), 제35입력 인덱스(I35), 제37입력 인덱스(I37) 및 제39입력 인덱스(I39)들 과만 컨볼루션 연산을 수행하게 된다.
또한, 제1웨이트 그룹(WG1)에 해당하는 제1웨이트 인덱스(W1) 및, 제7웨이트 인덱스(W7)들은 제1입력 인덱스(I1), 제3입력 인덱스(I3), 제5입력 인덱스(I5), 제18입력 인덱스(I18), 제20입력 인덱스(I20), 제22입력 인덱스(I22), 제24입력 인덱스(I24), 제26입력 인덱스(I26), 제34입력 인덱스(I34), 제36입력 인덱스(I36) 및 제38입력 인덱스(I38)들 과만 컨볼루션 연산을 수행하게 된다.
또한, 제2웨이트 그룹(WG2)에 해당하는 제3웨이트 인덱스(W3) 및 제5웨이트 인덱스(W5)들은 제7입력 인덱스(I7), 제9입력 인덱스(I9), 제11입력 인덱스(I11), 제13입력 인덱스(I13), 제15입력 인덱스(I15), 제28입력 인덱스(I28), 제30입력 인덱스(I30) 및 제32입력 인덱스(I32)들 과만 컨볼루션 연산을 수행하게 된다.
또한, 제3웨이트 그룹(WG3)에 해당하는 제4웨이트 인덱스(W4)는 제8입력 인덱스(I8), 제10입력 인덱스(I10), 제12입력 인덱스(I12), 제14입력 인덱스(I14), 제16입력 인덱스(I16), 제27입력 인덱스(I27), 제29입력 인덱스(I29), 제31입력 인덱스(I31) 및 제33입력 인덱스(I33)들 과만 컨볼루션 연산을 수행하게 된다.
이러한 방식으로 입력 데이터를 수집하고 컨볼루션 연산을 수행하게 되면, 모든 웨이트 인덱스가 출력 인덱스에 대한 데이터 재사용(Reduction)의 기회를 가지고 된다. 따라서, 도 7에 도시된 바와 같이 입력 버퍼(310)에 수집된 입력 인덱스에 대한 모든 웨이트 그룹에 대한 Gather-GEMM 연산을 완료한 후, Reduction이 완료된 출력 인덱스를 출력 버퍼(330)에서 출력 메모리(340)로 Scatter를 할 수 있게 되므로, 이를 통하여 인풋-아웃풋에 대하여 100% 데이터 재사용을 달성 할 수 있다.
도 8과 도 9는 본 발명에 따른 컨볼루션 연산 방법과 종래 기술에 따른 컨볼루션 연산 방법을 비교 설명하기 위한 도면으로서, 구체적으로 도 8은 종래 기술에 따라 웨이트 그룹 기반의 컨볼루션 연산 방법이 적용되지 않았을 때의 연산 과정을 설명하기 위한 도면이고, 도 9는 본 발명에 따라 웨이트 그룹 기반의 컨볼루션 연산 방법이 적용되었을 때의 연산 과정을 설명하기 위한 도면이다.
도 8을 참조하면, 종래 기술에 따라 컨볼루션 연산을 수행하는 경우 입력 버퍼의 제한된 크기로 인하여 입력 인덱스의 수집을 전체 입력 데이터 대해 2번에 나누어 수집하게 된다(제1수집(Ta=27), 제2수집(Ta=13)).
그리고 이러한 수집 데이터에 기초하여 컨볼루션 연산을 수행하는 경우 도면에 도시된 바와 같이 입력 버퍼에 수집된 입력 인덱스의 개수(Ta)대비 실제로 어레이(array)에서 연산에 사용되는 인덱스(Ta,eff)의 개수가 감소하게 되므로, 출력 버퍼가 입력 인덱스를 효율적으로 재사용하지 못하게 된다.
즉, 이에 따라 출력 버퍼의 용량을 효율적으로 사용하지 못하게 되므로, 입력 인덱스의 수집 횟수가 증가하게 되고, 이는 웨이트 데이터에 대한 출력 메모리(DRAM)로의 접근(access) 횟수가 증가하게 되어 컨볼루션 연산 속도가 저해되는 문제점이 발생하게 된다.
그러나, 본 발명에 따라 컨볼루션 연산을 수행하는 경우 도 9에 도시된 바와 같이 웨이트 그룹 단위로 입력 데이터에서 입력 인덱스를 수집하게 되므로, 더 넓은 인덱스 범위에 대해 데이터를 수집할 수 있게 되며, 이는 입력 인덱스의 수집 횟수 자체를 감소시킬 수 있다.
또한, 이에 따라 입력 버퍼에 수집된 입력 인덱스의 개수(Ta)대비 실제로 어레이(array)에서 연산에 사용되는 인덱스(Ta,eff)의 개수가 거의 동일하게 되므로, 출력 버퍼가 입력 인덱스를 대부분 재사용 할 수 있어, 컨볼루션 연산의 전체 속도를 높일 수 있는 장점이 존재한다.
도 10은 본 발명에 따른 컨볼루션 연산 방법과 종래 기술에 따른 컨볼루션 연산 방법의 실험 결과를 비교 도시한 도면으로서, 도 10의 (1)는 종래 기술에 따른 컨볼루션 연산에 따른 실험 결과를 도시한 그래프이고, 도 10의 (2)는 본 발명에 따라 웨이트 그룹 기반의 컨볼루션 연산에 따른 실험 결과를 도시한 그래프이며, 도 10의 (3)은 본 발명에 따라 웨이트 그룹 기반 및 타일링 최적화 방법을 적용한 컨볼루션 연산에 따른 실험 결과를 도시한 도면이다.
도 10의 (1)을 참고하면, 종래 기술에 따라 컨볼루션 연산을 하는 경우, 입력 데이터의 재사용 비율이 약 1/4(255/1023) 밖에 되지 않으나, 본 발명에 따라 웨이트 그룹 기반의 컨볼루션 연산을 수행 하는 경우 도 10의 (2)에 도시된 바와 같이 입력 데이터의 재사용 비율이 100%(358/358)임을 알 수 가 있다.
또한, 본 발명에 따른 타일링 기법까지 더 적용하여 컨볼루션 연산을 수행하는 경우, 도 10의 (3)에 도시된 바와 같이 입력 데이터의 재사용 비율이 100%(716/716)일 뿐만 아니라, 입력 인덱스의 수집 범위도 넓어져 보다 빠르게 연산을 수행할 있는 장점이 존재한다.
도 11은 본 발명의 일 실시예에 따른 데이터 플로우 최적화 모듈이 웨이트 그룹 기반의 분산(scatter) 연산을 수행하는 방법을 설명하기 위한 도면으로서, 컨볼루션 연산 모듈(230)이 디컨볼루션(Deconvolution)을 수행할 때, 데이터 플로우 규칙 생성 모듈(220)이 생성하는 데이터 플로우 규칙을 설명하기 위한 도면이다.
디컨볼루션의 경우에는 앞서 설명한 스트라이드 컨볼루션과는 다르게 컨볼루션 연산을 수행함에 있어서, 모든 웨이트 인덱스가 입력 인덱스를 공유하나, 그 특성상 웨이트 인덱스 간에 출력 인덱스에 대한 재사용을 하기가 어렵다. 따라서, 디컨볼루션의 경우에는 입력 데이터를 우선 입력 버퍼(210)에 수집 및 저장을 일시적으로 한 후, 웨이트를 도면에 도시된 바와 같이 일정한 기준 하에 그룹 지어 수집을 하고, 웨이트 그룹에 대한 연산이 끝나면 분산(Scatter) 연산을 하는 방법을 통해 데이터 플로우 규칙을 생성하면, 입력 데이터의 재사용을 최대화 할 수 있다.
웨이트 그룹의 크기는 출력 버퍼(330)의 크기에 따라 16x1, 8x2, 4x4, 2x8, 1x16의 패턴으로 조정을 할 수 있으며, 이에 따라 입력 버퍼와 출력 버퍼의 크기 불균형의 영향을 최소화 할 수 있다.
한편, 본 발명에 따른 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치는, 연산에 있어서 데이터 재사용을 최대화하도록 데이터 플로우를 설정한 이후에, 입력 버퍼와 출력 버퍼의 사용량에 따라 도 5에서 설명하였던 입력 채널과 출력 채널에 대한 타일링 최적화를 수행할 수 도 있다.
컨볼루션 연산의 경우 입력 데이터 내의 희소 입력데이터의 위치 및 분포에 따라 번짐 효과가 달라지므로, 이에 따라 입력 인덱스와 출력 인덱스의 비율이 결정된다. 일 예로, 일반적인 컨볼루션은 그 비율이 1.5 배 이상, 스트라이드 컨볼루션의 경우 0.5 배, 디컨볼루션의 경우 웨이트의 크기에 따라 1배, 4배 또는 16배로 결정된다.
컨볼루션 연산을 함에 있어서, 특정 버퍼의 사용량이 100%가 되는 경우, 컨볼루션 연산의 속도를 저해하게 되므로, 출력 버퍼의 사용량이 100%가 되는 경우(즉, 입력 버퍼 사용량이 출력 버퍼에 비해 떨어지는 경우)에는 입력 채널에 대해 타일 사이즈를 증가시켜 입력 버퍼의 사용량을 증가시키는 방법으로, 버퍼의 사용량으로 인해 연산의 속도가 저해되는 문제점을 방지할 수 있다.
이와 반대로, 입력 버퍼의 사용량이 100%가 되는 경우(즉, 출력 버퍼의 사용량이 입력 버퍼에 비해 떨어지는 경우)에는, 출력 채널에 대하여 타일 사이즈를 증가시켜 출력 버퍼의 사용량을 증가시키는 방법으로, 버퍼의 사용량으로 인해 연산의 속도가 저해되는 문제점을 방지할 수 있다.
도 12 및 도 13은 본 발명에 따른 컨볼루션 연산과 종래 기술에 따른 컨볼루션 연산 속도의 실험 결과를 비교 도시한 도면이다.
도 12를 참고하면, 본 발명에 따른 스트라이드 컨볼루션(Strided Convolution)을 수행하는 경우, 웨이트 그룹 기반의 입력 수집 데이터 플로우를 통하여 입력 데이터 의 재사용을 50%에서 최대 100%로 향상시킬 수 있는 것을 알 수 있다. 이를 통해 데이터 재사용 감소에 따른 연산의 오버해드(Overhead, 전체 연산 대비 Non-Execution Cycle)가 62.9% 감소(12.4% -> 6%)되는 것을 알 수 있다.
본 발명에 따른 디컨볼루션(Deconvolution)을 수행하는 경우, 웨이트 그룹 기반의 분산(Scatter) 연산을 통해 데이터 플로우를 실행하는 경우, 출력 데이터 재사용과 버퍼 사용량을 최적화할 수 있기 때문에 연산의 오버해드가 종래 기술에 비해 56.9% 감소(29.9% -> 2.9%)되는 것을 알 수 있다.
또한, 본 발명에 따라 타일링 기법을 적용하여 컨볼루션 연산을 수행하는 경우, 고정된 버퍼 사이즈를 갖는 합성곱 처리 장치에서, 계층 별로 연산 특성과 희소성을 고려한 타일링을 통해 번짐 효과에 따른 입력 버퍼와 출력 버퍼의 사용량 불균형을 개선할 수 있다. 이러한 방법을 통해 연산의 오버해드가 20% 감소(4.5% -> 3.6%)되는 것을 알 수 있다.
이를 종합적으로 적용하여 컨볼루션 연산의 전체 속도를 살펴보면, 종래 기술에 따른 데이터 플로우를 적용한 컨볼루션 연산과 본 발명에 따란 데이터 플로우를 적용한 컨볼루션 연산의 경우, 도 13에 도시된 바와 같이 컨볼루션 연산의 수행 시간을 14.5%의 감소시키는 것을 알 수 있다.
지금까지 도면을 통해 본 발명의 구성 및 프로세스에 대해 자세히 알아보았다.
일 실시예에 따른 희소 입력 데이터의 위치 정보에 기초한 컨볼루션 연산 방법 및 장치는 희소 데이터 기반의 컨볼루션 연산을 수행함에 있어서, 입력 데이터와 출력 데이터의 특징을 고려하여 데이터를 수집하고 재활용하므로, 종래 기술보다 빠르게 컨볼루션 연산을 수행할 수 있는 장점이 존재한다.
또한, 컨불루션 연산의 경우 그 특성상 중첩되는 계산 과정이 많은데, 본 발명에 따른 컨볼루션 연산 방법은 종래에 수집하였던 출력 데이터의 정보를 다음 연산에서 재사용하므로, 컨볼루션 연산 자체의 연산 속도를 빠르게 증가시킬 수 있는 장점이 존재한다.
또한, 이러한 특징으로 인해 3차원 공간에 존재하는 객체 인식의 속도를 증가시킬 수 있는바, 고차원 자율 주행에 필수적인 고속 전방 장애물 인식을 효율적으로 수행할 수 있고, 빠르고 정확한 로봇 네비게이션을 위한 RGB-D 기반의 위치 추정도 효율적으로 수행할 수 있는 장점이 존재한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disK)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (15)
- 프로세서, 입력 버퍼 및 출력 버퍼를 이용하여 컨볼루션 연산을 수행하는 방법에 있어서,입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 수집하는 인덱스 데이터 수집 단계;커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하는 커널 웨이트 그룹 생성 단계;상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 단계; 및상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 단계;를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제 1항에 있어서,상기 커널은, 3X3 커널을 포함하고,상기 컨볼루션 연산은 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution) 연산을 포함하며,상기 커널 웨이트 그룹 생성 단계는,상기 웨이트 그룹은 3X3 커널에 기초한 컨볼루션 연산의 특성을 고려하여, 대칭적으로 복수 개의 웨이트 그룹을 생성하는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제2항에 있어서,상기 커널 웨이트 그룹 생성 단계는,제0웨이트 인덱스(W0), 제2웨이트 인덱스(W2), 제6웨이트 인덱스(W6) 및 제8웨이트 인덱스(W8)를 제0웨이트 그룹으로 생성하는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제2항에 있어서,상기 커널 웨이트 그룹 생성 단계는,제1웨이트 인덱스(W1) 및 제7웨이트 인덱스(W7)를 제1웨이트 그룹으로 생성하는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제2항에 있어서,상기 커널 웨이트 그룹 생성 단계는,제3웨이트 인덱스(W3) 및 제5웨이트 인덱스(W5)를 제2웨이트 그룹으로 생성하는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제2항에 있어서,상기 커널 웨이트 그룹 생성 단계는,제4웨이트 인덱스(W4)를 제3웨이트 그룹으로 생성하는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제2항에 있어서,상기 데이터 플로우 규칙 생성 단계는,상기 웨이트 그룹에 대응되는 입력 인덱스를 수집한 후, 수집된 입력 인덱스를 상기 인풋 버퍼에 상기 웨이트 그룹 별로 순차적으로 저장하는 단계;를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제 1항에 있어서,상기 컨볼루션 연산은 디컨볼루션(decovolution)을 포함하며,상기 커널 웨이트 그룹 생성 단계는,입력 버퍼 및 출력 버퍼의 사이즈에 기초하여 웨이트 그룹의 크기를 결정하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제 1항에 있어서,상기 데이터 플로우 규칙 생성 단계는,상기 입력 인덱스와 상기 입력 인덱스에 대응되는 출력 인덱스의 비율에 기초하여 상기 입력 데이터에 대한 타일링(tiling) 사이즈를 조절하는 타일링 사이즈 조절 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 제9항에 있어서,상기 타일링 사이즈 조절 단계는,스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution)의 경우 입력 채널에 대한 타일링 사이즈를 증가시키고, 디컨볼루션(decovolution)의 경우 출력 채널에 대한 타일링 사이즈를 감소시키는 단계를 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법.
- 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 수집하는 인덱스 데이터 수집 모듈;커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하고, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 모듈;상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 모듈;을 포함하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치.
- 제 11항에 있어서,상기 커널은, 3X3 커널을 포함하고,상기 컨볼루션 연산은 스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution) 연산을 포함하며,상기 데이터 플로우 규칙 생성 모듈은,상기 웨이트 그룹은 3X3 커널에 기초한 컨볼루션 연산의 특성을 고려하여, 대칭적으로 복수 개의 웨이트 그룹을 생성하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치.
- 제12항에 있어서,상기 데이터 플로우 규칙 생성 모듈은,상기 웨이트 그룹에 대응되는 입력 인덱스를 수집한 후, 수집된 입력 인덱스를 인풋 버퍼에 상기 웨이트 그룹 별로 순차적으로 저장하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치.
- 제11항에 있어서,상기 컨볼루션 연산은 디컨볼루션(decovolution)을 포함하며,상기 데이터 플로우 규칙 생성 모듈은,입력 버퍼 및 출력 버퍼의 사이즈에 기초하여 웨이트 그룹의 크기를 결정하는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치.
- 입력 데이터에 포함되어 있는 희소 입력 데이터에 대한 입력 인덱스 데이터를 수집하는 인덱스 데이터 수집 모듈;커널의 크기 및 상기 입력 인덱스 데이터에 기초하여 상기 커널의 웨이트들을 미리 설정된 기준에 따라 분류한 후, 분류된 정보에 기초하여 커널 웨이트 그룹을 생성하고, 상기 커널 웨이트 그룹에 대응되는 입력 인덱스 데이터를 매핑하여 데이터 플로우 규칙을 생성하는 데이터 플로우 규칙 생성 모듈;상기 데이터 플로우 규칙에 기초하여 컨볼루션 연산을 수행하는 컨볼루션 연산 모듈;을 포함하며,상기 데이터 플로우 규칙 생성 모듈은,스탠다드 컨볼루션(standard convolution) 또는 스트라이드 컨볼루션(stride convolution)의 경우 입력 채널에 대한 타일링 사이즈를 증가시키고, 디컨볼루션(decovolution)의 경우 출력 채널에 대한 타일링 사이즈를 감소시키는,데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 장치.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR10-2023-0061814 | 2023-05-12 | ||
| KR1020230061814A KR20240164210A (ko) | 2023-05-12 | 2023-05-12 | 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 희소 컨볼루션 연산 방법 및 장치 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024237652A1 true WO2024237652A1 (ko) | 2024-11-21 |
Family
ID=93519949
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2024/006514 Ceased WO2024237652A1 (ko) | 2023-05-12 | 2024-05-13 | 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 컨볼루션 연산 방법 및 장치 |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR20240164210A (ko) |
| WO (1) | WO2024237652A1 (ko) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20200218978A1 (en) * | 2019-01-08 | 2020-07-09 | Neuralmagic Inc. | System and method for executing convolution in a neural network |
| KR20210055582A (ko) * | 2019-11-07 | 2021-05-17 | 인텔 코포레이션 | 메모리 효율성을 향상시키기 위한 활성화 및 커널의 동적인 분할 기법 |
| KR20210074173A (ko) * | 2019-12-11 | 2021-06-21 | 인텔 코포레이션 | 스파스 매트릭스 최적화 메커니즘 |
| US20210303980A1 (en) * | 2020-03-30 | 2021-09-30 | POSTECH Research and Business Development Foundation | Sparsity-aware neural processing unit for performing constant probability index matching and processing method of the same |
| KR102390379B1 (ko) * | 2017-03-06 | 2022-04-26 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102012828B1 (ko) | 2017-06-15 | 2019-08-21 | 울산과학기술원 | 볼륨 렌더링 장치 및 방법 |
-
2023
- 2023-05-12 KR KR1020230061814A patent/KR20240164210A/ko active Pending
-
2024
- 2024-05-13 WO PCT/KR2024/006514 patent/WO2024237652A1/ko not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102390379B1 (ko) * | 2017-03-06 | 2022-04-26 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치 |
| US20200218978A1 (en) * | 2019-01-08 | 2020-07-09 | Neuralmagic Inc. | System and method for executing convolution in a neural network |
| KR20210055582A (ko) * | 2019-11-07 | 2021-05-17 | 인텔 코포레이션 | 메모리 효율성을 향상시키기 위한 활성화 및 커널의 동적인 분할 기법 |
| KR20210074173A (ko) * | 2019-12-11 | 2021-06-21 | 인텔 코포레이션 | 스파스 매트릭스 최적화 메커니즘 |
| US20210303980A1 (en) * | 2020-03-30 | 2021-09-30 | POSTECH Research and Business Development Foundation | Sparsity-aware neural processing unit for performing constant probability index matching and processing method of the same |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20240164210A (ko) | 2024-11-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3639207A1 (en) | Device and method for processing convolution operation using kernel | |
| WO2022250468A1 (en) | Method and electronic device for 3d object detection using neural networks | |
| WO2019164237A1 (ko) | 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법 및 장치 | |
| WO2021201422A1 (ko) | Ar에 적용 가능한 의미적인 분할 방법 및 시스템 | |
| WO2018030772A1 (ko) | 감응식 교통 신호 제어 방법 및 그 장치 | |
| WO2020116768A1 (ko) | 영상 처리 장치 및 그 동작방법 | |
| CN110738308A (zh) | 一种神经网络加速器 | |
| CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
| JP7835493B2 (ja) | ディープラーニング演算実行方法及び電子装置 | |
| Zhang et al. | A fast filtering mechanism to improve efficiency of large-scale video analytics | |
| EP3942481A1 (en) | Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor | |
| US20240338419A1 (en) | Method and apparatus for sparse input-output index generation of sparse convolution | |
| CN113628206A (zh) | 一种车牌检测方法、装置、介质 | |
| Sun et al. | Memory efficient corner detection for event-driven dynamic vision sensors | |
| JP2020088658A (ja) | 監視装置、監視方法および監視プログラム | |
| JP3071899B2 (ja) | 荷電ビーム描画用データ作成装置 | |
| KR20240164210A (ko) | 데이터 플로우 최적화 방법을 이용한 인공신경망 기반의 희소 컨볼루션 연산 방법 및 장치 | |
| WO2022080582A1 (ko) | 목표 지향적 강화학습 방법 및 이를 수행하기 위한 장치 | |
| WO2024196151A1 (ko) | 사이버 공격을 방어하는 인공지능 시스템 및 그 동작 방법 | |
| KR20240164111A (ko) | 희소 입력 데이터의 위치 정보에 기초한 컨볼루션 연산 방법 및 장치 | |
| WO2023058999A1 (ko) | 관심객체 검출장치, 방법 및 이를 위한 컴퓨터 판독가능 프로그램 | |
| JP2710162B2 (ja) | 荷電ビーム描画用データの作成方法及び作成装置 | |
| WO2022080758A1 (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
| WO2023017885A1 (ko) | 입력 해상도 변경에 따른 특징맵 해상도 변경 방법 및 시스템 | |
| KR102963144B1 (ko) | 인공신경망을 이용한 희소 데이터 기반의 컨볼루션 연산 방법 및 장치 |
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: 24807523 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |