Video encoding method and device

By introducing a hybrid expert network based on quantization parameters in the video encoding technology, and using the combination of gated weight optimization expert modules, the problem of insufficient image quality in the prior art is solved, and a more efficient video encoding effect is achieved.

CN114982241BActive Publication Date: 2025-04-15TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180008661.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-09-15
Filing Date
2021-09-24
Publication Date
2025-04-15
Estimated Expiration
2041-09-24

AI Technical Summary

Technical Problem

The existing video encoding technology has shortcomings in improving image quality, especially when processing complex video content, it is difficult to effectively use quantitative parameters to optimize the encoding effect.

Method used

A hybrid expert network based on quantization parameters is adopted to control the weighted combination of expert modules by adjusting the gate weights to generate optimized output image blocks, thereby improving the image quality of video encoding.

Benefits of technology

Through adaptive aptive filtering technology, the image quality of video encoding is significantly improved, encoding efficiency is enhanced, and distortion is reduced. It is suitable for various video compression standards.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114982241B_ABST
    Figure CN114982241B_ABST
Patent Text Reader

Abstract

Aspects of the present disclosure provide methods and apparatus for video processing. In some examples, the apparatus for video processing includes a processing circuit. The processing circuit determines a gating weight associated with an expert module based at least in part on a quantization parameter QP value. The expert module is configured to process an input block, the input block comprising an image block reconstructed based on the QP value. Then, the processing circuit weights the expert module based on the gating weight to generate an output image block corresponding to the image block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Reference Merge

[0002] This application claims priority to U.S. Patent Application No. 17 / 447,806, filed on September 15, 2021, entitled “Video Coding Method and Apparatus.” This U.S. Patent Application claims priority to U.S. Provisional Application No. 63 / 126,186, filed on December 16, 2020, entitled “Quantization Parameter Adaptive Hybrid Expert Filter for Video Processing.” The entire contents of the above priority application are hereby incorporated by reference into this application. Technical Field

[0003] The present application relates to video coding and decoding technology, and in particular to a neural network processing technology for improving image quality in video coding and decoding. Background Art

[0004] The background description provided herein is intended to present the background of the present disclosure as a whole. The extent to which the work of the presently named inventors described in the background section and various aspects of this specification is performed does not indicate that it is prior art at the time of filing this disclosure, and it is never explicitly or implicitly admitted that it is prior art to the present disclosure.

[0005] Video encoding and decoding are made possible by inter-frame prediction techniques with motion compensation. An uncompressed digital video may include a series of pictures, each picture having spatial dimensions of, for example, 1920×1080 luminance samples and associated chrominance samples. The series of pictures has a fixed or variable picture rate (also informally referred to as a frame rate), for example, 60 pictures per second or 60Hz. Uncompressed video has specific bit rate requirements. For example, 1080p60 4:2:0 video (1920×1080 luminance sample resolution, 60Hz frame rate) with 8 bits per sample requires close to 1.5Gbit / s bandwidth. One hour of such video requires more than 600GB of storage space.

[0006] One goal of video encoding and decoding is to reduce redundancy in the input video signal through compression. Video compression can help reduce the bandwidth and / or storage space requirements mentioned above, in some cases by two or more orders of magnitude. Both lossless and lossy compression, as well as combinations of the two, can be used. Lossless compression refers to techniques that reconstruct an exact replica of the original signal from the compressed original signal. When lossy compression is used, the reconstructed signal may not be exactly the same as the original signal, but the distortion between the original and the reconstructed signal is small enough that the reconstructed signal is usable for the intended application. Lossy compression is widely used for video. The amount of distortion allowed depends on the application. For example, users of some consumer streaming applications can tolerate higher distortion than users of television applications. The achievable compression ratio reflects that higher allowed / tolerable distortion produces higher compression ratios.

[0007] Video encoders and decoders may utilize several broad categories of techniques including, for example: motion compensation, transforms, quantization, and entropy coding.

[0008] Video codec techniques may include known intra-frame coding techniques. In intra-frame coding, sample values ​​are represented without reference to samples or other data of previously reconstructed reference pictures. In some video codecs, pictures are spatially subdivided into blocks of samples. When all sample blocks are encoded in intra-frame mode, the picture may be an intra-frame picture. Intra-frame pictures and their derivatives (e.g., independent decoder refresh pictures) may be used to reset decoder states, and may therefore be used as the first picture in a coded video bitstream and video session, or as a still image. Samples of intra-frame blocks may be used for transformation, and transform coefficients may be quantized before entropy coding. Intra-frame prediction may be a technique for minimizing sample values ​​in a pre-transform domain. In some cases, the smaller the DC value after transformation, and the smaller the AC coefficient, the fewer bits are needed to represent the block after entropy coding at a given quantization step size.

[0009] Conventional intra-frame coding, as known from coding techniques such as MPEG-2, does not use intra-frame prediction. However, some newer video compression techniques include techniques that attempt to derive data blocks from, for example, surrounding sample data and / or metadata, which are obtained during encoding / decoding of spatially neighboring blocks and before the decoding order. Such techniques have come to be known as "intra-frame prediction" techniques. It should be noted that, at least in some cases, intra-frame prediction uses only reference data of the current picture being reconstructed, and not reference data of reference pictures.

[0010] There can be many different forms of intra-frame prediction. When more than one such technique can be used in a given video coding technique, the techniques used can be encoded as intra-frame prediction modes. In some cases, a mode can have sub-modes and / or parameters, and these modes can be encoded separately or contained in a mode codeword. Which codeword is used for a given mode / sub-mode / parameter combination affects the coding efficiency gain through intra-frame prediction, and therefore the entropy coding technique used to convert the codeword into a bitstream.

[0011] H.264 introduced an intra prediction mode, which was improved in H.265 and further improved in newer coding techniques such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). A prediction block can be formed by using neighboring sample values ​​belonging to samples that are already available. The sample values ​​of neighboring samples are copied to the prediction block in a certain direction. A reference to the direction used can be encoded in the bitstream or can be predicted itself.

[0012] Reference Figure 1A , a subset of nine known prediction directions from the 33 possible prediction directions of H.265 (corresponding to the 33 angular modes in the 35 intra modes) is depicted at the lower right. The point (101) where the arrows converge represents the sample being predicted. The arrows represent the direction in which the sample is being predicted. For example, arrow (102) indicates that sample (101) is predicted based on one or more samples at the upper right that are at an angle of 45 degrees to the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted based on one or more samples at the lower left that are at an angle of 22.5 degrees to the horizontal.

[0013] Still reference Figure 1A , a square block (104) including 4×4 samples is shown in the upper left (indicated by the thick dashed line). The square block (104) includes 16 samples, each of which is labeled with "S" and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (starting from the top) and the first sample in the X dimension (starting from the left). Similarly, sample S44 is the fourth sample in the block (104) in both the Y dimension and the X dimension. Since the block is a 4×4 size sample, S44 is located in the lower right corner. Reference samples following a similar numbering scheme are also shown. Reference samples are labeled with "R" and their Y position (e.g., row index) and X position (e.g., column index) relative to the block (104). In H.264 and H.265, the prediction samples are adjacent to the block being reconstructed, so there is no need to use negative values.

[0014] Intra-frame prediction can be performed by copying reference sample values ​​from neighboring samples known by the signaled prediction direction. For example, assume that the encoded video bitstream includes signaling that indicates, for the block, a prediction direction consistent with arrow (102), i.e., the samples are predicted based on one or more prediction samples to the upper right at a 45 degree angle to the horizontal. In this case, samples S41, S32, S23, and S14 are predicted based on the same reference sample R05. Sample S44 is then predicted based on reference sample R08.

[0015] In some cases, the values ​​of multiple reference samples may be combined, such as by interpolation, to calculate a reference sample, particularly when the direction is not divisible by 45 degrees.

[0016] As video coding techniques have developed, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. This increased to 33 in H.265 (2013), and in JEM / VVC / BMS, at the time of this application, up to 65 directions are supported. Experiments have been conducted to identify the most likely directions, and certain techniques in entropy coding are used to represent those more likely directions with a small number of bits, accepting a certain cost for less likely directions. In addition, the direction itself can sometimes be predicted based on the neighboring directions used in adjacent, already decoded blocks.

[0017] Figure 1B A schematic diagram (180) depicting 65 intra prediction directions according to JEM is shown to illustrate that the number of prediction directions increases over time.

[0018] The mapping of intra-prediction bits representing directions in the coded video bitstream can vary from one video coding technique to another, and can range, for example, from a simple direct mapping of prediction directions to codewords for intra-prediction modes to complex adaptive schemes involving most likely modes and similar techniques. However, in all cases, there may be certain directions in the video content that are statistically less likely than other directions. Since the goal of video compression is to reduce redundancy, in well-functioning video coding techniques, those less likely directions will be represented using a larger number of bits than more likely directions.

