WO2019066183A1 - 전자 장치 및 그 제어 방법 - Google Patents
전자 장치 및 그 제어 방법 Download PDFInfo
- Publication number
- WO2019066183A1 WO2019066183A1 PCT/KR2018/005635 KR2018005635W WO2019066183A1 WO 2019066183 A1 WO2019066183 A1 WO 2019066183A1 KR 2018005635 W KR2018005635 W KR 2018005635W WO 2019066183 A1 WO2019066183 A1 WO 2019066183A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- sub
- kernel
- kernel data
- processor
- Prior art date
Links
Images
Classifications
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N99/00—Subject matter not provided for in other groups of this subclass
Definitions
- the present invention relates to an electronic device and a control method thereof, and more particularly, to an electronic device and a control method thereof for performing a convolution operation.
- Machine Learning is a field of artificial intelligence, which means a technique for generating new knowledge by inputting data into a computer and learning it. Especially, in the field of artificial neural network, which is one of the machine learning technologies, remarkable progress has been made, and as a result, Deep Learning has been born.
- Deep learning is a type of machine learning technology based on artificial neural networks. Even if the artificial neural network is designed and deepened in a multi-layered structure, data for learning can be processed by preprocessing using Unsupervised Learning, It is possible to improve learning efficiency. In particular, deep learning has been remarkably advanced recently due to the improvement of the big data by the Internet and the computing ability for processing the big data.
- CNN Convolutional Neural Network
- CNN has a structure suitable for learning 2D data and can be trained through backpropagation algorithm.
- CNN is widely used in various applications such as object classification, object detection, and so on.
- CNN Since CNN is a convolution operation in most of the operations, it is necessary to efficiently perform the convolution operation, but there is a problem that efficiency is lowered in a specific case.
- FIGS. 1A and 1B are diagrams for explaining problems of a convolution operation according to the prior art.
- FIG. 1A shows a case where stride is 1
- FIG. 1B shows a case where stride is 2.
- Stride means the interval at which kernel data is applied to the target data (ex: Image).
- the kernel data in the first cycle is calculated with the first area 101 of the object data, and one pixel data of Accumulation having the following values can be calculated.
- the kernel data is calculated with the second area 102 of the target data in the same manner, and the result of performing the above process on the entire target data is the right sideaccumulation.
- the kernel data is shifted by one pixel on the target data and performs convolution operation.
- the stride of FIG. 1B is 2
- the kernel data moves on the target data by two pixels and performs a convolution operation.
- the kernel data is computed with the third area 103 of the object data so that one pixel data of the accumulation can be calculated.
- the kernel data is computed in the same way with the fourth region 104 of the object data, where the fourth region may be an area having an interval of two pixels from the third region.
- the result of performing the above process on the whole data is the shaded part in the right Accumulation. That is, the data size of Accumulation in case of Stride 2 is only 1/4 of the data size of Accumulation in case of Stride 1.
- the difference in hardware operation between the case of FIG. 1A and the case of FIG. 1B is not large.
- the kernel data is shifted by one pixel on the target data, and the convolution operation is performed to calculate the accumulation as shown in FIG. 1A.
- the convolution operation is performed to calculate the accumulation as shown in FIG. 1A.
- the calculated Accumulation only the shaded portion of FIG. 1B is acquired, and the result according to Stride 2 is obtained.
- the hardware will perform operations up to the unshaded portion of FIG. 1B, which is an unnecessary result in stride 2 convolution operations. And if the stride is larger than 2, the utilization of the hardware becomes less.
- an electronic device comprising: storage means for storing object data and stride information, And a processor for convoluting the kernel data, wherein the processor divides the target data into a plurality of sub data based on the first stride information, and based on the second stride information different from the first stride information, And a plurality of sub kernel data corresponding to each of the plurality of sub data is subjected to a convolution operation, and a plurality of operation results are merged, and the plurality of sub kernel data is generated based on the first stride information
- the kernel data is divided data
- Ride information may be in the interval in which the kernel data is applied to the target data first.
- the processor divides the target data into n ⁇ n sub-data, and the plurality of sub-kernel data includes the kernel data and may be data divided into nxn pieces.
- the processor identifies each of the n x n sub-data as two-dimensional information of (i, j) (i and j are natural numbers less than or equal to n respectively) (i, j), where a and b are respectively a natural number greater than or equal to 0, a value located in a row of (a + i) and an column of (n x b + j) .
- the plurality of calculation results are in the form of a matrix having a different size from each other, and the processor extends the size of the remaining matrix based on the first matrix having the largest size among the plurality of calculation results, Value and the value of the same position among the values included in the remaining matrix whose size is expanded, and the extended area of the remaining matrix may have a value of zero.
- the processor includes a plurality of arithmetic element units each including a plurality of arithmetic elements arranged in a matrix form, one side connected to the storage, and the other side connected to each of the plurality of arithmetic element units A scatter and one side may be connected to each of the plurality of arithmetic operation element units, and the other side may include an accumulator connected to the storage.
- the data scanner receives the target data from the storage and divides the target data into the plurality of sub data and transfers the plurality of sub data to the plurality of arithmetic operation element units,
- the sub-data received from the data scatterer is subjected to the convolution operation based on the corresponding sub-kernel data, and the operation result is transmitted to the accumulator, and the accumulator outputs a plurality of operation results received from each of the plurality of operation element units Can be merged.
- the processor writes the object data into m x n plurality of sub data ,
- the plurality of sub-kernel data may be data in which the kernel data is divided into mxn pieces.
- the processor divides the kernel data into n ⁇ n pieces of sub-kernel data, and based on the second stride information, The sub-data, and the plurality of sub-kernel data corresponding to the plurality of sub-data, respectively.
- the processor identifies each of the n ⁇ n sub-kernel data as two-dimensional information of (i, j) (the i and j are natural numbers not more than n, respectively) (I, j) corresponding to (i, j), wherein a and b are respectively a natural number of 0 or more have.
- the processor may perform the convolution operation using the plurality of sub kernel data sets included in the sub kernel data set corresponding to the first stride information among a plurality of sub kernel data sets previously stored in the storage,
- the plurality of sub-kernel data sets may be a data set in which the kernel data is divided based on stride information different from each other.
- a control method for an electronic device including dividing the target data into a plurality of sub data based on first stride information indicating an interval at which kernel data is applied to target data, A step of performing a convolution operation on a plurality of sub-data and a plurality of sub-kernel data respectively corresponding to the plurality of sub data based on second stride information different from the one stride information, and merging a plurality of operation results ,
- the plurality of sub-kernel data is data obtained by dividing kernel data based on the first stride information, and the second stride information may be one at which the kernel data is applied to the target data.
- the dividing step divides the target data into n ⁇ n sub-data, and the plurality of sub- The data may be data divided into nxn pieces.
- the dividing step may include the steps of: identifying each of the n ⁇ n pieces of sub data as two-dimensional information of (i, j) (i and j are natural numbers of n or less, respectively) (i, j), wherein a and b are values of a sub-data corresponding to (i, j) in a column of (n x a + i) Each of which may be a natural number of 0 or more.
- the merging step may include expanding the size of the remaining matrix based on a first matrix having the largest size among the plurality of operation results, And merging a value of the same position among the values included in the remaining matrix whose size is expanded, and the expanded area of the remaining matrix may have a value of zero.
- the dividing step divides the target data into m x n Sub-data, and the plurality of sub-kernel data may be data in which the kernel data is divided into mxn pieces.
- the kernel data is divided into n ⁇ n sub-kernel data, and the sub- And performing the convolution operation on a plurality of sub-kernel data corresponding to the plurality of sub data, respectively.
- the step of dividing comprises the steps of: identifying each of the n ⁇ n sub-kernel data as two-dimensional information of (i, j) (where i and j are natural numbers of n or less) (I, j) in a column of (n x a + i) rows and (n x b + j) columns, wherein a and b May be a natural number of 0 or more.
- the convolution operation may perform the convolution operation using the plurality of sub-kernel data included in a sub-kernel data set corresponding to the first stride information among a plurality of previously stored sub-kernel data sets,
- the plurality of sub-kernel data sets may be a data set in which the kernel data is divided based on different stride information.
- a non-volatile computer readable medium storing computer instructions for performing an operating method of an electronic device, the operation comprising: A step of dividing the target data into a plurality of sub data based on the stride information, a step of dividing the target data into a plurality of sub data corresponding to the plurality of sub data and the plurality of sub data based on the second stride information different from the first stride information
- the method of claim 1 further comprising: concatenating the kernel data and merging a plurality of computation results, wherein the plurality of sub-kernel data is data in which kernel data is divided based on the first stride information, Wherein an interval at which the kernel data is applied to the target data is one day .
- the electronic device can perform the convolution operation at intervals of 1 even if the interval at which the kernel data is applied to the object data is two or more, thereby improving the hardware utilization.
- FIGS. 1A and 1B are diagrams for explaining problems of a convolution operation according to the prior art.
- FIG. 2 is a block diagram showing the configuration of an electronic device according to an embodiment of the present invention.
- 3A to 3C are diagrams for explaining a method of dividing object data and kernel data according to an embodiment of the present invention.
- 4A and 4B are diagrams for explaining a calculation method according to an embodiment of the present invention.
- 5A and 5B are diagrams for explaining a calculation method according to another embodiment of the present invention.
- FIG. 6 is a diagram for explaining a method of calculating three-dimensional data according to an embodiment of the present invention.
- FIG. 7 is a diagram for explaining a detailed configuration of a processor according to an embodiment of the present invention.
- FIG. 8 is a flowchart illustrating a method of controlling an electronic device according to an embodiment of the present invention.
- FIG. 2 is a block diagram showing a configuration of an electronic device 100 according to an embodiment of the present invention.
- the electronic device 100 includes a storage 110 and a processor 120.
- the electronic device 100 may be a device capable of performing a convolution operation.
- the electronic device 100 may be a desktop PC, a notebook, a smart phone, a tablet PC, a server, and the like.
- the electronic device 100 may be the system itself in which the cloud computing environment is built.
- the present invention is not limited to this, and the electronic device 100 may be any device as long as it is an apparatus capable of performing convolution operation.
- the convolution operation is an operation performed with a very high weight in deep learning, and may be an operation of highlighting characteristics corresponding to kernel data from object data through operation of object data and kernel data.
- the target data may be image data having a resolution of 1920 x 1080
- the kernel data may be a 3 x 3 sharpen filter.
- the kernel data can generate one data by multiplying the 3 ⁇ 3 area located at one side of the target data by the element and adding the multiplication result.
- the kernel data is moved on the target data and the convolution operation can be performed by repeating the above operation.
- the result of the convolution operation may be formed to have the same size as the target data when accompanied by zero padding and to be slightly smaller than the target data when zero padding is not accompanied.
- the storage 110 may store object data, kernel data, arithmetic instructions, and the like.
- the operation instruction when the operation instruction is a convolution operation instruction, the operation instruction may include stride information.
- the stride information indicates the interval at which the kernel data is applied to the target data.
- the storage 110 may store at least one kernel data itself.
- the storage 110 may store a plurality of sub-kernel data sets.
- each of the plurality of sub-kernel data sets may include a plurality of sub-kernel data in which one kernel data is divided based on different stride information.
- a first sub-kernel data set of a plurality of sub-kernel data sets may include a plurality of first sub-kernel data in which kernel data is divided based on first stride information
- the sub-kernel data set may include a plurality of second sub-kernel data in which the kernel data is divided based on the second stride information.
- the storage 110 may store a plurality of sets of sub-kernel data for each of a plurality of kernel data.
- the storage 110 may store a plurality of first sub-kernel data sets for the first kernel data and a plurality of second sub-kernel data sets for the second kernel data.
- a plurality of sub-kernel data may be generated by the electronic device 100, or information generated and received by an external electronic device other than the electronic device 100.
- the storage 110 may be implemented as a hard disk, a non-volatile memory, a volatile memory, or the like.
- Processor 120 generally controls the operation of electronic device 100.
- the processor 120 may be implemented as a digital signal processor (DSP), a microprocessor, or a TCON (Time Controller), but is not limited to a central processing unit a central processing unit (CPU), a microcontroller unit (MCU), a micro processing unit (MPU), a controller, an application processor (AP), or a communication processor (CP)
- the processor 140 may be implemented as a system on chip (SoC), a large scale integration (LSI) with a processing algorithm embedded therein, an FPGA Field programmable gate array (FPGA).
- SoC system on chip
- LSI large scale integration
- FPGA Field programmable gate array
- the processor 120 may perform convolution operation on the target data and the kernel data based on the stride information indicating the interval at which the kernel data is applied to the target data stored in the storage 110.
- the processor 120 divides the target data into a plurality of sub data based on the first stride information and generates a plurality of sub data based on the second stride information different from the first stride information,
- the sub-kernel data of the sub-kernel data can be convoluted, and a plurality of operation results can be merged.
- the plurality of sub-kernel data may be data obtained by dividing the kernel data based on the first stride information.
- the interval at which the kernel data is applied to the target data may be one. That is, the first stride information may have an interval of two or more at which the kernel data is applied to the target data.
- the processor 120 divides the target data into n ⁇ n sub-data, and the plurality of sub-kernel data is divided into n ⁇ n Lt; / RTI >
- the present invention is not limited to this, and the first stride information may be different for rows and columns of the target data. That is, if the first stride information is m (m is an integer larger than 1) and n (n is an integer larger than 1) for the row, the processor 120 writes the object data into m x n number of sub data .
- the processor 120 may use a plurality of sub-kernel data in which kernel data is divided into m ⁇ n pieces for convolution operation.
- the processor 120 may divide the target data into 3 ⁇ 2 sub-data if the first stride information is 3 for the row and 2 for the column.
- the processor 120 may use a plurality of sub-kernel data in which the kernel data is divided into 3x2 for the convolution operation.
- the processor 120 identifies each of the n x n sub data as two-dimensional information of (i, j) (i and j are natural numbers of n or less respectively) (N, b + j) of the row and the column of (n x b + j) can be obtained as values of sub data corresponding to (i, j).
- a and b may be natural numbers of 0 or more, respectively.
- the plurality of computation results are in the form of a matrix having different sizes from each other, and the processor 120 expands the size of the remaining matrix based on the first matrix having the largest size among the plurality of computation results, And the value of the same position among the values included in the remaining matrix whose size is expanded.
- the extended area of the remaining matrix may have a value of zero.
- the first operation result is a 2 ⁇ 2 matrix form
- the second operation result is a 2 ⁇ 3 matrix form
- the third operation result is 3 ⁇ 2 matrix
- the fourth calculation result may be a 4 ⁇ 4 matrix.
- the processor 120 may extend the first through third computation results into a 4x4 matrix and the value of the row or column added upon expansion may be zero.
- Processor 120 may extend the right or bottom of the matrix upon expansion of the computation result.
- the processor 120 may extend the 2x2 matrix form into a 4x4 matrix form by adding 0 to the right and bottom sides of the first calculation result.
- the processor 120 may merge the value included in the first matrix and the value of the same position among the values included in the remaining matrix whose size is expanded. That is, the processor 120 may sum the respective values for each element. According to the example described above, the summed result may be in the form of a 4x4 matrix.
- the present invention is not limited to this, and the processor 120 may predict the size of the second matrix, which is the smallest among the plurality of calculation results, and perform calculation so as to correspond to the predicted size. A detailed description thereof will be given later with reference to the drawings.
- the processor 120 includes a plurality of arithmetic operation element units each including a plurality of arithmetic processing elements arranged in a matrix form, one side connected to the storage 110, the other side connected to each of the plurality of arithmetic operation element units A connected data scatter and one side may be connected to each of the plurality of arithmetic operation element units and the other side may include an accumulator connected to the storage 110.
- the data scanner can receive the target data from the storage 110, divide it into a plurality of subdata, and transmit the plurality of subdata to each of the plurality of arithmetic and logic units.
- the data scanner may include a storage element for storing a plurality of sub data.
- the data scanner may distribute received target data to a plurality of arithmetic operation units in real time.
- the data scanner may be formed of at least one multiplexer, and may be sequentially distributed to a plurality of arithmetic-logic unit units when the object data is sequentially input. That is, the data scanner may change only the path of data input in real time, and a plurality of sub data may be stored in each of the plurality of arithmetic and logic units after the distribution is completed.
- Each of the plurality of arithmetic element units performs a convolution operation on the sub data received from the data scatter based on the corresponding sub kernel data, and can transmit the operation result to the accumulator.
- the accumulator can merge the plurality of operation results received from each of the plurality of arithmetic-logic element units.
- the processor 120 may divide the kernel data into a plurality of sub-kernel data. Specifically, when the first stride information is n (n is an integer greater than 1), the processor 120 divides the kernel data into n ⁇ n sub-kernel data, and based on the second stride information, Data and a plurality of sub-kernel data respectively corresponding to the plurality of sub data can be convoluted.
- the present invention is not limited to this, and the first stride information may be different for the rows and columns of the kernel data. That is, if the first stride information is m (m is an integer larger than 1) and n (n is an integer larger than 1) for the row, the processor 120 converts the kernel data into m ⁇ n sub- Data.
- the processor 120 identifies each of the n ⁇ n sub-kernel data as two-dimensional information of (i, j) (i and j are natural numbers of n or less, respectively) ) And (n x b + j) columns as the values of sub-kernel data corresponding to (i, j).
- a and b may be natural numbers of 0 or more, respectively. That is, a method of forming a plurality of sub-kernel data may be the same as a method of forming a plurality of sub data.
- the processor 120 may perform a convolution operation using a plurality of sub-kernel data included in a sub-kernel data set corresponding to the first stride information among a plurality of sub-kernel data sets previously stored in the storage 110 have.
- the plurality of sub-kernel data sets may be a data set in which kernel data is divided based on stride information that is different from each other.
- the storage 110 may store a plurality of sub-kernel data sets that are mapped based on different stride information, and the processor 120 may perform a convolution operation based on the information stored in the storage 110 .
- the processor 120 does not perform the operation of dividing the kernel data.
- the method of generating a plurality of sub-kernel data sets may be the same as the method in which the processor 120 directly divides the kernel data, and a dividing operation is performed by an external electronic device other than the electronic device 100, The electronic device 100 only receives and stores it from an external electronic device.
- 3A to 3C are diagrams for explaining a method of dividing object data and kernel data according to an embodiment of the present invention.
- FIG. 3A is a diagram for explaining a method of dividing target data when the stride information is 2.
- i and j are natural numbers of n or less, i and j may be 1 and 2, respectively.
- the processor 120 may identify each of the four sub-data as (1, 1), (1, 2), (2, 1), (2, 2).
- the processor 120 may obtain a value located in the column of (n x a + i) rows and (n x b + j) in the object data as the value of the sub data corresponding to (i, j).
- a and b may be natural numbers of 0 or more, respectively.
- the processor 120 writes the (2 x a + 1) rows and (2 x b + 1) Can be obtained.
- a and b are natural numbers equal to or greater than 0, a and b are respectively assigned to (2 x a + 1) rows and (2 x b + 1) columns sequentially from 0, And the columns of (1), (1) and (3), the rows of (1) and (5), the rows of (1) and the column of (7) (3), (3), (3), (3) and (7) (9), (9), (9), and (9), respectively.
- the right side of FIG. 3A shows four sub data, and the sub data at the upper left of the data represents the sub data identified as (1, 1).
- the processor 120 knows that there is no value that can be acquired from the target data when a or b is 5 or more it is possible to change the numerical value of at least one of a and b or end the generation of the sub data.
- processor 120 changes a to 2 and b to 1 because there is no value corresponding to the target data Thereby obtaining a corresponding value from the object data.
- the processor 120 can form the remaining two sub data.
- FIG. 3B is a diagram for explaining a method of dividing kernel data when the stride information is 2; FIG. However, the method of dividing the kernel data is the same as the method of dividing the target data in Fig. 3A, and therefore duplicate description will be omitted.
- FIG. 3C is a diagram for explaining a method of dividing kernel data when the stride information is 3;
- i and j are natural numbers of n or less, i and j may be 1, 2, and 3, respectively.
- the processor 120 may convert each of the nine sub-kernel data into (1, 1), (1, 2), (1, 3), (2, 1) , 3), (3, 1), (3, 2), and (3, 3)
- the processor 120 may obtain a value located in the column of (n x a + i) rows and (n x b + j) in the kernel data as the value of sub-kernel data corresponding to (i, j).
- a and b may be natural numbers of 0 or more, respectively.
- the processor 120 reads (3 ⁇ a + 2) rows and (3 ⁇ b + 3) Can be obtained.
- a and b are natural numbers equal to or greater than 0, a and b are respectively assigned to (3 x a + 2) rows and (3 x b + 3) columns sequentially from 0, And the values in columns of (3), (2) and (6), (5) and (3), (5), and (6) .
- the lower part of FIG. 3C shows nine pieces of sub-kernel data, and sub-kernel data in the middle of the right part indicates sub-kernel data identified as (2, 3).
- the processor 120 may divide the target data and the kernel data into a plurality of sub data and a plurality of sub kernel data, respectively, in the above-described manner when the stride information at the time of the convolution operation is two or more.
- the processor 120 may divide the target data and the kernel data based on the same stride information. That is, although the size of the sub-kernel data corresponding to each of the plurality of sub data may be different, the number of the plurality of sub data and the number of the plurality of sub kernel data may be the same.
- stride information may be different for rows and columns.
- the processor 120 may divide the target data into 3 ⁇ 2 sub-data if the stride information is 3 for the row and 2 for the column.
- i and j are natural numbers of n or less, so that i may be 1, 2, and 3, and j may be 1 and 2, respectively.
- the processor 120 may obtain a value located in the column of (n x a + i) rows and (n x b + j) in the object data as the value of the sub data corresponding to (i, j).
- a and b may be natural numbers of 0 or more, respectively.
- the object data and the kernel data can be divided through the above-described method.
- FIGS. 4A and 4B are diagrams for explaining a calculation method according to an embodiment of the present invention.
- FIGS. 4A and 4B it is assumed that a plurality of sub data of FIG. 3A and a plurality of sub kernel data of FIG. 3B are calculated.
- the processor 120 identifies each of a plurality of n ⁇ n sub data as two-dimensional information of (i, j) (i and j are natural numbers of n or less, respectively) Can be identified by two-dimensional information of (i, j) (i and j are natural numbers of n or less, respectively).
- the processor 120 identifies each of the four sub data as two-dimensional information of (1, 1), (1, 2), (2, 1)
- the sub kernel data can be identified by two-dimensional information of (1, 1), (1, 2), (2, 1), and (2, 2).
- the processor 120 can perform convolution operation on sub-kernel data corresponding to each of a plurality of sub data and a plurality of sub data.
- the processor 120 performs the convolution operation with the sub-kernel data of (1, 1) and the sub-data of (1, 2) (2, 1) sub-kernel data with the sub-data of (2, 1) and the sub-kernel data of (2, 2) Data can be convoluted with sub-kernel data of (2, 2).
- the processor 120 may perform the stride 1 convolution operation in parallel.
- the processor 120 may synchronize the convolution operation of the remaining sub-kernel data based on the convolution operation of the sub-kernel data having the largest size among the plurality of sub-kernel data. For example, in FIG. 4A, in the case of the sub-kernel data having the largest size (1, 1) among the plurality of sub-kernel data, the sub-kernel data moves once to the right and then changes the row, And perform a convolution operation.
- the processor 120 may synchronize the motion of the sub kernel data of (1, 2), (2, 1), (2, 2) in synchronization with the motion of the sub kernel data of (1, 1).
- the processor 120 may move the sub kernel data of (2, 2) to the right first and then move it to the right one more time, but omitting the sub kernel data of (2, 2) 1) sub-kernel data, and moves back to the right again to perform the convolution operation.
- the processor 120 can move the sub kernel data of (2, 2) to the right in the second row and to the third row, but this can also be omitted.
- FIG. 4B shows the calculation results of (1, 1), (1, 2), (2, 1), and (2, 2).
- the processor 120 synchronizes the convolution operation of the remaining sub kernel data based on the convolution operation of the largest sub kernel data among the plurality of sub kernel data, the sizes of the operation results may be the same.
- the processor 120 may merge a plurality of operation results on an element-by-element basis.
- the result of the final convolution operation according to the merge may be the same as the result of performing the convolution operation based on stride 2 on the object data and the kernel data.
- 5A and 5B are diagrams for explaining a calculation method according to another embodiment of the present invention. 5A and 5B, it is assumed that a plurality of sub data of FIG. 3A and a plurality of sub kernel data of FIG. 3B are calculated as shown in FIGS. 4A and 4B. However, in FIG. 5A, a plurality of sub-kernel data are omitted.
- the processor 120 identifies a plurality of sub data and a plurality of sub-kernel data as two-dimensional information in the same manner as described above, and performs convolution operation on sub-kernel data corresponding to each of a plurality of sub data and a plurality of sub data . At this time, the processor 120 may perform the stride 1 convolution operation in parallel.
- the processor 120 may perform an asynchronous convolution operation other than the synchronous convolution operation of FIGS. 4A and 4B. In this case, the processor 120 does not need to detect the sub-kernel data having the largest size among the plurality of sub-kernel data, and performs convolution operation on the sub-kernel data corresponding to each of the plurality of sub data and the plurality of sub data separately .
- sub-kernel data of (1, 2), (2, 1), (2, 2) with sub-kernel data of relatively small size is more moved than the case of Can be many.
- subkernel data of (1, 2) can be shifted to the right by one row and then moved to the right again to perform the convolution operation. That is, as compared with FIG. 4A, sub-kernel data of (1, 2) in FIG. 5A can be added with two operations. Similarly, in comparison with FIG. 4A, sub-kernel data of (2, 1) in FIG. 5A may be added twice, and sub-kernel data of (2, 2) may be added five times.
- FIG. 5B shows calculation results of (1, 1), (1, 2), (2, 1), and (2, 2).
- the size of the operation result may be all different.
- the processor 120 may extend the size of the remaining matrix based on the largest matrix among the plurality of operation results, as shown in FIG. 5C.
- the processor 120 may extend the size of the remaining matrix so that the extended region has a value of zero.
- the processor 120 may merge a plurality of operation results on an element-by-element basis. After the expansion, since the sizes of the matrix are all the same, the merging method is the same as that described in FIG. 4B.
- the processor 120 may obtain the final convolution operation result from the merging result based on the smallest matrix among the plurality of operation results. For example, as shown in FIG. 5C, the processor 120 may calculate a result of a 3x3 merging based on a 2x2 matrix, which is a result of a smallest (1, 1) Only the value of 2x2 in the upper left corner can be obtained as the final convolution operation result.
- the result of the final convolution operation according to the merge may be the same as the result of performing the convolution operation based on stride 2 on the object data and the kernel data.
- FIG. 6 is a diagram for explaining a method of calculating three-dimensional data according to an embodiment of the present invention.
- each of the feature data and the kernel data may be three-dimensional data having a depth and a row and a column.
- the processor 120 may divide each of the object data and the kernel data based on the stride information. At this time, the processor 120 may divide each of the object data and the kernel data considering only the row and column regardless of the depth.
- the processor 120 can generate four sub data and four sub kernel data, as shown in FIG. 6, and each data can be three-dimensional data having depth as well as rows and columns.
- the processor 120 may perform the convolution operation of Stride 1 in parallel and may merge the plurality of operation results on an element-by-element basis.
- the processor 120 may consider not only the row and column but also the depth when the elements are merged.
- FIG. 7 is a diagram for explaining a detailed configuration of the processor 120 according to an embodiment of the present invention.
- the processor 120 includes a data scatterer 121, a plurality of arithmetic element units 122, and an accumulator 123.
- One side of the data scatter 121 is connected to the storage 110, and can receive target data from the storage 110 and divide it into a plurality of sub data.
- the other side of the data scatter 121 is connected to each of the plurality of arithmetic element units 122, and each of the plurality of arithmetic element units 122 can transmit a plurality of sub data.
- the plurality of arithmetic operation element units 122 may include a plurality of arithmetic processing elements arranged in a matrix form.
- the first arithmetic element unit 122-1, the second arithmetic element unit 122-2, the third arithmetic element unit 122-3 and the fourth arithmetic element unit 122-4 are each in the form of a matrix And may include a plurality of arithmetic elements arranged.
- first arithmetic element unit 122-1 In Fig. 7, only four of the first arithmetic element unit 122-1, the second arithmetic element unit 122-2, the third arithmetic element unit 122-3 and the fourth arithmetic element unit 122-4
- the present invention is not limited thereto, and any other number of arithmetic operation element units may be formed.
- the first calculation element unit 122-1, the second calculation element unit 122-2, the third calculation element unit 122-3 and the fourth calculation element unit 122-4 may all be the same And may be different.
- the data can be unidirectionally shifted or bi-directionally shifted between adjacent arithmetic elements in each arithmetic-logic element unit.
- FIG. 7 some of the adjacent arithmetic elements are shown as shifting data only in the downward direction, but this is merely an example, and bi-directional shift is also possible.
- Each of the arithmetic elements basically includes a multiplier and an arithmetic logic unit (ALU), and the ALU may include at least one adder.
- the arithmetic element can perform arithmetic operations using a multiplier and an ALU.
- the present invention is not limited to this, and any other structure may be used as long as it can perform functions such as arithmetic operation and shift.
- Each of the arithmetic elements may include a register for storing data.
- each of the arithmetic elements may include a register for storing the result of the arithmetic operation in a particular cycle.
- each of the arithmetic elements may include a register for shifting an operation result in a specific cycle to an adjacent arithmetic operation element, and for storing a shifted operation result from an adjacent arithmetic operation element.
- Each of the plurality of arithmetic operation element units 122 performs convolution operation on the sub data received from the data scatter 121 on the basis of the corresponding sub kernel data and transmits the operation result to the accumulator 123.
- each of the plurality of arithmetic operation element units 122 can receive the corresponding sub-kernel data from the storage 110.
- the sub kernel data corresponding to the storage 110 may not be stored, but only the kernel data may be stored.
- the processor 120 may further include a kernel data scatterer (not shown) for partitioning the kernel data.
- a kernel data scatterer may receive kernel data from the storage 110, divide it and transfer it to the corresponding arithmetic unit.
- the data scanner 121 and the kernel data scatterer may be implemented as one unit.
- the integrally implemented scaler may sequentially receive the target data and the kernel data, divide each data into an appropriate cycle, and transmit the divided data to the corresponding arithmetic unit.
- the accumulator 123 has one side connected to each of the plurality of arithmetic operation element units 122 and the other side connected to the storage 110.
- the accumulator 123 receives a plurality of arithmetic operation results from each of the plurality of arithmetic operation element units 122, Can be merged.
- FIG. 8 is a flowchart illustrating a method of controlling an electronic device according to an embodiment of the present invention.
- target data is divided into a plurality of sub data based on first stride information indicating an interval at which kernel data is applied to target data (S810). Then, based on the second stride information different from the first stride information, a plurality of sub-data and a plurality of sub-kernel data respectively corresponding to the plurality of sub-data are convoluted (S820). Then, a plurality of calculation results are merged (S830).
- the plurality of sub-kernel data is data in which the kernel data is divided based on the first stride information, and the interval in which the kernel data is applied to the target data may be 1 in the second stride information.
- the target data can be divided into a plurality of n ⁇ n sub data.
- the plurality of sub-kernel data may be data in which the kernel data is divided into nxn pieces.
- the step of dividing (S810) further includes a step of identifying each of the n x n sub-data as two-dimensional information of (i, j) (i and j are natural numbers less than n respectively) (I, j) in the column of the (n, b + j) rows and (n x b + j) columns of the sub-data.
- a and b may be natural numbers of 0 or more, respectively.
- the plurality of operation results may be in the form of a matrix having a different size from each other
- the step of merging may include expanding the size of the remaining matrix based on the first matrix having the largest size among the plurality of operation results, And merging the value of the included value and the value of the same position among the values included in the remaining matrix expanded in size.
- the extended area of the remaining matrix may have a value of zero.
- the dividing step S810 is performed so that the object data is divided into mxn It can be divided into sub data.
- the plurality of sub-kernel data may be data in which the kernel data is divided into mxn pieces.
- the dividing step S810 includes a step of identifying each of the plurality of n ⁇ n sub-kernel data as two-dimensional information of (i, j) (i and j are natural numbers not more than n, respectively) (i, j) corresponding to (i, j) in the (n, a + i) and (nxb + j) columns of the sub-kernel data.
- a and b may be natural numbers of 0 or more, respectively.
- the convolution operation step S820 may perform the convolution operation using a plurality of sub-kernel data included in the sub-kernel data set corresponding to the first stride information among the plurality of previously stored sub-kernel data sets .
- the plurality of sub-kernel data sets may be a data set in which kernel data is divided based on stride information that is different from each other.
- the electronic device can perform the convolution operation at intervals of 1 even if the interval at which the kernel data is applied to the object data is two or more, thereby improving the hardware utilization.
- the various embodiments described above may be implemented with software that includes instructions stored on a machine-readable storage medium readable by a machine (e.g., a computer) .
- the device may include an electronic device (e.g., electronic device A) in accordance with the disclosed embodiments, which is a device capable of calling stored instructions from the storage medium and operating according to the called instructions.
- the processor may perform functions corresponding to the instruction, either directly or under the control of the processor, using other components.
- the instructions may include code generated or executed by the compiler or interpreter.
- a device-readable storage medium may be provided in the form of a non-transitory storage medium.
- 'non-temporary' means that the storage medium does not include a signal and is tangible, but does not distinguish whether data is stored semi-permanently or temporarily on the storage medium.
- a method according to various embodiments described above may be provided in a computer program product.
- a computer program product can be traded between a seller and a buyer as a product.
- a computer program product may be distributed in the form of a machine readable storage medium (eg, compact disc read only memory (CD-ROM)) or distributed online through an application store (eg PlayStore TM).
- CD-ROM compact disc read only memory
- PlayStore TM application store
- at least a portion of the computer program product may be temporarily stored, or temporarily created, on a storage medium such as a manufacturer's server, a server of an application store, or a memory of a relay server.
- the various embodiments described above may be embodied in a recording medium readable by a computer or similar device using software, hardware, Lt; / RTI >
- the embodiments described herein may be implemented by the processor itself.
- embodiments such as the procedures and functions described herein may be implemented with separate software modules. Each of the software modules may perform one or more of the functions and operations described herein.
- Non-transitory computer-readable media is a medium that stores data for a short period of time, such as a register, cache, memory, etc., but semi-permanently stores data and is readable by the device.
- Specific examples of non-transitory computer readable media include CD, DVD, hard disk, Blu-ray disk, USB, memory card, ROM, and the like.
- each of the components may be composed of a single entity or a plurality of entities, and some subcomponents of the abovementioned subcomponents may be omitted,
- the components may be further included in various embodiments.
- some components e.g., modules or programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Image Processing (AREA)
Abstract
전자 장치가 개시된다. 본 전자 장치는 스토리지 및 스토리지에 저장된 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 스트라이드(stride) 정보에 기초하여 대상 데이터 및 커널 데이터를 컨볼루션(convolution) 연산하는 프로세서를 포함하며, 프로세서는 제1 스트라이드 정보에 기초하여 대상 데이터를 복수의 서브 데이터로 분할하고, 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 복수의 서브 데이터 및 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하며, 복수의 연산 결과를 병합하고, 복수의 서브 커널 데이터는 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터이며, 제2 스트라이드 정보는 대상 데이터에 커널 데이터가 적용되는 간격이 1일 수 있다.
Description
본 발명은 전자 장치 및 그 제어 방법에 대한 것으로, 더욱 상세하게는 컨볼루션(convolution) 연산을 수행하는 전자 장치 및 그 제어 방법에 대한 것이다.
머신 러닝(Machine Learning)은 인공 지능의 한 분야로서, 컴퓨터에 데이터를 입력하여 학습하게 함으로써 새로운 지식을 생성하는 기술을 의미한다. 특히, 머신 러닝 기술의 하나인 인공 신경망 분야에서 두드러진 발전이 이루어졌으며, 그 결과로서 딥러닝(Deep Learning)이 탄생하였다.
딥러닝은 인공 신경망에 기반을 둔 머신 러닝 기술의 한 종류로, 인공 신경망이 다층 구조로 설계되어 깊어지더라도 학습을 위한 데이터들을 비지도 학습(Unsupervised Learning)을 활용한 전처리나, 데이터를 여러 층 너머로 한번에 전달함으로써 학습 효율을 향상시킬 수 있다. 특히, 딥러닝은 인터넷에 의한 빅데이터 및 이를 처리하기 위한 컴퓨팅 능력의 향상으로 최근 비약적인 발전을 보이고 있다.
이중, 컨볼루션 신경망(Convolutional Neural Network, CNN)은 2차원 데이터의 학습에 적합한 구조를 가지고 있으며, 역전달(Backpropagation algorithm)을 통해 훈련이 가능하다. CNN은 영상 내 객체 분류, 객체 탐지 등 다양한 응용 분야에 폭넓게 활용되고 있다.
CNN은 대부분의 연산이 컨볼루션(convolution) 연산이므로, 컨볼루션 연산을 효율적으로 수행할 필요가 있으나, 특정한 경우에 효율성이 저하되는 문제가 있다.
도 1a 및 도 1b는 종래 기술에 따른 컨볼루션 연산의 문제점을 설명하기 위한 도면들이다. 먼저, 도 1a는 스트라이드가 1인 경우이고, 도 1b는 스트라이드가 2인 경우이다. 스트라이드는 대상 데이터(ex : Image)에 커널 데이터가 적용되는 간격을 의미한다.
도 1a에 도시된 바와 같이, 제1 싸이클에서 커널 데이터는 대상 데이터의 제1 영역(101)과 연산되어 하기와 같은 값을 갖는 Accumulation의 픽셀 데이터 하나가 산출될 수 있다.
a1 + b2 + c3 + d4 + e5 + f6 + g7 + h8 + i9
그리고, 제2 싸이클에서 커널 데이터는 동일한 방법으로 대상 데이터의 제2 영역(102)과 연산되며, 이와 같은 과정을 대상 데이터 전체에 수행한 결과가 우측의 Accumulation이다.
이때, 커널 데이터는 대상 데이터 상을 한 픽셀씩 이동하며 컨볼루션 연산을 수행한다. 반면, 도 1b의 스트라이드가 2인 경우에는 커널 데이터가 대상 데이터 상을 두 픽셀씩 이동하며 컨볼루션 연산을 수행한다.
즉, 도 1b에 도시된 바와 같이, 제1 싸이클에서 커널 데이터는 대상 데이터의 제3 영역(103)과 연산되어 Accumulation의 픽셀 데이터 하나가 산출될 수 있다.
그리고, 제2 싸이클에서 커널 데이터는 동일한 방법으로 대상 데이터의 제4 영역(104)과 연산되며, 여기서, 제4 영역은 제3 영역으로부터 두 픽셀의 간격을 갖는 영역일 수 있다. 이와 같은 과정을 대상 데이터 전체에 수행한 결과가 우측의 Accumulation에서 음영 처리된 부분이다. 즉, 스트라이드 2인 경우의 Accumulation의 데이터 크기는 스트라이드 1인 경우의 Accumulation의 데이터 크기의 1/4에 불과하다.
다만, 도 1a의 경우와 도 1b의 경우에 있어서 하드웨어적인 동작 차이는 크지 않다. 구체적으로, 도 1b의 경우에도 도 1a와 같이 커널 데이터가 대상 데이터 상을 한 픽셀씩 이동하며 컨볼루션 연산을 수행하여, 도 1a와 같은 Accumulation을 산출하게 된다. 이후, 산출된 Accumulation에서 도 1b의 음영 처리된 부분만을 획득하여 스트라이드가 2에 따른 결과가 획득된다.
즉, 하드웨어적으로는 도 1b의 음영 처리되지 않은 부분까지 연산을 수행하게 되며, 이는 스트라이드가 2의 컨볼루션 연산에서는 불필요한 결과값이다. 그리고, 스트라이드가 2보다 더 커지면 하드웨어의 활용도는 더 떨어지게 된다.
그에 따라, 스트라이드가 2 이상인 경우에도 하드웨어의 활용도가 저하되지 않는 컨볼루션 연산 방법이 개발될 필요성이 있어왔다.
본 발명은 상술한 필요성에 따른 것으로, 본 발명의 목적은 컨볼루션 연산 과정에서 하드웨어 활용도를 향상시키기 위한 전자 장치 및 그 제어 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 전자 장치는 스토리지 및 상기 스토리지에 저장된 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 스트라이드(stride) 정보에 기초하여 상기 대상 데이터 및 상기 커널 데이터를 컨볼루션(convolution) 연산하는 프로세서를 포함하며, 상기 프로세서는 제1 스트라이드 정보에 기초하여 상기 대상 데이터를 복수의 서브 데이터로 분할하고, 상기 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하며, 복수의 연산 결과를 병합하고, 상기 복수의 서브 커널 데이터는 상기 제1 스트라이드 정보에 기초하여 상기 커널 데이터가 분할된 데이터이며, 상기 제2 스트라이드 정보는 상기 대상 데이터에 상기 커널 데이터가 적용되는 간격이 1일 수 있다.
또한, 상기 프로세서는 상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할하고, 상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 n × n 개로 분할된 데이터일 수 있다.
그리고, 상기 프로세서는 상기 n × n 개의 복수의 서브 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고, 상기 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득하며, 상기 a 및 상기 b는, 각각 0 이상의 자연수일 수 있다.
또한, 상기 복수의 연산 결과는 서로 크기가 다른 매트릭스 형태이며, 상기 프로세서는 상기 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하고, 상기 제1 매트릭스에 포함된 값과 상기 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합하며, 상기 나머지 매트릭스의 확장된 영역은, 0 값을 가질 수 있다.
그리고, 상기 프로세서는 각각이 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 복수의 연산 소자 유닛, 일측이 상기 스토리지와 연결되며, 타측이 상기 복수의 연산 소자 유닛 각각에 연결된 데이터 스캐터(scatter) 및 일측이 상기 복수의 연산 소자 유닛 각각에 연결되며, 타측이 상기 스토리지와 연결된 어큐뮬레이터(accumulator)를 포함할 수 있다.
또한, 상기 데이터 스캐터는 상기 스토리지로부터 상기 대상 데이터를 수신하여 상기 복수의 서브 데이터로 분할하고, 상기 복수의 서브 데이터를 각각 상기 복수의 연산 소자 유닛으로 전송하며, 상기 복수의 연산 소자 유닛 각각은 상기 데이터 스캐터로부터 수신된 서브 데이터를 대응되는 서브 커널 데이터에 기초하여 상기 컨볼루션 연산하며, 연산 결과를 상기 어큐뮬레이터로 전송하고, 상기 어큐뮬레이터는 상기 복수의 연산 소자 유닛 각각으로부터 수신된 복수의 연산 결과를 병합할 수 있다.
그리고, 상기 프로세서는 상기 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할하고, 상기 복수의 서브 커널 데이터는 상기 커널 데이터가 m × n 개로 분할된 데이터일 수 있다.
또한, 상기 프로세서는 상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 커널 데이터를 n × n 개의 복수의 서브 커널 데이터로 분할하고, 상기 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 상기 컨볼루션 연산할 수 있다.
그리고, 상기 프로세서는 상기 n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고, 상기 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득하며, 상기 a 및 상기 b는 각각 0 이상의 자연수일 수 있다.
또한, 상기 프로세서는 상기 스토리지에 기저장된 복수의 서브 커널 데이터 세트 중 상기 제1 스트라이드 정보에 대응되는 서브 커널 데이터 세트에 포함된 상기 복수의 서브 커널 데이터를 이용하여 상기 컨볼루션 연산을 수행하며, 상기 복수의 서브 커널 데이터 세트는, 서로 상이한 스트라이드 정보에 기초하여 상기 커널 데이터가 분할된 데이터 세트일 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 전자 장치의 제어 방법은 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 제1 스트라이드 정보에 기초하여 상기 대상 데이터를 복수의 서브 데이터로 분할하는 단계, 상기 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하는 단계 및 복수의 연산 결과를 병합하는 단계를 포함하고, 상기 복수의 서브 커널 데이터는 상기 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터이며, 상기 제2 스트라이드 정보는 상기 대상 데이터에 상기 커널 데이터가 적용되는 간격이 1일 수 있다.
또한, 상기 분할하는 단계는 상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할하고, 상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 n × n 개로 분할된 데이터일 수 있다.
그리고, 상기 분할하는 단계는 상기 n × n 개의 복수의 서브 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하는 단계 및 상기 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득하는 단계를 포함하며, 상기 a 및 상기 b는, 각각 0 이상의 자연수일 수 있다.
또한, 상기 복수의 연산 결과는 서로 크기가 다른 매트릭스 형태이며, 상기 병합하는 단계는 상기 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하는 단계 및 상기 제1 매트릭스에 포함된 값과 상기 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합하는 단계를 포함하며, 상기 나머지 매트릭스의 확장된 영역은 0 값을 가질 수 있다.
그리고, 상기 분할하는 단계는 상기 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할하고, 상기 복수의 서브 커널 데이터는 상기 커널 데이터가 m × n 개로 분할된 데이터일 수 있다.
또한, 상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 커널 데이터를 n × n 개의 복수의 서브 커널 데이터로 분할하는 단계 및 상기 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 상기 컨볼루션 연산하는 단계를 더 포함할 수 있다.
그리고, 상기 분할하는 단계는 상기 n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하는 단계 및 상기 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득하는 단계를 포함하며, 상기 a 및 상기 b는 각각 0 이상의 자연수일 수 있다.
또한, 상기 컨볼루션 연산하는 단계는 기저장된 복수의 서브 커널 데이터 세트 중 상기 제1 스트라이드 정보에 대응되는 서브 커널 데이터 세트에 포함된 상기 복수의 서브 커널 데이터를 이용하여 상기 컨볼루션 연산을 수행하며, 상기 복수의 서브 커널 데이터 세트는, 서로 상이한 스트라이드 정보에 기초하여 상기 커널 데이터가 분할된 데이터 세트일 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 전자 장치의 동작 방법을 수행하도록 하는 컴퓨터 명령을 저장하는 비일시적 컴퓨터 판독 가능 매체에 있어서, 상기 동작은 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 제1 스트라이드 정보에 기초하여 상기 대상 데이터를 복수의 서브 데이터로 분할하는 단계, 상기 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하는 단계 및 복수의 연산 결과를 병합하는 단계를 포함하고, 상기 복수의 서브 커널 데이터는 상기 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터이며, 상기 제2 스트라이드 정보는 상기 대상 데이터에 상기 커널 데이터가 적용되는 간격이 1일 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 전자 장치는 대상 데이터에 커널 데이터가 적용되는 간격이 2 이상이더라도 1의 간격으로 컨볼루션 연산을 수행하여 하드웨어 활용도를 향상시킬 수 있다.
도 1a 및 도 1b는 종래 기술에 따른 컨볼루션 연산의 문제점을 설명하기 위한 도면들이다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 3a 내지 도 3c는 본 발명의 일 실시 예에 따른 대상 데이터 및 커널 데이터를 분할하는 방법을 설명하기 위한 도면들이다.
도 4a 및 도 4b는 본 발명의 일 실시 예에 따른 연산 방법을 설명하기 위한 도면들이다.
도 5a 및 도 5b는 본 발명의 다른 실시 예에 따른 연산 방법을 설명하기 위한 도면들이다.
도 6은 본 발명의 일 실시 예에 따른 3차원 데이터의 연산 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 프로세서의 세부 구성을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
-
이하에서, 첨부된 도면을 이용하여 본 발명의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블럭도이다.
도 2에 도시된 바와 같이, 전자 장치(100)는 스토리지(110) 및 프로세서(120)를 포함한다.
전자 장치(100)는 컨볼루션(convolution) 연산을 수행할 수 있는 장치일 수 있다. 예를 들어, 전자 장치(100)는 데스크탑 PC, 노트북, 스마트폰, 태블릿 PC, 서버 등일 수 있다. 또는, 전자 장치(100)는 클라우딩 컴퓨팅 환경이 구축된 시스템 자체일 수도 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 컨볼루션 연산이 가능한 장치라면 어떤 장치라도 무방하다.
여기서, 컨볼루션 연산은 딥 러닝(deep learning)에서 매우 높은 비중으로 수행되는 연산이며, 대상 데이터와 커널 데이터의 연산을 통해 대상 데이터로부터 커널 데이터에 대응되는 특성을 부각시키는 연산일 수 있다.
예를 들어, 대상 데이터는 1920 × 1080의 해상도를 갖는 이미지 데이터이고, 커널 데이터는 3 × 3의 샤픈(sharpen) 필터일 수 있다. 커널 데이터는 대상 데이터의 일측에 위치한 3 × 3의 영역과 엘리먼트별 곱셈 후 그 곱셈 결과를 더하여 하나의 데이터를 생성할 수 있다. 커널 데이터는 대상 데이터 상을 이동하며 이상과 같은 연산을 반복 수행하여 컨볼루션 연산을 수행할 수 있다. 컨볼루션 연산 결과는 제로 패딩(padding)이 수반되는 경우 대상 데이터와 동일한 크기로 형성될 수 있으며, 제로 패딩이 수반되지 않는 경우 대상 데이터보다 약간 작은 크기로 형성될 수 있다. 이상의 이미지 데이터와 샤픈 필터의 컨볼루션 연산을 통해 최초의 이미지 데이터보다 선명한 이미지 데이터가 생성될 수 있다. 다만, 이는 일 실시 예에 불과하고, 얼마든지 다른 유형의 데이터 간 컨볼루션 연산을 수행할 수도 있으며, 딥 러닝 분야에서 이용될 수 있는 컨볼루션 연산이라면 어떠한 것이라도 무방하다.
스토리지(110)는 대상 데이터, 커널 데이터 및 연산 명령어 등을 저장할 수 있다. 여기서, 연산 명령어가 컨볼루션 연산 명령어인 경우, 연산 명령어는 스트라이드(stride) 정보를 포함할 수 있다. 스트라이드 정보는 대상 데이터에 커널 데이터가 적용되는 간격을 나타낸다.
스토리지(110)는 적어도 하나의 커널 데이터 자체를 저장할 수 있다.
또는, 스토리지(110)는 복수의 서브 커널 데이터 세트를 저장할 수도 있다. 여기서, 복수의 서브 커널 데이터 세트 각각은 하나의 커널 데이터가 서로 다른 스트라이드 정보에 기초하여 분할된 복수의 서브 커널 데이터를 포함할 수 있다.
예를 들어, 복수의 서브 커널 데이터 세트 중 제1 서브 커널 데이터 세트는 커널 데이터가 제1 스트라이드 정보에 기초하여 분할된 복수의 제1 서브 커널 데이터를 포함하고, 복수의 서브 커널 데이터 세트 중 제2 서브 커널 데이터 세트는 커널 데이터가 제2 스트라이드 정보에 기초하여 분할된 복수의 제2 서브 커널 데이터를 포함할 수 있다.
또는, 스토리지(110)는 복수의 커널 데이터 각각에 대한 복수의 서브 커널 데이터 세트를 저장할 수도 있다. 예를 들어, 스토리지(110)는 제1 커널 데이터에 대한 복수의 제1 서브 커널 데이터 세트 및 제2 커널 데이터에 대한 복수의 제2 서브 커널 데이터 세트를 저장할 수도 있다.
한편, 복수의 서브 커널 데이터는 전자 장치(100)에 의해 생성될 수도 있고, 전자 장치(100)가 아닌 외부 전자 장치에 의해 생성되어 수신된 정보일 수도 있다.
이상의 스트라이드 정보에 기초한 컨볼루션 연산 및 복수의 서브 커널 데이터에 대한 구체적인 설명은 후술한다.
스토리지(110)는 하드디스크, 비휘발성 메모리 및 휘발성 메모리 등으로 구현될 수 있다.
프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어한다.
일 실시 예에 따라 프로세서(120)는 디지털 시그널 프로세서(digital signal processor(DSP), 마이크로 프로세서(microprocessor), TCON(Time controller)으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 중앙처리장치(central processing unit(CPU)), MCU(Micro Controller Unit), MPU(micro processing unit), 컨트롤러(controller), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다. 또한, 프로세서(140)는 프로세싱 알고리즘이 내장된 SoC(System on Chip), LSI(large scale integration)로 구현될 수도 있고, FPGA(Field Programmable gate array) 형태로 구현될 수도 있다.
프로세서(120)는 스토리지(110)에 저장된 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 스트라이드 정보에 기초하여 대상 데이터 및 커널 데이터를 컨볼루션 연산할 수 있다.
프로세서(120)는 제1 스트라이드 정보에 기초하여 대상 데이터를 복수의 서브 데이터로 분할하고, 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 복수의 서브 데이터 및 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하며, 복수의 연산 결과를 병합할 수 있다.
여기서, 복수의 서브 커널 데이터는 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터일 수 있다. 그리고, 제2 스트라이드 정보는 대상 데이터에 커널 데이터가 적용되는 간격이 1일 수 있다. 즉, 제1 스트라이드 정보는 대상 데이터에 커널 데이터가 적용되는 간격이 2 이상일 수 있다.
프로세서(120)는 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할하고, 복수의 서브 커널 데이터는 커널 데이터가 n × n 개로 분할된 데이터일 수 있다.
예를 들어, 프로세서(120)는 제1 스트라이드 정보가 2이면, 대상 데이터를 2 × 2 = 4 개의 복수의 서브 데이터로 분할할 수 있다. 또한, 복수의 서브 커널 데이터는 커널 데이터가 × 2 = 4 개로 분할된 데이터일 수 있다.
다만, 이에 한정되는 것은 아니며, 제1 스트라이드 정보가 대상 데이터의 로우(row) 및 컬럼(column)에 대하여 서로 다를 수도 있다. 즉, 프로세서(120)는 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할할 수 있다. 그리고, 프로세서(120)는 컨볼루션 연산을 위해 커널 데이터가 m × n 개로 분할된 복수의 서브 커널 데이터를 이용할 수 있다.
예를 들어, 프로세서(120)는 제1 스트라이드 정보가 로우에 대하여 3이고 컬럼에 대하여 2이면, 대상 데이터를 3 × 2 개의 복수의 서브 데이터로 분할할 수 있다. 그리고, 프로세서(120)는 컨볼루션 연산을 위해 커널 데이터가 3 × 2 개로 분할된 복수의 서브 커널 데이터를 이용할 수 있다.
프로세서(120)는 n × n 개의 복수의 서브 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고, 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득할 수 있다. 여기서, a 및 b는, 각각 0 이상의 자연수일 수 있다. 여기서, 대상 데이터를 분할하는 구체적인 방법은 도면과 통해서 후술하기로 한다.
한편, 복수의 연산 결과는 서로 크기가 다른 매트릭스 형태이며, 프로세서(120)는 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하고, 제1 매트릭스에 포함된 값과 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합할 수 있다. 여기서, 나머지 매트릭스의 확장된 영역은 0 값을 가질 수 있다.
예를 들어, 컨볼루션 연산을 통해 4개의 연산 결과가 생성된 경우, 제1 연산 결과는 2 × 2 의 매트릭스 형태이고, 제2 연산 결과는 2 × 3 의 매트릭스 형태이며, 제3 연산 결과는 3 × 2 의 매트릭스 형태이고, 제4 연산 결과는 4 × 4 의 매트릭스 형태일 수 있다. 프로세서(120)는 제1 내지 제3 연산 결과를 4 × 4 의 매트릭스 형태로 확장할 수 있으며, 확장 시 추가된 로우 또는 컬럼의 값은 0일 수 있다.
프로세서(120)는 연산 결과의 확장 시 매트릭스의 우측 또는 하측을 확장할 수 있다. 상술한 예에서 프로세서(120)는 제1 연산 결과의 우측 및 하측에 0을 추가함으로써 2 × 2 의 매트릭스 형태를 4 × 4 의 매트릭스 형태로 확장할 수 있다.
프로세서(120)는 제1 매트릭스에 포함된 값과 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합할 수 있다. 즉, 프로세서(120)는 엘리먼트별로 각 값을 합산할 수 있다. 상술한 예에 의하면, 합산 결과는 4 × 4 의 매트릭스 형태일 수 있다.
다만, 이에 한정되는 것은 아니며, 프로세서(120)는 복수의 연산 결과 중 가장 크기가 작을 제2 매트릭스의 크기를 예측하고, 예측된 크기에 대응되도록 연산을 수행할 수도 있다. 이에 대한 구체적인 설명은 도면을 통해서 후술하기로 한다.
한편, 프로세서(120)는 각각이 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 복수의 연산 소자 유닛, 일측이 스토리지(110)와 연결되며, 타측이 복수의 연산 소자 유닛 각각에 연결된 데이터 스캐터(scatter) 및 일측이 복수의 연산 소자 유닛 각각에 연결되며, 타측이 스토리지(110)와 연결된 어큐뮬레이터(accumulator)를 포함할 수 있다.
데이터 스캐터는 스토리지(110)로부터 대상 데이터를 수신하여 복수의 서브 데이터로 분할하고, 복수의 서브 데이터를 각각 복수의 연산 소자 유닛으로 전송할 수 있다. 이 경우, 데이터 스캐터는 복수의 서브 데이터를 저장할 저장 소자를 포함할 수 있다.
또는, 데이터 스캐터는 수신되는 대상 데이터를 실시간으로 복수의 연산 소자 유닛으로 분배할 수도 있다. 예를 들어, 데이터 스캐터는 적어도 하나의 멀티플렉서(multiplexer)로 형성될 수 있으며, 대상 데이터가 순차적으로 입력되면 복수의 연산 소자 유닛으로 순차적으로 분배할 수 있다. 즉, 데이터 스캐터는 실시간으로 입력되는 데이터의 경로만을 변경해줄 수도 있으며, 분배가 완료된 후 복수의 연산 소자 유닛 각각에는 복수의 서브 데이터가 저장될 수 있다.
복수의 연산 소자 유닛 각각은 데이터 스캐터로부터 수신된 서브 데이터를 대응되는 서브 커널 데이터에 기초하여 컨볼루션 연산하며, 연산 결과를 어큐뮬레이터로 전송할 수 있다.
어큐뮬레이터는 복수의 연산 소자 유닛 각각으로부터 수신된 복수의 연산 결과를 병합할 수 있다.
한편, 프로세서(120)는 커널 데이터를 복수의 서브 커널 데이터로 분할할 수 있다. 구체적으로, 프로세서(120)는 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 커널 데이터를 n × n 개의 복수의 서브 커널 데이터로 분할하고, 제2 스트라이드 정보에 기초하여 복수의 서브 데이터 및 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산할 수 있다.
다만, 이에 한정되는 것은 아니며, 제1 스트라이드 정보가 커널 데이터의 로우 및 컬럼에 대하여 서로 다를 수도 있다. 즉, 프로세서(120)는 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 커널 데이터를 m × n 개의 복수의 서브 커널 데이터로 분할할 수도 있다.
프로세서(120)는 n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고, 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다. 즉, 복수의 서브 커널 데이터를 형성하는 방법은 복수의 서브 데이터를 형성하는 방법과 동일할 수 있다.
한편, 프로세서(120)는 스토리지(110)에 기저장된 복수의 서브 커널 데이터 세트 중 제1 스트라이드 정보에 대응되는 서브 커널 데이터 세트에 포함된 복수의 서브 커널 데이터를 이용하여 컨볼루션 연산을 수행할 수 있다. 여기서, 복수의 서브 커널 데이터 세트는 서로 상이한 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터 세트일 수 있다.
즉, 스토리지(110)는 커널 데이터가 서로 다른 스트라이드 정보에 기초하여 기분할된 복수의 서브 커널 데이터 세트를 저장할 수 있고, 프로세서(120)는 스토리지(110)에 저장된 정보에 기초하여 컨볼루션 연산을 수행할 수도 있다. 이 경우, 프로세서(120)는 커널 데이터를 분할하는 동작을 수행하지 않는다. 다만, 복수의 서브 커널 데이터 세트를 생성하는 방법은 프로세서(120)가 직접 커널 데이터를 분할하는 방법과 동일할 수 있으며, 단지 전자 장치(100)가 아닌 외부 전자 장치에 의해 분할 동작이 수행되고, 전자 장치(100)는 외부 전자 장치로부터 이를 수신하여 저장할 뿐이다.
이상에서는 전자 장치(100)의 컨볼루션 연산 방법에 대하여 간략히 설명하였다. 이하에서는 구체적인 도면을 통해 전자 장치(100)의 컨볼루션 연산 방법을 설명하고, 그에 따른 하드웨어 활용도의 향상에 대하여 설명한다.
도 3a 내지 도 3c는 본 발명의 일 실시 예에 따른 대상 데이터 및 커널 데이터를 분할하는 방법을 설명하기 위한 도면들이다.
먼저, 도 3a는 스트라이드 정보가 2인 경우에 대상 데이터를 분할하는 방법을 설명하기 위한 도면이다.
프로세서(120)는 스트라이드 정보가 2이면, 대상 데이터를 2 × 2 = 4 개의 복수의 서브 데이터로 분할할 수 있다.
구체적으로, 프로세서(120)는 2 × 2 = 4 개의 복수의 서브 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별할 수 있다. 여기서, i 및 j는 각각 n 이하의 자연수이므로, i 및 j는 각각 1 및 2일 수 있다.
예를 들어, 프로세서(120)는 4 개의 복수의 서브 데이터 각각을 (1, 1), (1, 2), (2, 1), (2, 2)로 식별할 수 있다.
프로세서(120)는 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다.
예를 들어, (1, 1)로서 식별되는 서브 데이터를 형성하는 경우를 가정하면, 프로세서(120)는 대상 데이터에서 (2 × a + 1)의 로우 및 (2 × b + 1)의 컬럼에 위치한 값을 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수이므로, a 및 b는 각각을 0부터 순차적으로 (2 × a + 1)의 로우 및 (2 × b + 1)의 컬럼에 대입하면, (1)의 로우 및 (1)의 컬럼, (1)의 로우 및 (3)의 컬럼, (1)의 로우 및 (5)의 컬럼, (1)의 로우 및 (7)의 컬럼, (1)의 로우 및 (9)의 컬럼, (3)의 로우 및 (1)의 컬럼, (3)의 로우 및 (3)의 컬럼, (3)의 로우 및 (5)의 컬럼, (3)의 로우 및 (7)의 컬럼, (3)의 로우 및 (9)의 컬럼, ... , (9)의 로우 및 (9)의 컬럼에 위치한 값을 획득할 수 있다. 도 3a의 우측은 4 개의 서브 데이터를 나타내며, 이 중 좌측 상단의 서브 데이터가 (1, 1)로서 식별되는 서브 데이터를 나타낸다.
한편, 이상의 예에서는 a, b가 각각 4 이하인 경우만을 설명하였다. 다만, a 또는 b가 5 이상이면 대상 데이터에 대응되는 값이 없으므로 고려할 필요가 없다.즉, 프로세서(120)는 a 또는 b가 5 이상인 경우에 대하여는 대상 데이터로부터 획득할 수 있는 값이 없음을 알고 a 및 b 중 적어도 하나의 수치를 변경하거나 서브 데이터의 생성을 종료할 수 있다.
예를 들어, 프로세서(120)는 a가 1이고 b를 1부터 순차적으로 확대해 가다가 a가 1이고 b가 5가 되면 대상 데이터에 대응되는 값이 없으므로, a를 2로, b를 1로 변경하여 대상 데이터에서 대응되는 값을 획득할 수 있다.
하나의 예를 더 추가하여 (1, 2)로서 식별되는 서브 데이터를 형성하는 경우를 가정하면, 프로세서(120)는 대상 데이터에서 (2 × a + 1)의 로우 및 (2 × b + 2)의 컬럼에 위치한 값을 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수이므로, a 및 b는 각각을 0부터 순차적으로 (2 × a + 1)의 로우 및 (2 × b + 2)의 컬럼에 대입하면, (1)의 로우 및 (2)의 컬럼, (1)의 로우 및 (4)의 컬럼, (1)의 로우 및 (6)의 컬럼, (1)의 로우 및 (8)의 컬럼, (1)의 로우 및 (10)의 컬럼, (3)의 로우 및 (2)의 컬럼, (3)의 로우 및 (4)의 컬럼, (3)의 로우 및 (6)의 컬럼, (3)의 로우 및 (8)의 컬럼, (3)의 로우 및 (10)의 컬럼, ... , (9)의 로우 및 (10)의 컬럼에 위치한 값을 획득할 수 있다. 도 3a에서 우측 상단의 서브 데이터가 (1, 2)로서 식별되는 서브 데이터를 나타낸다.
이상과 같은 방법을 통해 프로세서(120)는 나머지 2 개의 서브 데이터를 형성할 수 있다.
도 3b는 스트라이드 정보가 2인 경우에 커널 데이터를 분할하는 방법을 설명하기 위한 도면이다. 다만, 커널 데이터를 분할하는 방법은 도 3a의 대상 데이터를 분할하는 방법과 동일하므로 중복 설명은 생략한다.
도 3c는 스트라이드 정보가 3인 경우에 커널 데이터를 분할하는 방법을 설명하기 위한 도면이다.
프로세서(120)는 스트라이드 정보가 3이면, 커널 데이터를 3 × 3 = 9 개의 복수의 서브 커널 데이터로 분할할 수 있다.
구체적으로, 프로세서(120)는 3 × 3 = 9 개의 복수의 서브 커널 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별할 수 있다. 여기서, i 및 j는 각각 n 이하의 자연수이므로, i 및 j는 각각 1, 2 및 3일 수 있다.
예를 들어, 프로세서(120)는 9 개의 복수의 서브 커널 데이터 각각을 (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)로 식별할 수 있다.
프로세서(120)는 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다.
예를 들어, (2, 3)로서 식별되는 서브 커널 데이터를 형성하는 경우를 가정하면, 프로세서(120)는 커널 데이터에서 (3 × a + 2)의 로우 및 (3 × b + 3)의 컬럼에 위치한 값을 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수이므로, a 및 b는 각각을 0부터 순차적으로 (3 × a + 2)의 로우 및 (3 × b + 3)의 컬럼에 대입하면, (2)의 로우 및 (3)의 컬럼, (2)의 로우 및 (6)의 컬럼, (5)의 로우 및 (3)의 컬럼, (5)의 로우 및 (6)의 컬럼에 위치한 값을 획득할 수 있다. 도 3c의 하측은 9 개의 서브 커널 데이터를 나타내며, 이 중 우측 가운데의 서브 커널 데이터가 (2, 3)로서 식별되는 서브 커널 데이터를 나타낸다.
즉, 스트라이드 정보가 3인 경우에는 2인 경우와 비교하여 생성되는 복수의 서브 커널 데이터의 개수가 달라질 수 있다. 다만, 생성 방법에는 큰 차이가 없으며, 대상 데이터에 대하여도 동일하다. 즉, 프로세서(120)는 컨볼루션 연산 시의 스트라이드 정보가 2 이상인 경우에 대상 데이터 및 커널 데이터를 이상과 같은 방법을 통해 각각 복수의 서브 데이터 및 복수의 서브 커널 데이터로 분할할 수 있다. 여기서, 프로세서(120)는 동일한 스트라이드 정보에 기초하여 대상 데이터 및 커널 데이터를 분할할 수 있다. 즉, 복수의 서브 데이터 각각에 대응되는 서브 커널 데이터의 크기는 다를 수 있으나, 복수의 서브 데이터의 개수 및 복수의 서브 커널 데이터의 개수는 동일할 수 있다.
한편, 스트라이드 정보는 로우 및 컬럼 별로 다를 수 있다. 다만, 이 경우에도, 프로세서(120)는 스트라이드 정보가 로우에 대하여 3이고 컬럼에 대하여 2이면, 대상 데이터를 3 × 2 개의 복수의 서브 데이터로 분할할 수 있다.
그리고, 프로세서(120)는 3 × 2 = 6 개의 복수의 서브 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별할 수 있다. 여기서, i 및 j는 각각 n 이하의 자연수이므로, i는 1, 2 및 3이고, j는 1 및 2일 수 있다.
프로세서(120)는 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다.
즉, 스트라이드 정보가 로우 및 컬럼별로 다르더라도 이상과 같은 방법을 통해 대상 데이터 및 커널 데이터를 분할할 수 있다.
도 4a 및 도 4b는 본 발명의 일 실시 예에 따른 연산 방법을 설명하기 위한 도면들이다. 도 4a 및 도 4b에서는 도 3a의 복수의 서브 데이터 및 도 3b의 복수의 서브 커널 데이터를 연산하는 것으로 가정하였다.
프로세서(120)는 n × n 개의 복수의 서브 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고, n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별할 수 있다.
즉, 프로세서(120)는 4 개의 복수의 서브 데이터 각각을 (1, 1), (1, 2), (2, 1), (2, 2)의 2차원 정보로 식별하고, 4 개의 복수의 서브 커널 데이터 각각을 (1, 1), (1, 2), (2, 1), (2, 2)의 2차원 정보로 식별할 수 있다.
그리고, 프로세서(120)는 복수의 서브 데이터 및 복수의 서브 데이터 각각에 대응되는 서브 커널 데이터를 컨볼루션 연산할 수 있다. 즉, 도 4a에 도시된 바와 같이, 프로세서(120)는 (1, 1)의 서브 데이터를 (1, 1)의 서브 커널 데이터와 컨볼루션 연산을 수행하고, (1, 2)의 서브 데이터를 (1, 2)의 서브 커널 데이터와 컨볼루션 연산을 수행하며, (2, 1)의 서브 데이터를 (2, 1)의 서브 커널 데이터와 컨볼루션 연산을 수행하고, (2, 2)의 서브 데이터를 (2, 2)의 서브 커널 데이터와 컨볼루션 연산을 수행할 수 있다. 이때, 프로세서(120)는 스트라이드 1의 컨볼루션 연산을 병렬적으로 수행할 수 있다.
특히, 프로세서(120)는 복수의 서브 커널 데이터 중 가장 크기가 큰 서브 커널 데이터의 컨볼루션 연산에 기초하여 나머지 서브 커널 데이터의 컨볼루션 연산을 동기화할 수 있다. 예를 들어, 도 4a에서 복수의 서브 커널 데이터 중 가장 크기가 큰 (1, 1)의 서브 커널 데이터의 경우, 서브 커널 데이터는 우측으로 한 번 이동한 뒤, 로우를 변경하고, 다시 우측으로 한 번 이동하며 컨볼루션 연산을 수행할 수 있다.
그리고, 프로세서(120)는 (1, 1)의 서브 커널 데이터의 움직임에 동기화하여 (1, 2), (2, 1), (2, 2)의 서브 커널 데이터의 움직임을 동기화할 수 있다. (2, 2)의 서브 커널 데이터를 예로 들면, 프로세서(120)는 (2, 2)의 서브 커널 데이터를 최초 우측으로 이동한 뒤, 한 번 더 우측으로 이동할 수 있으나 이를 생략하고, (1, 1)의 서브 커널 데이터와 같이 로우를 변경하고, 다시 우측으로 한 번 이동하며 컨볼루션 연산을 수행할 수 있다. 또한, 프로세서(120)는 (2, 2)의 서브 커널 데이터가 두 번째 로우에서도 한 번 더 우측으로 이동할 수 있으며, 세 번째 로우로도 이동할 수 있으나, 이 역시 생략할 수 있다.
도 4b는 (1, 1), (1, 2), (2, 1), (2, 2) 각각의 연산 결과를 나타낸다. 프로세서(120)가 복수의 서브 커널 데이터 중 가장 크기가 큰 서브 커널 데이터의 컨볼루션 연산에 기초하여 나머지 서브 커널 데이터의 컨볼루션 연산을 동기화함에 따라 연산 결과의 크기는 모두 동일할 수 있다.
프로세서(120)는 복수의 연산 결과를 엘리먼트별로 병합할 수 있다. 병합에 따른 최종 컨볼루션 연산 결과는 대상 데이터 및 커널 데이터를 스트라이드 2에 기초하연 컨볼루션 연산한 결과와 동일할 수 있다.
도 5a 및 도 5b는 본 발명의 다른 실시 예에 따른 연산 방법을 설명하기 위한 도면들이다. 도 5a 및 도 5b에서는 도 4a 및 도 4b와 같이 도 3a의 복수의 서브 데이터 및 도 3b의 복수의 서브 커널 데이터를 연산하는 것으로 가정하였다. 다만, 도 5a에서는 복수의 서브 커널 데이터를 생략하였다.
프로세서(120)는 이상에서 설명한 바와 동일하게 복수의 서브 데이터 및 복수의 서브 커널 데이터를 2차원 정보로 식별하고, 복수의 서브 데이터 및 복수의 서브 데이터 각각에 대응되는 서브 커널 데이터를 컨볼루션 연산할 수 있다. 이때, 프로세서(120)는 스트라이드 1의 컨볼루션 연산을 병렬적으로 수행할 수 있다.
한편, 프로세서(120)는 도 4a 및 도 4b의 동기화된 컨볼루션 연산이 아닌 비동기화된 컨볼루션 연산을 수행할 수도 있다. 이 경우, 프로세서(120)는 복수의 서브 커널 데이터 중 가장 크기가 큰 서브 커널 데이터를 검출할 필요 없이, 복수의 서브 데이터 및 복수의 서브 데이터 각각에 대응되는 서브 커널 데이터를 개별적으로 컨볼루션 연산할 수 있다.
그에 따라, 서브 커널 데이터의 크기가 상대적으로 작은 (1, 2), (2, 1), (2, 2)의 서브 커널 데이터는 대응되는 서브 데이터 상의 이동이 도 4a 및 도 4b의 경우보다 더 많을 수 있다.
예를 들어, (1, 2)의 서브 커널 데이터는 로우 별로 우측으로 한번 이동한 뒤, 한번 더 우측으로 이동하여 컨볼루션 연산을 수행할 수 있다. 즉, 도 4a와 비교하여 도 5a의 (1, 2)의 서브 커널 데이터는 두 번의 연산이 추가될 수 있다. 이와 유사하게 도 4a와 비교하여 도 5a의 (2, 1)의 서브 커널 데이터는 두 번의 연산이 추가되고, (2, 2)의 서브 커널 데이터는 다섯 번의 연산이 추가될 수 있다.
도 5b는 (1, 1), (1, 2), (2, 1), (2, 2) 각각의 연산 결과를 나타낸다. 프로세서(120)가 비동기화된 컨볼루션 연산을 수행함에 따라 연산 결과의 크기는 모두 다를 수 있다.
프로세서(120)는 도 5c에 도시된 바와 같이, 복수의 연산 결과 중 가장 크기가 큰 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장할 수 있다. 프로세서(120)는 확장된 영역이 0 값을 가지도록 나머지 매트릭스의 크기를 확장할 수 있다.
프로세서(120)는 복수의 연산 결과를 엘리먼트별로 병합할 수 있다. 확장 후에는 매트릭스의 크기가 모두 동일하므로, 병합 방법은 도 4b에서 설명한 바와 동일하다.
이후, 프로세서(120)는 복수의 연산 결과 중 가장 크기가 작은 매트릭스에 기초하여 병합 결과로부터 최종 컨볼루션 연산 결과를 획득할 수 있다. 예를 들어, 프로세서(120)는 도 5c에 도시된 바와 같이, 복수의 연산 결과 중 가장 크기가 작은 (1, 1)의 연산 결과인 2 × 2의 매트릭스에 기초하여 3 × 3의 병합 결과로부터 좌측 상단의 2 × 2의 값만을 최종 컨볼루션 연산 결과로서 획득할 수 있다.
병합에 따른 최종 컨볼루션 연산 결과는 대상 데이터 및 커널 데이터를 스트라이드 2에 기초하연 컨볼루션 연산한 결과와 동일할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 3차원 데이터의 연산 방법을 설명하기 위한 도면이다.
도 6에 도시된 바와 같이, 대상 데이터(Feature Map) 및 커널(Kernel) 데이터 각각은 로우 및 컬럼 뿐만 아니라 뎁스(depth)를 갖는 3차원 데이터일 수 있다.
프로세서(120)는 대상 데이터 및 커널 데이터 각각을 스트라이드 정보에 기초하여 분할할 수 있다. 이때, 프로세서(120)는 뎁스는 무관하게 로우 및 컬럼만을 고려하여 대상 데이터 및 커널 데이터 각각을 분할할 수 있다.
그에 따라, 프로세서(120)는 도 6에 도시된 바와 같이, 4개의 서브 데이터 및 4개의 서브 커널 데이터를 생성할 수 있으며, 각 데이터는 로우 및 컬럼 뿐만 아니라 뎁스를 갖는 3차원 데이터일 수 있다.
그리고, 프로세서(120)는 스트라이드 1의 컨볼루션 연산을 병렬적으로 수행하고, 복수의 연산 결과를 엘리먼트별로 병합할 수 있다. 여기서, 엘리먼트별 병합 시 프로세서(120)는 로우 및 컬럼 뿐만 아니라 뎁스도 고려할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 프로세서(120)의 세부 구성을 설명하기 위한 도면이다.
도 7에 도시된 바와 같이, 프로세서(120)는 데이터 스캐터(Data Scatter, 121), 복수의 연산 소자 유닛(122) 및 어큐뮬레이터(Accumulator, 123)를 포함한다.
데이터 스캐터(121)는 일측이 스토리지(110)와 연결되며, 스토리지(110)로부터 대상 데이터를 수신하여 복수의 서브 데이터로 분할할 수 있다.
그리고, 데이터 스캐터(121)는 타측이 복수의 연산 소자 유닛(122) 각각에 연결되며, 복수의 서브 데이터를 각각 복수의 연산 소자 유닛(122)으로 전송할 수 있다.
복수의 연산 소자 유닛(122)은 각각 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함할 수 있다. 즉, 제1 연산 소자 유닛(122-1), 제2 연산 소자 유닛(122-2), 제3 연산 소자 유닛(122-3) 및 제4 연산 소자 유닛(122-4)은 각각 매트릭스 형태로 배열된 복수의 연산 소자를 포함할 수 있다.
도 7에서는 제1 연산 소자 유닛(122-1), 제2 연산 소자 유닛(122-2), 제3 연산 소자 유닛(122-3) 및 제4 연산 소자 유닛(122-4)의 4개만을 도시하였으나, 이에 한정되는 것은 아니며, 얼마든지 다른 개수로 연산 소자 유닛이 형성될 수도 있다. 또한, 제1 연산 소자 유닛(122-1), 제2 연산 소자 유닛(122-2), 제3 연산 소자 유닛(122-3) 및 제4 연산 소자 유닛(122-4)은 모두 동일할 수도 있고, 서로 다를 수도 있다.
각 연산 소자 유닛 내부의 인접한 연산 소자 간에는 데이터의 일방향 시프트 또는 양방향 시프트가 가능하다. 도 7에서는 인접한 연산 소자 중 일부는 아래쪽 방향으로만 데이터를 시프트하는 것으로 도시되었으나, 이는 일 실시 예에 불과하고, 양방향 시프트도 가능하다.
연산 소자 각각은 기본적으로 곱셈기(multiplier) 및 산술 논리 연산 장치(Arithmetic Logic Unit, ALU)를 포함하며, ALU는 적어도 하나 이상의 가산기(adder)를 포함할 수 있다. 연산 소자는 곱셈기 및 ALU를 이용하여 사칙 연산을 수행할 수 있다. 다만, 이에 한정되는 것은 아니며, 사칙 연산 및 시프트 등과 같은 기능을 수행할 수 있다면 얼마든지 다른 구조로 형성될 수도 있다.
연산 소자 각각은 데이터를 저장하기 위한 레지스터를 포함할 수 있다. 예를 들어, 연산 소자 각각은 특정 싸이클에서의 연산 결과를 저장하기 위한 레지스터를 포함할 수 있다. 또는, 연산 소자 각각은 특정 싸이클에서의 연산 결과를 인접한 연산 소자로 시프트하고, 인접한 연산 소자로부터 시프트된 연산 결과를 저장하기 위한 레지스터를 포함할 수도 있다.
복수의 연산 소자 유닛(122) 각각은 데이터 스캐터(121)로부터 수신된 서브 데이터를 대응되는 서브 커널 데이터에 기초하여 컨볼루션 연산하며, 연산 결과를 어큐뮬레이터(123)로 전송할 수 있다.
여기서, 대응되는 서브 커널 데이터가 스토리지(110)에 기저장된 경우라면, 복수의 연산 소자 유닛(122) 각각은 스토리지(110)로부터 대응되는 서브 커널 데이터를 수신할 수 있다.
또는, 스토리지(110)에 대응되는 서브 커널 데이터가 저장된 것이 아니라, 커널 데이터만이 저장된 상태일 수도 있다. 이 경우, 프로세서(120)는 커널 데이터를 분할하기 위한 커널 데이터 스캐터(미도시)를 더 포함할 수 있다.
커널 데이터 스캐터(미도시)는 스토리지(110)로부터 커널 데이터를 수신하고, 이를 분할하여 대응되는 연산 소자 유닛으로 전송할 수 있다.
또는, 데이터 스캐너(121) 및 커널 데이터 스캐터(미도시)가 하나로 구현될 수도 있다. 이 경우, 통합 구현된 스캐터는 대상 데이터 및 커널 데이터를 순차적으로 입력받고, 적절한 싸이클에 각 데이터를 분할하여 대응되는 연산 소자 유닛으로 전송할 수도 있다.
연산 소자를 통한 컨볼루션 연산 방법은 일반적으로 알려진 기술이므로 이에 대한 구체적인 설명은 생략한다.
어큐뮬레이터(123)는 일측이 복수의 연산 소자 유닛(122) 각각에 연결되고 타측이 스토리지(110)와 연결되며, 복수의 연산 소자 유닛(122) 각각으로부터 복수의 연산 결과를 수신하고, 수신된 복수의 연산 결과를 병합할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 제1 스트라이드 정보에 기초하여 대상 데이터를 복수의 서브 데이터로 분할한다(S810). 그리고, 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 복수의 서브 데이터 및 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산한다(S820). 그리고, 복수의 연산 결과를 병합한다(S830). 여기서, 복수의 서브 커널 데이터는 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터이며, 제2 스트라이드 정보는 대상 데이터에 커널 데이터가 적용되는 간격이 1일 수 있다.
한편, 분할하는 단계(S810)는 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할할 수 있다. 여기서, 복수의 서브 커널 데이터는 커널 데이터가 n × n 개로 분할된 데이터일 수 있다.
또한, 분할하는 단계(S810)는 n × n 개의 복수의 서브 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하는 단계 및 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득하는 단계를 포함할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다.
한편, 복수의 연산 결과는 서로 크기가 다른 매트릭스 형태이며, 병합하는 단계(S830)는 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하는 단계 및 제1 매트릭스에 포함된 값과 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합하는 단계를 포함할 수 있다. 여기서, 나머지 매트릭스의 확장된 영역은 0 값을 가질 수 있다.
그리고, 분할하는 단계(S810)는 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할할 수 있다. 여기서, 복수의 서브 커널 데이터는 커널 데이터가 m × n 개로 분할된 데이터일 수 있다.
한편, 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 커널 데이터를 n × n 개의 복수의 서브 커널 데이터로 분할하는 단계 및 제2 스트라이드 정보에 기초하여 복수의 서브 데이터 및 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하는 단계를 더 포함할 수 있다.
여기서, 분할하는 단계(S810)는 n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(i 및 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하는 단계 및 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득하는 단계를 포함할 수 있다. 여기서, a 및 b는 각각 0 이상의 자연수일 수 있다.
한편, 컨볼루션 연산하는 단계(S820)는 기저장된 복수의 서브 커널 데이터 세트 중 제1 스트라이드 정보에 대응되는 서브 커널 데이터 세트에 포함된 복수의 서브 커널 데이터를 이용하여 컨볼루션 연산을 수행할 수 있다. 여기서, 복수의 서브 커널 데이터 세트는 서로 상이한 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터 세트일 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 전자 장치는 대상 데이터에 커널 데이터가 적용되는 간격이 2 이상이더라도 1의 간격으로 컨볼루션 연산을 수행하여 하드웨어 활용도를 향상시킬 수 있다.
한편, 본 발명의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(A))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 발명의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 본 발명의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 동작을 수행할 수 있다.
한편, 상술한 다양한 실시 예들에 따른 기기의 프로세싱 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium)에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 기기에서의 처리 동작을 특정 기기가 수행하도록 한다. 비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
또한, 상술한 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
Claims (15)
- 스토리지; 및상기 스토리지에 저장된 대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 스트라이드(stride) 정보에 기초하여 상기 대상 데이터 및 상기 커널 데이터를 컨볼루션(convolution) 연산하는 프로세서;를 포함하며,상기 프로세서는,제1 스트라이드 정보에 기초하여 상기 대상 데이터를 복수의 서브 데이터로 분할하고, 상기 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하며, 복수의 연산 결과를 병합하고,상기 복수의 서브 커널 데이터는, 상기 제1 스트라이드 정보에 기초하여 상기 커널 데이터가 분할된 데이터이며,상기 제2 스트라이드 정보는, 상기 대상 데이터에 상기 커널 데이터가 적용되는 간격이 1인, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할하고,상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 n × n 개로 분할된 데이터인, 전자 장치.
- 제2항에 있어서,상기 프로세서는,상기 n × n 개의 복수의 서브 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고,상기 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득하며,상기 a 및 상기 b는, 각각 0 이상의 자연수인, 전자 장치.
- 제1항에 있어서,상기 복수의 연산 결과는, 서로 크기가 다른 매트릭스 형태이며,상기 프로세서는,상기 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하고, 상기 제1 매트릭스에 포함된 값과 상기 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합하며,상기 나머지 매트릭스의 확장된 영역은, 0 값을 가지는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,각각이 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 복수의 연산 소자 유닛;일측이 상기 스토리지와 연결되며, 타측이 상기 복수의 연산 소자 유닛 각각에 연결된 데이터 스캐터(scatter); 및일측이 상기 복수의 연산 소자 유닛 각각에 연결되며, 타측이 상기 스토리지와 연결된 어큐뮬레이터(accumulator);를 포함하는, 전자 장치.
- 제5항에 있어서,상기 데이터 스캐터는, 상기 스토리지로부터 상기 대상 데이터를 수신하여 상기 복수의 서브 데이터로 분할하고, 상기 복수의 서브 데이터를 각각 상기 복수의 연산 소자 유닛으로 전송하며,상기 복수의 연산 소자 유닛 각각은, 상기 데이터 스캐터로부터 수신된 서브 데이터를 대응되는 서브 커널 데이터에 기초하여 상기 컨볼루션 연산하며, 연산 결과를 상기 어큐뮬레이터로 전송하고,상기 어큐뮬레이터는, 상기 복수의 연산 소자 유닛 각각으로부터 수신된 복수의 연산 결과를 병합하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할하고,상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 m × n 개로 분할된 데이터인, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 커널 데이터를 n × n 개의 복수의 서브 커널 데이터로 분할하고, 상기 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 상기 컨볼루션 연산하는, 전자 장치.
- 제8항에 있어서,상기 프로세서는,상기 n × n 개의 복수의 서브 커널 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하고,상기 커널 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 커널 데이터의 값으로 획득하며,상기 a 및 상기 b는, 각각 0 이상의 자연수인, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 스토리지에 기저장된 복수의 서브 커널 데이터 세트 중 상기 제1 스트라이드 정보에 대응되는 서브 커널 데이터 세트에 포함된 상기 복수의 서브 커널 데이터를 이용하여 상기 컨볼루션 연산을 수행하며,상기 복수의 서브 커널 데이터 세트는, 서로 상이한 스트라이드 정보에 기초하여 상기 커널 데이터가 분할된 데이터 세트인, 전자 장치.
- 전자 장치의 제어 방법에 있어서,대상 데이터에 커널 데이터가 적용되는 간격을 나타내는 제1 스트라이드 정보에 기초하여 상기 대상 데이터를 복수의 서브 데이터로 분할하는 단계;상기 제1 스트라이드 정보와 상이한 제2 스트라이드 정보에 기초하여 상기 복수의 서브 데이터 및 상기 복수의 서브 데이터에 각각 대응되는 복수의 서브 커널 데이터를 컨볼루션 연산하는 단계; 및복수의 연산 결과를 병합하는 단계;를 포함하고,상기 복수의 서브 커널 데이터는, 상기 제1 스트라이드 정보에 기초하여 커널 데이터가 분할된 데이터이며,상기 제2 스트라이드 정보는, 상기 대상 데이터에 상기 커널 데이터가 적용되는 간격이 1인, 제어 방법.
- 제11항에 있어서,상기 분할하는 단계는,상기 제1 스트라이드 정보가 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 n × n 개의 복수의 서브 데이터로 분할하고,상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 n × n 개로 분할된 데이터인, 제어 방법.
- 제12항에 있어서,상기 분할하는 단계는,상기 n × n 개의 복수의 서브 데이터 각각을 (i, j)(상기 i 및 상기 j는, 각각 n 이하의 자연수)의 2차원 정보로 식별하는 단계; 및상기 대상 데이터에서 (n × a + i)의 로우 및 (n × b + j)의 컬럼에 위치한 값을 (i, j)에 대응되는 서브 데이터의 값으로 획득하는 단계;를 포함하며,상기 a 및 상기 b는, 각각 0 이상의 자연수인, 제어 방법.
- 제11항에 있어서,상기 복수의 연산 결과는, 서로 크기가 다른 매트릭스 형태이며,상기 병합하는 단계는,상기 복수의 연산 결과 중 가장 크기가 큰 제1 매트릭스에 기초하여 나머지 매트릭스의 크기를 확장하는 단계; 및상기 제1 매트릭스에 포함된 값과 상기 크기가 확장된 나머지 매트릭스에 포함된 값 중 동일한 위치의 값을 병합하는 단계;를 포함하며,상기 나머지 매트릭스의 확장된 영역은, 0 값을 가지는, 제어 방법.
- 제11항에 있어서,상기 분할하는 단계는,상기 제1 스트라이드 정보가 로우에 대하여 m(m은 1보다 큰 정수)이고 컬럼에 대하여 n(n은 1보다 큰 정수)이면, 상기 대상 데이터를 m × n 개의 복수의 서브 데이터로 분할하고,상기 복수의 서브 커널 데이터는, 상기 커널 데이터가 m × n 개로 분할된 데이터인, 제어 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18860756.8A EP3651080A4 (en) | 2017-09-26 | 2018-05-16 | ELECTRONIC DEVICE AND PROCESS FOR CONTROLLING THE SAME |
US16/650,083 US11568323B2 (en) | 2017-09-26 | 2018-05-16 | Electronic device and control method thereof |
CN201880062220.3A CN111133457B (zh) | 2017-09-26 | 2018-05-16 | 电子设备及其控制方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762563369P | 2017-09-26 | 2017-09-26 | |
US62/563,369 | 2017-09-26 | ||
KR10-2017-0169668 | 2017-12-11 | ||
KR1020170169668A KR102442055B1 (ko) | 2017-09-26 | 2017-12-11 | 전자 장치 및 그 제어 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019066183A1 true WO2019066183A1 (ko) | 2019-04-04 |
Family
ID=65902356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2018/005635 WO2019066183A1 (ko) | 2017-09-26 | 2018-05-16 | 전자 장치 및 그 제어 방법 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2019066183A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112801277A (zh) * | 2021-02-08 | 2021-05-14 | 清华大学 | 数据处理方法、处理器、芯片及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110138157A1 (en) * | 2009-12-04 | 2011-06-09 | Synopsys, Inc. | Convolution computation for many-core processor architectures |
US20150170021A1 (en) * | 2013-12-18 | 2015-06-18 | Marc Lupon | Reconfigurable processing unit |
KR20160142791A (ko) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | 뉴럴 네트워크 실시 방법 및 장치 |
US20170097884A1 (en) * | 2015-10-05 | 2017-04-06 | Intel Corporation | Pipelined convolutional operations for processing clusters |
US20170140236A1 (en) * | 2015-11-18 | 2017-05-18 | Adobe Systems Incorporated | Utilizing interactive deep learning to select objects in digital visual media |
-
2018
- 2018-05-16 WO PCT/KR2018/005635 patent/WO2019066183A1/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110138157A1 (en) * | 2009-12-04 | 2011-06-09 | Synopsys, Inc. | Convolution computation for many-core processor architectures |
US20150170021A1 (en) * | 2013-12-18 | 2015-06-18 | Marc Lupon | Reconfigurable processing unit |
KR20160142791A (ko) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | 뉴럴 네트워크 실시 방법 및 장치 |
US20170097884A1 (en) * | 2015-10-05 | 2017-04-06 | Intel Corporation | Pipelined convolutional operations for processing clusters |
US20170140236A1 (en) * | 2015-11-18 | 2017-05-18 | Adobe Systems Incorporated | Utilizing interactive deep learning to select objects in digital visual media |
Non-Patent Citations (1)
Title |
---|
See also references of EP3651080A4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112801277A (zh) * | 2021-02-08 | 2021-05-14 | 清华大学 | 数据处理方法、处理器、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0497586A2 (en) | Motion detection circuit | |
WO2019164237A1 (ko) | 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법 및 장치 | |
WO2009151292A2 (ko) | 영상 변환 방법 및 장치 | |
WO2019216513A1 (ko) | 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법 | |
WO2023048347A1 (ko) | 3차원 객체모델 생성 장치 및 그 방법 | |
KR940010831A (ko) | 실시간 움직임 추정장치 및 그 방법 | |
KR20190035445A (ko) | 전자 장치 및 그 제어 방법 | |
WO2020055181A1 (ko) | 영상 처리 장치 및 그 동작방법 | |
WO2019066183A1 (ko) | 전자 장치 및 그 제어 방법 | |
WO2019074185A1 (en) | ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF | |
EP3659073A1 (en) | Electronic apparatus and control method thereof | |
WO2019198900A1 (en) | Electronic apparatus and control method thereof | |
JP2009071569A (ja) | 動画像符号化における動き探索装置 | |
WO2022250372A1 (ko) | Ai에 기반한 프레임 보간 방법 및 장치 | |
JP2012185655A (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
WO2022080758A1 (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
WO2020231006A1 (ko) | 영상 처리 장치 및 그 동작방법 | |
WO2016208806A1 (ko) | 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법 | |
WO2024186179A1 (ko) | 3차원 인간 자세와 형상 추정을 위한 시공간 보존 트랜스포머 제공 방법 및 그 시스템 | |
WO2023153781A1 (en) | Method and electronic device for processing input frame for on-device ai model | |
WO2020037566A1 (zh) | 一种图像处理、匹配方法、装置及存储介质 | |
WO2023033360A1 (ko) | 영상 처리 장치 및 그 동작 방법 | |
JPS61131122A (ja) | 並列パイプライン処理装置 | |
Akita et al. | Column-parallel vision chip architecture for high-resolution line-of-sight detection including saccade | |
JPS61153768A (ja) | 高速位置合せ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18860756 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2018860756 Country of ref document: EP Effective date: 20200207 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |