Method and system of image processing with fast neural network training
By employing a frequency-aware re-parameterization technique to re-weight frequency domain kernels, the method addresses the learning bias in conventional neural networks, reducing training iterations and enhancing image quality through a more balanced handling of frequency data.
Patent Information
- Application Number
- PCT/CN2023/118208
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-09-12
- Publication Date
- 2025-03-20
AI Technical Summary
Conventional deep neural networks for image processing exhibit a learning bias that leads to an overly large number of iterations during training, resulting in slow convergence and reduced image quality due to an uneven handling of low and high frequency image data.
The implementation of a frequency-aware re-parameterization (FAR) technique that re-parameterizes convolution kernels by performing a weighted sum of frequency domain kernels, allowing for a more even distribution of low and high frequency data throughout the training iterations.
This approach significantly reduces the number of iterations required for neural network training, accelerates the training process, and improves the quality of output images by ensuring a more uniform handling of frequency components.
Smart Images

Figure CN2023118208_20032025_PF_FP_ABST
Abstract
Description
METHOD AND SYSTEM OF IMAGE PROCESSING WITH FAST NEURAL NETWORK TRAININGBACKGROUND
[0001] Many image processing applications use neural networks to analyze details and patterns of image data such as for video compression, image restoration, denoising, super resolution, synthetic image generation, and so forth. It has been found that the conventional training of many different types of deep neural networks for image processing have a learning bias that results in an overly large number of iterations, and in turn, relatively slow convergence during training.BRIEF DESCRIPTION OF THE DRAWINGS
[0002] The material described herein is illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements. In the figures:
[0003] FIG. 1 is a schematic diagram of an image processing system according to at least one of the implementations herein;
[0004] FIG. 2 is a flow chart of a method of fast training of a neural network for image processing according to at least one of the implementations herein;
[0005] FIG. 3 is a schematic diagram showing an operation for fast training of an image processing neural network according to at least one of the implementations herein;
[0006] FIG. 4 is a flow chart of a method of image processing with a neural network with fast training according to at least one of the implementations herein;
[0007] FIG. 5 is a set of sub-band frequency component graphs for an image generated by a neural network during experiments and plotted as training iterations versus mean absolute discrete cosine coefficients for both a conventional vanilla implementation and fast training according to at least one of the implementations herein;
[0008] FIG. 6 is a graph showing experiment results as peak signal-to-noise ratio (PSNR) versus training iteration and with associated images of both a conventional vanilla implementation and fast training according to an implementation described herein;
[0009] FIG. 7 is another set of sub-band frequency component graphs for another image generated by a neural network during experiments and plotted as training iterations versus mean absolute discrete cosine coefficients for both a conventional vanilla implementation and fast training according to an implementation described herein;
[0010] FIG. 8 is a schematic flow diagram with a system for image compression using various compression codecs with overfitting of a neural network and while using both a conventional vanilla implementation and fast training according to at least one of the implementations disclosed herein;
[0011] FIG. 9 is a graph with an associated image showing example results as rate distortion curves using JPEG compression plotted as PSNR versus bits per pixel, and for a conventional vanilla implementation, fast training according to at least one of the implementations disclosed herein, and raw JPEG image data;
[0012] FIGS. 10A to 10D are images comparing image compression results with blocking artifacts for a conventional vanilla implementation, fast training according to at least one of the implementations disclosed herein, and raw JPEG image data;
[0013] FIGS. 10E to 10H are images comparing image compression results with ringing artifacts for a conventional vanilla implementation, fast training according to at least one of the implementations disclosed herein, and raw high efficiency image file (HEIF) image data;
[0014] FIGS. 10I to 10L are images comparing image compression results with chroma subsampling artifacts for a conventional vanilla implementation, fast training according to at least one of the implementations disclosed herein, and raw versatile video coding (VVC) image data;
[0015] FIG. 11 is a graph showing bit distortion rates versus total number of iterations for the neural network platform challenge on learned image compression (CLIC) for both a conventional vanilla implementation and fast training according to at least one of the implementations disclosed herein.
[0016] FIG. 12 is an illustrative diagram of an example system;
[0017] FIG. 13 is another illustrative diagram of an example system; and
[0018] FIG. 14 illustrates an example device, all arranged in accordance with at least some implementations of the present disclosure.DETAILED DESCRIPTION
[0019] One or more implementations are now described with reference to the enclosed figures. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. Persons skilled in the relevant art will recognize that other configurations and arrangements may be employed without departing from the spirit and scope of the description. It will be apparent to those skilled in the relevant art that techniques and / or arrangements described herein also may be employed in a variety of other systems and applications other than what is described herein.
[0020] While the following description sets forth various implementations that may be manifested in architectures such as system-on-a-chip (SoC) architectures for example, implementation of the techniques and / or arrangements described herein are not restricted to particular architectures and / or computing systems and may be implemented by any architecture and / or computing system for similar purposes. For instance, various architectures employing, for example, multiple integrated circuit (IC) chips and / or packages, and / or various computing devices and / or consumer electronic (CE) devices such as servers, desktops, laptops, set top boxes, smartphones, tablets, one or more cameras or camera arrays, and virtual reality (VR) or augmented reality (AR) headsets or other display devices, etc. may implement at least parts of the techniques and / or arrangements described herein. Further, while the following description may set forth numerous specific details such as logic implementations, types and interrelationships of system components, logic partitioning / integration choices, etc., claimed subject matter may be practiced without such specific details. In other instances, some material such as, for example, control structures and full software instruction sequences, may not be shown in detail in order not to obscure the material disclosed herein.
[0021] The material disclosed herein may be implemented in hardware, firmware, software, or any combination thereof. The material disclosed herein may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any medium and / or mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device) . For example, a machine-readable medium may include read only memory (ROM) ; random access memory (RAM) ; magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc. ) , and others. In another form, a non-transitory article, such as a non-transitory computer readable medium, may be used with any of the examples mentioned above or other examples except that it does not include a transitory signal per se. It does include those elements other than a signal per se that may hold data temporarily in a “transitory” fashion such as RAM and so forth.
[0022] References in the specification to "one implementation" , "an implementation" , "an example implementation" , etc., indicate that the implementation described may include a particular feature, structure, or characteristic, but every implementation may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same implementation. Further, when a particular feature, structure, or characteristic is described in connection with an implementation, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other implementations whether or not explicitly described herein.
[0023] Methods, devices, apparatuses, computing platforms, media, and articles are described herein related to image processing with fast neural network training.
[0024] Deep neural networks (DNNs) that process image data for image analysis, modification, or generation have been found to have a learning bias that processes low frequency image data earlier than high frequency image data. Particularly, when changes in image data, such as chroma or brightness (or luminance or intensity) pixel values occurs slowly (have small changes) over a relatively large number of pixels, this is referred to as low frequency image data, while changes in image data values within small pixel distances or areas refers to high frequency image data. It has been found that DNNs generally favor or tend to prioritize work on low frequency data before working on high frequency data in an image. This neural network training work may be referred to as handling or fitting the low or high frequency image data. The learning bias has been found to increase the number of iterations during training needed to determine sufficient weight or other hyperparameter values, or in other words, reach a sufficient convergence, which in turn causes delay for the neural network being trained. The learning bias also has been found to reduce the quality of output images for those neural networks modifying or generating image data where testing has shown the learning bias can result in missing detection of artifacts that should be identified and removed with an image processing pipeline that uses the neural networks.
[0025] To resolve these issues, the present system, method, and device use a frequency-aware re-parameterization (FAR) technique that re-parameterizes convolution kernels for a convolutional neural network. The re-parameterization is accomplished by performing a weighted sum of frequency domain kernels each representing a different frequency. By the example used below, frequency domain kernels are obtained by applying a frequency transform algorithm, such as discrete cosine transform (DCT) , to initial spatial domain convolutional kernels coefficients The frequency domain kernels may be orthogonal and normalized. The weighting is accomplished by applying re-parameterization weights to the frequency domain (or here DCT) kernels to modify the frequency components of the frequency domain kernels in the frequency domain. The re-parameterization weights can be updated during the training of the neural network to de-emphasize the low frequency image data and handle more high frequency image data earlier in the training. This results in training a more even or uniform distribution of low and high frequency image data throughout the training iterations.
[0026] With the better distribution, and since the re-parameterization occurs directly in the frequency domain, the re-parameterization results in a significant reduction in the number of iterations used to train the neural network, thereby accelerating the training, as well as providing better image quality for image processing pipelines, such as with image restoration.
[0027] While image restoration and video compression examples are provided herein, it will be understood that the present disclosed FAR method may be used with any image and / or video processing CNNs that may benefit from fast-convergence or an increased efficiency in capturing high frequency components, including denoising, super resolution, image synthesis or generation, and so forth.
[0028] It will be understood that the convolutional kernels, frequency domain kernels, and the re-parameterization weights all may have values or elements referred to as weights. Herein, just for clarity, the spatial domain convolutional kernels will be referred to as having convolutional coefficients, the DCT kernels will be referred to as having frequency components in the frequency domain, and the re-parameterization weights will be referred to as re-parameterization (RP) weights.
[0029] Referring to FIG. 1, an example image processing device or system 100 may be provided for fast training of image processing neural networks. Image processing system 100 may receive image data 102 which is any data related to images including pixel chroma or luminance (or luma) values, as well as gradients, depth values, transparency values, and so forth. This is not particularly limited.
[0030] The image processing system 100 also may be, or have, a neural network application 104 to process the image data 102 for many different types of applications. This may include (1) image analysis applications such as image compression, image quality evaluation, object segmentation, detection, recognition, and 3D modeling; (2) image modification applications such as image restoration, denoising, and / or super resolution; and (3) image generation applications such as image synthesis for images with virtual perspectives, as well as many other image processing applications.
[0031] Such an example neural network application 104 may have a neural network (NN) 106 being trained and that generates output 108, a control 110 that controls a NN convolutional kernel unit 112, a bias unit 114, a NN weight unit 116, an activation function unit 118, and any other unit used to load data or parameters into the NN 106. The NN 106 may have any layer arrangement desired as long as it has at least one convolutional layer 105, whether defined as part of a convolutional block or not, and any other types of layers 107 as desired, such as input, rectified linear (ReLU) , pooling, fully connected (or dense) , normalization, and so forth, and with whatever channel, batch size, layer size, activation function, hyperparameter layer, and / or arrangement that is desired. This arrangement may be on a hardware or firmware level where buffers for one or more image accelerators or image signal processors (ISPs) are loaded, or may be on a software level instead.
[0032] The NN application 104 also may have a NN training unit 120 with a setup unit 121 that receives parameters (or hyperparameter instructions) for the training and instructs the controller 110 to operate according to those training parameters and instructions. A loss unit 122 analyzes the output 108 from the NN 106 and determines modified parameters for a next epoch or iteration of the training. Particularly for the fast training described herein, the NN training unit 120 may have an initial spatial domain kernel coefficients unit 124, a frequency transform unit 126, a re-parameterization weights (RP-weights) unit 128, and a re-parameterization unit 130.
[0033] In operation for the fast training, the initial spatial domain kernel coefficients unit (or just coefficient unit) 124 may be initialized with random values as coefficients of convolutional kernels. Otherwise, non-frequency aware initialization may be performed to generate initial convolutional kernel coefficients that could have been used when not using the FAR technique disclosed herein. Likewise, the RP-weights unit 128 also may be initialized with random values. Thereafter, the frequency transform unit 126 transforms the convolutional kernels into a frequency domain by using a transform algorithm, such as DCT, to generate frequency domain kernels. This may include any orthogonalization and / or normalization of the frequency domain kernels. Each frequency domain kernel, or here DCT kernel, represents a different frequency and has multiple frequency components as elements and arranged in a matrix, such as 3x3 in the current example.
[0034] The RP-weights may be scalar values modified over the iterations of the training by the RP-weights unit 128, and whether positive or negative whole values, but could be other types of values as desired. The RP-weights are set to have the convolutional kernels de-emphasize low frequencies and perform more high frequency fitting at earlier iterations so that low and high frequency handling is more equal in earlier iterations, and by one form, throughout all of the iterations, as described in detail elsewhere herein.
[0035] The RP-weights and the frequency domain coefficients are provided to the re-parameterization unit 130, which multiplies or otherwise applies one (or at least one) of the RP-weights to a corresponding frequency domain kernel to form a weighted frequency domain kernel. The weighted frequency domain kernels are then summed to generated a weighted sum convolutional kernel with frequency aware re-parameterization (FAR) coefficients (or just FAR convolutional kernel) . It will be understood that the weighted sum can be described as an inverse DCT operation. The FAR convolutional kernels are then provided from the re-parameterization unit 130 to the NN convolutional kernel unit 112 to train the NN 106.
[0036] It will be understood that the disclosed FAR operations described herein could be turned off for non-frequency-based training when desired. In that case, loss unit 122 may provide instructions directly to the NN convolutional kernels unit 112 to modify the convolutional kernel coefficients for a next training iteration.
[0037] It also will be understood that many different arrangements can be used in addition or instead of the one described here with system 100 to perform the fast training disclosed herein.
[0038] Referring to FIG. 2, an example process 200 of fast training of a neural network for image processing is arranged in accordance with at least some implementations of the present disclosure. The training process 200 may include one or more operations 202–206, generally numbered evenly. Furthermore, process 200 may be described herein with reference to at least systems or devices 100, 1200, 1300, or 1400 of FIGS. 1 and 12-14 respectively.
[0039] As a preliminary matter or stage, the neural network to be trained may be for any image processing applications with any desired architecture as discussed above as long as the neural network has at least one convolutional layer that uses convolutional kernels. Also, for training of the neural network, the preliminary operations may include any preliminary setup operations that must be performed to set any of the other hyperparameters, other than convolutional kernel coefficient values, including biases, initial neural network weight values activation functions, and so forth. This preliminary operation also may set the convolutional kernel sizes, stride, padding, dilation, type of kernel, and other specifications, other than the specific kernel coefficient values. This may be performed by customized programming or entry of data into known machine or deep learning framework applications. By the examples used herein, the convolutional kernels are 3x3.
[0040] This preliminary stage also may include selecting a dataset for training to input image data into the neural network being trained to generate neural network output to be used for supervised or unsupervised training. The output may be used to generate a loss that is then used to compute updated re-parameterization weights as explained below.
[0041] Process 200 may include “receive initial convolutional kernel coefficients to train a neural network with at least one convolutional layer” 202. As mentioned, this may be initial random coefficient values or initial values that would have been used if the frequency-aware re-parameterization was not being used. Otherwise, known initialization algorithms are often provided by the deep learning framework applications, which also may be random values, and often performed by using uniform or normal distributions and the number of inputs or outputs to determine the initial kernel coefficients. The result is one or more initial convolutional kernels each with initial coefficients in a matrix such as 3x3 in the current example.
[0042] Process 200 may include “convert the coefficients into frequency domain kernels” 204. This can be performed by a transform algorithm that can de-couple the spatial pattern of a convolutional kernel into patterns that represent different frequencies. By the example used herein, discrete cosine transform (DCT) is applied to the initial convolutional kernels. The DCT will output a set of frequency domain (or DCT) kernels each representing a different frequency and thereby establishing a frequency domain. Each frequency domain kernel may have a matrix of frequency components each representing a different frequency sub-band. By one form, the size of the frequency domain kernel is the same size as the spatial input convolutional kernel, here being 3x3 in this example.
[0043] To compute the frequency components for each frequency domain kernel by one example, a DCT equation (1) below denotes the kernels of a convolutional layer with M input channels, N output channels, and H × W kernel size (for both the spatial and frequency domain kernels) as Specifically, a frequency domain kernel D has frequency components Dijhw that can be computed using an orthogonal DCT-II equation that also normalizes the frequency component values. The frequency component Dijhw at sub-band i, j ∈ H × W is expressed as:
[0044] where (i, j) are the spatial coordinates within the frequency domain kernel D (of size H x W as mentioned above) , where (h, w) are the frequency coordinates within frequency domain kernel D, and where constants ck = 1 if k = 0, else Thus, in the spatial domain, H and W are the spatial length of each dimension. In the frequency domain, H and W are the number of frequency components of each dimension.
[0045] Furthermore, the constants ck are introduced to make Dijhw orthonormal. It will be understood that orthogonal with the example DCT equation used herein refers to the arrangement where a dot product of every possible pair of frequency domain kernels is zero. It also will be understood that equation (1) results in normalization of the frequency domain components Dijhw to fall within a range of 0 to 1. Thus, since the DCT is orthonormal, the D kernels are mutually orthogonal so that the magnitude of each frequency domain kernel is 1. Note that the DCT basis of each frequency domain kernel is orthonormal as well.
[0046] The initialization of the frequency domain kernels may be performed once for the first training iteration and, by one example, does not need to be updated by the transform equation thereafter. For subsequent iterations, the frequency domain kernel components will be updated by applying the re-parameterization weights to the frequency domain kernels instead, and as described below.
[0047] Thereafter, the frequency domain kernels are used to re-parameterize convolutional kernels in the frequency domain. In other words, process 200 may include “generate, by processor circuitry, at least one convolutional kernel having convolutional coefficients generated by modifying the frequency domain kernels while in a frequency domain. ” 206. Thus, in this example, the convolutional kernel is generated (or re-parameterization of the convolutional kernel is performed) by using a weighted sum computation over H × W sub-bands as follows:
[0048] where is the re-parameterization (RP) weight applied to the frequency domain kernel component Dijhw to modify or weight the frequency components to form weighted frequency domain (or here DCT) kernels. For equation (2) , the variables (i, j) indicates an RP-weight, and in turn, which DCT kernel D is being weighted, while (h, w) indicates the coordinates of the frequency component within the DCT kernels that is being summed and is fixed for equation (2) . The variables (i, j) , which are the subscript of the RP-weights V0, 0 to V2, 2 by the example of FIG. 3 below, refer to the conversion of a DCT kernel into a spatial domain kernel with a value at the coordinates within the spatial kernel indicated by the RP-subscript (i, j) and all of the rest of the locations within the spatial domain kernel are zero. So for example, the DCT kernel to be weighted by RP-weight V0, 0 has a spatial domain kernel with a value at location 0, 0 and the rest of the locations are zero. The convolutional kernel coefficient Kmnhw is provided for each different combination of input channel, output channel, and kernel coefficient position on a convolutional kernel K. The summing of the now weighted frequency domain kernels (and in turn the summing of basis functions with one basis function represented by each frequency domain kernel) effectively performs an inverse DCT. The result is a convolutional kernel K with re-parameterized spatial domain coefficients Kmnhw on m x n channels.
[0049] Thus, equation (2) can be described as involving three general operations or stages: (a) generating the RP weights V, (b) applying the RP weights to the frequency domain kernels, and (c) summing the weighted frequency domain kernels to generate a convolutional kernel.
[0050] Referring to FIG. 3, a weighted sum setup 300 is provided to aid in explaining the weighted sum equation (2) and stages (a) to (c) . For example, and preliminarily, input to equation (1) or other frequency transform may be initial, spatial domain, convolutional kernel coefficients say in a single 3x3 convolutional kernel with coefficients selected randomly and having locations (i, j) . A transform equation, here being the discrete cosine transform (DCT) , generates a set 301 of nine 3x3 frequency domain kernels 302 to 318 numbered evenly, although different sizes and number of frequency domain kernels may be used instead as they are each the same size as the convolutional kernel. Each frequency domain kernel 302 to 318 represents a different frequency and has a different pattern of frequency components 320. The frequency domain kernels are shown as ranging from a lowest frequency DCT kernel 302 to a highest frequency DCT kernel 318 as shown by the different shading patterns on each frequency domain kernel.
[0051] As to the RP-weights V, nine RP-weights are shown from V0, 0 to V2, 2 with one RP-weight for each frequency domain kernel 302 to 318. The RP-weights are designated with a subscript index from 0, 0 to 2, 2 to represent different frequency components. In other words, the subscript index starts from 0 by convention. For example then, V1, 1 corresponds to the (1, 1) frequency component or sub-band position. This is repeated for each combination of in and out channels. Thus, each pair of mth input channel to a different nth output channel has an RP-weight V, and the RP-weights shown on setup 300 actually may be designated as Vm, n, 0, 0.
[0052] By one form, the RP-weights V0, 0 to V2, 2 are initialized randomly with negative or positive whole numbers. The random values from initialization for RP-weights V0, 0 to V2, 2 can be computed by first randomly initializing a convolutional kernel K, projecting the randomly initialized K on each frequency domain kernel D, and then the initial RP-weight V corresponding to a particular frequency domain kernel D is a dot product between the randomly initialized convolutional kernel K and the particular frequency domain kernel D. The randomly initialized convolutional kernel K can be the same kernel used to generate the frequency domain kernels.
[0053] Once the RP-weights V are generated, the RP-weights are respectively applied to the frequency domain kernels. Specifically, a RP-weight corresponding to a frequency domain kernel is applied to each frequency component in that frequency domain kernel (where V0, 0 is applied to individual or all frequency components in kernel 302, for example) . Here the application is direct multiplication as shown on setup 300. Thus, the application of the RP-weights V0, 0 to V2, 2 directly to the frequency domain kernels 302 to 318 and particularly to the frequency components 320 modifies the frequency components 320 directly in the frequency domain.
[0054] Once the weighted frequency domain kernels 302 to 318 are generated, the weighted frequency domain kernels 302 to 318 may be summed together into a single spatial domain convolutional kernel 322, thereby completing an inverse DCT or transform process. By one approach, this may be performed by summing weighted frequency components 320 at the same or corresponding frequency component location (or same frequency index (i, j) in (H, W) ) . For example, the weighed frequency component at location (0, 0) on frequency domain kernel 304 will be added to all of the other weighted frequency components at location (0, 0) on the other frequency domain kernels 302 to 318. This is repeated for each of the 3x3 positions on the frequency domain kernels 302 to 318. The result is a single convolutional kernel 322 with coefficients 324 re-parameterized in the frequency domain as mentioned. This may be repeated for each or individual convolutional kernel 322 to be used in a filter or group 330 of convolutional kernels 322 for one or more convolutional layers being used by a neural network being trained.
[0055] By one alternative form, it will be understood that the computation of equations (1) and (2) to initialize the frequency domain kernels and RP-weights may be performed simply by determining the transform basis functions, modifying the basis functions with randomly selected RP-weights, and summing the weighted basis to form convolutional kernel coefficients.
[0056] Thereafter, the RP-weights are updated by the neural network training unit. Specifically, a loss function being used for training may be used to update the RP-weights at each or individual iterations to minimize the loss, which in turn results in the RP-weights being updated change the distribution in low and high frequency fitting. Thus, this has the effect of de-emphasizing fitting of low frequency image data in earlier iterations, and increases a generally more even distribution of low and high frequency image data fitting throughout the iterations, or temporally. This also can be described as increasing emphasis or prioritization of high frequency image data in earlier iterations compared to training without re-parameterization.
[0057] One specific example of such a loss function can be mean square error (MSE) between restored image and target image, but could be mean absolute difference (MSD) , structural similarity index (SSIM) , or others.
[0058] As mentioned above, with a more even distribution of the handling of low and high frequency image data throughout the iterations of the training where the re-parameterization occurs directly in the frequency domain, the training is accelerated by significantly reducing the number of iterations used for the training to an adequate convergence.
[0059] Referring to FIG. 4, an example run-time process 400 of image processing with a neural network that was trained quickly by using the frequency-aware re-parameterization is arranged in accordance with at least some implementations of the present disclosure, and may include one or more operations 402–408, generally numbered evenly. Furthermore, process 400 may be described herein with reference to at least systems or devices 100, 1200, 1400, or 1400 of FIGS. 1 and 12-14 respectively.
[0060] Process 400 may include “receive image data” 402, and this may involve receiving image data of at least one image. Thus, the image data may be provided for individual photos or frames of one or more video sequences. As mentioned, above, no particular limit exists on the type of convolutional neural network, neural network architecture, application or program being performed, and so forth as long as the neural network performs some sort of image processing and receives some version of image data as an input. A convolutional neural network is any network with at least one convolutional layer that uses at least one convolutional kernel.
[0061] This operation also may include performing any pre-processing before the image data is input into the neural network. This may include any desired pre-processing such as demosaicing, scaling, enhancements, denoising, decompression, any other artifact removal operations, and so forth.
[0062] Process 400 may include “input a version of the image data into a neural network having at least one convolutional layer” 404. Where the neural network uses at least one convolutional layer, which in turn uses at least one convolutional kernel with coefficients. The size, type, and other specifications of the convolutional kernel is not particularly limited as long as the fast training can be performed to generate the convolutional kernels as described herein. The version of the image data here refers to any modification, such as normalization, change to gradations, transforms, conversions, and so forth, that may be applied before the image data is input to the neural network.
[0063] Process 400 may include “apply at least one convolutional kernel to a version of the image data at the at least one convolutional layer” 406. Here the version of the image data may or may not be the same as the version of the image data input to the neural network. Here, the version of the image data at least may refer to input image data values or intermediate neural network values that were output from a layer prior to a current convolutional layer with the at least one convolutional kernel to provide input to the current convolutional layer. By one form, the convolutional kernel may be applied by being traversed, according to kernel parameters, over a convolutional layer surface to generate output values of the convolutional layer.
[0064] Process 400 also may include “wherein the at least one convolutional kernel has coefficients generated by modifying frequency components of frequency domain kernels in a frequency domain” 408. This refers to the training process 200 described above that uses re-parameterization weights to modify frequency domain kernels, and by one example, using a weighted sum equation described above. As described, the re-parameterization weights de-emphasize low frequency image data fitting and better perform high frequency image data fitting at earlier iterations. This creates a more even or uniform distribution of high and low frequency image data throughout the iterations, thereby accelerating the training and generating at least one convolutional kernel with coefficients generated by frequency-aware re-parameterization.
[0065] Experiments
[0066] Experiment 1: a toy (or simplified) example comparing the frequency domain behaviors of the disclosed FAR method and vanilla (or regular or non-frequency-based) convolution is demonstrated in this section. For this experiment, a three-layer CNN was trained with two 512 intermediate channels activated by ReLU to restore an image of 256×256 by over-fitting. The input image is compressed by JPEG at a quality of 15. The network is trained with 100,000 iterations using an Adam optimizer neural network training algorithm at a learning rate of 1e-5. The kernel size of both the disclosed FAR method and vanilla convolution is 3×3.
[0067] Referring to FIG. 5, a set 500 of graphs where each graph is for a different frequency sub-band. The set 500 of graphs was used to check how the different frequency components in the restored image change temporally over the training iterations. The image was decomposed using a 4×4 DCT, and the mean absolute value frequency component at each sub-band was determined as it changed along the training iterations.
[0068] Set 500 shows that the image restored by vanilla convolution follows the typical spectral bias where the high-frequency components converge much slower than low-frequency components. The disclosed FAR method frequency-based network training is much less impacted by the spectral bias. The mean absolute components for most high frequency components converge much faster than that of the vanilla convolution based network.
[0069] Referring to FIG. 6, a graph 600 shows noise (PSNR) tracked along the iterations, and how the different frequency-related behavior can be visually observed in resulting images. For example, a vanilla image 602 and a FAR image 604 are generated around iteration 10. While coloration is slightly off, the FAR image 604 still has superior sharpness compared to the vanilla image 602. Likewise, a FAR image 608 is superior to a vanilla image 606 at iteration 100,000. Thus, the images restored by the proposed FAR method are almost always sharper, particularly at early iterations.
[0070] Referring to FIG. 7, a set 700 of graphs, each graph being for a different RP-weight V0, 0 to V2, 2, and in turn different frequency sub-band. The set 700 was used to check training dynamics by visualizing the RP-weight updates in the frequency domain. Thus, each graph in set 700 demonstrates the mean absolute change of the DCT coefficients of the 3×3 convolutions at each iteration. The graphs show that the distribution of the magnitudes of the RP-weights update more uniformly over all sub-bands, while vanilla convolution updates low-frequency sub-bands more than high frequency sub-bands for most iterations. The results demonstrated in the FIGS. 5-7 suggest that the proposed FAR method learns information better when the low and high frequency handling is more evenly distributed along the iterations.
[0071] Experiment 2: in a second experiment, image compression was performed while performing overfit-based image restoration. This involved overfitting residuals from the image compression using a neural network trained with the proposed FAR training method disclosed herein.
[0072] Referring to FIG. 8, a system 800 for image compression that was used for the experiment. The input is images 804, 806, and 808 at increasing smaller downsized resolutions. The system 800 has neural network architecture 802 with a bulk layer block 810, 812, 814 respectively for each image 804, 806, 808, a concatenation layer (C) 816, a convolutional layer (Cv) 818, and a sum operation 820. Each bulk block 810, 812, and 814 has two repeating sets in series each with, in order, a first convolutional layer (Cv) 822 or 828, a second instance normalization (N) layer 824 or 830, and a third rectified linear (ReLU) layer 826 or 832. The bulk blocks 810, 812, and 814 each have another convolutional (Cv) layer 834 at an output of the bulk block.
[0073] In operation, the three input images are fed to the bulk blocks 810, 812, 814. The output values from the bulk blocks and of the smaller resolution images are then upscaled to match the resolution of the image 804. The scaled and non-scaled bulk block output is then concatenated by layer C 816. Next, the concatenated image is combined with the original highest resolution image 804 at sum operation 820, to generate an output image 822.
[0074] Each image was compressed by a conventional codec, over-fitted, and compared by a network using the proposed FAR method and vanilla convolution, respectively. Kodak, Tecnick and challenge on learned image compression (CLIC) 2020 neural network applications were evaluated with compression codecs of JPEG (cjpeg 9e) , high efficiency image file (HEIF) (high efficiency video coding (HEVC) , libheif 1.12) and versatile video coding (VVC) (intra mode, video test model (VTM) 19.0) . The default number of channels used for JPEG, HEIF and VVC are 64, 32, and 16, respectively. For Kodak the number is halved as it has smaller images. For JPEG and HEIF, images were provided at quality levels of 15, 40, 65, 90. For VVC, the quantization parameters (QPs) were 37, 32, 27, 22. The pixel formats evaluated were YUV420 and YUV444.
[0075] The training objective for experiment 2 was to determine the mean-square error between a restored image and a raw image. The network was trained by Adam optimizer for 200 iterations with an L1 penalty of 1e-3 and a linearly decayed learning rate starting from 0.05. After training, the FAR RP-weights are quantized and compressed by DeepCABAC . The quantization step size is calculated as |V|max / L, where L=127 is used in the experiments. Then the quantized weights are loaded back for measuring PSNR, multi-scale structural similarity index measures (MS-SSIM) for the corresponding R-D (rate distortion) curves, and Bjontegaard delta (BD) rates. The results are shown in the following table.
[0076] Table 1: BD-rates of over-fitting based image restoration. Bold indicates better results and underline indicates worse results compared to corresponding codec including where CLIC-M and CLIC-P are CLIC mobile and CLIC professional, respectively.
[0077] The disclosed FAR method has vastly better results versus the vanilla convolution in all of the evaluations. Vanilla convolution failed to improve R-D in many cases (underlined in the table) , while the proposed FAR method only failed to improve MS-SSIM for VVC (4: 4: 4) compressed Kodak images. Thus, other than the case where small images are compressed by significantly optimized image codecs, the proposed FAR method is promising for optimized image compression in addition to the conventional image codecs. For modern codecs such as VVC, the scheme can be implemented with a native support for practical image compression.
[0078] Referring to FIG. 9, a graph 900 shows an example R-D curve graphing the results from experiment 2, where JPEG was used with both the FAR method disclosed herein and the vanilla method, as well as the raw image.
[0079] Referring to FIGS. 10A-10H, images show the improvement in quality resulting from using the proposed FAR method disclosed herein. Specifically, an image 1000 shows blocking artifacts, while image 1002 shows the raw image, image 1004 shows the FAR generated image (JPEG 4: 2: 0 + FAR with 35.67 dB, 0.330 bpp (bits per pixel) ) , and image 1006 shows the vanilla image (JPEG 4: 2: 0 33.05 dB, 0.337 bpp) .
[0080] An image 1010 shows ringing artifacts, while image 1012 shows the raw image, image 1014 shows the FAR generated image (HEIF 4: 2: 0 + FAR with 34.37 dB, 0.0725 bpp) , and image 1016 shows the vanilla image (HEIF 4: 2: 0 33.85 dB, 0.0730 bpp) .
[0081] An image 1020 shows chroma subsampling artifacts, while image 1022 shows the raw image, image 1024 shows the FAR generated image (VVC 4: 2: 0 + FAR with 30.20 dB, 0.190 bpp) , and image 1026 shows the vanilla image (VVC 4: 2: 0 28.60 dB, 0.192 bpp) .
[0082] As shown in the figures, the disclosed FAR method provides for easier ability to detect artifacts by conventional codecs for removal resulting in significantly improved visual quality.
[0083] Referring to FIG. 11, a graph 1100 is used to further show the convergence advantage of the disclosed FAR method. The BD-rates of both FAR and vanilla convolution with different total training iterations on CLIC professional are shown where the disclosed FAR method has much better convergence over the vanilla convolution, particularly at fewer total training iterations. Though the gap between the disclosed FAR and vanilla convolutions becomes smaller as the number of training iterations increases, the disclosed FAR method is more practical for implementation as it costs much less in computations in general to achieve the same BD-rate.
[0084] While implementation of the example processes discussed herein may include the undertaking of all operations shown in the order illustrated, the present disclosure is not limited in this regard and, in various examples, implementation of the example processes herein may include only a subset of the operations shown, operations performed in a different order than illustrated, or additional operations.
[0085] In addition, any one or more of the operations discussed herein may be undertaken in response to instructions provided by one or more computer program products. Such program products may include signal bearing media providing instructions that, when executed by, for example, a processor, may provide the functionality described herein. The computer program products may be provided in any form of one or more machine-readable media. Thus, for example, a processor including one or more graphics processing unit (s) or processor core (s) may undertake one or more of the blocks of the example processes herein in response to program code and / or instructions or instruction sets conveyed to the processor by one or more machine-readable media. In general, a machine-readable medium may convey software in the form of program code and / or instructions or instruction sets that may cause any of the devices and / or systems described herein to implement at least portions of the operations discussed herein and / or any portions of the devices, systems, or any module or component as discussed herein.
[0086] As used in any implementation described herein, the term “module” refers to any combination of software logic, firmware logic, hardware logic, and / or circuitry configured to provide the functionality described herein. The software may be embodied as a software package, code and / or instruction set or instructions, and “hardware” , as used in any implementation described herein, may include, for example, singly or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, fixed function circuitry, execution unit circuitry, and / or firmware that stores instructions executed by programmable circuitry. The modules may, collectively or individually, be embodied as circuitry that forms part of a larger system, for example, an integrated circuit (IC) , system on-chip (SoC) , and so forth.
[0087] As used in any implementation described herein, the term “logic unit” refers to any combination of firmware logic and / or hardware logic configured to provide the functionality described herein. The logic units may, collectively or individually, be embodied as circuitry that forms part of a larger system, for example, an integrated circuit (IC) , system on-chip (SoC) , and so forth. For example, a logic unit may be embodied in logic circuitry for the implementation of firmware or hardware of the coding systems discussed herein. One of ordinary skill in the art will appreciate that operations performed by hardware and / or firmware may alternatively be implemented via software, which may be embodied as a software package, code and / or instruction set or instructions, and also appreciate that a logic unit also may utilize a portion of software to implement its functionality.
[0088] As used in any implementation described herein, the term “component” may refer to a module or to a logic unit, as these terms are described above. Accordingly, the term “component” may refer to any combination of software logic, firmware logic, and / or hardware logic configured to provide the functionality described herein. For example, one of ordinary skill in the art will appreciate that operations performed by hardware and / or firmware may alternatively be implemented via a software module, which may be embodied as a software package, code and / or instruction set, and also appreciate that a logic unit may also utilize a portion of software to implement its functionality. Component herein also may refer to processors and other specific hardware devices.
[0089] The terms “circuit” or “circuitry, ” as used in any implementation herein, may comprise or form, for example, singly or in any combination, hardwired circuitry, programmable circuitry such as computer processors comprising one or more individual instruction processing cores, state machine circuitry, and / or firmware that stores instructions executed by programmable circuitry. The circuitry may include a processor ( “processor circuitry” ) and / or controller configured to execute one or more instructions to perform one or more operations described herein. The instructions may be embodied as, for example, an application, software, firmware, etc. configured to cause the circuitry to perform any of the aforementioned operations. Software may be embodied as a software package, code, instructions, instruction sets and / or data recorded on a computer- readable storage device. Software may be embodied or implemented to include any number of processes, and processes, in turn, may be embodied or implemented to include any number of threads, etc., in a hierarchical fashion. Firmware may be embodied as code, instructions or instruction sets and / or data that are hard-coded (e.g., nonvolatile) in memory devices. The circuitry may, collectively or individually, be embodied as circuitry that forms part of a larger system, for example, an integrated circuit (IC) , an application-specific integrated circuit (ASIC) , a system-on-a-chip (SoC) , desktop computers, laptop computers, tablet computers, servers, smartphones, etc. Other implementations may be implemented as software executed by a programmable control device. In such cases, the terms “circuit” or “circuitry” are intended to include a combination of software and hardware such as a programmable control device or a processor capable of executing the software. As described herein, various implementations may be implemented using hardware elements, software elements, or any combination thereof that form the circuits, circuitry, processor circuitry. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth) , integrated circuits, application specific integrated circuits (ASIC) , programmable logic devices (PLD) , digital signal processors (DSP) , field programmable gate array (FPGA) , logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth.
[0090] Referring to FIG. 12, an example image processing system 1200 for fast training of a neural network is provided in accordance with at least some implementations of the present disclosure. As shown in FIG. 12, system 1200 may include processor (s) formed by processor circuitry 1250 which may or may not include one or more image signal processors (ISP) 1252 and other accelerators 1242, and a memory store (s) 1254 with one or more neural network buffers 1244.
[0091] Also as shown, system 1200 may have logic units or modules 1204 including a pre-processing unit 1208 that may process image data from an imaging device 1202, such as one or more cameras, on a device with modules 1204, or communicating with the modules 1204. The logic units or modules 1204 may have an image processing unit 1206 with a pre-processing unit 1208 that may pre-process image data from cameras 1202 to provide the images to a neural network application 104 (FIG. 1) as described above. The image processing unit 1206 also may have a neural network (NN) training unit 120 (FIG. 1) that performs frequency-aware re-parameterization of convolutional kernels by applying re-parameterization weights to frequency domain kernels in a frequency domain, also as described above. Other image processing applications 1212 whether for image transmission, modification, or generation may use the output of the neural network application.
[0092] System 1200 also may have an antenna 1256 for transmitting or receiving image data, a coder 1258 for encoding or decoding the image data, and a display 1260 with a screen capable of showing an image 1262.
[0093] The names of the units here may have the same or similar names to that of device 100 such that the units perform the same or similar tasks as those on device 100. Otherwise, the operation of the units is described as needed in the processes detailed herein.
[0094] In some examples, one or more or portions of the operations of processes 200 and 400 may be implemented via ISP 1252 or accelerators 1242. In other examples, one or more or portions of the operations are implemented via a central processor forming processor (s) of processor circuitry 1250, an image processing unit, an image processing pipeline, an image signal processor 1252, or the like. In some examples, one or more or portions of the fast training or operation of a neural network are implemented in hardware as a system-on-a-chip (SoC) or other specific purpose hardware or other shared hardware. In some examples, one or more or portions of the fast training are implemented in hardware via a field programmable gate array (FPGA) .
[0095] Processor circuitry 1250, image signal processor 1252, and accelerators 1242 may include any number and type of image or graphics processing units that may provide the operations as discussed herein. Such operations may be implemented via software or hardware or a combination thereof. For example, image signal processor 1252 may include circuitry dedicated to manipulate and / or analyze images obtained from memory 1254. Central processor 1250 may include any number and type of processing units or modules that may provide control and other high level functions for system 1200 and / or provide any operations as discussed herein.
[0096] Memory 1254 may be any type of memory such as volatile memory (e.g., Static Random Access Memory (SRAM) , Dynamic Random Access Memory (DRAM) , etc. ) or non-volatile memory (e.g., hard drives, flash memory, etc. ) , and so forth. In a non-limiting example, memory 1254 may be implemented by cache memory. In an implementation, one or more or portions of the fast training are implemented via an execution unit (EU) of processor circuitry 1250. The EU may include, for example, programmable logic or circuitry such as a logic core or cores that may provide a wide array of programmable logic functions. In an implementation, one or more or portions of the fast training are implemented via dedicated hardware such as fixed function circuitry or the like. Fixed function circuitry may include dedicated logic or circuitry and may provide a set of fixed function entry points that may map to the dedicated logic for a fixed purpose or function.
[0097] Various components of the systems described herein may be implemented in software, firmware, and / or hardware and / or any combination thereof. For example, various components of the devices or systems discussed herein may be provided, at least in part, by hardware of a computing System-on-a-Chip (SoC) such as may be found in a computing system such as, for example, a smart phone or camera array. Those skilled in the art may recognize that systems described herein may include additional components that have not been depicted in the corresponding figures. For example, the systems discussed herein may include additional components that have not been depicted in the interest of clarity.
[0098] Referring to FIG. 13, an example system 1300 is arranged in accordance with at least some implementations of the present disclosure. In various implementations, system 1300 may be a mobile device system although system 1300 is not limited to this context. For example, system 1300, or parts thereof, may be incorporated into a server, personal computer (PC) , laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA) , cellular telephone, combination cellular telephone / PDA, television, smart device (e.g., smart phone, smart tablet or smart television) , mobile internet device (MID) , messaging device, data communication device, cameras (e.g. point-and-shoot cameras, super-zoom cameras, digital single-lens reflex (DSLR) cameras) , a surveillance camera, a surveillance system including a camera, and so forth. Otherwise, at least part of system 1300 may be on one or more servers.
[0099] In various implementations, system 1300 includes a platform 1302 coupled to a display 1320. Platform 1302 may receive content from a content device such as content services device (s) 1330 or content delivery device (s) 1340 or other content sources such as image sensors 1313. For example, platform 1302 may receive image data as discussed herein from image sensors 1313 or any other content source. A navigation controller 1350 including one or more navigation features may be used to interact with, for example, platform 1302 and / or display 1320. Each of these components is described in greater detail below.
[0100] In various implementations, platform 1302 may include any combination of a chipset 1305, processor 1310, memory 1312, antenna, storage 1314, graphics subsystem 1315, applications 1316, image signal processor 1317 and / or radio 1318. Chipset 1305 may provide intercommunication among processor 1310, memory 1312, storage 1314, graphics subsystem 1315, applications 1316, image signal processor 1317 and / or radio 1318. For example, chipset 1305 may include a storage adapter (not depicted) capable of providing intercommunication with storage 1314.
[0101] Processor 1310 may be implemented as a Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors, x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU) . In various implementations, processor 1310 may be dual-core processor (s) , dual-core mobile processor (s) , and so forth.
[0102] Memory 1312 may be implemented as a volatile memory device such as, but not limited to, a Random Access Memory (RAM) , Dynamic Random Access Memory (DRAM) , or Static RAM (SRAM) .
[0103] Storage 1314 may be implemented as a non-volatile storage device such as, but not limited to, a magnetic disk drive, optical disk drive, tape drive, an internal storage device, an attached storage device, flash memory, battery backed-up SDRAM (synchronous DRAM) , and / or a network accessible storage device. In various implementations, storage 1314 may include technology to increase the storage performance enhanced protection for valuable digital media when multiple hard drives are included, for example.
[0104] Image signal processor 1317 may be implemented as a specialized digital signal processor or the like used for image processing. In some examples, image signal processor 1317 may be implemented based on a single instruction multiple data or multiple instruction multiple data architecture or the like. In some examples, image signal processor 1317 may be characterized as a media processor. As discussed herein, image signal processor 1317 may be implemented based on a system on a chip architecture and / or based on a multi-core architecture.
[0105] Graphics subsystem 1315 may perform processing of images such as still or video for display. Graphics subsystem 1315 may be a graphics processing unit (GPU) or a visual processing unit (VPU) , for example. An analog or digital interface may be used to communicatively couple graphics subsystem 1315 and display 1320. For example, the interface may be any of a High-Definition Multimedia Interface, DisplayPort, wireless HDMI, and / or wireless HD compliant techniques. Graphics subsystem 1315 may be integrated into processor 1310 or chipset 1305. In some implementations, graphics subsystem 1315 may be a stand-alone device communicatively coupled to chipset 1305.
[0106] The graphics and / or video processing techniques described herein may be implemented in various hardware architectures. For example, graphics and / or video functionality may be integrated within a chipset. Alternatively, a discrete graphics and / or video processor may be used. As still another implementation, the graphics and / or video functions may be provided by a general purpose processor, including a multi-core processor. In further implementations, the functions may be implemented in a consumer electronics device.
[0107] Radio 1318 may include one or more radios capable of transmitting and receiving signals using various suitable wireless communications techniques. Such techniques may involve communications across one or more wireless networks. Example wireless networks include (but are not limited to) wireless local area networks (WLANs) , wireless personal area networks (WPANs) , wireless metropolitan area network (WMANs) , cellular networks, and satellite networks. In communicating across such networks, radio 1318 may operate in accordance with one or more applicable standards in any version.
[0108] In various implementations, display 1320 may include any television type monitor or display. Display 1320 may include, for example, a computer display screen, touch screen display, video monitor, television-like device, and / or a television. Display 1320 may be digital and / or analog. In various implementations, display 1320 may be a holographic display. Also, display 1320 may be a transparent surface that may receive a visual projection. Such projections may convey various forms of information, images, and / or objects. For example, such projections may be a visual overlay for a mobile augmented reality (MAR) application. Under the control of one or more software applications 1316, platform 1302 may display user interface 1322 on display 1320.
[0109] In various implementations, content services device (s) 1330 may be hosted by any national, international and / or independent service and thus accessible to platform 1302 via the Internet, for example. Content services device (s) 1330 may be coupled to platform 1302 and / or to display 1320. Platform 1302 and / or content services device (s) 1330 may be coupled to a network 1360 to communicate (e.g., send and / or receive) media information to and from network 1360. Content delivery device (s) 1340 also may be coupled to platform 1302 and / or to display 1320.
[0110] Image sensors 1313 may include any suitable image sensors that may provide image data based on a scene. For example, image sensors 1313 may include a semiconductor charge coupled device (CCD) based sensor, a complimentary metal-oxide-semiconductor (CMOS) based sensor, an N-type metal-oxide-semiconductor (NMOS) based sensor, or the like. For example, image sensors 1313 may include any device that may detect information of a scene to generate image data.
[0111] In various implementations, content services device (s) 1330 may include a cable television box, personal computer, network, telephone, Internet enabled devices or appliance capable of delivering digital information and / or content, and any other similar device capable of uni-directionally or bi-directionally communicating content between content providers and platform 1302 and / display 1320, via network 1360 or directly. It will be appreciated that the content may be communicated uni-directionally and / or bi-directionally to and from any one of the components in system 1300 and a content provider via network 1360. Examples of content may include any media information including, for example, video, music, medical and gaming information, and so forth.
[0112] Content services device (s) 1330 may receive content such as cable television programming including media information, digital information, and / or other content. Examples of content providers may include any cable or satellite television or radio or Internet content providers. The provided examples are not meant to limit implementations in accordance with the present disclosure in any way.
[0113] In various implementations, platform 1302 may receive control signals from navigation controller 1350 having one or more navigation features. The navigation features of navigation controller 1350 may be used to interact with user interface 1322, for example. In various implementations, navigation controller 1350 may be a pointing device that may be a computer hardware component (specifically, a human interface device) that allows a user to input spatial (e.g., continuous and multi-dimensional) data into a computer. Many systems such as graphical user interfaces (GUI) , and televisions and monitors allow the user to control and provide data to the computer or television using physical gestures.
[0114] Movements of the navigation features of navigation controller 1350 may be replicated on a display (e.g., display 1320) by movements of a pointer, cursor, focus ring, or other visual indicators displayed on the display. For example, under the control of software applications 1316, the navigation features located on navigation controller 1350 may be mapped to virtual navigation features displayed on user interface 1322, for example. In various implementations, navigation controller 1350 may not be a separate component but may be integrated into platform 1302 and / or display 1320. The present disclosure, however, is not limited to the elements or in the context shown or described herein.
[0115] In various implementations, drivers (not shown) may include technology to enable users to instantly turn on and off platform 1302 like a television with the touch of a button after initial boot-up, when enabled, for example. Program logic may allow platform 1302 to stream content to media adaptors or other content services device (s) 1330 or content delivery device (s) 1340 even when the platform is turned “off. ” In addition, chipset 1305 may include hardware and / or software support for 5.1 surround sound audio and / or high definition 7.1 surround sound audio, for example. Drivers may include a graphics driver for integrated graphics platforms. In various implementations, the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card.
[0116] In various implementations, any one or more of the components shown in system 1300 may be integrated. For example, platform 1302 and content services device (s) 1330 may be integrated, or platform 1302 and content delivery device (s) 1340 may be integrated, or platform 1302, content services device (s) 1330, and content delivery device (s) 1340 may be integrated, for example. In various implementations, platform 1302 and display 1320 may be an integrated unit. Display 1320 and content service device (s) 1330 may be integrated, or display 1320 and content delivery device (s) 1340 may be integrated, for example. These examples are not meant to limit the present disclosure.
[0117] In various implementations, system 1300 may be implemented as a wireless system, a wired system, or a combination of both. When implemented as a wireless system, system 1300 may include components and interfaces suitable for communicating over a wireless shared media, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, and so forth. An example of wireless shared media may include portions of a wireless spectrum, such as the RF spectrum and so forth. When implemented as a wired system, system 1300 may include components and interfaces suitable for communicating over wired communications media, such as input / output (I / O) adapters, physical connectors to connect the I / O adapter with a corresponding wired communications medium, a network interface card (NIC) , disc controller, video controller, audio controller, and the like. Examples of wired communications media may include a wire, cable, metal leads, printed circuit board (PCB) , backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, and so forth.
[0118] Platform 1302 may establish one or more logical or physical channels to communicate information. The information may include media information and control information. Media information may refer to any data representing content meant for a user. Examples of content may include, for example, data from a voice conversation, videoconference, streaming video, electronic mail ( “email” ) message, voice mail message, alphanumeric symbols, graphics, image, video, text and so forth. Data from a voice conversation may be, for example, speech information, silence periods, background noise, comfort noise, tones and so forth. Control information may refer to any data representing commands, instructions or control words meant for an automated system. For example, control information may be used to route media information through a system, or instruct a node to process the media information in a predetermined manner. The implementations, however, are not limited to the elements or in the context shown or described in FIG. 13.
[0119] As described above, system 1300 may be embodied in varying physical styles or form factors. FIG. 14 illustrates an example small form factor device 1400, arranged in accordance with at least some implementations of the present disclosure. In some examples, system 1200 or 1300 may be implemented via device 1400. In other examples, other systems, components, or modules discussed herein or portions thereof may be implemented via device 1400. In various implementations, for example, device 1400 may be implemented as a mobile computing device having wireless capabilities. A mobile computing device may refer to any device having a processing system and a mobile power source or supply, such as one or more batteries, for example.
[0120] Examples of a mobile computing device may include a personal computer (PC) , laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA) , cellular telephone, combination cellular telephone / PDA, smart device (e.g., smartphone, smart tablet or smart mobile television) , mobile internet device (MID) , messaging device, data communication device, cameras (e.g. point-and-shoot cameras, super-zoom cameras, digital single-lens reflex (DSLR) cameras) , and so forth.
[0121] Examples of a mobile computing device also may include computers that are arranged to be implemented by a motor vehicle or robot, or worn by a person, such as wrist computers, finger computers, ring computers, eyeglass computers, belt-clip computers, arm-band computers, shoe computers, clothing computers, and other wearable computers. In various implementations, for example, a mobile computing device may be implemented as a smartphone capable of executing computer applications, as well as voice communications and / or data communications. Although some implementations may be described with a mobile computing device implemented as a smartphone by way of example, it may be appreciated that other implementations may be implemented using other wireless mobile computing devices as well. The implementations are not limited in this context.
[0122] As shown in FIG. 14, device 1400 may include a housing with a front 1401 and a back 1402. Device 1400 includes a display 1404, an input / output (I / O) device 1406, a camera 1421, a camera 1422, and an integrated antenna 1408. In some implementations, device 1400 does not include cameras 1421 and 1422, and device 1400 attains input image data (e.g., any input image data discussed herein) from another device. Device 1400 also may include navigation features 1412. I / O device 1406 may include any suitable I / O device for entering information into a mobile computing device. Examples for I / O device 1406 may include an alphanumeric keyboard, a numeric keypad, a touch pad, input keys, buttons, switches, microphones, speakers, voice recognition device and software, and so forth. Information also may be entered into device 1400 by way of microphone 1414, or may be digitized by a voice recognition device. As shown, device 1400 may include cameras 1421, 1422, and a flash 1410 integrated into back 1402 (or elsewhere) of device 1400. In other examples, cameras 1421, 1422, and flash 1410 may be integrated into front 1401 of device 1400 or both front and back sets of cameras may be provided.
[0123] Various implementations may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth) , integrated circuits, application specific integrated circuits (ASIC) , programmable logic devices (PLD) , digital signal processors (DSP) , field programmable gate array (FPGA) , logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API) , instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an implementation is implemented using hardware elements and / or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
[0124] One or more aspects of at least one implementation may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as IP cores may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
[0125] While certain features set forth herein have been described with reference to various implementations, this description is not intended to be construed in a limiting sense. Hence, various modifications of the implementations described herein, as well as other implementations, which are apparent to persons skilled in the art to which the present disclosure pertains are deemed to lie within the spirit and scope of the present disclosure.
[0126] The following examples pertain to additional implementations.
[0127] In an example 1, a method of image processing, comprising: receiving initial convolutional kernel coefficients to train a neural network with at least one convolutional layer; converting the coefficients into frequency domain kernels; and generating, by processor circuitry, at least one convolutional kernel having convolutional coefficients generated by modifying the frequency domain kernels while in a frequency domain.
[0128] In an example 2, the subject matter of example 1, wherein each frequency domain kernel is associated with a different frequency.
[0129] In an example 3, the subject matter of example 1 or 2, wherein frequency components of the frequency domain kernels are modified so that low and high frequency image data is used more evenly throughout iterations of training of the neural network compared to iterations of training in a spatial domain.
[0130] In an example 4, the subject matter of any one of examples 1-3, wherein discrete cosine transform (DCT) is applied to the initial convolutional kernel coefficients to generate the frequency domain kernels.
[0131] In an example 5, the subject matter of example 4, wherein the DCT is orthogonalized DCT-II.
[0132] In an example 6, he subject matter of any one of examples 1-5, wherein values of the initial convolutional kernel coefficients are selected randomly.
[0133] In an example 7, the subject matter of any one of examples 1 to 6, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to the frequency domain kernels.
[0134] In an example 8, the subject matter of example 7, wherein at least one re-parameterization weight is applied to each frequency component in an individual frequency domain kernel.
[0135] In an example 9, the subject matter of example 7, wherein the re-parameterization weights are initially determined randomly.
[0136] In an example 10, the subject matter of example 7, wherein the re-parameterization weights are adjusted at iterations during training of the neural network.
[0137] In an example 11, a computer-implemented system, comprising: memory; and processor circuitry communicatively coupled to the memory, the processor circuitry being arranged to operate by: receiving image data; inputting a version of the image data into a neural network having at least one convolutional layer; and applying at least one convolutional kernel to a version of the image data at the at least one convolutional layer, wherein the at least one convolutional kernel has coefficients generated by modifying frequency components of frequency domain kernels in a frequency domain.
[0138] In an example 12, the subject matter of example 11, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to individual frequency domain kernels; and combining the weighted frequency domain kernels to form a single convolutional kernel.
[0139] In an example 13, the subject matter of example 12, wherein the combining comprises summing frequency components of multiple weighted frequency domain kernels, and summing the frequency components of the same coordinates within the multiple weighted frequency domain kernels.
[0140] In an example 14, the subject matter of example 12, wherein the frequency domain kernels have frequency components modified by re-parameterization weights to increase handling of high frequency image data in earlier iterations used to train the neural network.
[0141] In an example 15, the subject matter of any one of examples 14, wherein the re-parameterization weights are initialized randomly and modified at iterations of training the neural network.
[0142] In an example 16, at least one non-transitory machine readable medium comprising a plurality of instructions that, in response to being executed on a computing device, cause the computing device to operate by: receiving initial convolutional kernel coefficients to train a neural network with at least one convolutional layer; converting the coefficients into frequency domain kernels; and generating, by processor circuitry, at least one convolutional kernel having convolutional coefficients generated by modifying the frequency domain kernels while in a frequency domain.
[0143] In an example 17, the subject matter of example 16, wherein frequency components of the frequency domain kernels are modified in the frequency domain.
[0144] In an example 18, the subject matter of example 16 or 17, wherein frequency components of the frequency domain kernels are normalized.
[0145] In an example 19, the subject matter of any one of examples 16-18, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to individual frequency domain kernels.
[0146] In an example 20, the subject matter of example 19, wherein the re-parameterization weights are arranged to generate a more even temporal distribution of handling high and low frequency image data among iterations used to train the neural network.
[0147] In one example, a device, apparatus, or system includes means to perform a method according to any one of the above implementations.
[0148] In another example, at least one machine readable medium includes a plurality of instructions that in response to being executed on a computing device, cause the computing device to perform a method according to any one of the above implementations.
[0149] It will be recognized that the implementations are not limited to the implementations so described, but can be practiced with modification and alteration without departing from the scope of the appended claims. For example, the above implementations may include specific combination of features. However, the above implementations are not limited in this regard and, in various implementations, the above implementations may include the undertaking only a subset of such features, undertaking a different order of such features, undertaking a different combination of such features, and / or undertaking additional features than those features explicitly listed. The scope of the implementations should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims
1.A method of image processing, comprising:receiving initial convolutional kernel coefficients to train a neural network with at least one convolutional layer;converting the coefficients into frequency domain kernels; andgenerating, by processor circuitry, at least one convolutional kernel having convolutional coefficients generated by modifying the frequency domain kernels while in a frequency domain.2.The method of claim 1, wherein each frequency domain kernel is associated with a different frequency.3.The method of claim 1 or 2, wherein frequency components of the frequency domain kernels are modified so that low and high frequency image data is used more evenly throughout iterations of training of the neural network compared to iterations of training in a spatial domain.4.The method of any one of claims 1-3, wherein discrete cosine transform (DCT) is applied to the initial convolutional kernel coefficients to generate the frequency domain kernels.5.The method of claim 4, wherein the DCT is orthogonalized DCT-II.6.The method of any one of claims 1 to 5, wherein values of the initial convolutional kernel coefficients are selected randomly.7.The method of claim 1, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to the frequency domain kernels.8.The method of claim 7, wherein at least one re-parameterization weight is applied to each frequency component in an individual frequency domain kernel.9.The method of claim 7, wherein the re-parameterization weights are initially determined randomly.10.The method of claim 7, wherein the re-parameterization weights are adjusted at iterations during training of the neural network.11.A computer-implemented system, comprising:memory; andprocessor circuitry communicatively coupled to the memory, the processor circuitry being arranged to operate by:receiving image data;inputting image data into a neural network having at least one convolutional layer; andapplying at least one convolutional kernel to the image data at the at least one convolutional layer,wherein the at least one convolutional kernel has coefficients generated by modifying frequency components of frequency domain kernels in a frequency domain.12.The system of claim 11, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to individual frequency domain kernels; and combining the weighted frequency domain kernels to form a single convolutional kernel.13.The system of claim 12, wherein the combining comprises summing frequency components of multiple weighted frequency domain kernels, and summing the frequency components of the same coordinates within the multiple weighted frequency domain kernels.14.The system of claim 12, wherein the frequency domain kernels have frequency components modified by re-parameterization weights to increase handling of high frequency image data in earlier iterations used to train the neural network.15.The system of claim 14, wherein the re-parameterization weights are initialized randomly and modified at iterations of training the neural network.16.At least one non-transitory machine readable medium comprising a plurality of instructions that, in response to being executed on a computing device, cause the computing device to operate by:receiving initial convolutional kernel coefficients to train a neural network with at least one convolutional layer;converting the coefficients into frequency domain kernels; andgenerating, by processor circuitry, at least one convolutional kernel having convolutional coefficients generated by modifying the frequency domain kernels while in a frequency domain.17.The medium of claim 16, wherein frequency components of the frequency domain kernels are modified in the frequency domain.18.The medium of claim 16, wherein frequency components of the frequency domain kernels are normalized.19.The medium of claim 16, wherein the generating comprises generating weighted frequency domain kernels comprising applying re-parameterization weights to individual frequency domain kernels.20.The medium of claim 19, wherein the re-parameterization weights are arranged to generate a more even temporal distribution of handling high and low frequency image data among iterations used to train the neural network.
Citation Information
Patent Citations
Depth convolution nerve network compression and acceleration scheme based on DCT conversion
CN106557812A
Convolutional neural network acceleration design method based on fast Fourier transform
CN112364989A
Method for the FPGA-Based Long Range Multi-View Stereo with Differential Image Rectification
US20190098283A1