[0019] Motion compensation may be a lossy compression technique and may involve a technique where a block of sample data from a previously reconstructed picture or part thereof (reference picture) is used to predict a newly reconstructed picture or part of a picture after being spatially shifted in a direction indicated by a motion vector (MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions: an X dimension and a Y dimension, or three dimensions, with the third dimension being used to indicate the reference picture in use (the latter may indirectly be a temporal dimension).

[0020] In some video compression techniques, the MV applicable to a certain sample data region can be predicted based on other MVs, for example, based on the MV related to another sample data region that is spatially adjacent to the region being reconstructed and whose decoding order precedes the MV. This can substantially reduce the amount of data required to encode the MV, thereby eliminating redundancy and enhancing compression. MV prediction can be performed efficiently, for example, because when encoding an input video signal derived from a camera (called natural video), there is a statistical likelihood that multiple regions larger than the region to which a single MV can be applied move in similar directions, so in some cases similar MVs derived from multiple MVs of adjacent regions can be used for MV prediction. This results in the MV found for a given region being similar or identical to the MV predicted from the surrounding MVs, and after entropy coding, it can be represented with fewer bits than the number of bits used to encode the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, MV prediction itself can be lossy, for example, because there will be rounding errors when calculating predictors from several surrounding MVs. Summary of the invention

[0021] Various aspects of the present invention provide methods and apparatus for video processing.

[0022] In some embodiments, a video processing method comprises the following steps: a processing circuit determines a gating weight associated with an expert module based at least in part on a quantization parameter QP value, the expert module being configured to process an input block, the input block comprising an image block reconstructed based on the QP value; and the processing circuit weights the expert module based on the gating weight to generate an output image block corresponding to the image block. According to the method of the present invention, adaptive filtering in a hybrid video coding technique can use a hybrid expert network based on quantization parameter control to improve picture quality.

[0023] In some embodiments, the method further comprises the following steps: The processing circuit combines the module outputs from the expert modules based on the gating weights to generate the output image block corresponding to the image block.

[0024] In some embodiments, the method further comprises the following steps: the processing circuit determines a combined expert module that combines the expert modules based on the gating weights.

[0025] In some embodiments, the method further comprises the following steps: determining the gating weight based on the quantization parameter and the input block including the image block and neighboring pixels of the image block.

[0026] In some embodiments, the method further comprises the following steps: Determining the gating weights using at least one convolutional neural network layer.

[0027] In some embodiments, the method further comprises the steps of: activating a subset of expert modules having non-zero gating weights; and combining module outputs of the subset of expert modules based on the non-zero gating weights associated with the subset of expert modules to generate the output image block corresponding to the image block.

[0028] In some embodiments, the method further comprises the following steps: In response to the input block including the image block, generating a module output by an expert module having a convolutional neural network.

[0029] In some embodiments, the expert module is a finite impulse response (FIR) filter. The method further comprises the following steps: determining a combined FIR filter that combines the FIR filters based on the gating weights; and applying the combined FIR filter to the input block including the image block to generate the output image block.

[0030] In some embodiments, the method further comprises the following steps: determining the gating weights in a deterministic manner, the output image block being generated in a loop associated with a reference picture.

[0031] In some embodiments, the method further comprises the following steps: generating the gating weights in a non-deterministic manner, the output image block being generated out of a loop associated with a reference picture.

[0032] In some embodiments, an apparatus for video processing includes a processing circuit. The processing circuit determines a gating weight associated with an expert module based at least in part on a quantization parameter (QP) value. The expert module is configured to process an input block, the input block comprising an image block reconstructed based on the QP value. The processing circuit then subsequently weights the expert module based on the gating weight to generate an output image block corresponding to the image block.

[0033] In some embodiments, the processing circuit combines module outputs from the expert modules based on the gating weights to generate the output image block corresponding to the image block.

[0034] In some embodiments, the processing circuit determines a combined expert module that gates the expert modules based on the gating weights.

[0035] In some embodiments, the processing circuit determines the gating weight based on the quantization parameter and the input block including the image block and neighboring pixels of the image block.

[0036] In some embodiments, the processing circuit determines the gating weights using at least one convolutional neural network layer.

[0037] In some embodiments, the processing circuit activates a subset of expert modules having non-zero gating weights and combines module outputs of the subset of expert modules based on the gating weights associated with the subset of expert modules to generate the output image block corresponding to the image block.

[0038] In some embodiments, in response to the input block including the image block, a module output is generated by an expert module having a convolutional neural network.

[0039] In some embodiments, the expert module is a finite impulse response (FIR) filter, and the processing circuit can determine a combined FIR filter that combines the FIR filters based on the gating weights, and apply the combined FIR filter to the input block including the image block to generate the output image block.

[0040] In some embodiments, the processing circuit determines the gating weights in a deterministic manner, and the output image block is generated in a loop associated with a reference picture.

[0041] In some embodiments, the processing circuit generates the gating weights in a non-deterministic manner, and the output image block is generated out of a loop associated with a reference picture.

[0042] Various aspects of the present invention also provide a non-transitory computer-readable storage medium storing instructions, which, when executed by a computer, cause the computer to perform the method for video processing. BRIEF DESCRIPTION OF THE DRAWINGS

[0043] Further features, nature, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings.

[0044] Figure 1A is a schematic diagram of an exemplary subset of intra prediction modes.

[0045] Figure 1B is a schematic diagram of exemplary intra prediction directions.

[0046] Figure 2 Schematic diagram of the current block and its surrounding spatial merging candidates in an example.

[0047] Figure 3 is a schematic diagram of a simplified block diagram of a communication system according to an embodiment.

[0048] Figure 4 is a schematic diagram of a simplified block diagram of a communication system according to another embodiment.

[0049] Figure 5 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.

[0050] Figure 6 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.

[0051] Figure 7 A block diagram of an encoder according to another embodiment is shown.

[0052] Figure 8 A block diagram of a decoder according to another embodiment is shown.

[0053] Fig. 9 A block diagram of a filter unit in some embodiments is shown.

[0054] Fig.10 An example of a sparse gated Mixture of Experts (MoE) network is shown.

[0055] Fig.11 A flow chart outlining the data processing process of the MoE network is shown.

[0056] Fig.12 Examples of adaptive MoE filters for image and / or video processing are shown.

[0057] Fig.13Examples of neural network structures in some embodiments are shown.

[0058] Fig.14 A diagram showing an expert module in some embodiments.

[0059] Fig.15 A flow chart outlining the process of processing image data through an adaptive MoE filter in some embodiments is shown.

[0060] Fig.16 Another flow chart outlining the process of processing image data through an adaptive MoE filter is shown.

[0061] Fig.17 Examples of adaptive MoE filters for image and / or video processing are shown.

[0062] Fig.18 A flowchart outlining an example of the process is shown.

[0063] Fig.19 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION

[0064] Various MV prediction mechanisms are described in H.265 / HEVC (ITU-T Recommendation H.265, "High Efficiency Video Coding (HEVC)", December 2016). Among the various MV prediction mechanisms provided by H.265, this application describes a technique referred to below as "spatial merging".

[0065] Please refer to Figure 2 , the current block (201) includes samples that have been discovered by the encoder during the motion search process, and the samples can be predicted based on the previous block of the same size that has generated a spatial offset. In addition, the MV can be derived from metadata associated with one or more reference pictures instead of encoding the MV directly. For example, the MV is derived from the metadata of the nearest reference picture (in decoding order) using the MV associated with any of the five surrounding samples A0, A1 and B0, B1, B2 (corresponding to 202 to 206 respectively). In H.265, MV prediction can use the prediction value of the same reference picture that the neighboring blocks are also using.

[0066] Figure 3 A simplified block diagram of a communication system (300) according to an embodiment disclosed in the present application is shown. The communication system (300) includes a plurality of terminal devices, which can communicate with each other through, for example, a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and a terminal device (320) interconnected through the network (350). Figure 3In an embodiment, a first pair of terminal devices (310) and terminal devices (320) perform unidirectional data transmission. For example, the terminal device (310) may encode video data (e.g., a video picture stream collected by the terminal device (310)) for transmission to the terminal device (320) via the network (350). The encoded video data is transmitted in the form of one or more encoded video bitstreams. The terminal device (320) may receive the encoded video data from the network (350), decode the encoded video data to recover the video data, and display the video picture based on the recovered video data. Unidirectional data transmission is more common in applications such as media services.

[0067] In another embodiment, the communication system (300) includes a second pair of terminal devices (330) and terminal devices (340) that perform bidirectional transmission of encoded video data, which can occur, for example, during a video conference. For bidirectional data transmission, each of the terminal devices (330) and the terminal devices (340) can encode video data (e.g., a video picture stream collected by the terminal device) for transmission to the other terminal device (330) and the terminal device (340) through the network (350). Each of the terminal devices (330) and the terminal devices (340) can also receive the encoded video data transmitted by the other terminal device (330) and the terminal device (340), and can decode the encoded video data to restore the video data, and can display the video picture on an accessible display device based on the restored video data.

[0068] exist Figure 2 In the embodiment of the present invention, the terminal device (310), the terminal device (320), the terminal device (330) and the terminal device (340) may be a server, a personal computer and a smart phone, but the principles disclosed in the present application may not be limited thereto. The embodiments disclosed in the present application are applicable to laptop computers, tablet computers, media players and / or dedicated video conferencing equipment. The network (350) represents any number of networks that transmit encoded video data between the terminal device (310), the terminal device (320), the terminal device (330) and the terminal device (340), including, for example, wired (wired) and / or wireless communication networks. The communication network (350) may exchange data in circuit switching and / or packet switching channels. The network may include a telecommunications network, a local area network (LAN), a wide area network and / or the Internet. For the purposes of the present application, unless explained below, the architecture and topology of the network (350) may be irrelevant to the operation disclosed in the present application.

[0069] As an example, Figure 4The video encoder and the video decoder are shown in a streaming environment. The subject matter disclosed in the present application is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storing compressed video on digital media including CDs, digital video discs (DVDs), memory sticks, etc.

[0070] The streaming system may include an acquisition subsystem (413), which may include a video source (401) such as a digital camera, which creates an uncompressed video picture stream (402). In an embodiment, the video picture stream (402) includes samples captured by a digital camera. Compared to the encoded video data (404) (or the encoded video bitstream), the video picture stream (402) is depicted as a thick line to emphasize the high data volume of the video picture stream, and the video picture stream (402) can be processed by an electronic device (420), which includes a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination of hardware and software to implement or implement various aspects of the disclosed subject matter as described in more detail below. Compared to the video picture stream (402), the encoded video data (404) (or the encoded video bitstream (404)) is depicted as a thin line to emphasize the lower amount of data of the encoded video data (404) (or the encoded video bitstream (404)), which can be stored on the streaming server (405) for future use. One or more streaming client subsystems, such as Figure 3 The client subsystem (406) and the client subsystem (408) in the video transmission system can access the streaming server (405) to retrieve the copy (407) and the copy (409) of the encoded video data (404). The client subsystem (406) may include, for example, a video decoder (410) in the electronic device (430). The video decoder (410) decodes the incoming copy (407) of the encoded video data and generates an output video picture stream (411) that can be presented on a display (412) (e.g., a display screen) or another presentation device (not depicted). In some streaming transmission systems, the encoded video data (404), the video data (407), and the video data (409) (e.g., a video bitstream) can be encoded according to certain video encoding / compression standards. Examples of these standards include ITU-T H.265. In an embodiment, the video coding standard under development is informally referred to as VVC, and the present application can be used in the context of the VVC standard.

[0071] It should be noted that the electronic device (420) and the electronic device (430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may also include a video encoder (not shown).

[0072] Figure 5 is a block diagram of a video decoder (510) according to an embodiment disclosed in the present application. The video decoder (510) may be provided in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) may be used to replace Figure 4 A video decoder (510) of an embodiment.

[0073] The receiver (531) may receive one or more encoded video sequences to be decoded by the video decoder (510); in the same or another embodiment, one encoded video sequence is received at a time, wherein the decoding of each encoded video sequence is independent of the other encoded video sequences. The encoded video sequence may be received from a channel (501), which may be a hardware / software link to a storage device storing the encoded video data. The receiver (531) may receive the encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams that may be forwarded to their respective consuming entities (not shown). The receiver (531) may separate the encoded video sequence from the other data. To prevent network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter referred to as "parser (520)"). In some applications, the buffer memory (515) is part of the video decoder (510). In other cases, the buffer memory (515) may be provided external to the video decoder (510) (not shown). In other cases, a buffer memory (not shown) is provided outside the video decoder (510) to prevent network jitter, for example, and another buffer memory (515) may be configured inside the video decoder (510) to handle broadcast timing, for example. When the receiver (531) receives data from a storage / forward device with sufficient bandwidth and controllability or from an isochronous network, it may not be necessary to configure the buffer memory (515), or the buffer memory may be made smaller. Of course, in order to use on a service packet network such as the Internet, a buffer memory (515) may also be required, and the buffer memory may be relatively large and have an adaptive size, and may be at least partially implemented in an operating system or a similar element (not shown) outside the video decoder (510).

