CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit under 35 USC § 119(a) of Korean Patent Application No. 10-2017-0039561 filed on Mar. 28, 2017, in the Korean Intellectual Property Office, the entire disclosure of which is incorporated herein by reference for all purposes.

BACKGROUND

1. Field

The following description relates to convolutional neural network (CNN) processing technology and a CNN processing method and apparatus.

2. Description of Related Art

Neural network based deep learning technology is utilized in different fields and implementations. For example, deep learning based biometric recognition/authentication may be implemented to recognize faces, irises, and/or voices by a terminals, for example, a smart phone or desktop computer, for example. A convolutional neural network (CNN) refers to a trained multilayer neural network structure in which one or more convolutional operations are implemented. CNNs may exhibit good performance in the field of deep learning based image and voice recognition. For example, deep learning-based image and/or voice recognition may be implemented through one or more trained CNNs. However, as such trained CNNs become more sophisticated and proficient, they require more and more resources of the underlying terminal, to an extent that some trained CNNs may not be operable or implementable, or not operable or implementable in real time, on lesser capable terminals, such as the example smartphone.

SUMMARY

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is the Summary intended to be used as an aid in determining the scope of the claimed subject matter.

In one general aspect, a processor-implemented convolutional neural network (CNN) processing method includes determining a loading space unit for at least one loading space in an input based on a height or a width for an input feature map of the input and an extent of a dimension of a kernel feature map, loading target input elements corresponding to a target loading space, among the at least one loading space, from a memory and storing the target input elements in an allocated input buffer having a size corresponding to the loading space unit, and performing a convolution operation between the target input elements stored in the input buffer and at least one kernel element of a kernel.

The method may further include performing the allocating of the input buffer to have a length equal to a size of the loading space unit.

The determining of the loading space unit may include determining an extent of a first dimension of the loading space unit to be a total number of channels of the input, of a corresponding kernel of the kernel feature map, or of the kernel or another kernel of a kernel set that includes the kernel, determining an extent of a second dimension of the loading space unit to be the extent of the dimension of the kernel feature map, and determining an extent of a third dimension of the loading space unit to be the height or the width of the input feature map, where the size of the loading space may be the determined extent of the first dimension*the determined extent of the second dimension*the determined extent of the third dimension.

First input elements corresponding to a first height and width position, of the input and of different input feature maps, may be interleaved by channel so as to be consecutively stored in the memory, followed by second input elements corresponding to a next height or width position, of the input and of the different input feature maps, being interleaved by channel so as to be next consecutively stored in the memory, and kernel elements may be prestored in another memory based on the loading space unit and in an order to perform the convolution operation between the target input elements and the kernel elements.

A direction in which respective interleaved input elements are consecutively stored may be a width direction, and the loading space unit may be determined to have dimensions corresponding to a width of the kernel feature map and the height of the input feature map.

The determining of the loading space unit may include determining a depth of the loading space unit based on a total number of channels of the input, determining a width of the loading space unit based on the width of the kernel feature map, and determining a height of the loading space unit based on the height of the input feature map.

The second input elements may correspond to the next width direction position of the input in a subsequent column of a same row of the input.

The respectively interleaved input elements may be consecutively stored according to a horizontal rasterizing scheme.

A direction in which respective interleaved input elements are consecutively stored may be a height direction, and the loading space unit may be determined to have dimensions corresponding to a height of the kernel feature map and the width of the input feature map.

The determining of the loading space unit may include determining a depth of the loading space unit based on a total number of channels of the input, determining a height of the loading space unit based on the height of the kernel feature map, and determining a width of the loading space unit based on the width of the input feature map.

The second input elements may correspond to the next height direction position of the input in a subsequent row in a same column of the input.

The respectively interleaved input elements may be consecutively stored according to a vertical rasterizing scheme.

The input, of a convolutional layer corresponding to the convolution operation, may include respective input feature maps corresponding to different input channels, a kernel set of the convolutional layer may include at least one kernel, including the kernel, corresponding to at least one output channel, and each of the at least one kernel may include respective kernel feature maps corresponding to the input channels.

The method may further include determining, after convolution operations corresponding to the target input elements are completed, a subsequent loading space of the target loading space based on a predetermined stride and the loading space unit, and loading subsequent input elements corresponding to the subsequent loading space and storing the subsequent input elements in the input buffer.

