Neural network based residual coding and prediction for predictive coding
AssigneeApple Inc.
InventorsJiefu ZHAI, Xingyu ZHANG, Xiaosong ZHOU, Jun XIN, Hsi-Jung WU, Yeping SU
Life of this patent
Estimating the term…
Abstract
Systems and methods disclosed for video compression, utilizing neural networks for predictive video coding. Processes employed combine multiple banks of neural networks with codec system components to carry out the coding and decoding of video data.
Claims23
-29. (canceled)
A method for coding a video stream, comprising:
- for a pixel block of an input frame to be coded, generating a pixel block prediction based on input data derived from reference data of previously-coded data of the video stream;
- generating a residual block representing a difference between the pixel block and the pixel block prediction;
- coding the residual block;
- and
- packing the coded residual block and associated coding parameters in a coded video stream;
- wherein at least one of the generating a pixel block prediction and the coding the residual block is performed using a plurality of neural networks banks.
The method of claim 0, wherein each bank in the plurality of neural-network banks produces a corresponding bank output with a corresponding likelihood, and a mixer produces an output for the plurality of neural network banks based on a combination of the bank outputs and their corresponding likelihoods.
The method of claim 0, wherein the combination of the bank outputs is a linear combination of the bank outputs weighted by their corresponding likelihoods.
The method of claim 0, wherein each bank output is a pixel block prediction, and the likelihoods are based on a prediction error of the corresponding pixel block prediction.
The method of claim 0, wherein the associated coding parameters include an indication of which of the plurality of the neural network banks were used by the mixer and their corresponding likelihoods.
The method of claim 0, wherein each of the plurality of neural network banks are characterized by different activation functions used in the respective neural network banks.
The method of claim 0, wherein each of the plurality of neural network banks are characterized by neural network weights that are trained with different categories of training data from others in the plurality of neural network banks.
The method of claim 0, wherein each of the plurality of neural network banks are characterized a different training cost function from others in the plurality of neural network banks.
The method of claim 0, wherein the plurality of neural network banks are trained to operate at a different bitrates from each other.
The method of claim 0, wherein the plurality of neural network banks are trained to operate with a different cost function from each other.
A method for decoding a coded video stream, comprising:
- for coded residual block to be decoded, extracting the coded residual block and associated coding parameters from the coded video stream;
- decoding the coded residual block, based on the coding parameters, to generate a decoded residual block;
- generating a pixel block prediction based reference data from previously decoded data of the coded video stream;
- and
- generating a reconstructed pixel block based on a sum of the decoded residual block and the pixel block prediction;
- wherein at least one of the generating a pixel block prediction and the decoding the coded residual block is performed using a plurality of neural networks banks.
The method of claim 0, wherein each bank in the plurality of neural-network banks produces a corresponding bank output with a corresponding likelihood, and a mixer produces an output for the plurality of neural network banks based on a combination of the bank outputs and their corresponding likelihoods.
The method of claim 0, wherein the combination of the bank outputs is a linear combination of the bank outputs weighted by their corresponding likelihoods.
The method of claim 0, wherein each bank output is a pixel block prediction, and the likelihoods are based on a prediction error of the corresponding pixel block prediction.
The method of claim 0, wherein the associated coding parameters include an indication of which of the plurality of the neural network banks were used by the mixer and their corresponding likelihoods.
The method of claim 0, wherein each of the plurality of neural network banks are characterized by different activation functions used in the respective neural network banks.
The method of claim 0, wherein each of the plurality of neural network banks are characterized by neural network weights that are trained with different categories of training data from others in the plurality of neural network banks.
The method of claim 0, wherein each of the plurality of neural network banks are characterized a different training cost function from others in the plurality of neural network banks.
The method of claim 0, wherein the plurality of neural network banks are trained to operate at a different bitrates from each other.
The method of claim 0, wherein the plurality of neural network banks are trained to operate with a different cost function from each other.
A computer system for decoding a coded video stream, comprising:
- at least one processor;
- at least one memory comprising instructions configured to be executed by the at least one processor to perform a method comprising:
- for coded residual block to be decoded, extracting the coded residual block and associated coding parameters from the coded video stream;
- decoding the coded residual block, based on the coding parameters, to generate a decoded residual block;
- generating a pixel block prediction based reference data from previously decoded data of the coded video stream;
- and
- generating a reconstructed pixel block based on a sum of the decoded residual block and the pixel block prediction;
- wherein at least one of the generating a pixel block prediction and the decoding the coded residual block is performed using a plurality of neural networks banks.
A storage media for storing computer instructions that, when executed by a processor, cause decoding of a coded video stream, including:
- for coded residual block to be decoded, extracting the coded residual block and associated coding parameters from the coded video stream;
- decoding the coded residual block, based on the coding parameters, to generate a decoded residual block;
- generating a pixel block prediction based reference data from previously decoded data of the coded video stream;
- and
- generating a reconstructed pixel block based on a sum of the decoded residual block and the pixel block prediction;
- wherein at least one of the generating a pixel block prediction and the decoding the coded residual block is performed using a plurality of neural networks banks.
Dependencies are inferred from the claim text.