[0074] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from the encoded video sequence. The types of symbols include information used to manage the operation of the video decoder (510) and potential information used to control a display device such as a display device (512) (e.g., a display screen) that is not part of the electronic device (530) but can be coupled to the electronic device (530), such as Figure 5 As shown in . The control information for the display device may be a parameter set fragment (not indicated) of Supplementary Enhancement Information (SEI) or Video Usability Information (VUI). The parser (520) may parse / entropy decode the received coded video sequence. The encoding of the coded video sequence may be performed according to a video coding technique or standard, and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and the like. The parser (520) may extract a subgroup parameter set for at least one subgroup of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroup may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CU), blocks, Transform Units (TUs), Prediction Units (PUs), and the like. The parser (520) may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, MVs, and so on.

[0075] The parser (520) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515), thereby creating symbols (521).

[0076] Depending on the type of coded video picture or portion of coded video picture (e.g., inter- and intra-pictures, inter- and intra-blocks) and other factors, the reconstruction of the symbol (521) may involve multiple different units. Which units are involved and how they are involved may be controlled by subgroup control information parsed by the parser (520) from the coded video sequence. For the sake of brevity, such subgroup control information flow between the parser (520) and the multiple units below is not described.

[0077] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually subdivided into several functional units as described below. In a practical embodiment operating under commercial constraints, many of these units interact closely with each other and may be at least partially integrated with each other. However, for the purpose of describing the disclosed subject matter, the conceptual subdivision into the following functional units is appropriate.

[0078] The first unit is a sealer / inverse transform unit (551). The sealer / inverse transform unit (551) receives quantized transform coefficients as symbols (521) from the parser (520) and control information, including which transform method to use, block size, quantization factor, quantization scaling matrix, etc. The sealer / inverse transform unit (551) can output a block including sample values, which can be input into an aggregator (555).

[0079] In some cases, the output samples of the scaler / inverse transform unit (551) may belong to an intra-coded block; that is, a block that does not use predictive information from a previously reconstructed picture, but may use predictive information from a previously reconstructed portion of the current picture. Such predictive information may be provided by an intra-prediction unit (552). In some cases, the intra-prediction unit (552) generates surrounding blocks of the same size and shape as the block being reconstructed using reconstructed information extracted from a current picture buffer (558). For example, the current picture buffer (558) buffers a partially reconstructed current picture and / or a fully reconstructed current picture. In some cases, the aggregator (555) adds the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551) on a per-sample basis.

[0080] In other cases, the output samples of the scaler / inverse transform unit (551) may belong to an inter-frame coded and potentially motion compensated block. In this case, the motion compensated prediction unit (553) may access the reference picture memory (557) to extract samples for prediction. After the extracted samples are motion compensated according to the symbols (521), these samples may be added to the output of the scaler / inverse transform unit (551) (in this case referred to as residual samples or residual signals) by the aggregator (555) to generate output sample information. The acquisition of prediction samples by the motion compensated prediction unit (553) from the address in the reference picture memory (557) may be controlled by the MV, and the MV is provided to the motion compensated prediction unit (553) in the form of the symbols (521), for example, including X, Y and reference picture components. Motion compensation may also include interpolation of sample values ​​extracted from the reference picture memory (557) when using sub-sample accurate motion vectors, MV prediction mechanisms, etc.

[0081] The output samples of the aggregator (555) may be employed by various loop filtering techniques in a loop filter unit (556). The video compression techniques may include in-loop filter techniques controlled by parameters included in the encoded video sequence (also referred to as the encoded video bitstream) and available to the loop filter unit (556) as symbols (521) from the parser (520). However, in other embodiments, the video compression techniques may also be responsive to meta-information obtained during decoding of a previous (in decoding order) portion of an encoded picture or encoded video sequence, as well as to previously reconstructed and loop filtered sample values.

[0082] The output of the loop filter unit (556) may be a sample stream that may be output to a display device (512) and stored in a reference picture memory (557) for subsequent inter-picture prediction.

[0083] Once fully reconstructed, certain coded pictures may be used as reference pictures for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed, and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) may become part of the reference picture memory (557), and a new current picture buffer may be reallocated before starting to reconstruct a subsequent coded picture.

[0084] The video decoder (510) may perform decoding operations according to a predetermined video compression technique, such as in the ITU-T H.265 standard. The encoded video sequence may conform to the syntax specified by the video compression technique or standard used in the sense that the encoded video sequence follows the syntax of the video compression technique or standard and the profile recorded in the video compression technique or standard. Specifically, the profile may select certain tools from all the tools available in the video compression technique or standard as the only tools available for use under the profile. For compliance, the complexity of the encoded video sequence is also required to be within the range defined by the hierarchy of the video compression technique or standard. In some cases, the hierarchy limits the maximum picture size, the maximum frame rate, the maximum reconstruction sampling rate (measured in, for example, mega samples per second), the maximum reference picture size, etc. In some cases, the limits set by the hierarchy may be further limited by the Hypothetical Reference Decoder (HRD) specification and the metadata of the HRD buffer management signaled in the encoded video sequence.

[0085] In an embodiment, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be part of the encoded video sequence. The additional data may be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0086] Figure 6 6 is a block diagram of a video encoder (603) according to an embodiment disclosed in the present application. The video encoder (603) is provided in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmission circuit). The video encoder (603) can be used to replace Figure 4 A video encoder (403) in an embodiment.