The performing of the convolution operation may include acquiring at least one operation result corresponding to the convolution operation to generate an output of a corresponding convolutional layer, and generating the output of the corresponding convolutional layer based on the at least one operation result and to have a size of a pad corresponding to an input of a subsequent convolutional layer of the convolutional layer.

A size of the output may be defined based on a size of the input of the subsequent convolutional layer, and padding may be applied to the input of the subsequent convolutional layer based on the size of the pad.

The output may include at least one output feature map corresponding to at least one output channel, and the generating of the output may include mapping the at least one operation result on an output feature map, of the at least one output feature map, to which padding is applied based on the size of the pad.

The performing of the convolution operation may include determining whether to skip at least one operation, of the convolution operation, between one or more kernel elements and at least one target input element of the target input elements based on kernel information indicating a skip target among plural kernel elements of a convolutional layer corresponding to the convolution operation.

The skip target may include an indication of at least one skip target kernel element pre-classified from the plural kernel elements of the convolutional layer, and the kernel information may include at least one of a start point of the at least one skip target kernel element and a total number of plural kernel elements, which include the at least one skip target kernel element and are consecutively stored in another memory, to skip.

The at least one skip target kernel element may include a predetermined kernel element of which a degree of contribution to an output corresponding to the convolutional layer is predetermined, or an output corresponding to a neural network that includes the convolutional layer, to satisfy a predefined condition.

The performing of the convolution operation may further include skipping respective operations, of the convolution operation, corresponding to the at least one skip target kernel element, and updating respective output elements of the convolutional layer, corresponding to the skipped respective operations, based on at least one bias.

The performing of the convolution operation may include determining whether to skip at least one operation, of the convolution operation, between a select kernel and at least one target input element of the target input elements based on kernel information indicating a skip target among plural kernels of a kernel set of a convolutional layer corresponding to the convolution operation.

The kernel set of the convolutional layer may include one or more respective kernels, including the kernel, corresponding to different output channels of an output, the skip target may include an indication of at least one skip target kernel pre-classified from among the one or more respective kernels stored in another memory, and the kernel information may include a start point of the skip target kernel in the other memory.

The performing of the convolution operation may further include skipping respective operations, of the convolution operation, corresponding to the at least one skip target kernel, and updating respective output elements of the convolutional layer, corresponding to the skipped respective operations, based on at least one bias.

The convolution operation may be of a convolutional layer of a convolutional neural network (CNN) having a trained objective defined by trained parameters, including the kernel, and the method may further include indicating a result of an implementation of the CNN, which includes the performed convolution operation.

In one general aspect, provided is a non-transitory computer-readable medium storing instructions, which when executed by a processor, cause the processor to implement one or more, any combination, or all processes described herein.

In one general aspect, a processor-implemented convolutional neural network (CNN) processing method includes acquiring at least one convolution operation result between at least one kernel element and at least one input element of an input of a convolutional layer, and generating an output of the convolutional layer based on the at least one operation result and a size of a pad corresponding to an input of a subsequent convolutional layer of the convolutional layer of a neural network that includes the convolutional layer and the subsequent convolutional layer.

The size of the output may be defined based on a size of the input of the subsequent convolutional layer, and padding may be applied to the input of the subsequent convolutional layer based on the size of the pad.

The output of the convolutional layer may include at least one output feature map corresponding to at least one output channel, and the generating of the output may include mapping the at least one operation result on an output feature map, of the at least one output feature map, to which padding is applied based on the size of the pad.

In one general aspect, a processor-implemented convolutional neural network (CNN) processing method includes acquiring kernel information indicating a skip target of a convolution operation, determining which convolution operations, between at least one input element of an input and respective kernel elements of kernel elements of a convolutional layer, to skip based on the kernel information, and implementing the convolutional layer by skipping respective convolution operations, of the convolutional layer, based on a result of the determining, and otherwise performing remaining convolution operations of the convolutional layer.

The skip target may include an indication of at least one skip target kernel element pre-classified from the kernel elements, and the kernel information may include at least one of a start point of the at least one skip target kernel element and a total number of plural kernel elements, which include the at least one skip target kernel element and are consecutively stored in a memory, to skip.

The at least one skip target kernel element may be a predetermined kernel element of which a degree of contribution to an output corresponding to the convolutional layer, or an output corresponding to a neural network that includes the convolutional layer, satisfies a predefined condition.

The implementing of the convolutional layer may include skipping the convolution operation corresponding to the skip target, and updating an output element of the convolutional layer, corresponding to the skipped convolution operation, based on at least one bias.

