Signaling of feature map data
By signaling presence indicators for feature map data and side information, the method efficiently encodes and decodes neural network data, reducing data transfer and maintaining quality requirements.
Patent Information
- Application Number
- JP2024231187
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-10-20
- Filing Date
- 2024-12-26
- Publication Date
- 2025-04-23
AI Technical Summary
Existing technologies for compressing data used in neural networks, such as feature maps, are inefficient in reducing data transfer while maintaining configurability for varying quality requirements.
The method involves signaling a presence indicator to determine whether feature map data or side information is present, allowing for efficient encoding and decoding by skipping unnecessary data analysis and using pre-defined rules to fill missing data.
This approach reduces the complexity of entropy decoding and decreases the data rate, leading to more efficient bitstream structure and improved compression efficiency.
Smart Images

Figure 2025066721000001_ABST
Abstract
Description
[Technical field]
[0001] TECHNICAL FIELD Embodiments of the present disclosure relate generally to the field of signaling information related to neural network processing, such as feature maps or other side information. [Background technology]
[0002] Hybrid image and video codecs have been used for decades to compress image and video data. In such codecs, a signal is typically encoded block-wise by predicting the block and further encoding only the difference between the original block and its prediction. In particular, such encoding may include transform, quantization, and bitstream generation, but usually includes some entropy encoding. Typically, the three components of a hybrid coding method, transform, quantization, and entropy encoding, are optimized separately. Modern video compression standards such as High Efficiency Video Coding (HEVC), Versatile Video Coding (VVC), and Elementary Video Coding (EVC) also use transform representations to encode the residual signal after prediction.
[0003] Recently, machine learning has been applied to image and video coding. In general, machine learning can be applied in various different ways to image and video coding. For example, several end-to-end optimized image or video coding schemes have been discussed. Furthermore, machine learning has been used to determine or optimize some parts of end-to-end coding, such as the selection or compression of prediction parameters or the like. These applications have in common that they generate some feature map data to be communicated between the encoder and the decoder. An efficient structure of the bitstream can contribute greatly to the reduction of the number of bits to encode the image / video source signal.
[0004] Efficient signaling of feature map data is also beneficial for other machine learning applications, or for communicating feature map data or related information between layers of a machine learning system that may be distributed.
[0005] Collaborative intelligence is one of several new paradigms for efficiently deploying deep neural networks on mobile-cloud infrastructures. By splitting the network, for example, between (mobile) devices and the cloud, it is possible to distribute the computational workload so that the overall energy and / or latency of the system is minimized. In general, distributing the computational workload allows resource-limited devices to be used in the deployment of neural networks. Furthermore, computer vision tasks or image / video coding for machines are also applications that operate in a distributed manner and may take advantage of collaborative intelligence.
[0006] A neural network typically includes two or more layers. A feature map is the output of a layer. In a neural network that is split between devices, e.g., between a device and a cloud, or between different devices, the feature map at the output of the split (e.g., the first device) is compressed and transmitted to the remaining layers of the neural network (e.g., to the second device).
[0007] Since transmission resources are typically limited, it is desirable to reduce the amount of data transferred while still providing configurability to support diverse requirements regarding quality. Summary of the Invention [Means for solving the problem]
[0008] The present invention relates to a method and apparatus for compressing data used in neural networks. Such data may include, but is not limited to, features (e.g., feature maps).
[0009] The invention is defined by the independent claims. Some advantageous embodiments are provided in the dependent claims.
[0010] In particular, some embodiments of the present disclosure relate to signaling of feature map data usable by neural networks. Efficiency can be improved by carefully designing the bitstream structure. In particular, a presence indicator is signaled to indicate the presence or absence of feature map data, or side information in general. Depending on the presence indicator, encoding and / or decoding of the feature map or a region thereof is performed or skipped.
[0011] According to one aspect, a method is provided for decoding a feature map for processing by a neural network based on a bitstream, the method including obtaining a region presence indicator based on information from the bitstream for a region of the feature map, and decoding the region includes parsing data from the bitstream to decode the region when the region presence indicator has a first value, and bypassing parsing data from the bitstream to decode the region when the region presence indicator has a second value. Thus, the feature map data may be efficiently encoded in the bitstream. In particular, skipping the parsing may reduce the complexity of entropy decoding and even reduce the rate (reducing the amount of data to be included in the bitstream).
[0012] In some embodiments, the region presence indicator is decoded from the bitstream.
[0013] In some embodiments, the region presence indicator is derived based on information signaled in the bitstream. For example, when the region presence indicator has a second value, decoding the region further includes setting the region according to a predetermined rule. Being able to have the rule indicating how to fill in portions of missing feature map data allows the decoder to appropriately compensate for the non-signaled data.
[0014] For example, the predetermined rules may specify that the features of a region are set to a constant. Constant filling is a computationally simple and efficient way to fill gaps without entropy decoding of all feature elements. In some embodiments, the constant is zero.
[0015] The method may include the step of decoding said constant from the bitstream. Signaling the constant may provide flexibility and improve the reconstructed result.
[0016] In one exemplary implementation, the method includes obtaining a side information presence indicator from the bitstream, parsing the side information from the bitstream when the side information presence indicator has a third value, and bypassing parsing the side information from the bitstream when the side information presence indicator has a fourth value, where the side information may further include at least one of a region presence indicator and information about the region being processed by the neural network to obtain an estimated probability model for use in entropy decoding of the region. The additional side information may allow for more sophisticated configuration. The presence indicator for the side information may make the coding mode efficient.
[0017] For example, when the side information present indicator has a fourth value, the method includes setting the side information to a predetermined side information value. Providing the ability to embed side information allows for dealing with missing (non-signaling) data.
[0018] In some embodiments, the region presence indicator is a flag that can take one of only two values formed by a first value and a second value. The binary flag provides a particularly rate-efficient indication.
[0019] In some embodiments, the regions are channels of a feature map. The channel level is a natural layer granularity. Since the channels are already available separately (separable), no further partitioning is necessary. Therefore, utilizing per-channel granularity is an efficient way to scale rate and distortion. However, it is understood that the regions of a channel can have any other granularity, for example, sub-regions or units of a channel, values of different channels corresponding to the same spatial arrangement of sub-regions or units, a single value of a feature map, values at the same spatial arrangement in different channels.
[0020] The method may further include obtaining a significance order indicating the significance of multiple channels of the feature map, obtaining a last significant channel indicator, and obtaining a region presence indicator based on the last significant channel indicator. Ordering the channels, or generally the regions of the feature map, may help simplify the signaling of region presence. In some embodiments, the indication of the last significant channel corresponds to the index of the last significant channel in the significance order. Instead of signaling a flag for each region, signaling of the last significant region transmitted as side information in the bitstream may be more efficient.
[0021] The indication of the last significant channel corresponds to a quality indicator decoded from the bitstream and may indicate the quality of the encoded feature map resulting from the compression of the region of the feature map. Thus, the region channel presence may be derived without additional signaling, since the quality is usually indicated as side information in the bitstream for other purposes as well.
[0022] For example, obtaining the significance order includes decoding an indication of the significance order from the bitstream. Explicit signaling may provide full flexibility to set / configure the order. However, the present disclosure is not limited to explicit signaling of the significance order.
[0023] In one exemplary implementation, obtaining the significance order includes deriving the significance order based on previously decoded information (or side information) about the source data from which the feature map was generated. One advantage of this implementation is that the additional signaling overhead is low.
[0024] For example, obtaining the significance order involves deriving the significance order based on previously decoded information about the type of source data from which the feature map was generated. The type of source data may also provide a good indication of the purpose and characteristics of the data and therefore the quality required for its reconstruction.
[0025] For example, this may involve decoding channels from a bitstream sorted in the bitstream according to significance order from the most significant channel to the last significant channel, which may enable a bitrate scalability feature that allows for reducing the bitrate without re-encoding by dropping (cutting) the least significant channels according to a desired quality level.
[0026] In one exemplary implementation, the method further includes decoding region partitioning information from the bitstream that indicates partitioning of regions of the feature map into units, and decoding or not decoding a unit presence indication that indicates whether or not the feature map data should be parsed from the bitstream to decode the units of the region depending on the partitioning information. Further partitioning (partitioning) a region such as a channel into units (partitions) can provide finer granularity in indicating the presence of these units and therefore more flexible scaling of overhead.
[0027] For example, the region partitioning information for a region includes a flag indicating whether the bitstream includes or does not include unit information specifying dimensions and / or locations of units of the region, and the method includes decoding a unit presence indication for each unit of the region from the bitstream, and parsing or not parsing feature map data for the unit from the bitstream depending on the value of the unit presence indication for the unit. By signaling the parameters of the partitioning, the rate and distortion relationship can be controlled with additional degrees of freedom.
[0028] In some embodiments, the unit information specifies a hierarchical partitioning of the region including at least one of a quadtree, a binary tree, a ternary tree, or a triangular partitioning, which provides the advantage of efficient signaling, e.g., as developed for hybrid codecs.
[0029] In some example implementations, decoding a region from a bitstream includes extracting from the bitstream a last significant coefficient indicator indicating the position of the last coefficient among the coefficients of the region, decoding the significant coefficients of the region from the bitstream, setting the coefficient following the last significant coefficient indicator according to a predetermined rule, and obtaining the feature data of the region by inverse transforming the coefficients of the region. Applying the transform and encoding the coefficients after the transform allows the significant coefficients to be easily identified since the significant coefficients are typically located within the region of coefficients with low indices. This may further increase the signaling efficiency.
[0030] For example, the inverse transform is an inverse discrete cosine transform, an inverse discrete sine transform, or an inverse transform obtained by modifying the inverse discrete cosine transform, or a convolutional neural network transform. These exemplary transforms are already used for residual coding purposes and can be implemented efficiently, for example, with existing hardware / software / algorithm approaches.
[0031] The method may further include decoding a side information present flag from the bitstream indicating whether the bitstream includes any side information for the feature map, the side information including information to be processed by the neural network to obtain an estimated probability model for use in entropy decoding of the feature map. A presence indication for side information may provide more efficient signaling, similar to a feature map region presence indication.
[0032] For example, decoding the region presence indicator includes decoding with a context adaptive entropy decoder. Further encoding / decoding with adaptive entropy coding makes the bitstream even more compact.
[0033] According to one aspect, a method is provided for decoding a feature map for processing by a neural network from a bitstream, the method including obtaining a side information indicator for the feature map from the bitstream, where decoding the feature map includes parsing the side information for decoding the feature map from the bitstream when the side information indicator has a fifth value, and bypassing parsing the side information for decoding the feature map from the bitstream when the side information indicator has a sixth value. A presence indication for side information may provide more efficient signaling, similar to a feature map region presence indication.
[0034] The method may include entropy decoding, which is based on the decoded feature maps processed by the neural network, which allows the entropy coder to efficiently adapt to the content.
[0035] For example, when the side information indicator has a sixth value, the method includes setting the side information to a predetermined side information value, so that signaling of the side information value is omitted, which may lead to rate improvement, for example, the predetermined side information value is zero.
[0036] In some embodiments, the method comprises the step of decoding said predetermined side information value from a bitstream.Providing a value to be used by default increases flexibility in its configuration.
[0037] According to one aspect, a method for decoding an image is provided, the method comprising any of the above-described methods for decoding a feature map for processing by a neural network from a bitstream, and obtaining a decoded image comprising processing the decoded feature map by a neural network. Application of the above method for machine learning-based image or video coding may significantly improve the efficiency of such coding. For example, the feature map represents the coded image data and / or coded side information for decoding the image data.
[0038] In another aspect, a method for computer vision is provided, the method comprising performing a computer vision task comprising any of the above-described methods for decoding a feature map from a bitstream for processing by a neural network, and processing the decoded feature map by the neural network. Application of the above method to machine vision tasks can help reduce the rate required by the transfer of information in machine learning-based models such as neural networks, especially when implemented in a distributed manner. For example, the computer vision task is object detection, object classification, and / or object recognition.
[0039] According to one aspect, a method is provided for encoding a feature map for processing by a neural network into a bitstream, the method including obtaining a region presence indicator for a region of the feature map based on a obtained region presence indicator for the feature map, and determining to encode the region of the feature map when the region presence indicator has a first value and to bypass encoding the region of the feature map when the region presence indicator has a second value.
[0040] In some embodiments, the region present indicator is indicated in the bitstream.
[0041] In some embodiments, the region presence indicator is derived based on information already signaled in the bitstream.
[0042] The encoding methods referred to herein impart a particular structure to the bitstream, making available the advantages discussed above for the corresponding decoding methods.
[0043] For example, determining (or obtaining a region presence indicator) may include evaluating values of features of the region. Context / content-based adaptation of the signaling may exploit certain correlations and reduce the rate of the encoded stream accordingly. In such a manner, determining (or obtaining a region presence indicator) may include evaluating values in the context of the region, in other words evaluating values spatially adjacent to the region in the feature map.
[0044] In some embodiments, the determining is based on the impact of the region on the quality of the result of the neural network processing, such that the rate reduction is sensitive to distortions resulting from cutting information.
[0045] According to one exemplary implementation, the determining includes determining a sum of bits required for transmission of the feature map stepwise starting with bits of the most significant regions and continuing to less significant regions until the sum exceeds a preconfigured threshold, encoding the regions whose sum did not exceed the preconfigured threshold, the region presence indicator having a first value for the encoded regions and a second value for the non-encoded regions (also referred to as unencoded regions). This approach provides a computationally efficient approach to satisfy the constraints imposed on the rate and distortion of the resulting stream.
[0046] According to one aspect, a method is provided for encoding a feature map for processing by a neural network in a bitstream, the method including obtaining a feature map, determining whether to indicate side information for the feature map, and indicating in the bitstream either a side information indicator indicating a third value and a side information indicator indicating either the side information or a fourth value without the side information. Thus, the encoding may be capable of signaling substantially only the information necessary to achieve a requested quality / rate.
[0047] In some embodiments, the region presence indicator and / or the side information indicator are flags that can take one of only two values formed by a first value and a second value. The binary flags provide a particularly rate-efficient indication. In some embodiments, the regions are channels of a feature map.
[0048] It will be appreciated that regions of the feature map may have different granularity, e.g., sub-regions or units of a channel, values of different channels corresponding to the same spatial arrangement of sub-regions or units, a single value of the feature map, values at the same spatial arrangement in different channels.
[0049] The method may further include obtaining a significance order indicating significance of a plurality of channels of the feature map, obtaining a last significant channel indicator, and obtaining a region presence indicator based on the last significant channel indicator, in some embodiments, the indication of the last significant channel corresponds to an index of the last significant channel in the significance order.
[0050] The indication of the last significant channel may correspond to a quality indicator that is encoded (inserted) into the bitstream as side information and may indicate the quality of the encoded feature map resulting from compression of a region of the feature map.
[0051] For example, the significance order indication is inserted (encoded) into the bitstream as side information.
[0052] In one exemplary implementation, obtaining the significance order includes deriving the significance order based on previously encoded information about the source data from which the feature map was generated. For example, obtaining the significance order includes deriving the significance order based on previously encoded information about the type of source data from which the feature map was generated.
[0053] For example, this involves encoding, within the bitstream, the channels sorted within the bitstream according to order of significance from the most significant channel to the last significant channel.
[0054] In one example implementation, the method further includes encoding, into the bitstream, region partitioning information indicating partitioning of a region of the feature map into units, and depending on the partitioning information, encoding (inserting into the bitstream) or not encoding (inserting into the bitstream) a unit presence indication indicating whether feature map data is included in the bitstream for decoding the units of the region.
[0055] For example, the region partitioning information for a region includes a flag indicating whether the bitstream includes or does not include unit information specifying dimensions and / or locations of units of the region, and the method includes decoding a unit presence indication for each unit of the region from the bitstream, and parsing or not parsing feature map data for the unit from the bitstream depending on the value of the unit presence indication for the unit. By signaling the parameters of the partitioning, the rate and distortion relationship can be controlled with additional degrees of freedom.
[0056] In some embodiments, the unit information specifies a hierarchical partitioning of the region including at least one of a quadtree, a binary tree, a ternary tree, or a triangular partition.
[0057] In some example implementations, encoding the region into the bitstream includes including in the bitstream a last significant coefficient indicator indicating the position of the last coefficient among the coefficients of the region, encoding the significant coefficients of the region into the bitstream, and transforming the feature data of the region by a transform, thereby obtaining the coefficients of the region.
[0058] For example, the inverse transform is an inverse discrete cosine transform, an inverse discrete sine transform, or an inverse transform obtained by modifying the inverse discrete cosine transform or the inverse discrete cosine transform, or a convolutional neural network transform.
[0059] The method may further include encoding a side information present flag in the bitstream indicating whether the bitstream includes or does not include any side information for the feature map, the side information including information to be processed by the neural network to obtain an estimated probability model for use in entropy decoding of the feature map.
[0060] For example, encoding the region presence indicator and / or the side information indicator may include encoding by a context adaptive entropy encoder.
[0061] According to one aspect, there is provided a method for encoding a feature map for processing by a neural network within a bitstream, the method including including a side information indicator for the feature map within the bitstream, where encoding the feature map includes inserting a fifth value of the side information indicator within the bitstream, the side information being information for decoding the feature map, and including the side information within the bitstream or including a sixth value of the side information indicator within the bitstream and not inserting side information for the feature map region within the bitstream.
[0062] The method may include entropy encoding, which is based on the encoded feature maps processed by a neural network.
[0063] For example, when the side information indicator has a sixth value, the encoder thereby controls setting the side information to a predetermined side information value at the decoder side. In some embodiments, the method comprises encoding said predetermined side information value in the bitstream.
[0064] According to one aspect, a method for encoding an image is provided, the method including obtaining an encoded image by processing an input image with a neural network, thereby obtaining a feature map, and encoding the feature map into a bitstream according to any of the methods described above, for example, the feature map representing the encoded image data and / or encoded side information for decoding the image data.
[0065] In another aspect, a method for computer vision is provided, the method comprising: encoding a feature map processed by a neural network in a bitstream according to any of the methods described above; processing an image to thereby obtain the feature map by the neural network, and providing to a decoder the feature map for performing a computer vision task based thereon, for example the computer vision task being object detection, object classification, and / or object recognition.
[0066] According to one aspect, a computer program stored on a non-transitory medium includes code that, when executed on one or more processors, performs the steps of any of the methods presented above.
[0067] According to one aspect, a device is provided for decoding a feature map for processing by a neural network based on a bitstream, the device including: a region presence indicator obtaining module configured to obtain a region presence indicator based on information from the bitstream for a region of the feature map; and a decoding module configured to decode the region including parsing data from the bitstream to decode the region when the region presence indicator has a first value and bypassing parsing data from the bitstream to decode the region when the region presence indicator has a second value.
[0068] According to one aspect, a device is provided for decoding a feature map for processing by a neural network from a bitstream, the device including: a side information indicator obtaining module configured to obtain, from the bitstream, a side information indicator related to the feature map; and a decoding module configured to decode the feature map, the decoding including parsing the side information from the bitstream for decoding the feature map when the side information indicator has a fifth value, and bypassing parsing the side information from the bitstream for decoding the feature map when the side information indicator has a sixth value.
[0069] According to one aspect, a device for encoding a feature map for processing by a neural network into a bitstream is provided, the device including: a feature map acquisition module configured to acquire a feature map; and an encoding control module configured to acquire a region presence indicator based on the acquired feature map, and to determine, based on the acquired region presence indicator, to encode a region of the feature map when the region presence indicator has a first value or to bypass encoding the region of the feature map when the region presence indicator has a second value.
[0070] According to one aspect, a device is provided for encoding a feature map for processing by a neural network within a bitstream, the device including: a feature map acquisition module configured to acquire the feature map; and an encoding control module configured to determine whether to indicate side information for the feature map, wherein the encoding control module indicates, within the bitstream, either a side information indicator indicating a third value, and either the side information or a side information indicator indicating a fourth value without the side information.
[0071] According to one aspect, there is provided a device for decoding a feature map for processing by a neural network based on a bitstream, the device including processing circuitry configured to perform the steps of a method according to any of the preceding methods.
[0072] According to one aspect, there is provided a device for encoding feature maps for processing by a neural network in a bitstream, the device including processing circuitry configured to perform the steps of a method according to any of the preceding methods.
[0073] According to one aspect, the decoder device is cloud implemented. In such a scenario, some embodiments may provide a good trade-off between the required rate of transmission and the accuracy of the neural network.
[0074] Any of the above described devices may be embodied on an integrated chip.
[0075] Any of the above described embodiments and example implementations may be combined.
[0076] In the following, embodiments of the invention will be explained in more detail with reference to the accompanying figures and drawings. [Brief description of the drawings]
[0077] [Figure 1] FIG. 2 is a schematic diagram illustrating channels processed by layers of a neural network. [Diagram 2] FIG. 1 is a schematic diagram illustrating an autoencoder type neural network. [Diagram 3] FIG. 1 is a schematic diagram illustrating a network architecture including a hyper-prior model. [Figure 4] FIG. 1 is a block diagram illustrating the structure of a cloud-based solution for machine-based tasks, such as machine vision tasks. [Diagram 5] FIG. 1 is a block diagram illustrating the structure of an end-to-end trainable video compression framework. [Figure 6] FIG. 1 is a block diagram illustrating a network for motion vector (MV) compression. [Figure 7] FIG. 1 is a block diagram illustrating a network for motion compression. [Figure 8] 1 is a flowchart illustrating an exemplary method for decoding feature map data for an image region. [Figure 9]1 is a flowchart illustrating an exemplary method for encoding feature map data for an image region. [Figure 10] 11 is a flowchart illustrating an example method for decoding feature map data for an image region including default value settings. [Figure 11] 1 is a flowchart illustrating an exemplary method for encoding feature map data for an image region. [Figure 12] 1 is a flow diagram illustrating an exemplary method for encoding feature map data based on significance and subject to a rate constraint. [Figure 13] 11 is a flowchart illustrating an exemplary method for decoding feature map data for an image region including side information. [Figure 14] 1 is a flowchart illustrating an exemplary method for encoding feature map data for an image region that includes side information. [Figure 15] 1 is a flowchart illustrating an example method for decoding feature data based on a bitstream including a last significant channel indicator. [Figure 16] FIG. 2 is a schematic diagram illustrating the implicit relationship between quality levels and design orders of channels as well as quality parameters. [Figure 17] 1 is a flow chart illustrating an example method for decoding feature data based on a bitstream including a last significant channel indicator and a significance order. [Figure 18] FIG. 1 is a schematic diagram illustrating an explicit relationship between the order of significance and the design order of channels as well as quality parameters. [Figure 19] FIG. 2 is a schematic diagram illustrating a bitstream structure with channel information stored in order of importance and then in order of quality scalability level. [Figure 20] FIG. 1 is a schematic diagram illustrating feature map units partitioned by a quadtree method and by units containing feature map data. [Figure 21] 1 is a flow chart illustrating an exemplary method for decoding feature data, including decoding the last significant coefficient position. [Figure 22] 1 is a flow chart illustrating an exemplary method for encoding feature data, including encoding the last significant coefficient position. [Figure 23] FIG. 1 is a block diagram illustrating an example apparatus for decoding and encoding feature map data. [Figure 24] 1 is a block diagram illustrating an exemplary apparatus for decoding and encoding side information data. [Diagram 25] FIG. 1 is a block diagram illustrating an example of a video encoding system configured to implement embodiments of the present invention. [Figure 26] 1 is a block diagram illustrating another example of a video encoding system configured to implement embodiments of the present invention. [Figure 27] 1 is a block diagram illustrating an example of an encoding device or a decoding device. [Figure 28] 11 is a block diagram illustrating another example of an encoding device or a decoding device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0078] In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which illustrate, by way of example, certain aspects of embodiments of the invention or in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical changes not shown in the drawings. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
[0079] For example, it is understood that disclosure related to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, where one or more particular method steps are described, the corresponding device may include one or more units, e.g., functional units (e.g., one unit performing one or more steps, or multiple units each performing one or more of the multiple steps), to perform the described one or more method steps, even if such one or more units are not explicitly described or illustrated in the figures. On the other hand, for example, where a particular apparatus is described based on one or more units, e.g., functional units, the corresponding method may include one step performing the function of one or more units (e.g., one step performing the function of one or more units, or multiple steps each performing the function of one or more units of the multiple units), even if such one or more steps are not explicitly described or illustrated in the figures. Furthermore, it is understood that the features of various exemplary embodiments and / or aspects described herein may be combined with each other, unless otherwise specified.
[0080] Some embodiments aim to provide low-complexity compression of data for neural networks. For example, the data may include feature maps, or other data used in neural networks, such as weights or other parameters. In some exemplary implementations, signaling is provided that may enable generating efficient bitstreams for neural networks. With the collaborative intelligence paradigm, mobile or edge devices may have feedback from the cloud, if necessary. However, it should be noted that the present disclosure is not limited to the framework of collaborative networks that include the cloud. It may be employed in any distributed neural network system. Furthermore, it may be employed to store feature maps in neural networks that are not necessarily distributed.
[0081] Next, we outline some of the terminology used.
[0082] Artificial Neural Networks Artificial neural networks (ANNs), or connectionist systems, are computational systems loosely inspired by the biological neural networks that make up animal brains. Such systems "learn" to perform tasks by examining examples, typically without being programmed with task-specific rules. For example, in image recognition, a system might learn to identify images that contain cats by analyzing example images that have been manually labeled as "cat" or "no cat" and using the results to identify cats in other images. They do this without prior knowledge of cats, e.g., that they have fur, tails, whiskers, and cat-like faces. Instead, they automatically generate discriminative characteristics from the examples they process.
[0083] ANNs are based on a collection of connected units or nodes, called artificial neurons, loosely modeled on neurons in biological brains. Each connection can transmit a signal to other neurons, similar to a synapse in a biological brain. An artificial neuron that receives a signal can then process it and send it to the neurons that are connected to it.
[0084] In an ANN implementation, the "signals" at the connections are real, and the output of each neuron is calculated by some nonlinear function of the sum of its inputs. The connections are called edges. Neurons and edges typically have weights that are adjusted as learning progresses. The weights make the signal at the connections stronger or weaker. Neurons may have a threshold such that a signal is sent only if the aggregated signal exceeds that threshold. Neurons are typically aggregated into layers. Different layers may perform different transformations on their inputs. Signals propagate from the first layer (input layer) to the last layer (output layer), possibly after traversing the layers multiple times.
[0085] The original goal of the ANN approach was to solve problems similar to those solved by the human brain. Over time, the focus shifted to performing specific tasks, straying from biology. ANNs are used for a variety of tasks including computer vision, speech recognition, machine translation, social network filtering, playing board and video games, medical diagnosis, and even activities traditionally considered to be uniquely human, such as painting.
[0086] Convolutional Neural Networks The name "convolutional neural network" (CNN) refers to the network's employment of a mathematical operation called convolution, which is a specialized type of linear operation. Convolutional networks are simply neural networks that use convolution instead of the more common matrix multiplication in at least one of their layers.
[0087] FIG. 1 illustrates a schematic of the general concept of processing by a neural network such as a CNN. A convolutional neural network consists of input and output layers, as well as multiple hidden layers. The input layer is the layer where the input (such as the portion of the image shown in FIG. 1) is provided for processing. The hidden layers of a CNN typically consist of a series of convolutional layers that convolve with multiplication or other dot products. The result of the layers is one or more feature maps (f.maps in FIG. 1), sometimes also referred to as channels. Some or all of the layers may involve subsampling. As a result, the feature maps may be smaller, as illustrated in FIG. 1. The activation function in a CNN is typically a RELU (Regulated Linear Unit) layer, followed by additional convolutions such as pooling layers, fully connected layers, and normalization layers, which are referred to as hidden layers because the input and output are masked by the activation function and the final convolution. These layers are colloquially referred to as convolutions, but this is just a convention. Mathematically speaking, this is technically a sliding dot product or cross-correlation, which has significance in that it affects how the index into the matrix determines the weight at a particular index point.
[0088] When programming a CNN for image processing, the input is a tensor with shape (number of images) x (image width) x (image height) x (image depth), as shown in Figure 1. Then, after passing through the convolutional layers, the image becomes abstracted into a feature map with shape (number of images) x (feature map width) x (feature map height) x (feature map channels). The convolutional layers in the neural network should have as attributes a convolution kernel (hyperparameter) defined by width and height, the number of input and output channels (hyperparameters). The depth of the convolutional filter (input channel) should be equal to the number of channels (depth) of the input feature map.
[0089] Previously, traditional multi-layer perceptron (MLP) models have been used for image recognition. However, due to the fully connected nature of the nodes, they suffer from high dimensionality issues and do not scale well with high resolution images. A 1000x1000 pixel image with RGB color channels has 3 million weights, which is too high to be efficiently processed by fully connected nature. Also, such network architectures do not consider the spatial structure of the data and treat input pixels that are far away the same as pixels that are close by. This ignores the locality of reference in the image data, both computationally and semantically. Thus, the fully connected nature of neurons is wasteful for purposes such as image recognition, which are dominated by spatially local input patterns.
[0090] Convolutional neural networks are biologically inspired modifications of multi-layer perceptrons that are specifically designed to emulate the behavior of the visual cortex. These models mitigate the difficulties imposed by MLP architectures by exploiting the strong spatial local correlations present in natural images. The convolutional layer is the core building block of CNNs. The parameters of the layer consist of a set of learnable filters (kernels, as mentioned above) that have small receptive fields but penetrate the full depth of the input volume. In the forward pass, each filter is convolved across the width and height of the input volume, computing the dot product between the filter's entries and the input, generating a two-dimensional activation map for that filter. As a result, the network learns filters that activate when it detects some particular type of feature at some spatial location in the input.
[0091] The activation maps for all filters are stacked along the depth dimension to form the full output volume of the convolutional layer. Each entry in the output volume can therefore be interpreted as the output of a neuron that looks at a small region in the input and shares parameters with neurons in the same activation map. A feature map, or activation map, is the output activation for a given filter. Feature map and activation have the same meaning. In some papers, it is called an activation map because it is a mapping that corresponds to the activation of different parts of the image, and also a feature map because it is a mapping of where certain features are found in the image. High activation means that a feature is found.
[0092] Another important concept in CNNs is pooling, which is a form of nonlinear downsampling. There are several nonlinear functions to implement pooling, with max pooling being the most common. It partitions the input image into a set of non-overlapping rectangles and, for each such subregion, outputs the maximum value.
[0093] Intuitively, the exact placement of a feature is less important than its rough placement with respect to other features. This is the idea behind the use of pooling in convolutional neural networks. Pooling layers serve to gradually reduce the spatial size of the representation, reducing the number of parameters in the network, the memory footprint, and the amount of computation, and therefore also controlling overfitting. In CNN architectures, it is common to periodically insert pooling layers between successive convolutional layers. The pooling operation provides another form of translation invariance.
[0094] A pooling layer operates independently on every depth slice of the input, resizing it spatially. The most common form is a pooling layer where a filter of size 2x2 is applied with a stride of 2 downsamples for every depth slice in the input by 2 along both width and height, discarding 75% of the activations. In this case, all max operations take 4 numbers. The depth dimension remains unchanged.
[0095] In addition to max pooling, the pooling unit can use other functions such as average pooling and l2-norm pooling. Average pooling has often been used historically, but has recently fallen out of popularity compared to max pooling, which actually has better performance. Due to the aggressive reduction in the size of the representation, there is a recent trend to use smaller filters or to discard the pooling layer altogether. "Region of interest" pooling (also called ROI pooling) is a variant of max pooling, where the output size is fixed and the input rectangle is a parameter. Pooling is a key component of convolutional neural networks for object detection based on the Fast R-CNN architecture.
[0096] The ReLU mentioned above stands for rectified linear unit, and applies a non-saturating activation function, which effectively removes negative values from the activation map by setting them to zero. This enhances the non-linear nature of the decision function and the entire network without affecting the receptive fields of the convolutional layers. Other functions, such as the saturated hyperbolic tangent function and the sigmoid function, are also used to enhance non-linearity. ReLU is often preferred over other functions, as it trains neural networks several times faster without a significant penalty to generalization accuracy.
[0097] After several convolutional and max-pooling layers, high-level inference in a neural network occurs via fully connected layers. Neurons in a fully connected layer have connections to all activations in the previous layer, as in regular (non-convolutional) artificial neural networks. Their activations are therefore often computed as affine transformations, with matrix multiplications followed by bias offsets (vector additions of learned or fixed bias terms).
[0098] The "loss layer" specifies how training penalizes deviations between predicted labels (output) and true labels, and is usually the final layer of a neural network. Various loss functions appropriate for different tasks may be used: softmax loss is used to predict a single class out of K mutually exclusive classes; sigmoid cross entropy loss is used to predict K independent probability values in [0,1]; Euclidean loss is used to regress to real-valued labels.
[0099] In summary, FIG. 1 shows the data flow of a typical convolutional neural network. First, an input image is passed through a convolutional layer to be abstracted into a feature map containing multiple channels, corresponding to the number of filters in the set of learnable filters of this layer (e.g., one channel per filter). The feature map is then subsampled, for example using a pooling layer, thereby reducing the dimensionality of each channel in the feature map. The number of channels in the feature map may also be different, as the next data comes to another convolutional layer that may have a different number of output channels. As mentioned above, the number of input and output channels are hyperparameters of the layer. To establish the connectivity of the network, those parameters need to be synchronized between the two connection layers, e.g., the number of input channels for the current layer should be equal to the number of output channels of the previous layer. For the first layer, which processes input data, e.g., an image, the number of input channels is usually equal to the number of channels of the data representation, e.g., 3 channels for an RGB or YUV representation of an image or video, or 1 channel for a grayscale image or video representation.
[0100] Autoencoders and Unsupervised Learning An autoencoder is a type of artificial neural network used to learn efficient data encoding in an unsupervised way. A schematic diagram is shown in Figure 2. The goal of an autoencoder is to learn a representation (encoding) for a set of data, typically for dimensionality reduction, by training the network to ignore the signal "noise". Along with the reduction side, a reconstruction side is trained, and the autoencoder tries to generate a representation from the reduced encoding that is as close as possible to the original input, hence its name. In the simplest case, given one hidden layer, the encoder stage of an autoencoder takes an input x and maps it to h, i.e. h = σ(Wx+b) It is. This image h is usually referred to as the code, latent variable, or latent representation. Here, σ is an element-wise activation function such as the sigmoid function or the rectified linear unit. W is a weight matrix and b is a bias vector. The weights and biases are usually initialized randomly and then updated iteratively as we train through backpropagation. The decoder stage of the autoencoder then maps h to a reconstruction x' of the same shape as x, i.e. x'=σ'(W'h'+b') It is. Here, σ', W', and b' for the decoder may be unrelated to the corresponding σ, W, and b for the encoder.
[0101] Variational autoencoder (VAE) models make strong assumptions about the distribution of the latent variables. They use a variational approach to latent representation learning, which results in an additional loss component and a specific estimator for the training algorithm called the Stochastic Gradient Variational Bayesian (SGVB) estimator. The data is a directed graph model p θ (x|h), and the encoder estimates the posterior distribution p θ Approximation q of (h|x) φ Suppose we are learning (h|x), where φ and θ are the parameters of the encoder (recognition model) and decoder (generative model), respectively. The probability distribution of the latent vectors in a VAE typically matches the probability distribution of the training data much more closely than a standard autoencoder. The objective variable of a VAE is
[0102]
number
[0103] It takes the form: Here, D KL stands for Kullback-Leibler Divergence. The prior distribution for the latent variables is usually a centered isotropic multivariate Gaussian distribution p θWe set (h) = N(0,I). In general, the shapes of the variational and likelihood distributions are chosen to be Gaussian factorized as follows: q φ (h|x)=N(ρ(x),ω 2 (x)I) p φ (x|h)=N(μ(h),σ 2 (h)I) where ρ(x) and ω 2 (x) is the encoder output, μ(h) and σ 2 (h) is the decoder output.
[0104] Recent advances in the field of artificial neural networks, especially convolutional neural networks, have allowed researchers to focus on applying neural network-based techniques to the task of image and video compression. For example, end-to-end optimized image compression has been proposed, which uses networks based on variational autoencoders. Data compression is therefore considered as a fundamental and well-studied problem in engineering and is commonly formulated with the goal of designing a code for a given discrete data ensemble with minimum entropy. The solution relies heavily on knowledge of the probabilistic structure of the data, and the problem is therefore closely related to probabilistic source modeling. However, since all practical codes must have finite entropy, continuous-valued data (such as a vector of image pixel intensities) must be quantized to a finite set of discrete values, introducing errors. In this context, known as a lossy compression problem, one must consider a trade-off between two competing costs: the entropy of the discretized representation (rate) and the error resulting from quantization (distortion). Different compression applications, such as data storage or transmission over capacity-limited channels, require consideration of different rate-distortion trade-offs. Joint optimization of rate and distortion is difficult. Without further constraints, the general problem of optimal quantization in a high-dimensional space is intractable. For this reason, most existing image compression methods work by linearly transforming a data vector into a suitable continuous-valued representation, quantizing its elements independently, and then encoding the resulting discrete representation using a reversible entropy code. This scheme is called transform coding because of the central role of the transform. For example, JPEG uses a discrete cosine transform on blocks of pixels, and JPEG2000 uses a multi-scale orthogonal wavelet decomposition. Typically, the three components of a transform coding method -- the transform, the quantizer, and the entropy code -- are optimized separately (often through manual parameter tuning). Modern video compression standards such as HEVC, VVC, and EVC also use the transformed representation to code the residual signal after prediction.Several transforms are used for that purpose, such as the discrete cosine transform and the discrete sine transform (DCT, DST) and also the low frequency non-separable manually optimized transform (LFNST).
[0105] Variational Image Compression J. Balle, L. Valero Laparra, and E. P. Simoncelli (2015). "Density Modeling of Images Using a Generalized Normalization Transformation". In: arXiv e-prints. Presented at the 4th Int. Conf. for Learning Representations, 2016 (hereafter "Balle"), the authors propose a framework for end-to-end optimization of image compression models based on nonlinear transforms. Previously, the authors demonstrated that models consisting of linear-nonlinear block transforms optimized for a perceptual distortion measure exhibit visually superior performance compared to models optimized for mean squared error (MSE). Here, the authors optimize for MSE but use a more flexible transform built from a cascade of linear convolutions and nonlinearities. In particular, the authors use a Generalized Divided Normalization (GDN) coupled nonlinearity inspired by models of neurons in biological visual systems and demonstrated to be effective for Gaussianizing image densities. This cascade transform is followed by uniform scalar quantization (i.e., each element is rounded to the nearest integer), which effectively implements a parametric form of vector quantization in the original image space. The compressed image is reconstructed from these quantized values using an approximate parametric nonlinear inverse transform.
[0106] For any desired point along the rate-distortion curve, the parameters of both the analytical and synthetic transforms are jointly optimized using stochastic gradient descent. To achieve this in the presence of quantization (which yields a gradient of zero almost everywhere), the authors use a surrogate loss function based on successive relaxation of a stochastic model, replacing the quantization step with additive uniform noise. The relaxed rate-distortion optimization problem is somewhat similar to problems used to fit generative image models, in particular variational autoencoders, but differs in terms of the constraints the authors impose to ensure that they all approximate a discrete problem along the rate-distortion curve. Finally, rather than reporting differential or discrete entropy estimates, the authors implement an entropy code and report performance using actual bit rates, thereby demonstrating the feasibility of their solution as a fully lossy compression method.
[0107] J. Balle's paper describes an end-to-end trainable model for image compression based on a variational autoencoder. The model incorporates a hyper-prior to effectively capture spatial dependencies in the latent representation. This hyper-prior concerns side information that is also propagated to the decode side, a concept that is universal to virtually all modern image codecs, but has not been extensively explored in image compression using ANNs. Unlike existing autoencoder compression methods, the model trains a complex prior together with the underlying autoencoder. The authors demonstrate that the model results in state-of-the-art image compression when measuring visual quality using the popular MS-SSIM index, and achieves rate-distortion performance that surpasses published ANN-based methods when evaluated using a more traditional metric based on squared error (PSNR).
[0108] Figure 3 shows the network architecture including the hyper-prior model. a ,g s ) shows the image autoencoder architecture, and on the right (h a ,h s) corresponds to an autoencoder that implements a hyperprior. The factorized prior model is a function of the analytic transformation g a and the composite transformation g s We use the same architecture for both. Q stands for quantization, and AE and AD stand for arithmetic encoder and decoder, respectively. The encoder applies g a The encoder g generates responses y (latent representations) with spatially varying standard deviations. a It contains multiple convolutional layers with subsampling and generalized decomposition normalization (GDN) as the activation function.
[0109] The response is h a to summarize the distribution of standard deviations in z. z is then quantized, compressed, and transmitted as side information. The encoder then converts the quantized vector
[0110]
number
[0111] Using the spatial distribution of standard deviations used to obtain probability values (or frequency values) for arithmetic coding (AE),
[0112]
number
[0113] and use it to estimate the quantized image representation
[0114]
number
[0115] (or latent representation) is compressed and transmitted. The decoder first extracts
[0116]
number
[0117] Then, h s Using
[0118]
number
[0119] But this is more
[0120]
number
[0121] This then gives us the correct probability estimate for successfully recovering
[0122]
number
[0123] g s to obtain a reconstructed image.
[0124] In further work, probability modeling with hyperpriors was further improved by introducing an autoregressive model based on, for example, the PixelCNN++ architecture, which allows exploiting the context of already decoded symbols in the latent space for better probability estimation of further symbols to be decoded, as illustrated, for example, in Figure 2 of L. Zhou, Zh. Sun, X. Wu, J. Wu, "End-to-end Optimized Image Compression with Attention Mechanism," CVPR 2019 (hereafter referred to as "Zhou").
[0125] Cloud solutions for machine tasks Video Coding for Machines (VCM) is another computer science direction that has recently become popular. The main idea behind this approach is to transmit coded representations of image or video information that are subject to further processing by computer vision (CV) algorithms such as object segmentation, detection and recognition. In contrast to traditional image and video coding, which targets human perception, the quality characteristic is not the reconstructed quality but rather the performance of a computer vision task, e.g. object detection accuracy. This is illustrated in Figure 4.
[0126] Video Coding for Machines, also referred to as Collaborative Intelligence, is a relatively new paradigm for efficient deployment of deep neural networks on mobile-cloud infrastructures. By splitting the network between mobile and cloud, it is possible to distribute the computational workload so that the overall energy and / or latency of the system is minimized. In general, Collaborative Intelligence is a paradigm in which the processing of a neural network is distributed between two or more different computational nodes, e.g., devices, but generally any functionally defined node. Here, the term "node" does not refer to the nodes of the neural network mentioned above. Rather, a (computational) node here refers to a separate device / module (physically or at least logically) that implements a part of a neural network. Such devices may be different servers, different end-user devices, a mix of servers and / or user devices and / or clouds and / or processors, or the like. In other words, computational nodes may be considered as nodes that belong to the same neural network and communicate with each other to transfer encoded data in / for the neural network. For example, one or more layers may run on a first device and one or more layers may run on other devices to allow complex calculations to be performed. However, the distribution may also be finer, with a single layer running on multiple devices. In this disclosure, the term "multiple" refers to more than one. In some existing solutions, parts of the neural network functions are run on a device (user device or edge device or similar) or multiple such devices, and then the output (feature map) is passed to the cloud. The cloud is a collection of processing or computing systems located outside the device that are running parts of the neural network. The concept of collaborative intelligence has also been extended to model training.In this case, data flows both from cloud to mobile in the backpropagation during training, and from mobile to cloud in the forward pass during training, and also for inference.
[0127] Some works present semantic image compression by encoding deep features and then reconstructing the input image from them. Compression based on uniform quantization is presented, followed by Context-Based Adaptive Arithmetic Coding (CABAC) from H.264. In some scenarios, it may be more efficient to transmit the output of the hidden layer (deep feature map) from the mobile part to the cloud, rather than sending the compressed natural image data to the cloud and using the reconstructed image to perform object detection. Efficient compression of feature maps is beneficial for image and video compression and reconstruction, both for human perception and machine vision. Entropy coding methods, such as arithmetic coding, are popular approaches to compression of deep features (i.e., feature maps).
[0128] Currently, video content contributes to over 80% of Internet traffic, and the proportion is expected to grow even more. Therefore, it is important to build an efficient video compression system to generate higher quality frames for a given bandwidth budget. In addition, most video-related computer vision tasks, such as video object detection or video object tracking, are sensitive to the quality of the compressed video, and efficient video compression can also benefit other computer vision tasks. Meanwhile, techniques in video compression also help action recognition and model compression. However, for the past decades, video compression algorithms have relied on hand-crafted modules, such as block-based motion estimation and discrete cosine transform (DCT), to reduce redundancy in video sequences, as mentioned above. Although each module is well designed, the entire compression system is not end-to-end optimized. It is desirable to further improve the video compression performance by jointly optimizing the entire compression system.
[0129] End-to-end image or video compression In recent years, deep neural network (DNN)-based autoencoders for image compression have achieved performance comparable to or better than traditional image codecs such as JPEG, JPEG2000, or BPG. One possible explanation is that DNN-based image compression methods can take advantage of large-scale end-to-end training and highly nonlinear transformations that are not used in traditional approaches. However, it is not trivial to directly apply these techniques to build end-to-end learning systems for video compression. First, it also remains an open challenge to learn how to generate and compress motion information tailored for video compression. Video compression methods rely heavily on motion information to reduce temporal redundancy in video sequences. A straightforward solution is to represent the motion information using learning-based optical flow. However, current learning-based optical flow approaches aim to generate flow fields that are as accurate as possible. Accurate optical flow is often not optimal for a given video task. In addition, the amount of data for optical flow is significantly increased when compared with the motion information in traditional compression systems, and directly applying existing compression approaches to compress the optical flow values significantly increases the number of bits required to store the motion information. Second, it is not clear how to build a DNN-based video compression system by minimizing a rate-distortion-based objective for both the residual and motion information. Rate-distortion optimization (RDO) aims to achieve higher quality reconstructed frames (i.e., less distortion) given the number of bits (or bitrate) for compression. RDO is critical to video compression performance. To harness the power of end-to-end training in learning-based compression systems, an RDO strategy is needed to optimize the entire system.
[0130] In Guo Lu, Wanli Ouyang, Dong Xu, Xiaoyun Zhang, Chunlei Cai, and Zhiyong Gao, "DVC: An End-to-end Deep Video Compression Framework," Proceedings of the IEEE / CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp. 11006-11015, the authors propose an end-to-end deep video compression (DVC) model that jointly learns motion estimation, motion compression, and residual coding.
[0131] Such an encoder is illustrated in FIG. 5. In particular, FIG. 5 shows the overall structure of an end-to-end trainable video compression framework. To compress the motion information, a CNN is specified to convert the optical flow into a corresponding representation suitable for better compression. Specifically, an autoencoder-style network is used to compress the optical flow. This motion vector (MV) compression network is shown in FIG. 6. The network architecture is somewhat similar to the ga / gs in FIG. 3. In particular, the optical flow is fed into a series of convolution operations and nonlinear transformations including GDN and IGDN. The number of output channels for the convolution (deconvolution) is 128, except for the last deconvolution layer, which is equal to 2. Given an optical flow with a size of M×N×2, the MV encoder generates a motion representation with a size of M / 16×N / 16×128. The motion representation is quantized, entropy coded, and sent to the bitstream. The MV decoder receives the quantized representation and reconstructs the motion information using the MV encoder.
[0132] Figure 7 shows the structure of the motion compensation unit, where the previous reconstructed frame x t-1Using the reconstructed motion information, the warping unit generates a warped frame (usually with the help of an interpolation filter, such as a bilinear interpolation filter). A separate CNN with three inputs then generates a predicted picture. The architecture of the motion compensation CNN is also shown in FIG.
[0133] The residual information between the original frame and the predicted frame is encoded by a residual encoder network. A highly nonlinear neural network is used to convert the residual into a corresponding latent representation. Compared with the discrete cosine transform in traditional video compression systems, this approach can better utilize the power of nonlinear transform and achieve higher compression efficiency.
[0134] From the above overview, we can see that CNN-based architectures are applicable to both image and video compression, considering different parts of the video framework including motion estimation, motion compensation, and residual coding. Entropy coding is a popular method used for data compression and has been widely adopted in the industry, and is also applicable to feature map compression for either human perception or computer vision tasks.
[0135] Improved coding efficiency The channel information is not equally important to the final task. It has been observed that information of a channel can be dropped, e.g., not transmitted to the decoder, without significantly impairing the final image or video reconstruction quality or object detection accuracy. At the same time, the amount of bits saved by dropping unimportant information can improve the overall rate-distortion tradeoff.
[0136] Moreover, encoding and decoding latency is one of the important parameters of a compression system for its practical implementation. Due to the nature of artificial neural networks, operations within one layer can be performed in parallel, and the overall network latency is determined by the amount of layers connected thereafter, which is usually not very high. Acceptable execution times can be achieved by utilizing modern graphic processing units (GPUs) or network processing units (NPUs), which can support massively parallel processing. However, entropy coding methods such as arithmetic coding and range coding imply sequential operations for range interval calculation, normalization, and probability interval matching. These operations can rarely be parallelized without sacrificing compression efficiency. Therefore, entropy coding can become a bottleneck, limiting the overall system latency. Reducing the amount of data passed through entropy coding is desirable.
[0137] Some embodiments of the present disclosure may improve compression efficiency. Furthermore, they may accelerate bypassing the transmission of some feature map data from the latent space of CNN-based image and video codecs. Based on such an approach, a speedup of the entropy encoding and decoding process may be achieved, which may be considered significant for practical implementation.
[0138] In particular, the transfer of information of some feature map regions or channels may be skipped. In particular, it is determined that those feature map data may be skipped and their absence will not lead to significant degradation of the reconstructed quality. Thus, the compression efficiency may be improved. Still further, the amount of data passed through the entropy encoding and decoding may be reduced, which may further shorten the encoding and decoding time and reduce the overall end-to-end compression system latency.
[0139] According to one embodiment, a method for decoding a feature map for processing by a neural network based on a bitstream is provided. The method is illustrated in FIG. 8. The method includes a step S110 of obtaining a region presence indicator based on information from the bitstream for a region of the feature map. The obtaining step S110 is followed by a decoding step S150 of decoding the region. The decoding step S150 includes a step S130 of parsing data from the bitstream to decode the region when the region presence indicator has a first value. Whether the region presence indicator has a first value may be determined in a decision step S120. On the other hand, when the region presence indicator has a second value (e.g., in step S120), the decoding S150 may include a step S140 of bypassing parsing data from the bitstream to decode the region.
[0140] The obtaining S110 of the region presence indicator may correspond to parsing the presence indicator from the bitstream. In other words, the bitstream may include the indicator. The obtaining may include, for example, decoding the presence indicator by an entropy decoder. The region presence indicator may be a flag that can take one of a first value and a second value. It may, for example, be encoded by a single bit. However, the present disclosure is not limited thereto. In general, the obtaining step S110 may correspond to an indirect obtaining based on values of other parameters parsed from the bitstream.
[0141] Decoding S150 may refer to generalized processing of the bitstream, which may include one or more of information analysis, entropy decoding information, bypassing (skipping) analysis of the information, deriving information to be used for further analysis based on one or more already analyzed elements of the information, or similar operations.
[0142] According to one embodiment, a method is provided for encoding a feature map in a bitstream for processing by a neural network. The method may provide a bitstream portion that can be easily decoded by the decoding method illustrated in FIG. 9 and described with reference to FIG. 8. The method includes a step S160 of obtaining a region presence indicator for a region of the feature map. This region of the feature map may be obtained from a feature map generated by one or more layers of the neural network. The feature map may be stored in a memory or other storage device. Furthermore, the method includes a step S170 of deciding, based on the obtained region presence indicator, whether to indicate or not indicate the region of the feature map in the bitstream. Thus, if in step S170 it is decided to indicate the region in the bitstream, the bitstream shall include the region of the feature map. If in step S170 it is decided not to indicate the region in the bitstream, the bitstream shall not include the region of the feature map. Steps S170 to S190 may be considered as part of a general step S165 of generating (also referred to as encoding) the bitstream.
[0143] In one possible implementation, the region presence indicator is indicated in the bitstream. Thus, if it is determined in step S170 to indicate the region in the bitstream, the bitstream shall include the region presence indicator having a first value and the region of the feature map. If it is determined in step S170 not to indicate the region in the bitstream, the bitstream shall include the region presence indicator having a second value without the region of the feature map.
[0144] The phrase "including a region presence indicator having a value" effectively refers to including a value in the bitstream, e.g., in binarized and possibly entropy coded form, that is given the meaning of a region presence indicator by convention, e.g., with semantics defined by a standard.
[0145] Handling non-present feature map regions According to an exemplary implementation, when the region presence indicator has a second value, decoding the region further includes setting the region according to a predetermined rule. For example, the predetermined rule specifies that the feature of the region is to be set to a constant. However, it should be noted that the present disclosure is not limited to the predetermined rule being a rule specifying that the feature should be set to a constant. Rather, the rule may define a method of determining / calculating the feature based on, for example, previously decoded features or information from the bitstream.
[0146] FIG. 10 is a diagram illustrating a method for decoding a bitstream. In this example, the regions of the feature map correspond to CNN channels. In particular, the image or video information decoding method includes parsing a syntax element from the bitstream that indicates whether corresponding CNN channel information is present in the bitstream. The CNN channel information may include a feature map of the corresponding channel or other information related to a particular channel. In the exemplary implementation shown in FIG. 10, the decoder iterates S205 over the input channels of the generative model (or reconstruction network). In each iteration S205, a channel presence flag (corresponding to the region presence flag described above) is read from the bitstream S210. If the channel presence flag is equal to true, the corresponding channel information is read from the bitstream S235. This data may be further decoded by an entropy decoder, such as an arithmetic decoder S240. Otherwise, if the channel presence flag is equal to false, reading the channel information is bypassed and the corresponding channel information is initialized by a predetermined rule S230, for example, by setting all channel values to a constant. For example, the constant is 0. Steps S210-S240 are then repeated for each channel. Thereafter, in step S244, the reconstructed channel is input to an appropriate layer of the neural network (which may be, for example, one of the hidden layers or the output layer of the neural network). The neural network then further processes the input channel information.
[0147] An example implementation of the bitstream syntax is provided in the table below.
[0148] [Table 1]
[0149] The variable channels_num defines the number of channels to be repeated (see step S205 in FIG. 10). The variables latent_space_height and latent_space_width may be derived based on high-level syntax information about the picture width and height and the architecture of the generative model (e.g., reconstruction network). Other implementations that result in the same logic are also possible. For example, the conditional check of channel_presence_flag may be performed outside the loop that iterates over the width and height of the latent space. In that case, the input channel value y_cap[i] may be initialized in another loop, other than the channel data reading loop.
[0150] Alternatively, the channel presence indicator may have the opposite interpretation, e.g., channel_skip_flag (or channel bypass flag), indicating that the reading of the corresponding channel information should be skipped. In other words, the channel (or region in general) indication may be a presence indication or a non-presence indication. Such an indication may take one of two values, namely, a first value and a second value. One of these values indicates the presence of channel (feature map) data, and the other of these values indicates the non-presence of channel (feature map) data. It is further noted that in FIG. 10, a channel indicator is signaled indicating the presence / absence of an entire channel. However, the present disclosure is not limited thereto, and an indicator may be signaled for a portion (region) of a feature map, or for a group of channels organized into groups in some predefined manner.
[0151] One technical advantage of this embodiment may be a reduction in signaling overhead by eliminating the transmission of information that is unnecessary or unimportant or less important for image or video reconstruction. Another technical advantage is that it speeds up the entropy decoding process, which is known to be a bottleneck in image and video compression systems, by eliminating the processing of unnecessary or unimportant information by entropy decoding.
[0152] The decode_latent_value() sub-process (the parsing process corresponding to the syntax part) may include entropy decoding. The channel_presence_flag may be coded as an unsigned integer 1-bin flag by using context-adaptive entropy coding (denoted as ae(v)) or without context-adaptive entropy coding (denoted as u(1)). Using context-adaptive entropy coding reduces the signaling overhead introduced by the channel_presence_flag and allows for further compression efficiency.
[0153] In the above syntax, if channel_presence_flag indicates that no channel data is signaled, the input channel value is set to a constant, which here is 0 (y_cap[i][y][x]=0). However, the present disclosure is not limited to a 0 value of the constant. The constant may take a different value, or may even be preset, for example, by the encoder and then signaled in the bitstream. In other words, in some embodiments, the method further comprises the step of decoding said constant from the bitstream.
[0154] Corresponding to the decoding method described with reference to Fig. 10, an encoding method may be provided as shown in Fig. 11. This encoding method may generate a bitstream according to the syntax described above. Correspondingly, an image or video encoder may include a unit for determining whether to transmit or bypass corresponding channel information to a receiving side. For each output channel of the encoding model (assumed to be an input channel of the generative model), the encoder makes a decision regarding the importance of the corresponding channel to image or video reconstruction or machine vision tasks.
[0155] Such an encoding method of Fig. 11 includes a loop over all channels. At each step S208, a channel is taken and at step S250, a decision is made regarding the presence of the channel. The encoder can make the decision based on some a priori knowledge or metric that allows to evaluate the importance of the channel.
[0156] For example, the sum of the absolute values of the feature maps of the corresponding channels in the latent representation,
[0157]
number
[0158] may be used as a metric to determine at the encoder side, Here, ChannelPresenceFlag i is a flag representing the encoder's decision regarding the presence of the i-th CNN channel in the bitstream, and w,h are the corresponding
[0159]
number
[0160] where x is the width and x is the height of the latent representation of x, and the threshold is some predefined value, e.g., 0. In other implementations, the sum of the absolute values is
[0161]
number
[0162] It can be normalized by the number of elements of the channel as follows:
[0163] In other possible implementations, instead of the sum of absolute values, the sum of squared values can be used. Another possible criterion can also be the variance of the feature map of the corresponding channel in the latent representation, defined as the sum of the squared distances of each feature map element in the channel from the mean value of the feature map elements in the channel divided by the number of feature map elements in the channel.
[0164]
number
[0165] where μ is the average value of the feature map elements in the channel and threshold_var is a threshold value. This disclosure is not limited to any particular decision algorithm or metric. Further alternative implementations are possible.
[0166] After the decision step S250, the determined channel presence flag is written S255 into the bitstream. Then, based on the value of the channel presence flag, it is decided in step S260 whether to write or not write the channel data (area of feature map data) into the bitstream. In particular, if the channel presence flag is true, in step S270, the channel data is written into the bitstream, which may further include encoding S280 of the channel data by an entropy encoder, such as an arithmetic encoder. On the other hand, if the channel presence flag is false, in step 270, the channel data is not written into the bitstream, i.e., the writing is bypassed (or skipped).
[0167] Fig. 12 shows an exemplary implementation of an encoder-side method for making a decision regarding a particular channel presence in the bitstream based on the relative importance of the channel to the reconstructed picture quality. The steps of the encoding method are performed for each channel. In Fig. 12, the loop over the channels is illustrated by step S410, which sets the channel on which the next steps are performed.
[0168] As a first step S420, for each channel, a significance metric is determined. The metric may be determined, for example, by calculating the sum of the absolute values of all feature map elements in the channel, or as the variance of the feature map elements in the channel. The value distribution of the feature map may be an indication for the effect of the feature map on the reconstructed data. Another possible metric for sorting may be an estimate of the number of bits required to transmit the channel information corresponding to the rate (in other words, the number of bits required to transmit the feature map data of a particular channel). Another possible metric for sorting may be the contribution of a particular channel to the reconstructed picture quality, evaluated, for example, in dB, or with other quality metrics such as the Multi-Scale Structural Similarity Index Measure (MS-SSIM), or any other objectively or perceptually weighted / designed metric. The above and other metrics may be combined. There may also be other performance criteria suitable for machine vision tasks, such as object detection accuracy, evaluated, for example, by a comparison of the total channel reconstruction performance minus all but the particular channel reconstruction performance. In other words, some estimate of the contribution of the channel data to the quality / accuracy of the machine vision task may be used as a sorting criterion.
[0169] In the next step, all channels are sorted or ranked according to the calculated significance metric, for example from most significant (index=0 or index=1 depending on the start of the count index) to least significant.
[0170] In the next steps (S430-S470), having as input parameters an estimate of each channel's contribution (amount of bits required to transmit the channel feature map values) in the bitstream and the desired target bitrate, the encoder makes a decision regarding putting specific channel information in the bitstream. In particular, in step S430, the number of bits in the resulting bitstream portion, numOfBits, is initialized to 0. Furthermore, a channel present flag is initialized to 0 for each channel to indicate that the channel is not included in the bitstream. Then, in step S440, a loop over several channels is started. The loop scans over the channels in order from most significant to least significant. For each channel in the loop, in step S450, the number of bits channelNumOfBits required to encode the data of the channel is obtained, and the total number of bits numOfBits is incremented by the number of bits channelNumOfBits required to encode the data of the obtained channel, i.e., numOfBits+=channelNumOfBits (meaning numOfBits=numOfBits+channelNumOfBits).
[0171] In step S460 of the loop, the total number of bits numOfBits is compared with the required number of bits requiredNumOfBits. requiredNumOfBits is a parameter that can be set depending on the desired rate. If the result of the comparison is numOfBits>=requiredNumOfBits TRUE, this means that the total number of bits has reached or exceeded the required number of bits, in which case the method ends. This means that for the current channel i, the channel present flag remains 0 as initialized in step S430, and the channel data is not included in the bitstream. If the result of the comparison is numOfBits>=requiredNumOfBits FALSE in step S460, this means that the total number of bits will not reach the required number of bits when the data of channel i is added to the bitstream. Thus, in step S470, the channel present flag for the current channel i is set to 1, and the data of that channel is included in the bitstream.
[0172] In summary, the encoder calculates the incremental sum of bits required for transmission of the channels starting from the most significant channel and sets channel_presence_flag[i] equal to TRUE. After the total number of bits reaches the number of required bits, the remaining least significant channels are determined not to be transmitted and for these channels channel_presence_flag[i] is set equal to FALSE.
[0173] Alternatively, the desired reconstructed picture quality level (e.g., in dB or other metric such as MS-SSIM) may be used as a criterion for determining the number of channels to transmit. Starting with the most significant channel, the encoder evaluates the reconstructed quality with the contribution of the most significant channel, and after the desired quality is achieved, the remaining channels are determined to be not needed and their corresponding channel_presence_flag[i] are set equal to FALSE. In other words, the iterations S440-S470 may be performed by accumulating a quality counter that increases with each channel i, and stopping the iteration when the desired quality level is reached or exceeded by the addition of the current channel i. As will be clear to those skilled in the art, bit rate and quality are only exemplary and a combination of both may be used, or further criteria such as complexity may be added or used instead.
[0174] The method described with reference to Fig. 12 is merely exemplary. Another alternative method of determining which channel to transmit on is to use a Rate-Distortion Optimization (RDO) procedure that minimizes a cost value calculated as follows: Cost=Distortion+Lambda*Rate, or Cost=Rate+Beta*Distortion where Lambda and Beta are the Lagrange multipliers of the constrained optimization method. One of the technical advantages of the above-described solution is the ability to match a desired target bit rate for a desired reconstructed quality, which is an important aspect of the practical use of compression systems.
[0175] 10 and 11, the region of the feature map is the entire feature map, however, as will be shown later, the present disclosure is not limited to such data granularity.
[0176] Side Information Signaling As explained with reference to FIG. 3, the hyperprior proposed in Balle is used to generate side information that is transmitted together with the latent representation of the input signal to obtain the probability (or frequency) estimates required for the arithmetic decoder that allow the coding system to capture the statistical properties specific to a given input signal. As further demonstrated by Zhou, the probability estimates can be further improved by incorporating context based on already decoded symbols of the latent representation. From FIG. 3, it can be seen that the side information z is based on the output of the convolutional layer. In a general scheme, the feature map itself can be considered to represent the side information.
[0177] According to one embodiment of the present disclosure, a method is provided for decoding a feature map for processing by a neural network from a bitstream. The method is illustrated in FIG. 13 and includes a step S310 of obtaining a side information indicator from the bitstream, the side information indicator indicating whether side information is present in the bitstream. The method further includes S350 decoding the feature map. The decoding S350 of the feature map further includes a step S320, in which a value of the side information indicator is determined and acted upon. In particular, when the side information indicator has a fifth value, the method includes a step S330 of parsing the side information from the bitstream for decoding the feature map. Otherwise, when the side information indicator has a sixth value, the method further includes S340 bypassing parsing the side information from the bitstream for decoding the feature map. The fifth value indicates that the bitstream includes side information, while the sixth value indicates that the bitstream does not include side information for a particular portion (e.g., a region) of the feature map, or the entire feature map, or the like.
[0178] Since the hyper-prior model may include autoregressive context modeling based on already decoded symbols, transmission of side information may not be necessary and the hyper-prior network can efficiently model distributions based on context only. At the same time, the efficiency of context modeling strongly depends on the statistical properties of the input image or video content. Some content may be well predictable, while some content may not. For flexibility, it is beneficial to have the option of transmitting and utilizing side information that can be determined by the encoder based on the statistical properties of the input content. This further increases the possibility for the compression system to adapt to the input content characteristics.
[0179] Corresponding to the decoder process of Figure 13, an embodiment of the bitstream may include a syntax element side_information_available, which controls the presence of side information (z_cap) in the bitstream. If side information is not available (e.g., if it is determined by the encoder that it is not needed to obtain symbol probabilities for arithmetic coding), the decoder skips reading the side information values;
[0180]
number
[0181] Initialize with some value, say 0, then
[0182]
number
[0183] The generator of the hyper-prior distribution (g s ) This allows the signaling to be further optimized. Below an exemplary bitstream is shown:
[0184] [Table 2]
[0185] Corresponding to the decoding method, according to one embodiment, a method is provided for encoding a feature map in a bitstream for processing by a neural network. The method is illustrated in FIG. 14 and may include a step S360 of obtaining a feature map (or at least one region of the feature map). The method further includes a step S365 of encoding, which may include a step S370 of determining whether to indicate side information regarding the feature map in the bitstream. If the determination is positive, the method may further include S380 inserting a side information indicator into the bitstream indicating a third value (e.g., corresponding to the fifth value described above, and thus the encoder and decoder can understand each other or be part of the same system) and the side information. If the determination is positive, the method may further include S390 inserting a side information indicator into the bitstream indicating a fourth value (e.g., corresponding to the sixth value described above, and thus the encoder and decoder can understand each other or be part of the same system) without side information. The side information may correspond to a region of the feature map or to the entire feature map.
[0186] It should be noted that the side information may correspond to the side information as described with reference to the autoencoder of Fig. 3. For example, the decoding method may further include entropy decoding, which is based on the decoded feature map processed by the neural network. Correspondingly, the encoding method may further include entropy encoding, which is based on the encoded feature map processed by the neural network. In particular, the feature map may be encoded by a hyper-prior distribution h a / h sThe side information based on the feature maps may correspond to the distribution of standard deviations summarized in z. z may be quantized and further compressed (e.g., entropy coded) and transmitted as side information. The encoder (and further the decoder) then converts the quantized vector
[0187]
number
[0188] The spatial distribution of standard deviations actually used to obtain probability values (or frequency values, number of occurrences) for arithmetic coding (or, in general, other kinds of entropy coding) using
[0189]
number
[0190] and use it to estimate the quantized image representation
[0191]
number
[0192] (or latent representation) of the compressed signal.
[0193]
number
[0194] , and correspondingly decode the latent representation. As explained above, the distributional modeling network can be further enhanced by context modeling based on already decoded symbols of the latent representation. In some cases, the transmission of z may not be necessary, and the hyper-prior network (h s ) generator inputs can be initialized with regular values, e.g. constants.
[0195] Note that the encoder and decoder in FIG. 3 are merely examples. In general, side information is a subset of other information (
[0196]
number
[0197] For example, the probability model for the entropy coding may be directly signaled or derived from other parameters signaled in the side information. The entropy coding does not have to be arithmetic coding, but may be other kinds of entropy or variable length coding, which may be, for example, context-adaptive and controlled by the side information.
[0198] In one example implementation, when the side information indicator has a sixth value, the decoding method includes setting the side information to a predetermined side information value, e.g., the predetermined side information value is 0. The decoding method may further include decoding the predetermined side information value from the bitstream.
[0199] Correspondingly, in an exemplary implementation of the encoding method, when the side information indicator has a fourth value, the encoding method may apply to encoding parameters derived based on a predefined side information value, such as 0. The encoding method may further include encoding the predefined side information value into a bitstream. In other words, the bitstream may convey the predefined side information, for example, for multiple regions of a feature map, or once for the entire feature map or multiple feature maps. In other words, the predefined value (which may be a constant) may be signaled less frequently than the side information indicator. However, this is not necessarily the case, and in some embodiments, the predefined value may be signaled separately for each channel (part of the feature map data), or for each channel region, or in a similar manner.
[0200] The present disclosure is not limited to signaling a predefined value, which may instead be specified by a standard or derived from some other parameter included in the bitstream. Furthermore, instead of signaling a predefined value, information may be signaled that indicates the rules to follow when the predefined information is determined.
[0201] Therefore, the described method is a latent representation of side information.
[0202]
number
[0203] As mentioned above, the side information
[0204]
number
[0205] (FIG. 3) is based on the output of a convolutional layer that includes multiple output channels. In a general manner, the feature map can be considered to represent side information itself. Therefore, the method described above and illustrated in FIG. 10 is also applicable to optimizing the signaling of side information and can be combined with a side information presence indicator.
[0206] Below is an example syntax table illustrating how these two methods can be combined.
[0207] [Table 3]
[0208] The method for parsing the bitstream may include obtaining a side information presence indicator (side_information_available) from the bitstream. The method may further include parsing the side information (z_cap) from the bitstream when the side information presence indicator has a third value (e.g., side_information_available is TRUE) and bypassing parsing the side information completely from the bitstream when the side information presence indicator has a fourth value (e.g., side_information_available is FALSE). Furthermore, the side information indicated in the bitstream may include at least one of a region presence indicator (e.g., side_information_channel_presence_flag shown in the syntax above and described with reference to Figures 8 to 11) and information about the region to be processed by the neural network to obtain an estimated probability model for use in entropy decoding of the region (z_cap). Depending on the value of the region presence indicator (side_information_channel_presence_flag), feature map data (z_cap) may be included in the bitstream.
[0209] In other words, in this example, a similar method to that described for the latent space y_cap is applied to the side information z_cap, which may also be a feature map containing channels. z_cap is decoded by decode_latent_value, which may, but does not necessarily, use the same decoding process as y_cap.
[0210] Corresponding encoding and decoding methods may include a combination of steps as described with reference to Figures 8 to 14.
[0211] Additionally, the encoder may determine which constant value should be used to initialize values in the latent representation of the hyper-prior distribution, in which case the value (side_information_init_value) is transmitted in the bitstream as illustrated in the following syntax:
[0212] [Table 4]
[0213] In other words, in some embodiments, the side information presence indicator has a fourth value, and the method includes setting the side information at the decoder to a predefined side information value (which may also be done at the encoder if the side information is used in encoding). In the above exemplary syntax, if side_information_channel_presence_flag is FALSE, the feature map value (z_cap) is set to 0 (or to another value that is predefined or transmitted in the bitstream as a side_information_init_value syntax element, in which case it should be pre-parsed before allocation). However, the constant 0 is merely exemplary. As already described in the above embodiments, the feature map data may be predefined by the standard, signaled in the bitstream (e.g., the side_information_init_value syntax element from the above example should be pre-parsed before allocation in that case), or set to predefined feature map data that may be derived according to a predefined or signaled rule.
[0214] In some embodiments, the region presence indicator is a flag that can take one of only two values formed by a first value and a second value. In some embodiments, the side information presence indicator is a flag that can take one of only two values formed by a third value and a fourth value. In some embodiments, the side information presence indicator is a flag that can take one of only two values formed by a fifth value and a sixth value. These embodiments may allow for efficient signaling using only one bit.
[0215] Skip forwarding less important deep features or feature maps may provide improved efficiency in terms of encoding and decoding rate and complexity. The skip may be per channel or per region of a channel or similar. This disclosure is not limited to any particular granularity of the skip.
[0216] It should be further understood that the above described method is applicable to any feature map transmitted and obtained from a bitstream that is supposed to be input to a generative model (or reconstruction network). The generative model can be used, for example, for image reconstruction, motion information reconstruction, residual information reconstruction, obtaining probability values (or frequency values) for arithmetic coding (e.g., by the above-mentioned hyper-prior distribution), object detection and recognition, or further applications.
[0217] Sort Order Another embodiment of the present disclosure is to reorder channels according to their relative importance. In some example implementations, it is possible to convey information about the order in the bitstream, simplifying the signaling and enabling bitrate scalability features. That is, in this embodiment, channel importance sorting is applied, and the sorting order is either transmitted in the bitstream or known at both the encoder and decoder sides by referring to predefined information.
[0218] In particular, a method for decoding feature map data (channel data) may include obtaining a significance order indicating the importance of multiple channels (portions of feature map data) of a particular layer. The term channel significance here refers to a measure of the importance of a channel to the quality of a task performed by a neural network. For example, if the task is video coding, the significance may be a metric measuring the reconstructed quality and / or resulting rate of the encoded video. If the task is machine vision, such as object recognition, the significance may measure the contribution of the channel to the recognition accuracy or the like. Obtaining the significance order may generally be done by any means. For example, the significance order may be explicitly signaled in the bitstream, or predefined in a standard or other convention, or implicitly derived, for example, based on other signaled parameters.
[0219] The method may further include obtaining a last significant channel indicator and obtaining a region presence indicator based on the last significant channel indicator. The last significant channel indicator indicates the last significant channel of the channels of a particular layer or network part or network. The word "last" should be understood in the context of significance order. According to some embodiments, such a last significant channel indication can also be interpreted as the least significant channel indication. The last significant channel is the channel of the channels ordered according to significance followed by a less significant channel that is considered not important for the task of the neural network. For example, if channels 1 to M are ordered in descending order according to significance (from most significant to least significant), channel k is the last significant channel if channels k+1 to M are considered not important (significant) for the neural network task. Such channels k+1 to M then do not need to be included in, for example, the bitstream. In this case, the last significant channel indicator is used to indicate the absence of these channels k+1 to M in the bitstream, so that their encoding / decoding can be bypassed. The data relating to channels 1 to k are then conveyed in a bitstream for their encoding / decoding to take place.
[0220] In an exemplary implementation, the sorting order is predefined in the design phase and is known at the decoder side (even at the encoder side) without the need to be transmitted. The index of the last significant coefficient is inserted in the bitstream at the encoder. Figure 15 illustrates an example of the method at the decoder. The index of the last significant coefficient is obtained in step S510 from the bitstream at the decoder. The last significant channel index may be signaled in the bitstream in a direct form, i.e. the syntax element last_significant_channel_idx may be included in the bitstream (possibly entropy coded). Alternative approaches and indirect signaling are described below.
[0221] In step S520, a loop over all channels of the neural network layer or layers is performed. The current channel is the channel at the current iteration i, i.e., the i-th channel. Then, for each i-th channel, the decoder determines channel_presence_flag[i] by comparing index i with the last significant channel index S530. If i is higher than the last significant index, channel_presence_flag[i] is set equal to FALSE in step S540. Otherwise, channel_presence_flag[i] is set equal to TRUE in step S550. Note that in this embodiment, with respect to the indication of the last significant channel, the channel presence flag is not a flag that is actually included in the bitstream. Rather, the channel presence flag in this case is simply an internal variable that is derived from the last significant channel index signaled, as shown above in steps S520-S550.
[0222] A corresponding example syntax table illustrating both the bitstream generation and parsing process is presented below.
[0223] [Table 5]
[0224] Then, in the channel information (data) parsing stage, in step S560, the decoder uses the derived channel_presence_flag[i] to decide whether to parse the channel information from the bitstream in step S570 (if channel_presence_flag[i]=TRUE), or alternatively, whether to skip (bypass) the parsing in step S580 (if channel_presence_flag[i]=False). As mentioned in the previous embodiment, bypassing may include initializing the channel information with a predefined value, such as 0, in step S580. The flow chart in FIG. 15 showing the derivation of the channel presence flag is for illustrative purposes and represents only one example. In general, step S530 may directly decide whether to proceed to step S570 or step S580 without intermediate derivation of the channel presence flag. In other words, the channel presence flag is only derived implicitly and may be stored if it is useful for further use by other parts of the parsing process or semantic interpretation process, depending on the implementation. This also applies to the syntax described above.
[0225] In this example, the decoding is performed by decoding the channels sorted in the bitstream according to the significance order from the most significant channel to the last significant channel. The channel information (data) may be entropy coded, in which case the above method may include a step S590 of entropy decoding the channel data. After collecting all the channels, in step S595, the channels are fed to the corresponding layers of the neural network.
[0226] However, this disclosure is not limited to the case where the significance order is derived or known at both the encoder and decoder sides. According to one example implementation, obtaining the significance order includes decoding an indication of the significance order from the bitstream.
[0227] In particular, in an exemplary implementation, the decoder obtains the significance order from the bitstream by parsing the corresponding syntax element. The significance order allows to establish the correspondence between each significance index and a channel design index. Here, under the channel design index, the index according to which the channel is indexed in the model design is understood. For example, the channel design order may be the order in which the channels of one layer are numbered according to a predefined convention independent of the channel content in the neural network processing.
[0228] An example of significance order information including significance indexes and corresponding design indexes is given in part A) of FIG. 18. As can be seen, design indexes with values 0 to 191 represent channels, e.g., channels of a particular layer in a neural network. The assignment of indexes to channels is referred to as significance order in the particular case where the indexing is done according to a predefined significance, as described above. In part A) of FIG. 18, the least significant channel index is 190, which means that data of 191 channels from 0 to 190 are signaled, and data of the 192nd channel with index 191 is not signaled.
[0229] Similarly, Fig. 17 illustrates how the last significant channel indicator is obtained from the bitstream in step S610. Then, step S620 represents a loop over the channels. For each i-th channel, according to the significance order obtained from the bitstream, the decoder determines a design index d S630 and determines the corresponding channel_presence_flag[d] by comparing index i with the last significant channel index S635. If i is higher than the last significant index, channel_presence_flag[d] is set equal to FALSE in step S645. Otherwise, channel_presence_flag[d] is set equal to TRUE in step S640. Then, in a channel information analysis stage, the decoder uses channel_presence_flag[d] to define (e.g., in decision step S650) whether to analyze the channel information from the bitstream in step S670 (if channel_presence_flag[d]=TRUE) or initialize the channel information with a predefined value, e.g., 0, in step S660 (if channel_presence_flag[d]=FALSE). Furthermore, in step S680, the channel information may be further decoded by an entropy decoder, such as an arithmetic decoder or the like. Finally, in step S690, the decoded channel information of all channels is provided to the corresponding neural network layer.
[0230] An exemplary syntax table is presented below illustrating the process of bitstream generation and parsing for an embodiment in which significance order is signaled within the bitstream.
[0231] [Table 6]
[0232] An exemplary syntax for the significance order get element is as follows:
[0233] [Table 7]
[0234] As can be seen from the syntax of obtain_significance_order(), the significance order is obtained by iterating over the channel indexes i and assigning each channel i the design channel index design_channel_idx with the i-th highest significance. This syntax can also be viewed as a list of design channel indexes ordered according to the significance of each corresponding channel. However, it should be noted that this syntax is merely exemplary and does not limit how the significance order can be communicated between the encoder and the decoder.
[0235] One of the technical advantages of this approach (signaling the last significant channel indicator) is content adaptability. Indeed, different channels of a CNN can represent different features of natural images or videos. For generality, in the design and training phase, the CNN can be targeted to cover a wider variation of possible input signals. In some embodiments, the encoder has the flexibility to identify and optimize the amount of information for signaling, for example, by using one of the methods as described above. Note that the significance order information (indicator) can be transmitted at different levels of granularity, for example, once per picture, once per part of a picture, once per sequence or group of pictures. The granularity can be preset or predefined by a standard. Alternatively, the encoder can have the flexibility to decide when and how many times to signal the significance order information based on the content characteristics. For example, after a new scene is detected in the sequence, it can be beneficial to transmit or update the significance order information due to the statistical characteristics having changed.
[0236] In some embodiments, in the decoder, obtaining the significance order includes deriving the significance order based on previously decoded information about the source data from which the feature map was generated. In particular, the decoder may determine the significance order using supplemental information about the type of encoded content transmitted in the bitstream. For example, the supplemental information may distinguish between expert-generated content, user-generated content, camera-captured content or computer-generated content, video games, or the like. Alternatively or additionally, the supplemental information may distinguish between different chroma sampling rate types, such as YUV420, YUV422, or YUV444. Further source description information may be used in addition or alternatively.
[0237] According to one example implementation, obtaining the significance order includes deriving the significance order based on previously decoded information regarding the type of source data from which the feature map was generated.
[0238] In any of the above-mentioned embodiments and implementations, the encoded bitstream may be organized in a way that provides some bitrate scalability support. This may be achieved, for example, in that the CNN channel information is placed in the bitstream according to the relative importance of the channels, with the most important channel coming first and the least important channel coming last. The relative channel importance that defines the channel order in the bitstream may be defined at the design stage as described above and may be known to both the encoder and the decoder so that it does not need to be transmitted in the bitstream. Alternatively, the significance order information may be defined or adjusted in the encoding process and included in the bitstream. The latter option provides somewhat greater flexibility and adaptability to the specific characteristics of the content, which may enable higher compression efficiency.
[0239] According to an exemplary implementation, the last significant channel indication corresponds to a quality indicator decoded from the bitstream and indicates the quality of the encoded feature map resulting from the compression of a region of the feature map. The last significant channel index may be signaled in an indirect form, for example, by using a quality indicator transmitted in the bitstream and a lookup table that defines the correspondence between the quality levels and the channels used to reconstruct a picture with a desired quality level. For example, parts A and B of FIG. 16 show such a lookup table, where each quality level is associated with the design index of the corresponding last significant channel. In other words, for an input (desired) quality level, the lookup table provides the last significant channel index. Thus, if the quality level of the bitstream is signaled or derivable at the decoder side, the last significant channel indication does not need to be signaled in the bitstream.
[0240] Note that the amount of quality gradation may not correspond to the amount of channels in the model. For example, in the given example of (FIG. 16, part B), the amount of quality levels is 100 (from 0 to 99) and the amount of channels is 192 (from 0 to 191). For example, in the given example, for quality level 0 the last significant channel index is 1 and for quality level 98 the last significant channel index is 190.
[0241] Figure 18 illustrates a further example of a look-up table. As mentioned above, for example with reference to Figure 17, the last significant channel index may be signaled in the bitstream in a direct form or in an indirect form, for example by using a quality indicator transmitted in the bitstream and a look-up table that defines the correspondence between quality levels and channels used to reconstruct a picture with a desired quality level. Also in Figure 18, the amount of quality levels is 100 (from 0 to 99) and the amount of channels is 192 (from 0 to 191). The last significant channel is then defined as the last channel in the significance order that corresponds to the specified (desired) quality level. For example, in the given example, for quality level 0 the last significant channel index is 1, and for quality level 98 the last significant channel index is 190. In part B) of Figure 18, the relationship between quality levels, significance indexes and design indexes is shown. As can be seen, the significance index may be substantially different from the design index.
[0242] In general, the indication of the last significant channel corresponds to the index of the last significant channel in the significance order, in other words, the M channels are ordered and indexed in significance order from 1 to M.
[0243] For example, in applications involving image or video coding, there may be a quality setting that is selected at the encoder (e.g., by a user or application or the like). Such a quality setting (indicator) may then be associated with a particular value of the last significant channel as shown in Figures 16 and 18. For example, the higher the desired image / video quality after reconstruction, the more channels will be signaled, i.e., the higher the last significant channel index (out of all channel indices ordered according to their significance in descending order). Note that these are only examples, and the channel ordering may be done in ascending order, or the ascending / descending order may even be selectable and signaled.
[0244] Depending on the desired level of granularity, e.g. defined by application requirements, scalability levels can be defined for each CNN channel as depicted in Fig. 19 or by grouping several channels into one scalability level. This provides additional flexibility to better fit application-specific tasks, thereby allowing to reduce bitrate without re-encoding by dropping the least important feature map channels that correspond to a scalability level.
[0245] Another criterion for ordering the channels could be the similarity of the channels. This similarity could be estimated, for example, as the amount of bits required to code the information of the channels. A similar amount of bits required to represent the channel information could be considered as a similar level of information of the channels. The amount of information could be used as a criterion to sort the channels (from the largest amount of bits to the smallest amount or from the smallest amount to the largest amount) and put similar channels one after the other in the bitstream. This brings the advantage of cumulative compression efficiency due to stabilizing the probability model, which is updated with symbol decoding when using context-adaptive arithmetic coding (CABAC). It provides more accurate probability estimation by the model and increases compression efficiency.
[0246] Existence of a part of the feature map Signaling of region presence indicators and / or side information presence indicators may be done for regions of the feature map. In some embodiments, the regions are channels of the feature map. The feature maps generated by the convolutional layers may (at least partially) preserve the spatial relationships between the feature map values similar to the spatial relationships of the input picture samples. Thus, a feature map channel may have regions of different importance to the reconstruction quality, e.g., flat regions including edges of objects and non-flat regions. Splitting the feature map data into units allows capturing this structure of the regions and exploiting it for compression efficiency, e.g., by skipping transmission of feature values of flat regions.
[0247] According to an exemplary implementation, the channel information, including the channel feature map, has one or more indicators indicating whether a particular spatial region of the channel is present in the bitstream. In other words, the CNN region is an arbitrary region of the CNN channel, and the bitstream further includes information for the arbitrary region definition. To specify the region, known methods for partitioning of two-dimensional space may be used. For example, quadtree partitioning or other hierarchical tree partitioning methods may be applied. Quadtree partitioning is a partitioning method that allows partitioning a two-dimensional space by recursively subdividing it into four quadrants or regions.
[0248] For example, a decoding method (such as a method according to any of the above-described embodiments and example implementations) may further include decoding, from the bitstream, region partitioning information indicating partitioning of regions of a feature map into units, and, depending on the partitioning information, decoding (parse from the bitstream) or not decoding (bypass parsing) a unit presence indication indicating whether feature map data is to be parsed from the bitstream not for decoding units of the region.
[0249] Correspondingly, the encoding method determines whether the region of the feature map should be further divided into units. If yes, the division information indicating to divide the region of the feature map into units is inserted into the bitstream. If not, the division information indicating not to divide the region of the feature map into units is inserted into the bitstream. Note that the division information may be a flag that may be further entropy encoded. However, the present disclosure is not limited thereto, and the division information may also simultaneously signal the parameters of the division if the division is applied.
[0250] When partitioning is applied, the encoder may further determine whether a particular unit is present in the bitstream. Correspondingly, a unit presence indication is provided to indicate whether feature map data corresponding to the unit is included in the bitstream. Note that the unit presence indicator may be considered as a special case of the region presence indicator described above, and the above description also applies to this embodiment.
[0251] In some embodiments, the region segmentation information for the region includes a flag indicating whether the bitstream includes or does not include unit information specifying dimensions and / or positions of the units of the region. The decoding method includes decoding a unit presence indication for each unit of the region from the bitstream. Depending on the value of the unit presence indication for the unit, the decoding method includes parsing or not parsing feature map data for the unit from the bitstream.
[0252] In some embodiments, the unit information specifies a hierarchical partitioning of the region including at least one of a quadtree, a binary tree, a ternary tree, or a triangular partition.
[0253] A quadtree is a tree data structure where each internal node has exactly four child nodes. Quadtrees are most often used to partition two-dimensional space by recursively subdividing it into four quadrants or regions. The data associated with the leaf cells varies depending on the application, but the leaf cells represent "units of interesting spatial information". In quadtree partitioning methods, the subdivided regions are square, each of which may be further divided into four child regions. Binary and ternary tree methods may also include rectangular shaped units, which correspondingly have two or three children for each internal node. Furthermore, any partition shape may be realized by using masks or geometric rules to obtain, for example, triangular unit shapes. This data structure is named partition tree. Partitioning methods may include a combination of different trees, such as quadtrees, binary trees, and / or ternary trees, in one tree structure. Having different unit shapes and partitioning rules allows to better capture the spatial structure of the feature map data and signal it in the bitstream in the most efficient way. All forms of partition trees share some common characteristics: they decompose the space into adaptive cells, each cell (or bucket) has a maximum capacity, when the maximum capacity is reached the bucket is split, and the tree directory follows the spatial decomposition of the partition tree.
[0254] FIG. 20 is a schematic diagram illustrating a quadtree partitioning of a block (unit of a two-dimensional image or feature map) 2000. Each block may be, but need not be, partitioned at each step of the hierarchical partitioning into four. In a first step, block 2000 is partitioned into four equal blocks, one of which is 2010. In a second step, two of the four blocks (the right block in this example) are further partitioned, each of which is again partitioned into four equal-sized blocks, including block 2020. In a third step, one of the eight blocks is further partitioned into four equal-sized blocks, including block 2030.
[0255] It is worth noting that other partitioning methods, such as binary tree and ternary tree partitioning, can be used to achieve the same purpose of parsing arbitrary region definitions and corresponding presence flags. Shown below is a syntax table illustrating a possible implementation of the syntax and the corresponding parsing process (and the corresponding bitstream generation process). For each CNN channel, the parse_quad_tree_presence function is first called to read the information about the arbitrary region definition (split_qt_flag), fill in the information about the region size (width, height) and position (x, y), and parse the presence_flag corresponding to each arbitrary region of the channel.
[0256] It should be noted that other variations of implementation that result in the same result are also possible. For example, the analysis of the region presence flag may be combined with the channel information analysis in one iteration of the analysis loop, or the region partition information may be shared within the channel group of all channels to reduce the signaling overhead for the partition information. In other words, the region partition information may specify the partition that is (should be) applied to the partition of multiple (two or more or all) channels (regions) of the feature map.
[0257] [Table 8]
[0258] In the following syntax table, one implementation for parsing the region partition information is presented: The quadtree method is used as an example.
[0259] [Table 9]
[0260] The following syntax table illustrates an example of sharing region segmentation information (channel_regions_info) within a group of channels, which can also be all channels of a feature map.
[0261] [Table 10]
[0262] The presence information may be organized hierarchically. For example, if the channel_presence_flag for a particular channel (described in some of the examples and embodiments above) is equal to FALSE in the bitstream (indicating that all channel related information is omitted), no further parsing of channel related information is done for that channel. If the channel_presence_flag is equal to TRUE, the decoder parses the region presence information corresponding to the particular channel, and then extracts region-by-region channel information from the bitstream that may relate to units of the channel. This is illustrated by the exemplary syntax shown below.
[0263] [Table 11]
[0264] Alternatively, or in combination with the previous embodiment, an additional syntax element may be used to indicate whether the arbitrary area presence signaling mechanism should be enabled. In particular, an enable flag may be used to signal whether channel partitioning is enabled (allowed).
[0265] [Table 12]
[0266] The element enable_channel_regions_flag[i] is signaled for each channel i if the channel is present in the bitstream (controlled by the channel_presence_flag[i] flag) and indicates whether channel partitioning is enabled. If partitioning is enabled, the decoder parses the region partitioning information from the bitstream as well as the presence flag corresponding to the split unit by calling the parse_quad_tree_presence() function. After the unit presence flag (channel_regions_info[i][n].presence_flag) is obtained, the decoder iterates over the feature map elements of the split unit. If the unit presence flag is equal to TRUE, the decoder parses the feature map value (decode_latent_value(i,x,y)). Otherwise, the feature map value y_cap[i][y][x] is set equal to a constant, such as 0 in this given example.
[0267] Applying transformations According to this embodiment, the (CNN) channel feature map representing the channel information is transformed before being signaled in the bitstream. The bitstream further includes a syntax element that defines the location of the last significant transformed channel feature map coefficient. The transformation (also referred to herein as a transform) can be, for example, any suitable transformation that can result in some energy compaction. After completing the forward transform of the feature map data, the encoder performs a zigzag scan for the last non-zero coefficient starting from the top-left corner of the transformed coefficient matrix (the top-left corner is the starting point where x=0, y=0). In another possible implementation, the encoder may decide to drop some non-zero coefficients as the least significant. The location (x,y) of the last significant coefficient is signaled in the bitstream.
[0268] At the receiving side, for example, the decoder parses the corresponding syntax element to define the position of the last significant transform coefficient of the feature map of the corresponding channel. After the position is defined, the decoder parses the transformed feature map data belonging to the region starting from the upper left corner (x=0, y=0) and ends at the position of the last significant coefficient (x=last_significant_x, y=last_significant_y). The remaining transformed feature map data is initialized with a constant value, for example, 0. When the transformed coefficients of the corresponding CNN channel are known, an inverse transformation can be performed. Based on this, the channel feature map data can be obtained. Such a process can be completed for all input channels. The feature map data can then be fed to a reconstruction network representing a generative model.
[0269] In general, the decoding of a region from a bitstream is illustrated in FIG. 21, where the region is a channel. In particular, in step S710, a channel is fetched from among all the channels to be processed. Step S710 corresponds to a loop over the channels to be processed. The decoding included extracting S720 from the bitstream a last significant coefficient indicator indicating the position of the last coefficient among the coefficients of the region (here exemplarily a channel). Step S730 corresponds to a loop over the coefficients. In particular, the loop goes through each of the coefficients from the most significant coefficient to the last significant coefficient. In the loop, the method implements decoding (including analysis S750 and possibly entropy decoding S760) of significant coefficients from the bitstream (for the region of S710 loop) and setting S740 the coefficient following the last significant coefficient indicator according to a predefined rule. In the exemplary flow chart of FIG. 21, the predefined rule is to set the coefficient following the last significant coefficient in the significance order to 0. However, as explained above with respect to the phrase "predefined rules," the rules may define the setting of coefficients to different values, or may define that the values to be set should be obtained from the bitstream, or by a particular method (such as derivation from previously used values), or the like. In general, the present embodiments are not limited to any particular predefined rules.
[0270] Regarding the method steps, in step S735, it is tested (determined, checked) whether the current coefficient (coefficient given by the step of loop S730) is a significant coefficient or an insignificant coefficient. Here, a significant coefficient is a coefficient whose sample position is below and equal to the last significant coefficient. An insignificant coefficient is a coefficient that is above (exceeds) the last significant coefficient. In this example, it is assumed that the significance order corresponds to the sample order after transformation. This generally assumes that DC and low frequency coefficients are more significant than higher frequency coefficients. The sample positions are the positions (indexes) of the transformed coefficients (possibly scanned to be 1D beforehand) resulting from a 1D transformation of the region feature map. It should be noted that the present disclosure is not limited to the application of a 1D transformation or any particular data format. The significance order of the coefficients may be defined in different ways - for example, it may be provided in a standard or by convention, or even in a bitstream or the like.
[0271] After obtaining all the coefficients (after completing the loop S730), the decoding method includes obtaining the feature data of the region by inverse transforming the coefficients of the region S770. As shown in FIG. 21, when the data of all the channels is decoded, the decoding method may further include a step S780 of supplying the data of all the channels to a reconstruction network.
[0272] According to an exemplary implementation, the inverse transform is an inverse discrete cosine transform, an inverse discrete sine transform, or an inverse transform obtained by modifying the inverse discrete cosine transform or the inverse discrete cosine transform, or a convolutional neural network transform. For example, a convolutional neural network layer may be considered as a transform, which, if trained with the last significant coefficient signaling method as described above, would provide the desired energy compaction. Furthermore, the last layer of the analysis part of the autoencoder (which generates the latent space representation y) and the first layer of the generation part of the autoencoder (which accepts the quantized latent representation) may be considered as a forward transform and an inverse transform correspondingly. Thus, having the last significant coefficient signaling method as described above during the feature map encoding stage would provide the desired energy compaction of the forward convolutional layer transform obtained during the joint training. The present disclosure is not limited to these types of transforms. Rather, other transforms such as KLT, Fourier, Hadamard, or other orthogonal and possibly unitary transforms may be used.
[0273] Shown below is a syntax table illustrating the parsing process when the transform is applied to a two-dimensional channel of feature map data, where the dimensions are represented by indexes x and y. Note that this disclosure is not limited to any particular dimensionality of the feature map data. The transform may be applied after scanning or after assigning the data a position within some predefined significance order.
[0274] [Table 13]
[0275] In the above example, the location of the last significant coefficient is represented by two numbers corresponding to the x and y coordinates of the location of the last significant coefficient in the 2D feature map (or its region). In other possible implementations, the location of the last significant coefficient may be represented in syntax by a single number corresponding to the order of the zigzag scan of the 2D feature map (or its region).
[0276] Figure 22 shows a flow chart illustrating an exemplary method that may be performed on the encoder side. Note that the encoding in Figure 22 is compatible with the decoding in Figure 21, and thus the bitstream generated by the encoding method in Figure 22 can be parsed / decoded by the decoding method in Figure 21.
[0277] The encoding method includes a loop S810 over channels of a feature map (data output by a layer of a machine learning model, e.g., a neural network). In step S820, the data of a current channel (the channel in the current step of the loop S810) is transformed by a forward transform. As mentioned above, the forward transform may here include scanning the channel features into a 1D sample sequence, which is then transformed with a 1D transform to obtain a 1D sequence of coefficients. Such a 1D sequence of coefficients may be considered to follow a significance order. As mentioned above, this example is not limiting. The transform may have more dimensions, and the scanning and / or significance order may be different.
[0278] In step S830, the last significant position is determined. The determination of the last significant position may be based on the desired reconstruction quality and / or rate. For example, similar to the method shown with reference to FIG. 12, the quality and / or rate for the coefficients are accumulated, and as soon as the quality and / or rate or a combination of both exceed a desired threshold, the current coefficient is considered as the last significant coefficient. However, other approaches are possible. In step S840, the position of the last significant coefficient determined in step S830 (its indication) is inserted into the bitstream. Before inserting into the bitstream, the indication of the position may be encoded by entropy coding such as arithmetic coding or other variable length coding methods. Step S850 represents a loop for each transformed coefficient. If the coefficient position is lower than or the same as the position of the last significant coefficient, in step S880, the current coefficient is inserted into the bitstream (possibly encoded by an arithmetic encoder in step S870). After encoding the coefficients of all channels, the bitstream may be provided (or transmitted) to the reconstruction network.
[0279] As will be clear to those skilled in the art, this embodiment may be combined with any of the above-mentioned embodiments. In other words, the last significant coefficient indication may be signaled together with the last significant channel. The signaling may be done for a region smaller than the channel (e.g. obtained by partitioning) or for a larger region. Side information may also be provided. In general, the above-mentioned embodiments may be combined to provide more flexibility.
[0280] Furthermore, as already mentioned, the present disclosure also provides a device configured to perform the steps of the above-described method. Fig. 23 shows a device 2300 for decoding a feature map for processing by a neural network based on a bitstream. The device includes a region presence indicator obtaining module 2310 configured to obtain a region presence indicator based on information from the bitstream for a region of the feature map. Furthermore, the apparatus 2300 may further include a decoding module configured to decode the region, including parsing data from the bitstream to decode the region when the region presence indicator has a first value, and bypassing parsing data from the bitstream to decode the region when the region presence indicator has a second value.
[0281] 24 further illustrates a device 2400 for decoding a feature map for processing by a neural network from a bitstream, the device including a side information indicator 2410 acquisition module configured to acquire a side information indicator for the feature map from the bitstream, and a decode module 2420 configured to decode the feature map, the decode module 2420 including parsing the side information for decoding the feature map from the bitstream when the side information indicator has a fifth value, and bypassing parsing the side information for decoding the feature map from the bitstream when the side information indicator has a sixth value.
[0282] Corresponding to the above-mentioned decoding device 2300, a device 2350 for encoding a feature map into a bitstream for processing by a neural network is shown in Fig. 23. The device includes a feature map region presence indicator obtaining module 2360 configured to obtain a region presence indicator for a region of the feature map. Furthermore, the device includes an encoding control module 2370 configured to determine whether to indicate the region of the feature map and indicate in the bitstream the region of the feature map based on the obtained feature map region presence indicator when the region presence indicator has a first value, or to bypass indicating the region of the feature map when the region presence indicator has a second value.
[0283] Corresponding to the above-mentioned decoding device 2400, in Fig. 24 a device 2450 for encoding a feature map into a bitstream for processing by a neural network is shown. The device may include a feature map obtaining module 2460 configured to obtain a feature map. Furthermore, the device 2450 may further include an encoding control module 2470 configured to determine whether to indicate side information regarding the feature map and to indicate, in the bitstream, either a side information indicator indicating a third value and the side information or a side information indicator indicating a fourth value without side information.
[0284] It should be noted that these devices may be further configured to perform any of the additional features including the exemplary implementations described above. For example, a device is provided for decoding a feature map for processing by a neural network based on a bitstream, the device including a processing circuit configured to perform any of the steps of the decoding method described above. Similarly, a device is provided for encoding a feature map for processing by a neural network in a bitstream, the device including a processing circuit configured to perform any of the steps of the encoding method described above.
[0285] Additional devices are provided that utilize devices 2300, 2350, 2400, and / or 2450. For example, a device for image or video encoding may include encoding device 2400 and / or 2450. In addition to that, it may include decoding device 2300 or / and 2350. A device for image or video decoding may include decoding device 2300 and / or 2350.
[0286] In summary, in some embodiments of the present disclosure, a decoder (video or image or feature map) may include an artificial neural network configured to obtain feature map data from a bitstream. The decoder may be configured to read a region presence flag from the bitstream, read feature map data corresponding to a region if the region presence flag is TRUE, initialize a region of the feature map data with a predefined value (the predefined value is illustratively 0) if the region presence flag is FALSE, and provide data to the artificial neural network based on the obtained feature map data. The artificial neural network may be a convolutional neural network. The region may be a channel output of the convolutional neural network. Alternatively or in addition, the region is part of the channel output of the convolutional neural network, and the bitstream may further include information for the region definition (position, shape, size). In other words, the region parameters may be defined in the bitstream. The artificial neural network does not have to be a CNN. In general, the neural network may be a fully connected neural network.
[0287] The decoder may be further configured to read (extract from the bitstream) the feature map data by entropy decoding, such as Huffman (de)coding, range coding, arithmetic coding, entropy of an Asymmetric Number System (ANS), or other type of variable length code. The region presence flags may be encoded as context coding bins with corresponding probability updates.
[0288] Some exemplary implementations in hardware and software A corresponding system in which the above-mentioned encoder-decoder processing chain may be deployed is illustrated in FIG. 25. FIG. 25 is a schematic block diagram illustrating an example encoding system, e.g., video, image, audio, and / or other encoding system (or short coding system), that may utilize the techniques of the present application. The video encoder 20 (or short encoder 20) and the video decoder 30 (or short decoder 30) of the video encoding system 10 represent examples of devices that may be configured to perform techniques according to various examples described in the present application. For example, the video encoding and decoding may employ neural networks such as those shown in FIG. 1 through FIG. 7, which may be distributed and may apply the above-mentioned bitstream analysis and / or bitstream generation to communicate feature maps between distributed computational nodes (two or more).
[0289] As shown in FIG. 25, encoding system 10 includes a source device 12 configured to provide encoded picture data 21 to, for example, a destination device 14 for decoding the encoded picture data 13.
[0290] The source device 12 includes an encoder 20, and may additionally, i.e. optionally, include a picture source 16, a pre-processor (or pre-processing unit) 18, such as a picture pre-processor 18, and a communication interface or unit 22.
[0291] Picture source 16 may include or be any kind of picture capture device, e.g., a camera for capturing pictures of the real world, and / or any kind of picture generation device, e.g., a computer graphics processor for generating computer animated pictures, or any kind of other device for obtaining and / or providing real-world pictures, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). Picture source may be any kind of memory or storage device that stores any of the aforementioned pictures.
[0292] In distinction to the pre-processor 18 and the processing performed by the pre-processing unit 18 , the picture or picture data 17 may also be referred to as a raw picture or raw picture data 17 .
[0293] The pre-processor 18 is configured to receive (raw) picture data 17 and perform pre-processing on the picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. The pre-processing performed by the pre-processor 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal. It can be understood that the pre-processing unit 18 may be an optional component. It is noted that the pre-processing may also employ a neural network (as in any of Figures 1 to 7) using presence indicator signaling.
[0294] Video encoder 20 is configured to receive preprocessed picture data 19 and to provide encoded picture data 21 .
[0295] Communications interface 22 of source device 12 may be configured to receive encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) over communications channel 13 to another device, e.g., destination device 14 or any other device, for storage or direct reconstruction.
[0296] The destination device 14 includes a decoder 30 (eg, a video decoder 30), and may additionally include a communications interface or unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.
[0297] The communications interface 28 of the destination device 14 is configured to receive the encoded picture data 21 (or any further processed version thereof), for example directly from the source device 12 or from any other source, for example a storage device, for example an encoded picture data storage device, and to provide the encoded picture data 21 to a decoder 30.
[0298] The communication interface 22 and the communication interface 28 may be configured to transmit or receive the encoded picture data 21 or the encoded data 13 via a direct communication link between the source device 12 and the destination device 14, e.g., a direct wired or wireless connection, or via any type of network, e.g., a wired or wireless network or any combination thereof, or any type of private and public network, or any combination thereof.
[0299] The communications interface 22 may be configured, for example, to package the encoded picture data 21 in an appropriate format, e.g., into packets, and / or process the encoded picture data using any type of transmission encoding or processing for transmission over a communications link or network.
[0300] Communications interface 28, which forms the counterpart of communications interface 22, may be configured, for example, to receive transmitted data and process the transmitted data using any type of corresponding transmission decoding or processing and / or depackaging to obtain encoded picture data 21.
[0301] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces as indicated by the arrow of communication channel 13 in Figure 25 going from source device 12 to destination device 14, or as bidirectional communication interfaces, e.g., for sending and receiving messages, e.g., for setting up connections, acknowledging and exchanging communication links and / or any other information related to data transmission, e.g., encoded picture data transmission. Decoder 30 is configured to receive encoded picture data 21 and provide decoded picture data 31 or decoded pictures 31 (e.g., employing a neural network based on one or more of Figures 1 to 7).
[0302] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31 (also called reconstructed picture data), e.g., the decoded picture 31, to obtain post-processed picture data 33, e.g., the post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing to prepare the decoded picture data 31, for example, for display by a display device 34.
[0303] A display device 34 of destination device 14 is configured to receive the post-processed picture data 33, for example, to display the picture to a user or viewer. The display device 34 may be or include any type of display, e.g., an integrated or external display or monitor, for presenting the reconstructed picture. The display may include, for example, a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any type of other display.
[0304] 25 illustrates source device 12 and destination device 14 as separate devices, an embodiment of the devices may include both or both functionality, i.e., source device 12 or corresponding functionality, and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0305] As will be clear to a person skilled in the art based on the description, the presence and (exact) division of functionality of different units, or the functionality of the source device 12 and / or destination device 14 as shown in FIG. 25, may vary depending on the actual device and application.
[0306] The encoder 20 (e.g., video encoder 20) or the decoder 30 (e.g., video decoder 30) or both the encoder 20 and the decoder 30 may be implemented via processing circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding devices, or any combination thereof. The encoder 20 may be implemented via processing circuitry 46 to embody various modules, including neural networks, such as those shown in any of FIGS. 1-7 or portions thereof. The decoder 30 may be implemented via processing circuitry 46 to embody various modules, such as those described with respect to FIGS. 1-7, and / or any other decoder system or subsystem described herein. The processing circuitry may be configured to perform various operations, such as those described below. If the techniques are implemented partially in software, the device may store instructions for the software in a suitable non-transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Either video encoder 20 and video decoder 30 may be integrated as part of a combined encoder / decoder (CODEC) in a single device, for example, as shown in FIG.
[0307] Source device 12 and destination device 14 may include any of a wide range of devices, including any type of handheld or stationary device, such as a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or a content distribution server), a broadcast receiver device, a broadcast transmitter device, or the like, and may use no operating system or any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.
[0308] In some cases, the video encoding system 10 illustrated in FIG. 25 is merely an example, and the techniques of the present application may be applicable to video encoding settings (e.g., video encoding or video decoding) that do not necessarily include data communication between an encoding device and a decoding device. In other examples, data may be retrieved from local memory, streamed over a network, or similar processing. A video encoding device may encode data and store it in memory, and / or a video decoding device may retrieve data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and / or retrieve data from memory and decode it.
[0309] 27 is a schematic diagram of a video encoding device 1000 according to one embodiment of the present disclosure. The video encoding device 1000 is suitable for implementing the disclosed embodiments as described herein. In one embodiment, the video encoding device 1000 may be a decoder, such as the video decoder 30 of FIG. 25, or an encoder, such as the video encoder 20 of FIG. 25.
[0310] The video encoding device 1000 includes a receive port 1010 (or input port 1010) and a receiver unit (Rx) 1020 for receiving data, a processor, logic unit, or central processing unit (CPU) 1030 for processing the data, a transmitter unit (Tx) 1040 and a transmit port 1050 (or output port 1050) for transmitting the data, and a memory 1060 for storing the data. The video encoding device 1000 may also include optical-electrical (OE) and electrical-optical (EO) components coupled to the receive port 1010, the receiver unit 1020, the transmitter unit 1040, and the transmit port 1050 for transmitting or receiving optical or electrical signals.
[0311] The processor 1030 is implemented by hardware and software. The processor 1030 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), FPGA, ASIC, and DSP. The processor 1030 communicates with the receiving port 1010, the receiver unit 1020, the transmitter unit 1040, the transmitting port 1050, and the memory 1060. The processor 1030 includes an encoding module 1070. The encoding module 1070 implements the disclosed embodiments described above. For example, the encoding module 1070 implements, processes, prepares, or provides various encoding operations. Thus, the inclusion of the encoding module 1070 provides substantial improvement to the functionality of the video encoding device 1000 and provides transformation of the video encoding device 1000 to a different state. Alternatively, the encoding module 1070 is implemented as instructions stored in the memory 1060 and executed by the processor 1030.
[0312] Memory 1060 may include one or more disks, tape drives, and solid state drives, and may be used as an overflow data storage device to store programs when such programs are selected for execution and to store instructions and data read during execution of the programs. Memory 1060 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and / or static random access memory (SRAM).
[0313] FIG. 28 is a simplified block diagram of an apparatus 800 that may be used as either or both of the source device 12 and the destination device 14 from FIG. 25, according to an example embodiment.
[0314] The processor 1102 in the device 1100 may be a central processing unit, or may be any other type of device or devices capable of manipulating or processing information, now existing or later developed. Although the disclosed implementations may be performed with a single processor as shown, e.g., processor 1102, advantages in terms of speed and efficiency may be achieved using multiple processors.
[0315] The memory 1104 in the apparatus 1100 may be a read-only memory (ROM) device or a random access memory (RAM) in one implementation. Other suitable types of storage devices may be used as the memory 1104. The memory 1104 may include code and data 1106 that is accessed by the processor 1102 using a bus 1112. The memory 1104 may further include an operating system 1108 and application programs 1110, which include at least one program that enables the processor 1102 to perform the methods described herein. For example, the application programs 1110 may include applications 1 through N, which further include a video encoding application that performs the methods described herein.
[0316] The apparatus 1100 may also include one or more output devices, such as a display 1118. The display 1118, in one example, may be a touch-sensitive display that combines a display with a touch-sensitive element operable to sense touch input. The display 1118 may be coupled to the processor 1102 via the bus 1112.
[0317] Although depicted here as a single bus, the bus 1112 of device 1100 may be comprised of multiple buses. Additionally, secondary storage may be directly coupled to other components of device 1100 or accessed over a network, and may include a single embedded unit such as a memory card or multiple units such as multiple memory cards. Thus, device 1100 may be implemented in a wide variety of configurations.
[0318] Some mathematical operators and symbols The mathematical operators in the example syntax descriptions used in this application are similar to those used to describe syntax in existing codecs. Numbering and counting conventions generally start at 0, e.g., "first" corresponds to the 0th, "second" corresponds to the 1st, etc.
[0319] The following arithmetic operators are defined as follows: + Add - subtraction (as a two-argument operator) or negation (as a unary prefix operator) * Multiplication, including matrix multiplication / Integer division, rounding the result towards 0. For example, 7 / 4 and -7 / -4 round to 1, and -7 / 4 and 7 / -4 round to -1. Modulo x%y, the remainder when x is divided by y, defined only for integers x and y, x>=0 and y>0.
[0320] The following logical operators are defined as follows: x && y The Boolean conjunction "and" of x and y x || y The Boolean "or" of x and y ! Boolean negation "not" x ? y : zIf x is TRUE or not equal to 0, evaluates the value of y; otherwise, evaluates the value of z.
[0321] The following relational operators are defined as follows: > Greater than >= greater than or equal to < Less than <= less than or equal == Equal != Not equal
[0322] When a relational operator is applied to a syntax element or variable that has been assigned the value "na" (not applicable), the value "na" is treated as a separate value for that syntax element or variable. The value "na" is not considered equal to any other value.
[0323] The following bitwise operators are defined as follows: & Bitwise "and". In the case of operations on integer arguments, this is the operation on the two's complement representation of the integer values. When an operation is performed on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding the additional most significant bits equal to 0. Bitwise "or". In the case of operations on integer arguments, this is the operation on the two's complement representation of the integer values. When an operation is performed on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding the additional most significant bits equal to 0. ^ Bitwise "exclusive or". In the case of operations on integer arguments, this is the operation on the two's complement representation of the integer values. When an operation is performed on a binary argument that contains fewer bits than the other argument, the shorter argument is extended by adding the additional most significant bits equal to 0. x >> y Performs an arithmetic right shift of the two's complement integer x by number of binary digits y. This function is defined only for non-negative integer values of y. The bit shifted into the most significant bit (MSB) of the result of the right shift has a value equal to the MSB of x before the shift operation. x << y Performs an arithmetic left shift of the two's complement integer x by binary digits y. This function is defined only for non-negative integer values of y. The bit shifted into the least significant bit (LSB) of the left shift has value equal to 0.
[0324] The following arithmetic operators are defined as follows: = assignment operator ++ Increments, i.e. x++ is equivalent to x=x+1. When used in an array index, it evaluates to the value of the variable before the increment operation. -- Decrements, i.e., x-- is equivalent to x=x-1. When used in an array index, evaluates to the value of the variable before the decrement operation. += Increment by the specified amount, i.e., x+=3 is equivalent to x=x+3 and x+=(-3) is equivalent to x=x+(-3). -= Decrement by the specified amount, i.e. x-=3 is equivalent to x=x-3 and x-=(-3) is equivalent to x=x-(-3).
[0325] The following notation is used to specify a range of values: x=y..zx takes integer values from y to z, where x, y, and z are integers and z is greater than y.
[0326] When the precedence of an expression is not explicitly indicated through the use of parentheses, the following rules apply: - Operations with higher precedence are evaluated before operations with lower precedence. - Operations of equal precedence are evaluated sequentially from left to right.
[0327] The following table specifies the precedence of operations from highest to lowest, with a higher position in the table indicating a higher precedence.
[0328] For operators that are also used in the C programming language, the precedence used herein is the same as that used in the C programming language.
[0329] Table: Operator precedence from highest (top of table) to lowest (bottom of table)
[0330] [Table 14]
[0331] In the text, a statement of logical operation that can be written mathematically in the form if(condition 0) Statement 0 else if(condition 1) Statement 1 ... else / * Reference notes for remaining conditions * / Statement n can be written in the following way: ... as follows / ... the following applies: - If condition 0, statement 0 - Otherwise, if condition1, statement1 - ... - Otherwise (remarks for the remaining conditions), statement n
[0332] Each "If ... Otherwise, if ... Otherwise, ..." statement in the text is introduced with "... as follows" or "... the following applies" immediately followed by "If ...". The last condition of an "If ... Otherwise, if ... Otherwise, ..." is always "Otherwise, ...". Interleaved "If ... Otherwise, if ... Otherwise, ..." statements can be identified by matching the "... as follows" or "... the following applies" with the closing "Otherwise, ...".
[0333] In the text, a statement of logical operation that can be written mathematically in the form if( condition0a && condition0b ) Statement 0 else if( condition 1a || condition 1b ) Statement 1 ... else Statement n can be written in the following way: ... as follows / ... the following applies: - If all of the following conditions are true, statement 0: - Condition 0a - Condition 0b - Otherwise, if one or more of the following conditions are true, statement 1: - Condition 1a - Condition 1b - ... - Otherwise, statement n
[0334] In the text, a statement of logical operation that can be written mathematically in the form if(condition 0) Statement 0 if(condition1) Statement 1 can be written in the following way: - When condition 0, statement 0 - When condition 1, statement 1
[0335] In summary, the present disclosure relates to efficient signaling of feature map information to systems employing neural networks. In particular, at the decoder side, a presence indicator is parsed from the bitstream or derived based on information parsed from the bitstream. Based on the value of the parsed presence indicator, further data related to the feature map region is parsed or parsing is bypassed. The presence indicator can be, for example, a region presence indicator indicating whether the bitstream contains feature map data or a side information presence indicator indicating whether the bitstream contains side information related to the feature map data. Similarly, encoding methods and also encoding and decoding devices are provided. [Explanation of symbols]
[0336] 10 Video Encoding Systems 12 Source Device 13 Encoded Picture Data 14 Destination Device 16 Picture Source 17 Picture or Picture Data 18 Preprocessor, preprocessing unit 19 Preprocessed Picture, Preprocessed Picture Data 20 Video Encoder, Short Encoder 21 Encoded picture data 22 Communication interface or communication unit 28 Communication Interface or Communication Unit 30 Video Decoder, Short Decoder, Decoder 31 Decoded Picture Data 32 Post Processor 32 Aftertreatment Unit 33 Post-processed picture data, post-processed picture 34 Display Devices 46 Processing Circuit 800 equipment 1000 Video Encoding Devices 1010 Receiving port, input port 1020 Receiver Unit (Rx) 1030 Central Processing Unit (CPU), Processor 1040 Transmitter unit (Tx) 1050 Sending port, Output port 1060 Memory 1070 Encoding Module 1100 equipment 1102 Processor 1104 Memory 1106 Code and Data 1108 Operating Systems 1110 Application Program 1112 Bus 1118 Display 2000 Block 2020 Block 2030 Block 2300 Decoding Device 2310 Area Presence Indicator Acquisition Module 2350 Encoding device 2360 Feature Map Region Presence Indicator Acquisition Module 2370 Encode Control Module 2400 Decoding Device 2410 Side Information Indicator Acquisition Module 2420 Decode Module 2450 Encoding device 2460 Feature Map Acquisition Module 2470 Encode Control Module
Claims
1. 1. A method for decoding a feature map for processing by a neural network based on a bitstream, comprising: obtaining (S110) a region presence indicator for a region of the feature map based on information from the bitstream; A step of decoding the region (S150), when the region presence indicator has a first value, parsing data from the bitstream to decode the region (S130); and and a step (S150) of bypassing parsing data from the bitstream to decode the region when the region presence indicator has a second value (S140).
2. When the region presence indicator has a second value, the step of decoding the region (S150) comprises: The method of claim 1 , further comprising the step of setting the region according to a predetermined rule (S230).
3. The method of claim 2 , wherein the predetermined rule specifies setting the characteristics of the region to a constant.
4. The method of claim 3 , wherein the constant is 0.
5. 5. The method of claim 3, further comprising the step of decoding (S240) the constant from the bitstream.
6. The method of claim 1 , wherein the bitstream includes the region presence indicator.
7. The method of claim 1 , further comprising the steps of obtaining side information from the bitstream and obtaining the region presence indicator based on the side information.
8. obtaining (S310) a side information present indicator from the bitstream; parsing (S330) the side information from the bitstream when the side information present indicator has a third value; and bypassing (S340) parsing the side information from the bitstream when the side information present indicator has a fourth value; 8. The method of claim 7, wherein the side information includes at least one of the region presence indicator and information regarding processing by a neural network to obtain an estimated probability model for use in entropy decoding of the region.
9. The method of claim 8, wherein when the side information present indicator has the fourth value, the method comprises the step of setting the side information to a predetermined side information value (S580).
10. 10. The method of claim 1, wherein the region presence indicator is a flag that can take one of only two values formed by the first value and the second value.
11. The method of claim 1 , wherein the regions are channels of the feature map.
12. obtaining a significance order (S610) indicating the significance of a plurality of channels of the feature map; Obtaining a last significant channel indicator (S630); The method of claim 11, further comprising the steps of: obtaining the region presence indicator based on the last significant channel indicator (S640, S645).
13. 13. The method of claim 12, wherein an indication of a last significant channel corresponds to a quality indicator decoded from the bitstream and indicates a quality of an encoded feature map resulting from compression of the region of the feature map.
14. The method of claim 12 , wherein the indication of the last significant channel corresponds to an index of the last significant channel in the significance order.
15. 15. The method of claim 12, wherein the step of obtaining the significance order comprises decoding an indication of the significance order from the bitstream.
16. 16. The method of claim 12, wherein the step of obtaining the significance order (S630) comprises a step of deriving the significance order based on previously decoded information about source data from which the feature map was generated.
17. 17. The method of claim 12, wherein the step of obtaining the significance order (S630) comprises a step of deriving the significance order based on previously decoded information about the type of source data from which the feature map was generated.
18. 18. The method of claim 12, further comprising the step of decoding (S680) channels from the bitstream sorted in the bitstream according to the significance order from the most significant channel to the last significant channel.
19. Decoding region division information from the bitstream, the region of the feature map being divided into units; 19. The method of claim 1, further comprising obtaining a unit presence indication, depending on the partitioning information, indicating whether feature map data should be parsed from the bitstream or not to decode units of the region.
20. the region division information for the region includes a flag indicating whether the bitstream includes or does not include unit information specifying dimensions and / or positions of the units of the region; The method includes obtaining the unit present indication for each unit of the region based on information from the bitstream; and parsing or not parsing feature map data for the unit from the bitstream depending on a value of the unit presence indication for the unit.
21. 21. The method of claim 19 or 20, wherein the bitstream includes the unit presence indicator.
22. 22. The method of claim 20 or 21, wherein the unit information specifies a hierarchical division of the region (2000) comprising at least one of a quadtree, a binary tree, a ternary tree, or a triangular division.
23. The step of decoding the region from the bitstream further comprises: Extracting (S720) from the bitstream a last significant coefficient indicator indicating the location of a last one of the coefficients of the region; Decoding significant coefficients of the region from the bitstream (S750, S760); setting the coefficients following the last significant coefficient indicator according to a predefined rule (S740); and obtaining (S770) feature data of the region by inverse transformation of the coefficients of the region.
24. 24. The method of claim 23, wherein the inverse transform (S770) is an inverse discrete cosine transform, an inverse discrete sine transform, or an inverse transform obtained by modifying an inverse discrete cosine transform or an inverse discrete cosine transform, or a convolutional neural network transform.
25. 25. The method of claim 1, further comprising the step of decoding a side information present flag from the bitstream indicating whether the bitstream includes any side information for the feature map or not, the side information including information to be processed by a neural network to obtain an estimated probability model for use in entropy decoding of the feature map.
26. 26. A method according to any preceding claim, wherein the step of decoding the region presence indicator comprises decoding by a context adaptive entropy decoder.
27. 1. A method for decoding a feature map for processing by a neural network from a bitstream, comprising: obtaining (S310) a side information indicator relating to the feature map from the bitstream; Decoding the feature map (S350), parsing (S330) the side information from the bitstream to decode the feature map when the side information indicator has a fifth value; and and (S350), when the side information indicator has a sixth value, bypassing parsing the side information to decode the feature map from the bitstream.
28. 30. The method of claim 27, further comprising entropy decoding (S590), the entropy decoding being based on the decoded feature maps processed by a neural network.
29. 29. The method of claim 28, when the side information indicator has the sixth value, the method comprising the step of setting (S580) the side information to a predetermined side information value.
30. The method of claim 29, wherein the predetermined side information value is zero.
31. A method according to claim 29 or 30, comprising the step of decoding (S590) the predetermined side information value from the bitstream.
32. 1. A method for decoding an image, comprising: The method according to any one of claims 1 to 31 for decoding feature maps from a bitstream for processing by a neural network; and obtaining a decoded image including processing the decoded feature map with the neural network.
33. The feature map is Encoded image data, and / or 33. The method of claim 32, representing encoded side information for decoding the image data.
34. 1. A method for computer vision comprising: The method according to any one of claims 1 to 31 for decoding feature maps from a bitstream for processing by a neural network; and performing a computer vision task including processing the decoded feature map by the neural network.
35. The method of claim 32, wherein the computer vision task is object detection, object classification, and / or object recognition.
36. 1. A method for encoding feature maps for processing by a neural network within a bitstream, comprising: obtaining (S160) a region presence indicator for a region of the feature map; Based on the acquired area presence indicator, encoding (S180) the region of the feature map into the bitstream when the region presence indicator has a first value; or bypass encoding the region of the feature map into the bitstream when the region presence indicator has a second value (S190). and implementing the decision (S170).
37. 37. The method of claim 36, wherein the region presence indicator is indicated in the bitstream.
38. 37. A method for encoding as claimed in claim 36, wherein the step of determining (S170) comprises the step of evaluating values of the features of the region.
39. 39. A method for encoding according to any one of claims 36 to 38, wherein said step of determining (S170) is based on an influence of said region on a quality of a result of said neural network processing.
40. The step of determining (S170) determining (S450) stepwise the sum of bits required for transmission of said feature map, starting with bits from the most significant regions and continuing with regions of decreasing significance until the sum exceeds a preconfigured threshold; encoding the regions where the sum did not exceed the preconfigured threshold and the region presence indicator with the first value for an encoded region (S270, S280); and (S470) encoding the region presence indicator with the second value for a non-encoded region.
41. 1. A method for encoding feature maps for processing by a neural network within a bitstream, comprising: obtaining the feature map (S360); A step (S370) of determining whether to indicate side information regarding the feature map, the side information including, in the bitstream, (S380) a third value and a side information indicator indicating the side information; or (S390) any of the side information indicators indicating a fourth value without the side information. Instructing (S370).
42. A computer program stored on a non-transitory medium, comprising code for performing the steps of any of the methods 1 to 41 when executed on one or more processors.
43. 1. A device (2300) for decoding a feature map for processing by a neural network based on a bitstream, comprising: a region presence indicator obtaining module (2310) configured to obtain a region presence indicator for a region of the feature map based on information from the bitstream; A decoding module (2320), parsing data from the bitstream to decode the region when the region present indicator has a first value; and bypassing parsing data from the bitstream to decode the region when the region presence indicator has a second value. and a decoding module (2320) configured to decode the region, the decoding module (2320) including:
44. 1. A device (2400) for decoding a feature map for processing by a neural network from a bitstream, comprising: a side information indicator acquisition module (2410) configured to acquire, from the bitstream, a side information indicator related to the feature map; A decoding module (2420), parsing the side information from the bitstream for decoding the feature maps when the side information indicator has a fifth value; and bypassing parsing the side information for decoding the feature maps from the bitstream when the side information indicator has a sixth value. and a decoding module (2420) configured to decode the feature map, the decoding module (2420) including:
45. 1. A device (2350) for encoding feature maps for processing by a neural network into a bitstream, comprising: a feature map region presence indicator obtaining module (2360) configured to obtain a feature map region presence indicator; an encoding control module (2370) that, based on the obtained feature map region presence indicator, encoding a region of the feature map into the bitstream when the feature map region presence indicator has a first value; Bypass encoding the feature map region into the bitstream when the feature map region presence indicator has a second value. and an encoding control module configured to implement the decision.
46. 1. A device (2450) for encoding feature maps for processing by a neural network into a bitstream, comprising: a feature map acquisition module (2460) configured to acquire the feature map; an encoding control module (2470) configured to determine whether to indicate side information regarding the feature map in the bitstream, a third value and a side information indicator indicating the side information; or a fourth value of said side information indicator indicating no side information. A device (2450) including an encoding control module (2470) for instructing.
47. 32. A device for decoding feature maps for processing by a neural network based on a bitstream, the device comprising: processing circuitry configured to perform the steps of the method of any one of claims 1 to 31.
48. 42. A device for encoding feature maps for processing by a neural network into a bitstream, the device comprising: processing circuitry configured to perform the steps of the method of any one of claims 36 to 41.
Citation Information
Patent Citations
Decoder-side region of interest: video processing
JP2010515300A
Image coding method and apparatus and image decoding method and apparatus
JP2020191077A
Neural network suppression
US20160358069A1
Receptive-Field-Conforming Convolutional Models for Video Coding
US20200092552A1
Image encoding / decoding method and apparatus for signaling image feature information, and method for transmitting bitstream
US20230085554A1