[0087] The video encoder (603) can be used to obtain the video source (601) (not Figure 6 In another embodiment, the video source (601) is a part of the electronic device (620) to receive video samples, and the video source can collect video images to be encoded by the video encoder (603). In another embodiment, the video source (601) is a part of the electronic device (620).

[0088] The video source (601) may provide a source video sequence in the form of a digital video sample stream to be encoded by the video encoder (603), wherein the digital video sample stream may have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the video source (601) may be a storage device storing previously prepared videos. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of separate pictures that are given motion when viewed sequentially. The pictures themselves may be constructed as a spatial pixel array, wherein each pixel may include one or more samples depending on the sampling structure, color space, etc. used. The relationship between pixels and samples may be easily understood by those skilled in the art. The following description focuses on samples.

[0089] According to an embodiment, the video encoder (603) may encode and compress pictures of a source video sequence into an encoded video sequence (643) in real time or under any other time constraints required by the application. Implementing an appropriate encoding speed is a function of the controller (650). In some embodiments, the controller (650) controls other functional units as described below and is functionally coupled to these units. For the sake of brevity, couplings are not shown in the figure. The parameters set by the controller (650) may include rate control related parameters (picture skipping, quantizer, lambda value of rate distortion optimization technology, etc.), picture size, GOPs layout, maximum motion vector search range, etc. The controller (650) can be used to have other suitable functions that are related to the video encoder (603) optimized for a certain system design.

[0090] In some embodiments, the video encoder (603) operates in an encoding loop. As a simple description, in embodiments, the encoding loop may include a source encoder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be encoded and a reference picture) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a manner similar to that of the (remote) decoder to create sample data (because in the video compression techniques considered in this application, any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream produces bit-accurate results that are independent of the decoder location (local or remote), the contents of the reference picture memory (634) are also bit-accurately corresponding between the local encoder and the remote encoder. In other words, the reference picture samples "seen" by the prediction part of the encoder are exactly the same as the sample values ​​that the decoder will "see" when using the prediction during decoding. This basic principle of reference picture synchronization (and the drift that occurs when synchronization cannot be maintained, eg due to channel errors) is also used in some related techniques.

[0091] The operation of the "local" decoder (633) can be combined with the above Figure 5 The "remote" decoder described in detail for the video decoder (410) is identical. However, additional brief reference is made to Figure 5 , when symbols are available and the entropy encoder (645) and parser (520) are capable of losslessly encoding / decoding the symbols into an encoded video sequence, the entropy decoding portion of the video decoder (510), including the buffer memory (415) and the parser (420), may not be fully implemented in the local decoder (633).

[0092] At this point, it can be observed that any decoder technology other than the parsing / entropy decoding present in the decoder must also be present in the corresponding encoder in substantially the same functional form. For this reason, the present application focuses on decoder operation. The description of encoder technology can be simplified because encoder technology is mutually inverse to the decoder technology described comprehensively. A more detailed description is only needed in certain areas and is provided below.

[0093] During operation, in some embodiments, the source encoder (630) may perform motion compensated predictive coding. The motion compensated predictive coding predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence designated as "reference pictures." In this manner, the encoding engine (632) encodes the differences between pixel blocks of the input picture and pixel blocks of a reference picture that may be selected as a prediction reference for the input picture.

[0094] The local video decoder (633) may decode the encoded video data of the picture that may be designated as the reference picture based on the symbol created by the source encoder (630). The operation of the encoding engine (632) may be a lossy process. When the encoded video data is available at the video decoder ( Figure 6 When the video sequence is decoded at a remote location (not shown), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (633) replicates the decoding process that may be performed by the video decoder on the reference picture and may cause the reconstructed reference picture to be stored in the reference picture cache (634). In this way, the video encoder (603) may store a copy of the reconstructed reference picture locally that has common content (absent transmission errors) with the reconstructed reference picture to be obtained by the remote video decoder.

[0095] The predictor (635) may perform a prediction search for the encoding engine (632). That is, for a new picture to be encoded, the predictor (635) may search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference picture motion vectors, block shapes, etc., that may serve as appropriate prediction references for the new picture. The predictor (635) may operate pixel-by-pixel based on sample blocks to find a suitable prediction reference. In some cases, based on the search results obtained by the predictor (635), it may be determined that the input picture may have prediction references taken from a plurality of reference pictures stored in the reference picture memory (634).

[0096] The controller (650) may manage encoding operations of the source encoder (630), including, for example, setting parameters and subgroup parameters for encoding video data.

[0097] The outputs of all the above functional units may be entropy encoded in an entropy encoder (645). The entropy encoder (645) performs lossless compression on the symbols generated by the various functional units according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc., thereby converting the symbols into a coded video sequence.

[0098] The transmitter (640) may buffer the encoded video sequence created by the entropy encoder (645) in preparation for transmission over a communication channel (660), which may be a hardware / software link to a storage device where the encoded video data will be stored. The transmitter (640) may combine the encoded video data from the video encoder (603) with other data to be transmitted, such as encoded audio data and / or ancillary data streams (source not shown).

[0099] The controller (650) may manage the operation of the video encoder (603). During encoding, the controller (650) may assign a certain coded picture type to each coded picture, but this may affect the coding techniques that can be applied to the corresponding picture. For example, a picture may generally be assigned to any of the following picture types:

[0100] An intra picture (I picture) may be a picture that can be encoded and decoded without using any other picture in the sequence as a prediction source. Some video codecs allow different types of intra pictures, including, for example, independent decoder refresh (IDR) pictures. Those skilled in the art are aware of the variations of I pictures and their corresponding applications and features.

[0101] A predictive picture (P picture) may be a picture that can be encoded and decoded using intra prediction or inter prediction, which uses at most one motion vector and a reference index to predict sample values ​​for each block.

[0102] Bidirectional predictive pictures (B pictures), which can be pictures that can be encoded and decoded using intra prediction or inter prediction, which uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multiple predictive pictures can use more than two reference pictures and associated metadata for reconstruction of a single block.

[0103] The source picture may typically be spatially subdivided into blocks of samples (e.g., blocks of 4×4, 8×8, 4×8, or 16×16 samples), and coded block by block. These blocks may be predictively coded with reference to other (already coded) blocks, which are determined according to the coding allocation applied to the block's corresponding picture. For example, blocks of an I picture may be non-predictively coded, or the blocks may be predictively coded (spatial prediction or intra prediction) with reference to already coded blocks of the same picture. Blocks of pixels of a P picture may be predictively coded by spatial prediction with reference to one previously coded reference picture or by temporal prediction. Blocks of a B picture may be predictively coded by spatial prediction with reference to one or two previously coded reference pictures or by temporal prediction.

[0104] The video encoder (603) may perform encoding operations according to a predetermined video encoding technique or standard, such as ITU-T Rec. H.265. In operation, the video encoder (603) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in an input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard used.

[0105] In an embodiment, the transmitter (640) may transmit additional data when transmitting the encoded video. The source encoder (630) may include such data as part of the encoded video sequence. The additional data may include other forms of redundant data such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0106] The captured video may be taken as a plurality of source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often simplified to intra-prediction) exploits spatial correlations in a given picture, while inter-picture prediction exploits (temporal or other) correlations between pictures. In an embodiment, a particular picture being encoded / decoded is divided into blocks, and the particular picture being encoded / decoded is referred to as the current picture. When a block in the current picture is similar to a reference block in a reference picture that has been previously encoded in the video and is still buffered, the block in the current picture may be encoded by a motion vector. The MV points to a reference block in a reference picture, and in the case where multiple reference pictures are used, the motion vector may have a third dimension that identifies the reference picture.

[0107] In some embodiments, bidirectional prediction techniques may be used in inter-picture prediction. According to the bidirectional prediction technique, two reference pictures are used, for example, a first reference picture and a second reference picture that are both before the current picture in the video in decoding order (but may be in the past and future in display order, respectively). A block in the current picture may be encoded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. Specifically, the block may be predicted by a combination of the first reference block and the second reference block.

[0108] In addition, merge mode technology can be used in inter-picture prediction to improve coding efficiency.

[0109] According to some embodiments disclosed in the present application, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a video picture sequence are divided into coding tree units (CodingTree Unit, CTU) for compression, and the CTUs in the picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (Coding Tree Block, CTB), and the three CTBs are a luminance CTB and two chrominance CTBs. Furthermore, each CTU can be split into one or more CUs using a quadtree. For example, a 64×64 pixel CTU can be split into a 64×64 pixel CU, or 4 32×32 pixel CUs, or 16 16×16 pixel CUs. In an embodiment, each CU is analyzed to determine the prediction type for the CU, such as an inter-frame prediction type or an intra-frame prediction type. In addition, depending on temporal and / or spatial predictability, the CU is split into one or more PUs. Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In an embodiment, the prediction operation in encoding (encoding / decoding) is performed in units of prediction blocks. Taking the luma prediction block as an example, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, and the like.

[0110] Figure 7 is a diagram of a video encoder (703) according to another embodiment disclosed in the present application. The video encoder (703) is used to receive a processed block (e.g., a prediction block) of sample values ​​in a current video picture in a video picture sequence, and encode the processed block into an encoded picture that is part of an encoded video sequence. In this embodiment, the video encoder (703) is used to replace Figure 4 A video encoder (403) in an embodiment.

[0111] In an HEVC embodiment, a video encoder (703) receives a matrix of sample values ​​for a processing block, such as a prediction block of 8×8 samples. The video encoder (703) uses, for example, rate-distortion (RD) optimization to determine whether to use intra mode, inter mode, or bidirectional prediction mode to encode the processing block. When encoding the processing block in intra mode, the video encoder (703) may use intra prediction techniques to encode the processing block into an encoded picture; and when encoding the processing block in inter mode or bidirectional prediction mode, the video encoder (703) may use inter prediction or bidirectional prediction techniques to encode the processing block into an encoded picture, respectively. In some video encoding techniques, the merge mode may be an inter-picture prediction submode, in which a motion vector is derived from one or more motion vector predictors without the aid of an encoded motion vector component external to the predictor. In some other video encoding techniques, there may be a motion vector component applicable to the subject block. In an embodiment, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the processing block mode.

[0112] exist Figure 7 In an embodiment of the present invention, the video encoder (703) includes: Figure 7 Shown are an inter-frame encoder (730), an intra-frame encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725) coupled together.

[0113] The inter-frame encoder (730) is used to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in a reference picture (e.g., blocks in a previous picture and a subsequent picture), generate inter-frame prediction information (e.g., redundant information description according to an inter-frame coding technique, motion vectors, merge mode information), and calculate an inter-frame prediction result (e.g., a predicted block) based on the inter-frame prediction information using any suitable technique. In some embodiments, the reference picture is a decoded reference picture decoded based on the encoded video information.

[0114] The intra-frame encoder (722) is used to receive samples of a current block (e.g., a processing block), compare the block with an encoded block in the same picture in some cases, generate quantization coefficients after transformation, and in some cases also generate intra-frame prediction information (e.g., intra-frame prediction direction information according to one or more intra-frame coding techniques). In an embodiment, the intra-frame encoder (722) also calculates an intra-frame prediction result (e.g., a predicted block) based on the intra-frame prediction information and a reference block in the same picture.

[0115] The general controller (721) is used to determine general control data and control other components of the video encoder (703) based on the general control data. In an embodiment, the general controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, when the mode is intra mode, the general controller (721) controls the switch (726) to select the intra mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and add the intra prediction information to the bitstream; and when the mode is inter mode, the general controller (721) controls the switch (726) to select the inter prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select the inter prediction information and add the inter prediction information to the bitstream.

[0116] The residual calculator (723) is used to calculate the difference (residual data) between the received block and the prediction result selected from the intra-frame encoder (722) or the inter-frame encoder (730). The residual encoder (724) is used to operate based on the residual data to encode the residual data to generate a transform coefficient. In an embodiment, the residual encoder (724) is used to convert the residual data from the spatial domain to the frequency domain and generate a transform coefficient. The transform coefficient is then processed by quantization to obtain a quantized transform coefficient. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is used to perform an inverse transform and generate decoded residual data. The decoded residual data can be used appropriately by the intra-frame encoder (722) and the inter-frame encoder (730). For example, the inter-frame encoder (730) can generate a decoded block based on the decoded residual data and the inter-frame prediction information, and the intra-frame encoder (722) can generate a decoded block based on the decoded residual data and the intra-frame prediction information. The decoded blocks are appropriately processed to generate a decoded picture, and in some embodiments, the decoded picture may be buffered in a memory circuit (not shown) and used as a reference picture.

[0117] The entropy encoder (725) is used to format the bitstream to produce an encoded block. The entropy encoder (725) generates various information according to a suitable standard such as the HEVC standard. In an embodiment, the entropy encoder (725) is used to obtain general control data, selected prediction information (such as intra-frame prediction information or inter-frame prediction information), residual information, and other suitable information in the bitstream. It should be noted that according to the disclosed subject matter, when the block is encoded in the inter-frame mode or the merge sub-mode of the bidirectional prediction mode, there is no residual information.

[0118] Figure 8FIG. 8 is a diagram of a video decoder (810) according to another embodiment disclosed in the present application. The video decoder (810) is used to receive an encoded image as part of an encoded video sequence and decode the encoded image to generate a reconstructed picture. In an embodiment, the video decoder (810) is used to replace Figure 4 A video decoder (410) of an embodiment.