A kernel set of the convolutional layer may include at least one kernel, including plural kernel elements among the kernel elements, corresponding to at least one output channel of the convolutional layer, the skip target may include an indication of at least one skip target kernel pre-classified from the at least one kernel, and the kernel information may include a start point of the skip target kernel stored in a memory.

The determining of which convolution operations to skip may include determining which kernel convolution operations, between the at least one input element and respective corresponding plural kernel elements among each of the at least one kernel of the kernel set, to skip, and the implementing of the convolutional layer may further include skipping respective kernel convolution operations corresponding to the at least one skip target kernel, and updating respective output elements of the convolutional layer, corresponding to the skipped respective kernel convolution operations, based on at least one bias.

In one general aspect, a convolutional neural network (CNN) processing apparatus includes a processor configured to determine a loading space unit for at least one loading space in an input based on a height or a width for an input feature map of the input and an extent of a dimension of a kernel feature map, load target input elements corresponding to a target loading space, among the at least one loading space, from a memory and store the target input elements in an allocated input buffer having a size corresponding to the loading space unit, and perform a convolution operation between the target input elements stored in the input buffer and at least one kernel element of a kernel.

In one general aspect, a convolutional neural network (CNN) processing apparatus includes a processor configured to acquire at least one convolution operation result between at least one kernel element and at least one input element of an input of a convolutional layer, and generate an output of the convolutional layer based on the at least one operation result and a size of a pad corresponding to an input of a subsequent convolutional layer of the convolutional layer of a neural network that includes the convolutional layer and the subsequent convolutional layer.

In one general aspect, a convolutional neural network (CNN) processing apparatus includes a processor configured to acquire kernel information indicating a skip target of a convolution operation, determine which convolution operations, between at least one input element of an input and respective kernel elements of kernel elements of a convolutional layer, to skip based on the kernel information, and implement the convolutional layer by skipping respective convolution operations, of the convolutional layer, based on a result of the determining, and otherwise performing remaining convolution operations of the convolutional layer.

In one general aspect, a processor-implemented convolutional neural network (CNN) processing method includes determining a loading space unit for an input based on a height or a width for an input feature map of the input and an extent of a dimension of a kernel feature map, sliding the loading space unit across the input in units of a predetermined stride to load respective target loading spaces of the input from a memory into one or more respective input buffers, and performing respective convolution operations between each loaded respective target loading space stored in the one or more respectively allocated input buffers and kernel elements of a kernel of a convolutional layer.

The loading space unit may be a third order tensor.

The performing of the respective convolution operations may include selectively not performing all convolution operations of the convolutional layer based on one or more determined skip target kernel elements or one or more determined skip target kernels.

The method may further include performing the respective allocating of the one or more input buffers to each have a length equal to a size of the loading space unit.

The determining of the loading space unit may include determining an extent of a first dimension of the loading space unit to be a total number of channels of the input, of a corresponding kernel of the kernel feature map, or of the kernel or of another kernel of a kernel set corresponding to the convolutional layer, determining an extent of a second dimension of the loading space unit to be the extent of the dimension of the kernel feature map, and determining an extent of a third dimension of the loading space unit to be the height or the width of the input feature map, where the size of the loading space may be the determined extent of the first dimension*the determined extent of the second dimension*the determined extent of the third dimension.

The loading of the respective target loading spaces of the input from the memory may include sequentially loading input elements from the memory, where the memory may store first input elements corresponding to a first height and width position, of the input and of different input feature maps, interleaved by channel so as to be consecutively stored in the memory, followed by second input elements corresponding to a next height or width position, of the input and of the different input feature maps, interleaved by channel so as to be next consecutively stored in the memory.

The performing of the respective convolution operations may include sequentially loading the kernel elements from another memory, the kernel elements being stored in the other memory based on the loading space unit, where the other memory may store a first kernel element corresponding to a second height and width position, of the kernel and of different channels, interleaved by channel so as to be consecutively stored in the other memory, followed by a second kernel element corresponding to a next height or width position, of the kernel and of the different channels, interleaved by channel so as to be next consecutively stored in the other memory.

The respectively interleaved input elements may be consecutively stored in the memory according to a horizontal rasterizing scheme.

The respectively interleaved input elements may be consecutively stored in the memory according to a vertical rasterizing scheme.

Other features and aspects will be apparent from the following detailed description, the drawings, and the claims.

