Convolution processing performance in digital image processing is enhanced using a data packing process for convolutional layers in deep neural networks and corresponding computation kernel code. The data packing process includes an input and weight packing of the input channels of data into a contiguous block of memory in preparation for convolution. In addition, data packing process includes an output unpacking process for unpacking convolved data into output channel blocks of memory, where the input channel block and output channel block sizes are configured for efficient data transfer and data reuse during convolution. The input packing and output packing processes advantageously improve convolution performance and conserve power while satisfying the real-time demands of digital image processing.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computer-implemented method of managing data for convolution processing, the method comprising: in a device having: a memory, an input channel for receiving a stack of input data, an output channel for receiving a stack of output data, and a convolution kernel containing a stack of weights for convolving the stack of input data into the stack of output data; packing the input stack into a continuous block of memory, packing the convolution kernel into a continuous block of memory, and unpacking the output stack based on the architecture of the device; and convolving the input stack into the output stack using the stack of weights in the convolution kernel. 2. A computer-implemented method as in claim 1, wherein packing the input stack into the continuous block of memory includes: reading all input blocks in the input stack corresponding to a portion of the input data; and arranging all of the input blocks into the continuous block of memory. 3. A computer-implemented method as in claim 2, wherein the portion of the input data to which the input blocks correspond is one or more input pixels and their neighboring pixels. 4. A computer-implemented method as in claim 1, wherein packing the output stack based on the architecture of the device is allocating a set of output blocks in the output stack to use a maximum number of registers, the set of output blocks in the output stack corresponding to the portion of input data being convolved. 5. A computer-implemented method as in claim 4, wherein the portion of input data being convolved is any one of a continuous row and a continuous column of input pixels. 6. A computer-implemented method as in claim 4, wherein convolving the input stack into the output stack includes: loading into memory the stack of weights corresponding to the portion of input data; arranging the loaded weights into a convolution weight matrix; calculating each value in the allocated set of output blocks in the output stack from the corresponding values in the input blocks and the convolution weight matrix.