[0119] exist Figure 8 In an embodiment, the video decoder (810) includes Figure 8 An entropy decoder (871), an inter-frame decoder (880), a residual decoder (873), a reconstruction module (874) and an intra-frame decoder (872) coupled together are shown in FIG.

[0120] The entropy decoder (871) may be used to reconstruct certain symbols from the encoded picture, which represent syntax elements constituting the encoded picture. Such symbols may include, for example, a mode for encoding the block (e.g., intra mode, inter mode, bidirectional prediction mode, a merged sub-mode of the latter two, or another sub-mode), prediction information (e.g., intra prediction information or inter prediction information) that may identify certain samples or metadata for prediction by the intra decoder (872) or the inter decoder (880), respectively, residual information in the form of, for example, quantized transform coefficients, and the like. In an embodiment, when the prediction mode is inter or bidirectional prediction mode, the inter prediction information is provided to the inter decoder (880); and when the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (872). The residual information may be inverse quantized and provided to the residual decoder (873).

[0121] The inter-frame decoder (880) is used to receive the inter-frame prediction information and generate an inter-frame prediction result based on the inter-frame prediction information.

[0122] The intra-frame decoder (872) is used to receive intra-frame prediction information and generate a prediction result based on the intra-frame prediction information.

[0123] The residual decoder (873) is used to perform inverse quantization to extract dequantized transform coefficients, and process the dequantized transform coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require some control information (to obtain the quantizer parameter Quantizer Parameter, QP), and the information can be provided by the entropy decoder (871) (the data path is not indicated because this is only low-volume control information).

[0124] The reconstruction module (874) is used to combine the residual output by the residual decoder (873) with the prediction result (which can be output by the inter-frame prediction module or the intra-frame prediction module) in the spatial domain to form a reconstructed block, which can be part of a reconstructed picture, which in turn can be part of a reconstructed video. It should be noted that other suitable operations such as deblocking operations can be performed to improve visual quality.

[0125] It should be noted that the video encoder (403), video encoder (603) and video encoder (703) and video decoder (410), video decoder (510) and video decoder (810) may be implemented using any suitable technology. In an embodiment, the video encoder (403), video encoder (603) and video encoder (703) and video decoder (410), video decoder (510) and video decoder (810) may be implemented using one or more integrated circuits (ICs). In another embodiment, the video encoder (403), video encoder (603) and video encoder (703) and video decoder (410), video decoder (510) and video decoder (810) may be implemented using one or more processors that execute software instructions.

[0126] Neural network technology can be combined with video coding technology, and the video coding technology combined with neural network is called hybrid video coding technology. Some aspects of the present disclosure provide adaptive filtering technology in hybrid video coding technology for improving picture quality using neural network. Specifically, according to some aspects of the present disclosure, adaptive hybrid technology of expert filtering can be used for video coding to enhance video quality. In some examples, adaptive filtering in hybrid video coding technology can use hybrid expert network based on quantization parameter control to improve picture quality. Adaptive filtering technology can be used for loop filters and filters in post-processing.

[0127] According to one aspect of the present disclosure, the loop filter is a filter that affects the reference data. The filter in the post-processing does not affect the reference data. For example, the picture filtered by the loop filter unit (556) is stored in a buffer such as a reference picture memory (557) as a reference for further prediction. In some examples, the filtered picture can be obtained by Figure 5 The post-processing unit (not shown) in the embodiment of the present invention is further processed. The post-processing unit does not affect the stored filtered picture. The post-processing unit may include a filter.

[0128] Fig. 9 A block diagram of a loop filter unit (910) in some examples is shown. In one example, the loop filter unit (910) can be used to replace the loop filter unit (556). Fig. 9In some examples, the loop filter unit (910) includes a deblocking filter (901), a sample adaptive offset (Sample Adaptive Offset, SAO) filter (902) and an adaptive loop filter (Adaptive Loop Filter, ALF) filter (903). In some examples, the ALF filter (903) may include a cross component adaptive loop filter (CCALF).

[0129] During the processing, in one example, the loop filter unit (910) receives a reconstructed picture, applies various filters to the reconstructed picture, and generates a filtered picture in response to the reconstructed picture. The filtered picture can be stored in, for example, a reference picture memory (920) as a reference picture for further decoding. The filtered picture can be further processed by a post-processing unit (930) on the decoder side to generate an output picture as a decoder output. In some examples, the post-processing unit (930) can include a post-processing filter (931) that does not affect the reference picture.

[0130] In some examples, the deblocking filter (901) and the SAO filter (902) are configured to remove blocking effects introduced when block coding techniques are used. The deblocking filter (901) can smooth the edges of shapes formed when block coding techniques are used. The SAO filter (902) can apply a specific offset to the sample to reduce distortion relative to other samples in the video frame. The ALF filter (903) can classify, for example, a block of samples and then apply a filter associated with the classification to the block of samples. In some examples, the filter coefficients of the filter can be determined by the encoder and sent to the decoder via a signal.

[0131] Aspects of the present invention provide adaptive filtering techniques for improving image quality in hybrid video coding techniques. In some examples, the adaptive mixing of the expert network is used for an adaptive loop filter, such as an ALF filter (903). In some examples, the adaptive mixing of the expert network is used for a post-processing filter, such as a post-processing filter (931). In some embodiments, the adaptive mixing of the expert network can receive an adjacent block including an image block and adjacent pixels of the image block, and can receive a quantization parameter QP value for reconstructing the image block. The adaptive mixing of the expert network can generate an output image block with improved quality based on the QP value.

[0132] In some video coding examples (e.g., the VVC standard), a block-based adaptive filter can be used for video coding. For example, a block-based adaptive filter can be used as a loop filter, which is called a block-based adaptive loop filter (BALF). In some examples, BALF is a loop filter that can adaptively switch a finite impulse response FIR filter at a block level (e.g., a block of 4×4 pixels, also referred to as a 4×4 block) to improve the video quality of the block. Specifically, in some examples, BALF can be performed in two steps. In the first step of BALF, a block (e.g., a 4×4 block) is divided into one class from a set of classes (e.g., up to 100 classes) based on the neighborhood of the block (e.g., 10×10 neighboring blocks of a 4×4 block (e.g., a 4×4 block is located in the center of a 10×10 neighboring block)). Then, in the second step of BALF, based on the classification of the 4×4 blocks, an FIR filter is selected from the FIR filter bank to filter the 10×10 adjacent blocks, and the filtered 4×4 blocks are obtained as the output image blocks.

[0133] In some examples, the FIR filter bank can be predefined, and the filter coefficient of the selected filter can be obtained by both encoder and decoder. In some other examples, for example, in the example of Wiener filter (Weiner filter), the filter coefficient of the selected FIR filter is calculated by the encoder. When the encoder calculates the filter coefficient of the selected FIR filter, the filter coefficient is encoded in the coded video bit stream, and the coded video bit stream is sent to the decoder to inform the filter coefficient of the selected FIR filter of the decoder.

[0134] In some examples, when the filter coefficients are calculated by the encoder, the encoder can determine the number of classes and corresponding filter coefficients to achieve a good balance between picture distortion and the number of bits for encoding the corresponding filter coefficients. Generally, more classes can result in lower distortion, but increase the number of bits for encoding the filter coefficients.

[0135] Some aspects of the present invention provide techniques for using a sparse gated mixture of experts (MoE) network in a filter for video coding. A MoE network is a network architecture that uses multiple expert modules to process input data and uses a gating network to conditionally select a subset of the expert modules and use the corresponding weights to calculate the output.

[0136] Fig.10 An example of a MoE network (1000) is shown. The MoE network (1000) includes a gating network (1010) and a NA plurality of expert modules (1020) represented by , where N is the number of expert modules and is a positive integer. Expert modules E1-E N The MoE network (1000) receives an input signal x and generates an output signal y. The input signal x is given to a gating network (1010) and a plurality of expert modules (1020). The gating network (1010) is based on the input signal x and is respectively used by expert modules E1-E20. N Generate gating weight G1(x)-G N (x). Expert Modules E1-E N The module outputs (E1(x)-E N The output y is based on the gating weight G1(x)-G N The module output E1(x)-E N A weighted combination of (x).

[0137] Fig.11 A flow chart outlining a data processing process (1100) for a MoE network, such as the MoE network (1000), is shown.

[0138] In step S1110 , the MoE network ( 1000 ) receives an input signal x.

[0139] In step S1120, the gating network (1010) is an expert module E1-E according to the input signal x. N Calculate the respective gating weights.

[0140] In step S1130, the input signal x is sent to the expert modules E1-E N , Expert Modules E1-E N Generate module output E1(x)-E based on input signal x N (x).

[0141] At step S1140, a weighted sum of module outputs from the expert modules is calculated based on the gating weights. When the gating weight of an expert module is zero, the expert module is gated and the module output is not included in the output.

[0142] At step S1150, the weighted sum is output as the output signal y of the MoE network (1000).

[0143] In some examples, the MoE network (1000) and process (1100) are used in language modeling and machine translation, and the gating weights can be determined based on matrix multiplication. For example, a matrix including N gating weights (e.g., Fig.10 G1(x)-G N(x), N is the number of expert modules):

[0144] H(x) i =(xW g ) i +StandardNormal().Softplus((xW noise ) i ) Formula 1

[0145] G(x)=Softmax(KeepTopK((H(x),k)) Formula 2

[0146]

[0147] Where H(x) is a vector with elements H(x) calculated according to Equation 1 i Softmax() is a normalized exponential function that generates an output vector and ensures that the sum of the components of the output vector is 1. Softplus() is a smooth approximation of the ReLu function. In one example, f(x) = ln(1+e x ) can be called a Softplus function. StandardNormal() is a random number generator that generates random numbers based on a Gaussian distribution with zero mean and unit variance. KeepTopK() is used to keep the top k values ​​and set the rest to -∞ (which will be zero after applying Softmax()). W g and W noise is the trainable weight matrix. k is the number of non-zero elements in the vector G(x).

[0148] Note that in some examples, the KeepTopK() function can make k (k is less than N) gating weights non-zero and the rest zero, and can create sparsity to save computation.

[0149] In one example, when the gating weight G i When (x) is non-zero, the corresponding expert module E is activated. i To generate module output E i (x). When the expert module generates a module output, the module output is weighted based on the corresponding gating weight. The weighted module outputs can be combined to generate a final output for the MoE network. In some examples, the final output of the MoE network can be calculated according to Formula 4

[0150]

[0151] Some aspects of the present disclosure provide techniques for using a MoE network in adaptive filtering to balance distortion and rate in video encoding and decoding. In the following description, an adaptive filter using a MoE network may be referred to as an adaptive MoE filter. In some examples, an adaptive MoE filter may be used to replace a BALF, and the adaptive MoE filter may increase the number of different filters available for filtering to more than one million without encoding the filter coefficients in the encoded video bitstream. In some other examples, an adaptive MoE filter may be used in post-processing, for example, in place of a post-processing filter (931).

[0152] In some examples, the adaptive MoE filter can operate in a similar manner to a block-based adaptive loop filter (BALF). Specifically, the adaptive MoE filter can switch the FIR filter at an M1×M2 block (e.g., M1=M2=4 in VVC). The adaptive MoE filter can then take the N1×N2 neighboring blocks of the M1×M2 block as the input image block. For example, N1=N2=10 in VVC, and the M1×M2 block can be the center portion of the N1×N2 neighboring blocks. The adaptive MoE filter can then generate an M1×M2 filtered output image block.

[0153] According to one aspect of the present invention, unlike BALF, the adaptive MoE filter does not classify the M1×M2 blocks based on the N1×N2 neighborhood. Instead, in some examples, the adaptive MoE filter receives the N1×N2 neighboring blocks of the M1×M2 block and the quantization parameter value associated with the M1×M2 block as input. In some examples, k FIR filters (k>1) can be selected from N predetermined FIR filters based on the input, and then the final FIR filter is generated as a weighted linear combination of the selected k FIR filters. The final filter is then applied to filter the N1×N2 neighborhood to generate an M1×M2 filtered output block. In one example, the number of unique filters available for filtering is greater than N! / (k!·(Nk)!) and the filter coefficients do not need to be encoded in the encoded video bitstream. In one example, when N=1000, k>1 and each weight of the linear combination has more than 2 bits, the number of unique filters used for filtering exceeds one million.

[0154] In the processing of image and / or video data, the image / video data is 2-dimensional and includes multiple channels. According to one aspect of the present disclosure, using a MoE network for image and video processing, an expert module and a gating network of the MoE network for image and / or video data can be configured to use convolution as the main operation.

[0155] In addition, according to one aspect of the present disclosure, in image and / or video encoding, a quantization parameter (QP) may be used to control the quality of a decoded image, and the QP may be used to determine how to filter the decoded image to improve the image quality. In a related art, the QP is used to select a processing module from a plurality of processing modules (e.g., to select a filter from a plurality of filters). In another related art, the QP is used as an input to a single processing module (e.g., a single neural network), and the single neural network is trained to filter images with different QP values. In some embodiments of the present disclosure, the QP value may be used to select a plurality of processing modules (e.g., a plurality of filters), and the selected processing module processes the input image block, but in some examples the QP value is not processed.

[0156] Fig.12 An example of an adaptive MoE filter (1200) for image and / or video processing is shown. The adaptive MoE filter (1200) includes a gating network (1210) and an E1-E N A plurality of expert modules (1220) represented by , where N is the number of expert modules and is a positive integer. Expert modules E1-E N It may have different parameters or different functions. The adaptive MoE filter (1200) receives an input block x and a QP value as a neighboring block of the image block. In some examples, the neighboring block includes an image block located at a center position of the neighboring block and includes neighboring pixels of the image block. The image block is reconstructed based on the QP value. The adaptive MoE filter (1200) may generate a filtered image block y. The input block x and the QP value are given to the gating network (1210). The gating network (1210) includes a convolutional neural network, which is based on the input block x and the QP value. The expert modules E1-E N Generate gating weight G1(x,QP)-G N (x,QP). The input block x is also given to the expert modules E1-E N In some examples, expert modules E1-E N It is a filter with different filter functions or different filter parameters. Expert module E1-E N Intermediate filter outputs (such as F1(x)-F N (x)). The filtered image block y is based on the gated weights G1(x)-G N F1(x)-F N A weighted combination of (x).

[0157] exist Fig.12In some examples, the adaptive MoE filter (1200) receives 2D image data (e.g., adjacent blocks) as input and outputs filtered 2D image data (e.g., filtered image blocks). In some examples, the convolutional neural network is used for the expert modules E1-E N (1220) and / or the gating network (1210). In some examples, the gating network (1210) receives both the input block and the QP value (used to reconstruct the image block at the center portion of the input block) as input, and the gating network (1210) uses a neural network structure instead of matrix multiplication to combine the 2-dimensional image data (e.g., neighboring blocks) and the scalar value (e.g., QP value) to determine an N-dimensional vector (e.g., gating weight G1(x,QP)-G1(x,QP)) for expert module activation and weighting. N (x,QP)).

[0158] In some examples, the gating weight G1(x,QP)-G N (x,QP) is given to the corresponding expert module E1-E N For example, when G1(x, QP) is non-zero, the expert module E1 is activated to generate the intermediate filter output F1(x). However, when G1(x, QP) is zero, the expert module E1 is not activated, thereby saving computational effort.

[0159] Fig.13 An example of a neural network structure (1300) according to an embodiment of the present disclosure is shown. The neural network structure (1300) is based on a convolutional neural network and can be used for a gating network (1210) in an example.

[0160] exist Fig.13In the example, the neural network structure (1300) includes a first convolutional layer (1310), a second convolutional layer (1320) and a third convolutional layer (1330), a maximum pooling layer (1340) and a linear logistic regression layer (1350). In one example, the neural network structure (1300) receives as input a 3-channel input block x (e.g., YUV channels) and a QP value for reconstructing a central portion of the 3-channel input block. The QP value is concatenated with the 3-channel input block to form a 4-channel input. The first convolutional layer (1310) takes a 4-channel input and outputs an M-channel output (e.g., M=32). The second convolutional layer (1320) and the third convolutional layer (1330) both take an M-channel input and output an M-channel output. The M-channel output from the third convolutional layer (1330) is also referred to as an M-channel feature map. All convolutional layers (i.e., the first convolutional layer (1310), the second convolutional layer (1320), and the third convolutional layer (1330)) may use a kernel size of 3×3 and be activated by a Leaky ReLU function. In one example, the max pooling layer (1340) may take as input an M channel feature map and downsample the feature map by using a max pooling operation with a 2×2 kernel combined with a stride of 2. The resulting downsampled feature map is flattened into a vector and concatenated with the QP value. The vector is given to a linear logistic regression layer (1350) to compute an N-dimensional vector

[0161] In addition, in one example, the gating network (1210) can determine N gating weights (eg, Fig.12 G1(x, QP)-G N (x, QP), N is the number of expert modules). The vector G(x, QP) is a sparse vector with k non-zero elements. If the element G i If (x, QP) is non-zero, the corresponding expert module E is activated. i , otherwise G i (x, QP) is zero, and the corresponding expert module E is not activated i .

[0162]

[0163] G(x, QP) = Softmax(KeepTopK((H(x, QP), k)) Formula 6

[0164]

[0165] According to one aspect of the present disclosure, when the trainable matrix W noiseWhen it is not zero, due to the random number generation function StandardNormal(), G(x, QP) in Formula 6 is not deterministic. In some examples, the adaptive MoE filter (1200) with non-deterministic parameters is only used for post-processing (e.g., in the post-processing unit (930)). Otherwise, using the adaptive MoE filter (1200) (with non-deterministic parameters) in loop filtering may cause the reference picture to be inconsistent at the encoder side and the decoder side, and cause decoder errors and significant distortion. In some examples, the trainable matrix W noise can be forced to zero, then G(x, QP) is determined, and the adaptive MoE filter (1200) can be used for loop filtering. It should be noted that when the adaptive MoE filter (1200) is used for loop filtering, G(x, QP) can be calculated using Formula 7 and Formula 8, where is the output from the neural network structure (1300).

[0166]

[0167] It is worth noting that the neural network structure (1300) can be modified to use different numbers of convolutional layers, different numbers of intermediate channels, and different activation functions. In one example, a multi-layer neural network can be used in addition to a linear logistic regression layer. The QP value can also be connected at any point in the gating network (e.g., the second convolutional layer (1320), the third convolutional layer (1330), the maximum pooling layer (1340)) as an input to any layer in the gating network.

[0168] In some examples, each of the N expert modules includes a convolutional layer with an L×L kernel without an output activation layer.

[0169] Fig.14 Schematic diagrams of expert modules (1420) in some examples are shown. In one example, each expert module (1220) can be replaced with an expert module (1420). The expert module (1420) includes a convolution layer (1421). The expert module (1420) can receive an input block x that can be a 3-channel input block x (e.g., a neighboring block of an image block, where the image block is located at a central portion of the neighboring block), and filter the 3-channel input block x using a convolution layer (1421).

[0170] In one example, to simplify the training process, the input block is added to the output of the convolutional layer (1421) using a residual connection (1422) to obtain F as the module output of the expert module (1420). i (x). In one example, L is chosen to be 7 to match the BALF filter size in VVC.

[0171] It should be noted that in some examples, the residual connection (1422) may be removed.

[0172] exist Fig.14 In the example of , the expert module (1420) uses a convolutional layer to filter the input block. It should be noted that the expert module (1420) can be modified to use different settings of the convolutional layer (e.g., multiple convolutional layers with multiple intermediate channels, convolutional kernels of different sizes, different activation functions, and using residual connection options).

[0173] Fig.15 A flow chart outlining a process (1500) for processing image data through an adaptive MoE filter, such as the adaptive MoE filter (1200), is shown.

[0174] In step S1510, the adaptive MoE filter (1200) receives a neighboring block of an image block (the image block is located at a central portion of the neighboring block) and a QP value for reconstructing the image block. In one example, the adaptive MoE filter (1200) receives an N1×N2 block. The N1×N2 block includes an M1×M2 block and neighboring pixels of the M1×M2 block. The adaptive MoE filter (1200) also receives a QP value for reconstructing the M1×M2 block.

[0175] In step S1520, the gating network (1210) uses a neural network structure (e.g., the neural network structure (1300)) to calculate expert modules E1-E based on the N1×N2 blocks and the QP value. N The respective gating weights.

[0176] At step S1530, the expert module filters the adjacent blocks to generate module outputs. For example, an expert module (e.g., expert module E1) may process an N1×N2 block and accordingly generate an M1×M2 block as a module output. In one example, when the gating weight corresponding to the expert module is non-zero, the expert module is activated. The input block may be filtered by the activated expert module. In another example, the input block may be filtered by all expert modules.

[0177] In step S1540, a weighted sum of module outputs from the expert modules is calculated based on the gating weights (eg, according to Formula 9).

[0178]

[0179] In one example, a weighted sum of module outputs from activated expert modules is calculated. In another example, a weighted sum of module outputs from all expert modules is calculated. When the gating weight of an expert module is zero, the module output is not included in the weighted sum.

[0180] In step S1550, the weighted sum is output as a filtered image block through the adaptive MoE filter (1200).

[0181] Fig.16 Another flow chart outlining a process (1600) of processing image data through an adaptive MoE filter, such as the adaptive MoE filter (1200), is shown.

[0182] In step S1610, the adaptive MoE filter (1200) receives a neighboring block of an image block (the image block is located at a central portion of the neighboring block) and a QP value for reconstructing the image block. In one example, the adaptive MoE filter (1200) receives an N1×N2 block. The N1×N2 block includes an M1×M2 block and neighboring pixels of the M1×M2 block. The adaptive MoE filter (1200) also receives a QP value for reconstructing the M1×M2 block.

[0183] In step S1620, the gating network (1210) uses a neural network structure (e.g., the neural network structure (1300)) to calculate expert modules E1-E based on the N1×N2 blocks and the QP value. N The respective gating weights.

[0184] In step S1630, expert modules E1-E1 are activated based on the gated weights. N In some examples, expert modules E1-E with non-zero gating weights N A subset of is activated, and the remaining expert modules E1-EN with zero gating weights are not activated. In one example, the gating network (1210) is configured to output k non-zero gating weights (k is an integer, k>1).

[0185] In step S1640, the activated expert module filters the adjacent blocks to generate module outputs. For example, the activated expert module may process the N1×N2 block and accordingly generate the M1×M2 block as the module output. The activated expert module may filter the adjacent blocks.

[0186] In step S1650, a weighted sum of module outputs from the activated expert modules is calculated based on the gating weights (eg, according to Formula 9).

[0187] In step S1660, the weighted sum is output as a filtered image block through the adaptive MoE filter (1200).

[0188] In some embodiments, the adaptive MoE filter is used as an in-loop filter for noise reduction in video processing. In some examples, the expert module of the adaptive MoE filter can be configured as a predefined filter for improving the picture quality of an M1×M2 block. The adaptive MoE filter takes as input the QP value and the N1×N2 block of neighboring pixels including the M1×M2 block and the M1xM2 block.

[0189] Based on the N1×N2 block and the QP value, the adaptive MoE filter can select k expert modules from the N predefined expert modules and calculate the weights of the k expert modules, where k>1. The k expert modules can calculate the module outputs respectively. Each expert module outputs an M1×M2 block.

[0190] Then, the output of the adaptive MoE filter is calculated as a linear combination of the module outputs of the k selected expert modules using the calculated weights of the k expert modules for linear combination.

[0191] It should be noted that in some examples, while the weights from the gating network are a function of QP, the filter coefficients of the N predefined filters are not a function of QP.

[0192] In some embodiments, the expert module is a FIR filter. The FIR filters can be combined appropriately.

[0193] Fig.17 An example of an adaptive MoE filter (1700) for image and / or video processing is shown. The adaptive MoE filter (1700) includes a gating network (1710) and is implemented as Fig.17 Medium FIR1-FIR N A plurality of expert modules (1720) of predefined FIR filters are shown, where N is the number of expert modules and is a positive integer. FIR1-FIR N The adaptive MoE filter (1700) receives a neighboring block x of an image block (the image block is located at the center of the neighboring block) and a QP value for reconstructing the image block, and can generate a filtered image block y. The neighboring block x and the QP value are given to a gating network (1710). The gating network (1710) includes a convolutional neural network (e.g., the neural network structure (1300), and can be based on the neighboring block x and the QP value. FIR1-FIR N Generate gating weight G1(x,QP)-G N (x, QP). In one example, in the gating weight G1(x, QP)-G N In (x, QP), k gating weights are non-zero, and k is a positive integer greater than 1. Based on the gating weight G1(x, QP)-G N(x,QP), using the gating weights G1(x,QP)-G for the linear combination N (x, QP) determines the combined FIR filter (1725) as FIR1-FIR N The adjacent block x is then given to a combined FIR filter (1725), which outputs a filtered image block y.

[0194] In one example, FIR1-FIR N Each of is implemented by a convolution operation. Using the adaptive MoE filter (1700), one convolution operation is performed to generate a filtered image block y. For comparison, in one example, k convolution operations are performed using the adaptive MoE filter (1200).

[0195] Fig.18 A flow chart outlining a process (1800) according to an embodiment of the present disclosure is shown. The process (1800) may be used in neural network processing (e.g., a neural network-based filter in a video codec). In various embodiments, the process (1800) is performed by a processing circuit, such as a processing circuit in a terminal device (310), a terminal device (320), a terminal device (330), and a terminal device (340), a processing circuit that performs the functions of a video encoder (403), a processing circuit that performs the functions of a video decoder (410), a processing circuit that performs the functions of a video decoder (510), a processing circuit that performs the functions of a video encoder (603), and the like. In some embodiments, the process (1800) is implemented in software instructions, so that when the processing circuit executes the software instructions, the processing circuit performs the process (1800). The process starts at step S1801 and proceeds to step S1810.

[0196] At step S1810, a gating weight associated with an expert module is determined based at least in part on a quantization parameter (QP) value. The expert module is configured to process an input block, the input block comprising an image block reconstructed based on the QP value.

[0197] In some examples, the gated weights are determined based on the quantization parameter and an input block including the image block and pixels adjacent to the image block. In some examples, the gated weights are determined using at least one convolutional neural network layer.

[0198] In step S1820, the expert modules are weighted based on the gating weights to generate an output image block corresponding to the image block.

[0199] In some examples, module outputs from expert modules are combined based on gating weights to generate an output image patch corresponding to the image patch.

[0200] In some examples, a combined expert module combining the expert modules is determined based on a gating weight. In one example, the expert module is a finite impulse response FIR filter. Then, a combined FIR filter combining the FIR filters based on the gating weight is determined. The combined FIR filter is applied to the input block including the image block to generate the output image block.

[0201] In some examples, a subset of expert modules having non-zero gating weights is activated.Module outputs of the subset of expert modules are then combined based on the gating weights associated with the subset of expert modules to generate the output image block corresponding to the image block.

[0202] In some examples, the gating weights are determined in a deterministic manner and the output image block is generated in a loop associated with a reference picture.

[0203] In some examples, the gating weights are generated in a non-deterministic manner and the output image block is generated out of a loop associated with a reference picture.

[0204] In some examples, the expert modules may each include a convolutional neural network that generates module outputs in response to an input block including an image block.

[0205] The process then proceeds to step S1899.

[0206] It should be noted that the various units, blocks and modules described above may be implemented by various technologies such as a processing circuit, a processor that executes software instructions, a combination of hardware and software, and the like.

[0207] The above techniques may be implemented as computer software via computer-readable instructions and physically stored in one or more computer-readable media. Fig.19 A computer system (1900) is shown that is suitable for implementing certain embodiments of the disclosed subject matter.

[0208] The computer software may be encoded in any suitable machine code or computer language, and may be assembled, compiled, linked, or the like to create a code comprising instructions, which may be directly executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or executed by decoding, microcode, or the like.

[0209] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, etc.

[0210] Fig.19 The components shown for the computer system (1900) are exemplary in nature and are not intended to limit the scope of use or functionality of the computer software implementing the embodiments of the present application. The configuration of the components should not be interpreted as having any dependency or requirement on any component or combination of components shown in the exemplary embodiment of the computer system (1900).

[0211] The computer system (1900) may include certain human-computer interface input devices. Such human-computer interface input devices may respond to input from one or more human users through tactile input (e.g., keyboard input, sliding, data glove movement), audio input (e.g., sound, applause), visual input (e.g., gestures), and olfactory input (not shown). The human-computer interface devices may also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., speech, music, ambient sound), images (e.g., scanned images, photographic images obtained from a still image camera), and videos (e.g., two-dimensional video, three-dimensional video including stereoscopic video).

[0212] The human-computer interface input device may include one or more of the following (only one of which is drawn): keyboard (1901), mouse (1902), touchpad (1903), touch screen (1910), data gloves (not shown), joystick (1905), microphone (1906), scanner (1907), camera (1908).

[0213] The computer system (1900) may also include certain human-computer interface output devices. Such human-computer interface output devices may stimulate one or more human user senses through, for example, tactile output, sound, light, and smell / taste. Such human-computer interface output devices may include tactile output devices (e.g., tactile feedback through a touch screen (1910), a data glove (not shown), or a joystick (1905), but there may also be tactile feedback devices that are not used as input devices), audio output devices (e.g., speakers (1909), headphones (not shown)), visual output devices (e.g., screens (1910) including cathode ray tube (CRT) screens, liquid crystal screens, plasma screens, organic light emitting diode screens, each of which has or does not have a touch screen input function, each of which has or does not have a tactile feedback function - some of which can output two-dimensional visual output or output of more than three dimensions by means such as stereoscopic picture output; virtual reality glasses (not shown), holographic displays, and smoke boxes (not shown)) and printers (not shown).

[0214] The computer system (1900) may also include human-accessible storage devices and their associated media, such as optical media including high-density read-only / rewritable optical disks (CD / DVD ROM / RW) (1920) with CD / DVD or similar media (1921), thumb drives (1922), removable hard disk drives or solid state drives (1923), traditional magnetic media such as tapes and floppy disks (not shown), special-purpose devices based on ROM / Application-Specific Integrated Circuit (ASIC) / Programmable Logic Device (PLD) such as security software protectors (not shown), and the like.

[0215] Those skilled in the art should also understand that the term "computer-readable media" used in connection with the disclosed subject matter does not include transmission media, carrier waves, or other transient signals.

[0216] The computer system (1900) may also include an interface (1954) to one or more communication networks (1955). For example, the network may be wireless, wired, or optical. The network may also be a LAN, a wide area network, a metropolitan area network, an in-vehicle network, an industrial network, a real-time network, a delay-tolerant network, and the like. The network also includes LANs such as Ethernet, wireless LANs, cellular networks (Global System for Mobile communications (GSM), 3G, 4G, 5G, Long-Term Evolution (LTE), etc.), television wired or wireless wide-area digital networks (including cable television, satellite television, and terrestrial broadcast television), in-vehicle networks, and industrial networks (including controller area network buses (CANBus)), etc. Some networks typically require an external network interface adapter for connecting to certain universal data ports or peripheral buses (1949) (for example, the Universal Serial Bus (USB) port of the computer system (1900)). Other systems are typically integrated into the core of the computer system (1900) by connecting to a system bus as described below (e.g., an Ethernet interface integrated into a PC computer system or a cellular network interface integrated into a smartphone computer system). Using any of these networks, the computer system (1900) can communicate with other entities. The communication can be one-way, for reception only (e.g., wireless television), one-way for transmission only (e.g., a CAN bus to certain CAN bus devices), or two-way (e.g., to other computer systems via a local or wide area digital network). Each of the above networks and network interfaces can use certain protocols and protocol stacks.

[0217] The above-mentioned human-machine interface devices, human-accessible storage devices, and network interfaces may be connected to the core (1940) of the computer system (1900).

[0218] The core (1940) may include one or more CPUs (1941), GPUs (1942), dedicated programmable processing units in the form of Field Programmable Gate Areas (FGPAs) (1943), hardware accelerators for specific tasks (1944), graphics adapters (1950), etc. These devices, as well as read-only memory (ROM) (1945), random access memory (1946), internal mass storage (e.g., internal non-user accessible hard disk drives, solid-state drives, etc.) (1947), etc., may be connected via a system bus (1948). In some computer systems, the system bus (1948) may be accessed in the form of one or more physical plugs so that it can be expanded by additional CPUs, GPUs, etc. Peripheral devices may be directly attached to the core's system bus (1948), or connected via a peripheral bus (1949). In one embodiment, a screen (1910) may be connected to a graphics adapter (1950). The architecture of the peripheral bus includes Peripheral Component Interconnect (PCI), USB, etc.

[0219] The CPU (1941), GPUs (1942), FPGA (1943) and accelerator (1944) can execute certain instructions, which can be combined to form the above-mentioned computer code. The computer code can be stored in ROM (1945) or RAM (1946). Transient data can also be stored in RAM (1946), while permanent data can be stored in, for example, internal mass storage (1947). Fast storage and retrieval of any memory device can be achieved by using a cache memory, which can be closely associated with one or more CPUs (1941), GPUs (1942), mass storage (1947), ROM (1945), RAM (1946), etc.

[0220] The computer readable medium may have computer code thereon for performing various computer-implemented operations. The medium and computer code may be specially designed and constructed for the purposes of this application, or may be of a type of medium and code well known and available to those skilled in the art of computer software.

[0221] As an example and not a limitation, a computer system having the architecture (1900), in particular the core (1940), can be provided as a processor (including CPUs, GPUs, FPGAs, accelerators, etc.) to execute software contained in one or more tangible computer-readable media. Such a computer-readable medium can be a medium associated with the above-mentioned user-accessible mass storage, as well as a specific memory of the core (1940) having non-volatility, such as a core internal mass storage (1947) or ROM (1945). Software implementing various embodiments of the present application can be stored in such a device and executed by the core (1940). Depending on specific needs, the computer-readable medium may include one or more storage devices or chips. The software can enable the core (1940), in particular the processor therein (including CPUs, GPUs, FPGAs, etc.) to perform a specific process or a specific part of a specific process described herein, including defining a data structure stored in a random access memory (Random Access Memory, RAM) (1946) and modifying such a data structure according to a software-defined process. Additionally or alternatively, the computer system may provide functionality hardwired in logic or otherwise contained in circuitry (e.g., accelerator (1944)) that may operate in place of or in conjunction with software to perform a particular process or a particular portion of a particular process described herein. Where appropriate, references to software may include logic and vice versa. Where appropriate, references to computer-readable media may include circuitry (e.g., ICs) storing execution software, circuitry containing execution logic, or both. The present application includes any suitable combination of hardware and software.

[0222] Although the present application has described a number of exemplary embodiments, various changes, arrangements and various equivalent substitutions of the embodiments are within the scope of the present application. Therefore, it should be understood that those skilled in the art can design a variety of systems and methods, which, although not explicitly shown or described herein, embody the principles of the present application and are therefore within the spirit and scope of the present application.

[0223] Appendix A: Acronyms

[0224] JEM: Joint Exploration Model

[0225] VVC: Versatile Video Coding

[0226] BMS: Benchmark Set

[0227] MV: Motion Vector

[0228] HEVC: High Efficiency Video Coding

[0229] SEI: Supplementary Enhancement Information

[0230] VUI: Video Usability Information

[0231] GOPs: Groups of Pictures

[0232] TUs: Transform Units

[0233] PUs: Prediction Units

[0234] CTUs: Coding Tree Units

[0235] CTBs: Coding Tree Blocks

[0236] PBs: Prediction Blocks

[0237] HRD: Hypothetical Reference Decoder

[0238] SNR: Signal Noise Ratio

[0239] CPUs: Central Processing Units

[0240] GPUs: Graphics Processing Units

[0241] CRT: Cathode Ray Tube

[0242] LCD: Liquid-Crystal Display

[0243] OLED: Organic Light-Emitting Diode

[0244] CD: Compact Disc

[0245] DVD: Digital Video Disc

[0246] ROM: Read-Only Memory

[0247] RAM: Random Access Memory

[0248] ASIC: Application-Specific Integrated Circuit

[0249] PLD: Programmable Logic Device

[0250] LAN: Local Area Network

[0251] GSM: Global System for Mobile communications

[0252] LTE: Long-Term Evolution

[0253] CANBus: Controller Area Network Bus

[0254] USB: Universal Serial Bus

[0255] PCI: Peripheral Component Interconnect

[0256] FPGA: Field Programmable Gate Areas

[0257] SSD: Solid-State Drive

[0258] IC:Integrated Circuit

[0259] CU: Coding Unit

Claims

1. A video processing method, comprising: The processing circuit determines, based at least in part on a quantization parameter (QP) value, a gating weight associated with an expert module configured to process an input block comprising an image block reconstructed based on the QP value; and The processing circuit weights the expert modules based on the gating weights to generate an output image block corresponding to the image block.

2. The method according to claim 1, further comprising: The processing circuit combines module outputs from the expert modules based on the gating weights to generate the output image block corresponding to the image block.

3. The method according to claim 1, further comprising: The processing circuit determines a combined expert module that combines the expert modules based on the gating weights.

4. The method according to claim 1, further comprising: The gating weight is determined based on the quantization parameter and the input block including the image block and neighboring pixels of the image block.

5. The method according to claim 1, further comprising: The gating weights are determined using at least one convolutional neural network layer.

6. The method according to claim 1, further comprising: Activate a subset of expert modules with non-zero gating weights; as well as The module outputs of the subset of expert modules are combined based on the gating weights associated with the subset of expert modules to generate the output image block corresponding to the image block.

7. The method according to claim 1, further comprising: In response to the input block including the image block, a module output is generated by an expert module having a convolutional neural network.

8. The method according to claim 1, wherein the expert module is a finite impulse response (FIR) filter, the method further comprising: determining a combined FIR filter combining the FIR filters based on the gating weights; as well as The combined FIR filter is applied to the input block including the image block to generate the output image block.

9. The method according to any one of claims 1 to 8, further comprising: The gating weights are determined in a deterministic manner, and the output image block is generated in a loop associated with a reference picture.

10. The method according to any one of claims 1 to 8, further comprising: The gating weights are generated in a non-deterministic manner, and the output image block is generated out of a loop associated with a reference picture.

11. A video processing device, comprising a processing circuit, wherein the processing circuit is configured to: determining, based at least in part on a quantization parameter (QP) value, a gating weight associated with an expert module configured to process an input block comprising an image block reconstructed based on the QP value; and The expert modules are weighted based on the gating weights to generate an output image block corresponding to the image block.

12. The device according to claim 11, wherein The processing circuit is further configured to: The module outputs from the expert modules are combined based on the gating weights to generate the output image block corresponding to the image block.

13. The device according to claim 11, wherein: The processing circuit is further configured to A combined expert module combining the expert modules is determined based on the gating weights.

14. The device according to claim 11, wherein: The processing circuit is further configured to: The gating weight is determined based on the quantization parameter and the input block including the image block and neighboring pixels of the image block.

15. The device according to claim 11, wherein The processing circuit is further configured to: The gating weights are determined using at least one convolutional neural network layer.

16. The device according to claim 11, wherein The processing circuit is further configured to: Activate a subset of expert modules with non-zero gating weights; as well as The module outputs of the subset of expert modules are combined based on the gating weights associated with the subset of expert modules to generate the output image block corresponding to the image block.

17. The device according to claim 11, wherein: The processing circuit is further configured to: In response to the input block including the image block, a module output is generated by an expert module having a convolutional neural network.

18. The apparatus of claim 11, wherein the expert module is a finite impulse response (FIR) filter, and the processing circuit is further configured to: determining a combined FIR filter that combines the FIR filters based on the gating weights; and The combined FIR filter is applied to the input block including the image block to generate the output image block.

19. The device according to any one of claims 11 to 18, wherein: The processing circuit is further configured to: The gating weights are determined in a deterministic manner, and the output image block is generated in a loop associated with a reference picture.

20. The device according to any one of claims 11 to 18, wherein: The processing circuit is further configured to: The gating weights are generated in a non-deterministic manner, and the output image block is generated out of a loop associated with a reference picture.

21. A computer-readable storage medium storing instructions for causing a computer to execute a process, causing the computer to execute the method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Encoding device, decoding device, encoding method, and decoding method

    CN110024387A

  • Method and apparatus for video encoding and video decoding based on neural network

    US20190246102A1