EP4222957A1 - Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés - Google Patents

Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés

Info

Publication number
EP4222957A1
EP4222957A1 EP21785841.4A EP21785841A EP4222957A1 EP 4222957 A1 EP4222957 A1 EP 4222957A1 EP 21785841 A EP21785841 A EP 21785841A EP 4222957 A1 EP4222957 A1 EP 4222957A1
Authority
EP
European Patent Office
Prior art keywords
data
decoding
context
sequence
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP21785841.4A
Other languages
German (de)
English (en)
Inventor
Félix Henry
Gordon Clare
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Fondation B Com
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fondation B Com filed Critical Fondation B Com
Publication of EP4222957A1 publication Critical patent/EP4222957A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3079Context modeling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Definitions

  • the present invention relates to the technical field of data decoding.
  • It relates in particular to a method and an electronic device for decoding a data stream, as well as a computer program and an associated data stream.
  • Entropy coding is used, particularly in the field of audio or video content coding, to optimally compress data by taking into account the appearance statistics of the different symbols in this data.
  • CABAC coding for "Context-based adaptive binary arithmetic coding" is known in this context as described in the article "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard', by D. Marpe, H. Schwarz, and T. Wiegand, in IEEE Transactions on Circuits and Systems for Video Technology, vol.13, no.7, pp. 620-636, July 2003.
  • the entropy decoder When it is used for the entropy coding or the entropy decoding of data within the framework of a standard (for example a standard defining a way of compressing an audio or video content), the entropy decoder is at each moment parameterized in a context which depends, in a predefined manner in the standard concerned, on the previously coded or decoded syntax elements.
  • a standard for example a standard defining a way of compressing an audio or video content
  • the present invention proposes a method for decoding a data stream comprising a plurality of identifiers and a sequence of binary elements, into a series of data of predetermined respective types, the method comprising the following steps for obtaining each datum of said after :
  • the data obtained are for example values representative of an audio or video content. These representative values can be produced, during a coding process, by a coding artificial neural network, as described below (or, more generally, by a machine learning process such as a deep learning process or a decision tree forest learning process).
  • the data stream can also include information indicative of a set of contexts that can be used within the entropy decoder. Such information is for example indicative of a number of contexts that can be used within the entropy decoder.
  • the data stream can also comprise, for each context that can be used within the entropy decoder, parameterization data of the context concerned.
  • the decoding method can then include a step of initializing each usable context within the entropy decoder by means of the parametrization data of the context concerned.
  • the aforementioned indicative information and the parameterization data thus make it possible to configure the entropy decoder before effective implementation of the entropy decoding.
  • the decoding method may also comprise a step of applying the data obtained as input to an artificial neural network.
  • Such an artificial neural network is for example implemented by a processing unit (possibly a parallelized processing unit).
  • the method can then include a step of configuring the processing unit according to data included in the data stream.
  • the invention is particularly interesting in this context where the technical nature of each of the various manipulated data (or representative values) depends on the artificial neural network used (defined for its part by data which have just been mentioned) and is not therefore not predetermined, so that the context used for the entropy coding of a particular datum does not cannot be defined in advance (as already indicated, such a prior definition can for example be given in a standard).
  • the invention is however not limited to this context and is of interest since the respective association of the data to be coded and of the entropy coding contexts cannot be defined in advance.
  • the invention can be used advantageously for the entropic coding of texts written in several languages using different alphabets.
  • the number of signs of the alphabet and the probability of appearance of these being different in each language, the invention makes it possible in such a situation to specify the context to be used for the entropic coding of the signs or words specific to a tongue.
  • the decoding method can moreover comprise an automatic learning method, such as a deep learning method (or “deep learning” according to the Anglo-Saxon name often used) or a forest learning method. of decision trees (or "random forest') according to the Anglo-Saxon application often used).
  • the data stream can then include data for configuring this automatic learning process and/or a configuration step a processing unit by means of these configuration data so as to implement this automatic learning method.
  • the invention can be used to code data from a neural network or to decode data to be supplied to a neural network.
  • a neural network is understood as a processing process comprising a large number of similar steps, only the parameters of these steps being different from each other, and fixed by a learning process, the steps being adapted to be implemented in a massively parallel.
  • a neural network can designate a series of layers carrying out a linear filtering of the data coming from the input layer or the previous layer, each filtering being followed by the application of a nonlinear function (neural network to the classical sense).
  • a neural network can designate a series of tests, the result of each test determining the next tests to be applied (forest of decision trees), or other processing processes having the aforementioned characteristic.
  • the aforementioned data sequence forms a set of characteristic maps.
  • the identifiers of the plurality of identifiers are respectively associated with the feature maps of the set of feature maps. Provision can be made in this case for the context determined for obtaining an element of a given map of characteristics to be determined on the basis of the identifier associated with the given map of characteristics.
  • the identifiers of the plurality of identifiers can be respectively associated with the different positions in the common structure. Provision can then be made for the context determined for obtaining a given element of a map of characteristics to be determined on the basis of the identifier associated with the position defining this given element.
  • the invention also proposes an electronic device for decoding a data stream comprising a plurality of identifiers and a sequence of binary elements, into a sequence of data of predetermined respective types, the electronic device comprising an entropy decoder receiving as input the sequence of binary elements, and a configuration module designed to determine a context on the basis of an identifier associated, among the plurality of identifiers, with the type of data to be obtained, and to configure the entropy decoder in the context determined so as to obtain said datum at the output of the entropy decoder.
  • the invention further proposes a computer program comprising instructions executable by a processor and designed to implement a decoding method as proposed above when these instructions are executed by the processor.
  • the invention finally proposes a data stream representing a series of data of predetermined respective types, and comprising a plurality of identifiers and a sequence of binary elements, each identifier being representative of a context in which an entropy decoder is configured to obtaining, when this entropy decoder receives as input part of the sequence of binary elements, at least one datum having a type associated with this identifier.
  • FIG. 1 shows an electronic coding device used in the context of the invention
  • FIG. 2 schematically illustrates maps of characteristics used by the electronic coding device of Figure 1;
  • FIG. 3 is a flowchart representing the steps of an encoding method implemented within the electronic encoding device of Figure 1;
  • FIG. 4 shows the data stream produced by the electronic encoding device of Figure 1;
  • FIG. 5 shows an example of an electronic decoding device according to the invention.
  • FIG. 6 is a flowchart representing the steps of a decoding method implemented within the electronic decoding device of Figure 5.
  • FIG. 1 represents an electronic coding device 2 including an entropy coder 10.
  • This electronic coding device 2 comprises a processor 4 (for example a microprocessor) and a parallelized processing unit 6, for example a graphics processing unit (or GPU for "Graphical Processing Unit') or a tensor processing unit (or TPU for "Tensor Processing Unit”).
  • a processor 4 for example a microprocessor
  • a parallelized processing unit 6 for example a graphics processing unit (or GPU for "Graphical Processing Unit') or a tensor processing unit (or TPU for "Tensor Processing Unit”).
  • the processor 4 is programmed (for example by means of computer program instructions executable by the processor 4 and stored in a memory - not shown - associated with the processor 4) to implement a control module 5 and the entropic encoder 10 already mentioned.
  • control module 5 receives data P, B representing audio or video content to be compressed, here format data P and content data B.
  • the format data P indicates characteristics of the format for representing the audio or video content, for example for a video content the dimensions (in pixels) of the images, the frame rate, the bit depth of the luminance information and the bit depth of the chrominance information.
  • the content data B forms a representation (here uncompressed) of the audio or video content.
  • the content data includes, for each pixel of each image of a sequence of images, data representing a luminance value of the pixel and data representing chrominance values of the pixels.
  • the parallelized processing unit 6 is designed to implement an artificial neural network 8 after having been configured by the processor 4 (for example by the control module 5). To do this, the parallelized processing unit 6 is designed to perform in parallel at a given instant a plurality of operations of the same type.
  • the artificial neural network 8 is used in the context of processing the content data B aimed at obtaining values V representative of the audio or video content.
  • the artificial neural network 8 when the content data B is input to the artificial neural network 8, the artificial neural network 8 outputs the representative values V.
  • the content data B applied at the input of the artificial neural network 8 can represent a block of an image, or a block of a component of an image (for example a block of a luminance or chrominance component of this image, or a block of a color component of this image), or an image of a video sequence, or a component of an image of a video sequence (for example a luminance or chrominance component, or a color component), or else a series of images of the video sequence.
  • the processing of content data B may comprise the use of several artificial neural networks, as described for example in the aforementioned article 'DVC: An End-to-end Deep Video Compression Framework', by Guo Lu and al., 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), June 2019.
  • the representative values V produced at the output of the artificial neural network 8 are here organized into a sequence of feature maps F (or "feature maps" according to the Anglo-Saxon name sometimes used), as schematically represented in FIG. 2.
  • the network of artificial neurons 8 produces for example here N maps of characteristics F.
  • Each feature map F has for example a two-dimensional structure (or matrix structure).
  • each feature map F here forms a matrix with H rows and W columns.
  • An element located at a given position in a given feature map F corresponds to the representative value V produced by an output node (or node of the output layer) of the artificial neural network, this output node being associated in a predefined manner at this given position and at this given F feature map.
  • the artificial neural network 8 produces as output (that is to say on its output layer) at a given instant all of the N maps of characteristics.
  • different sets of content data B are applied at different times at the input (i.e.
  • the network of artificial neurons 8 produces at each of these different instants at output (that is to say on its output layer) a corresponding map of characteristics F (the output nodes of the artificial neural network 8 being in this case associated respectively with the different positions of a single map of characteristics F).
  • the representative values V produced at the output of the artificial neural network 8 can be organized into an ordered sequence of representative values V.
  • the ordered sequence of representative values V produced at the output of the artificial neural network 8 is associated with this block.
  • the different sequences of representative values successively produced by the artificial neural network 8 are thus respectively associated with the different blocks of the image (or with the different blocks of the relevant component of the image).
  • the representative values V produced at the output of the artificial neural network 8 are placed within a data structure with several dimensions (for example M dimensions). Each element of this structure is then identified by its position within the structure, namely in the aforementioned example by means of an M-tuple of coordinates.
  • a representative value V produced by a given output node (that is to say by a given node of the output layer) of the artificial neural network 8 then forms an element of the structure designated by a position within the structure associated in a predefined manner with this output node (that is to say by coordinates associated in a predefined manner with this output node).
  • the representative values V produced at the output of the artificial neural network 8 are applied to the input of the entropic encoder 10.
  • These representative values V are for example applied in a predefined order.
  • the representative values V are organized into an (ordered) sequence of feature maps F
  • the different feature maps F are applied one after the other (in the sequence order mentioned above), and the different elements of the same map of characteristics F (which each correspond to a representative value) are applied according to a predefined scheme (according to their position) within the map of characteristics F.
  • the entropic coder 10 is designed to code several statistical sources each corresponding to a particular probability of appearance of the symbols to be coded. To do this, the entropy coder 10 can be parameterized in a particular context, associated with a given statistical source and in which the entropy coder 10 produces an optimal entropy code if the symbols actually coded (here the representative values V) respect the expected probability for this statistical source.
  • the entropy coder 10 is here a coder of the CABAC type (for "Context-based adaptive binary arithmetic coding"). As a variant, it could be another type of entropy coder, for example a Huffman type coder, an arithmetic coder or an LZW coder (for “Lempel-Ziv-Welch”). As explained below, the entropic encoder 10 is parameterized at each instant by the control module 5 in a context C which depends on the type of the representative value V to be coded at this instant (representative value V coming from the artificial neural network 8 ).
  • the context C selected by the control module 5 to parameterize the entropy coder 10 with a view to the entropy coding of an element of a map of characteristics F can for example depend (in a predefined manner) on the map of characteristics F concerned and/or on the position of the element in the map of characteristics F.
  • the association of a certain context with a map of characteristics and/or at a position in the feature map is carried out for example by means of prior statistical measurements, for a large number of images processed by means of the artificial coding neural network 8, of the probability of appearance of the symbols in this map of characteristics or at this position.
  • the purpose of such an association is to isolate the different statistical sources within the representative values V so as to code each of these sources statistics with a specific context, and thus maximize compression.
  • the entropy encoder 10 produces at output a sequence of binary elements (or sequence of bits) Fnn.
  • the method of FIG. 3 begins with a step E2 of selecting an encoding process - decoding process couple.
  • the coding process and the decoding process each use at least one artificial neural network.
  • the coding process is implemented by a coding artificial neural network and the decoding process is implemented by a decoding artificial neural network.
  • the assembly formed by the artificial coding neural network and by the artificial decoding neural network constitutes for example a self -encoder.
  • the coding process - decoding process pair is for example selected from a plurality of predefined coding process - decoding process pairs, that is to say here from a plurality of pairs of artificial neural network coding - network of artificial decoding neurons.
  • the coding process-decoding process pair can for example be selected from coding process-decoding process pairs for which the decoding process uses an artificial neural network available for an electronic decoding device (such as the electronic decoding 20 represented in FIG. 5 and described below).
  • the electronic coding device may optionally receive beforehand (from the electronic decoding device or from a dedicated server) a list of artificial neural networks accessible by this electronic decoding device.
  • the coding process/decoding process couple can also be selected according to the intended application (indicated for example by a user by means of a user interface (not shown) of the electronic coding device 2). For example, if the target application is a videoconference, the pair of coding process - decoding process selected includes a low-latency decoding process. In other applications, the pair of coding process - decoding process selected will include a random access decoding process.
  • an image of the video sequence is for example represented by coded data which can be sent and decoded immediately; the data can then be sent in the order in which the video images are displayed, which in this case guarantees a latency of one image between encoding and decoding.
  • the coded data relating respectively to a plurality of images are sent in an order different from the display order of these images, which makes it possible to increase the compression .
  • Images coded without reference to the other images can then be coded regularly, which makes it possible to start the decoding of the video sequence from several places in the coded stream.
  • HEVC High Efficiency Video Coding
  • the different criteria for selecting the coding process/decoding process couple can optionally be combined.
  • control module 5 proceeds in step E4 to configure the parallelized processing unit 6 so that the parallelized processing unit 6 can implement the process. coding selected.
  • This step E4 comprises in particular the instantiation, within the parallelized processing unit 6, of the coding artificial neural network 8 used by the selected coding process.
  • This instantiation may include the following steps:
  • the method of FIG. 3 then comprises a step E6 of implementing the coding process, that is to say here a step of applying the content data B as input to the coding artificial neural network 8 (or in other words a step of activating the coding artificial neural network 8 by taking the content data B as input).
  • Step E6 thus makes it possible to produce (here at the output of the coding artificial neural network 8) the representative values V.
  • the following steps aim at the coding (that is to say the preparation) of the data stream intended for the electronic decoding device (for example the electronic decoding device 20 described below with reference to FIG. 5).
  • the method thus notably comprises a step E8 of encoding a first header part Fc which comprises data characteristic of the format of representation of the audio or video content (here for example data linked to the format of the video sequence being encoded).
  • These data forming the first header part Fc indicate for example the dimensions (in pixels) of the images, the frame rate, the bit depth of the luminance information and the bit depth of the chrominance information. These data are for example constructed on the basis of the data of format P mentioned above (after a possible reformatting).
  • the control module 5 proceeds in step E10 to the coding of a second header part comprising data R indicative of the decoding artificial neural network (associated with the pair of coding process - decoding process selected at the step E2).
  • these indicative data R can comprise an identifier of the decoding artificial neural network.
  • Such an identifier designates (from among a plurality of artificial decoding neural networks, for example among all the artificial decoding neural networks available for the electronic decoding device) the artificial decoding neural network corresponding to the artificial neural network of coding 8 mentioned above, artificial neural network of decoding which must therefore be used for the decoding of the representative values V.
  • such an identifier defines by convention (shared in particular by the electronic coding device and the electronic decoding device) this artificial decoding neural network, for example within the set of artificial decoding neural networks available for (or accessible by) the electronic decoding device.
  • the electronic coding device 2 may optionally receive beforehand (from the electronic decoding device or from a dedicated server) a list of artificial neural networks accessible by the electronic decoding device.
  • these indicative data R can comprise descriptive data of the decoding artificial neural network.
  • the decoding artificial neural network (corresponding to the aforementioned coding artificial neural network 8) is for example coded (that is to say represented) by these descriptive data (or coding data of the artificial decoding neurons) in accordance with a standard such as the MPEG-7 standard part 17 or in a format such as the JSON format.
  • the indicative data R can also be made for the indicative data R to include an indicator indicating whether the decoding artificial neural network is part of a predetermined set of artificial neural networks (in which case the first possibility of embodiment mentioned above is used) or whether the decoding artificial neural network is encoded in the data stream, that is to say represented by means of the aforementioned descriptive data (in which case the second possibility of embodiment mentioned above is used).
  • the method of FIG. 3 continues with a step E12 of determining the possibility for the electronic decoding device to implement the decoding process using the decoding artificial neural network.
  • the control module 5 determines for example this possibility by determining (possibly by means of prior exchanges between the electronic coding device 2 and the electronic decoding device) whether the electronic decoding device comprises a module adapted to implement this process decoding or software adapted to the implementation of this decoding process by the electronic decoding device when this software is executed by a processor of the electronic decoding device.
  • control module 5 determines that it is possible for the electronic decoding device to implement the decoding process, the method continues at step E16 described below.
  • step E14 If the control module 5 determines that it is not possible for the electronic decoding device to implement the decoding process, the method performs step E14 described below (before going to step E16 ).
  • step E14 could be made on another criterion, for example as a function of an indicator dedicated stored within the electronic coding device 2 (and optionally adjustable by the user via a user interface of the electronic coding device 2) or according to a choice of the user (obtained for example via a user interface of the device electronic coding 2).
  • the control module 5 encodes in the data stream at step E14 a third header part containing a computer program Exe (or code) executable by a processor of the electronic decoding device. (The use of the Exe computer program within the electronic decoding device is described below with reference to Figure 5.)
  • the computer program is for example chosen within a library according to information relating to the hardware configuration of the electronic decoding device (information received by example during prior exchanges between the electronic encoding device 2 and the electronic decoding device).
  • the control module 5 then proceeds to a step E16 of configuring the entropy coding.
  • control module 5 determines a set of statistical sources with which to perform the entropy coding.
  • the control module 5 determines for example a number of statistical sources (and therefore of contexts) to be used for the entropy coding.
  • control module 5 can for example analyze the representative values V produced as indicated above and identify therein how many different statistical sources there are. According to another possibility, the control module 5 can choose the number of statistical sources according to the complexity that it wishes to authorize during the coding and/or the decoding.
  • control module 5 can divide the signal formed by the set of representative values V into a certain number (for example less than or equal to a predetermined number, or, as a variant, without limiting their number) of sub-signals according to predefined criteria.
  • control module 5 can create as many sub-signals as maps of characteristics F, or as many sub-signals as there are locations (i.e. distinct positions) in a map of characteristics F. Provision can optionally also be made for the control module 5 to be able to merge the sub-signals which have the same statistical distributions (or very similar statistical distributions).
  • control module 5 also determines during the configuration step E16 with which statistical source (and therefore with which context) is associated each type of representative value V (that is to say here each element of a feature map).
  • the command module 5 creates as many sub-signals as there are maps of characteristics F
  • the context associated with an element of a map of characteristics F i.e. to be used to parameterize the entropy coding of this element depends on the F characteristic map concerned.
  • control module 5 creates as many sub-signals as slots in each map of characteristics F, the context associated with an element of a map of characteristics F (that is to say to be used for set the entropy coding of this element) depends on the position of this element in the feature map F.
  • the method of FIG. 3 then continues with steps of encoding data representative of the configuration of the entropy coder determined in step E16.
  • the method of FIG. 3 firstly comprises a step E18 of coding a fourth header part comprising information 11 indicative of the set of contexts used for the entropy coding.
  • information 11 is indicative of the number K of contexts used for the entropy coding.
  • the method of FIG. 3 then comprises a step E20 of coding a fifth header part comprising, for each context used for the entropy coding, a linit data item for parameterizing the context concerned.
  • the parameterization data linit associated with a given context is initialization data for this context, as described for example in Recommendation ITU-T H.265, part "9.3.2.2 Initialization process for context variables".
  • the parametrization datum associated with a given context can be datum indicative of the probability model used for the context concerned during the entropy coding.
  • the method of FIG. 3 then comprises a step E22 of coding a sixth header part comprising data 12 indicating, for each type of representative value V, the context in which the entropy coding of the representative values V having this type is realized.
  • control module 5 selects as already indicated the assignment of the different contexts respectively to the different maps of characteristics F (each map of characteristics F forming a sub-signal), or respectively to the different positions (or locations) defined in the maps of features F (the elements having a given position forming a sub-signal).
  • the data 12 include:
  • an indicator I2_mode which indicates, if its value is 0, that a context is associated with each map of characteristics F and, if its value is 1, that a context is used for each position in the maps of characteristics F;
  • the different types of representative values correspond to the different maps of characteristics F. If the I2_mode indicator is equal to 1, the different types of representative values correspond to the different positions within a map of characteristics F.
  • control module 5 selects the assignment of the different contexts to the different characteristic maps, that is to say where the I2_mode indicator is equal to 0.
  • the method of FIG. 3 continues with a step E24 of initialization of the entropic encoder 10 (by the control module 5) by means of the aforementioned parametrization data relating to the various contexts.
  • This type of initialization is described in the document already mentioned (ITU-T Recommendation H.265, part "9.3.2.2 Initialization process for context variables").
  • the method of FIG. 3 then comprises a step E26 of entropy coding of the representative values V by the entropy coder 10, the entropy coder 10 being parameterized at each instant (by the control module 5) in the context C used (according to the choices made as described above) for the type of the representative value V being processed.
  • the control module 5 parameters the entropy coder 10 in the context C associated with this map of given characteristics F and successively applies (in a predefined order) the elements of this map of characteristics F at the input of the entropic encoder 10.
  • the entropy coder 10 thus produces at output a sequence Fnn of binary elements representing, in compressed form, the audio or video content.
  • the step E26 can include in some cases a sub-step (prior to the entropic coding strictly speaking) of binarization of the representative values V, as described in the article "Context-based adaptive binary arithmetic coding in the H.264/A VC video compression standard' cited above.
  • the objective of this binarization step is to convert a representative value V which can take a large number of values into a series of binary elements, each binary element being coded by entropy coding (and in this case , a context is associated with the coding of each binary element).
  • step E6 allows the processing of only part of the audio or video content to be compressed (for example when step E6 processes a block, or a component, or a image of a video sequence to be compressed), it is possible to repeat the implementation of steps E6 (to obtain values representative of the successive parts of the content) and E26 (to carry out the entropy coding of these representative values).
  • the processor 4 can thus construct in step E28 the complete data stream comprising the header Fet and the sequence of bits Fnn.
  • the complete data stream is constructed so that the Fet header and the Fnn sequence of bits are individually identifiable.
  • the header Fet contains an indicator of the start of the sequence of bits Fnn in the complete data stream.
  • This indicator is for example the location, in bits, of the beginning of the sequence of elements Fnn bits from the beginning of the complete data stream. (That is, the header in this case has a predetermined fixed length.)
  • identifying the header Fet and the sequence of bits Fnn can be envisaged as a variant, such as for example a marker (i.e. a combination of bits used to indicate the start of the sequence of binary elements Fnn and whose use is prohibited in the rest of the data stream, or at least in the header Fet).
  • a marker i.e. a combination of bits used to indicate the start of the sequence of binary elements Fnn and whose use is prohibited in the rest of the data stream, or at least in the header Fet.
  • the data stream constructed in step E28 can be encapsulated in transmission formats known per se, such as the "Packet-Transport System” format or the "Byte-Stream” format.
  • the data is coded by identifiable packets and transmitted over a communication network.
  • the network can easily identify data boundaries (pictures, groups of pictures and here header Fet and sequence of bits Fnn), using the packet identification information provided by the network layer.
  • step E28 In the "Byte-Stream" format, there are no specific packets and the construction of step E28 must make it possible to identify the boundaries of the relevant data (such as boundaries between parts of the stream corresponding to each image, and here between header Fet and sequence of bits Fnn) using additional means, such as the use of network abstraction layer units (or NAL units for “Network Abstraction Layer”), where unique combinations of bits (such as 0x00000001 ) are used to identify data boundaries).
  • network abstraction layer units or NAL units for “Network Abstraction Layer”
  • step E28 The complete data stream constructed in step E28 can then be sent in step E30 to the electronic decoding device 20 described below (by means of communication not shown and/or through at least one network of communication), or stored within the electronic coding device 2 (for subsequent transmission or, as a variant, subsequent decoding, for example within the electronic coding device itself, which is in this case designed to further implement the method decoding 20 described below with reference to Figure 5).
  • This data stream thus comprises, as represented in FIG. 4, the header Fet and the sequence of bits Fnn.
  • the Fet header includes: - a first part Fc which comprises data characteristic of the representation format of the audio or video content;
  • I2 which comprises a plurality of identifiers I2_map[i] each representative of a context in which the entropy coder has been configured for the entropy coding of data of a certain type and consequently in which an entropy decoder is set to obtain data of this type when the entropy decoder receives as input part of the sequence of bits, as described below.
  • FIG. 5 represents an electronic decoding device 20 including an entropy decoder 23.
  • This electronic decoding device 20 comprises a reception unit 21, a processor 24 (for example a microprocessor) and a parallelized processing unit 26, for example a graphics processing unit (or GPU for "Graphical Processing Unit") or a unit tensor processing (or TPU for "Tensor Processing Unit”).
  • a processor 24 for example a microprocessor
  • a parallelized processing unit 26 for example a graphics processing unit (or GPU for "Graphical Processing Unit") or a unit tensor processing (or TPU for "Tensor Processing Unit”).
  • the reception unit 21 is for example a communication circuit (such as a radiofrequency communication circuit) and makes it possible to receive data (and in particular here the data stream described above) from an external electronic device, such as than the electronic coding device 2, and to communicate these data to the processor 24 (to which the reception unit 21 is for example connected by a bus).
  • a communication circuit such as a radiofrequency communication circuit
  • the electronic decoding device 20 also comprises a storage unit 22, for example a memory (possibly a rewritable nonvolatile memory) or a hard disk.
  • a storage unit 22 for example a memory (possibly a rewritable nonvolatile memory) or a hard disk.
  • the storage unit 22 is shown in Figure 5 as a separate element of the processor 24, the storage unit 22 could alternatively be integrated with (i.e. included in) the processor 24.
  • the processor 24 is in this case designed to successively execute a plurality of instructions of a computer program stored for example in the storage unit 22.
  • control module 25 having in particular the functionalities described below.
  • some of the functions of the control module 25 could be implemented due to the execution, by the processor 24, of instructions identified within the header Fet at step E52 as described below. below.
  • Another part of the instructions stored in the storage unit 22 allow, when they are executed by the processor 24, to implement the entropy decoder 23 already mentioned.
  • the entropy decoder 23 could be implemented due to the execution, by the processor 24, of instructions identified within the header Fet at step E52 as described below.
  • the entropy decoder 23 is designed to perform an inverse entropy decoding of the entropy coding performed by the entropy encoder 10 of the electronic coding device 2 described above with reference to FIG.
  • the entropy decoder 23 is therefore here a CABAC type entropy decoder (for "Context-based adaptive binary arithmetic coding").
  • CABAC type entropy decoder for "Context-based adaptive binary arithmetic coding”
  • it could be another type of entropy encoder, for example a Huffman type decoder, an arithmetic decoder or an LZW (for "Lempel-Ziv-Welch”) decoder.
  • the parallelized processing unit 26 is designed to implement the artificial neural network 28 after having been configured by the processor 24 (here precisely by the control module 25). To do this, the processing unit parallelized 26 is designed to perform in parallel at a given time a plurality of operations of the same type.
  • the parallelized processing unit 26 is designed to implement an automatic learning method (such as for example a deep learning method or a decision tree forest learning method) after having been configured by the processor 24, for example by means of configuration data of such an automatic learning method received within the data stream.
  • an automatic learning method such as for example a deep learning method or a decision tree forest learning method
  • the processor 24 receives (here via the reception unit 21) the data stream comprising the header Fet and the sequence of bits Fnn.
  • the artificial neural network 28 is used within the framework of a processing of data obtained by entropic decoding of the sequence of binary elements Fnn, this processing of data aiming to obtain an audio or video content corresponding to the initial audio or video content B.
  • the storage unit 22 can store a plurality of sets of parameters, each set of parameters defining a network of artificial decoding neurons.
  • the processor 24 can in this case configure the parallelized processing unit 26 by means of a particular set of parameters among these sets of parameters so that the parallelized processing unit 26 can then implement the artificial neural network defined by this particular set of parameters.
  • the storage unit 22 can in particular store a first set of parameters defining a first network of artificial neurons forming a random access decoder and/or a second set of parameters defining a second network of artificial neurons forming a low latency decoder.
  • the electronic decoding device 20 in this case holds in advance decoding possibilities both for situations where it is desired to obtain random access to the content and for situations where it is desired to display the content without delay.
  • the method of FIG. 6 begins a step E50 of reception (by the electronic decoding device 20, and precisely here by the reception unit 21) of the data stream comprising the header Fet and the sequence of binary elements Fnn.
  • the receiving unit 21 transmits the received data stream to the processor 24 for processing by the control module 25.
  • control module 25 then proceeds to a step E52 of identifying the header Fet and the sequence of bits Fnn within the data stream received, for example by means of the start of sequence indicator binary elements (already mentioned during the description of step E28).
  • the control module 25 can also identify in step E52 the different parts of the header Fet (as described above with reference to FIG. 4).
  • control module 25 can launch at step E54 the execution of these executable instructions in order to implement at least some of the steps (described below) for processing the header data (and possibly entropy decoding).
  • These instructions can be executed by the processor 24 or, as a variant, by a virtual machine instantiated within the electronic decoding device 20.
  • the method of FIG. 6 continues with a step E56 of decoding data Fc characteristic of the format for representing the audio or video content so as to obtain characteristics of this format.
  • the decoding of the Fc data makes it possible to obtain the dimensions (in pixels) of the images and/or the frame rate and/or the bit depth of the luminance information and/or the bit depth of the chrominance information.
  • the control module 25 then proceeds to a step E58 of decoding the data R indicative of the decoding artificial neural network to be used.
  • these data R are an identifier designating the decoding artificial neural network 28, for example within a predetermined set of artificial neural networks.
  • This predetermined set is for example the set of artificial neural decoding networks accessible by the electronic decoding device 20, namely the set of artificial neural networks for which the electronic decoding device 20 stores a set of parameters defining the artificial neural network concerned (as indicated above) or may have access to this set of parameters by connection to remote electronic equipment such as a server (as explained below).
  • the control module 25 can in this case read, for example in the storage unit 22, a set of parameters associated with the decoded identifier (this set of parameters defining the artificial neural network identified by the 'decoded identifier).
  • control module 25 can issue a request for a set of parameters intended for a remote server (this request including for example the decoded identifier) and receiving in response the set of parameters defining the artificial neural network identified by the decoded identifier.
  • the data R are descriptive data Rc of the decoding artificial neural network 28.
  • these descriptive data are for example coded in accordance with a standard such as the MPEG-7 part 17 standard or in a format such as the JSON format.
  • decoding of these descriptive data makes it possible to obtain the parameters defining the artificial neural network to be used for the decoding of the data obtained (by entropy decoding) from the sequence of binary elements Fnn.
  • the use of the aforementioned first possibility or the second possibility depends on an indicator also included in the R data, as already indicated.
  • the decoding of the data R indicative of the decoding artificial neural network to be used makes it possible (here to the control module 25) to determine the characteristics of the decoding artificial neural network 28.
  • the control module 25 thus determines the number N of feature maps expected at the input of the decoding artificial neural network 28 and the dimensions H, W of these feature maps.
  • the input layer of the decoding artificial neural network 28 corresponding to the output layer of the coding artificial neural network 8 as explained above (see for example the description of step E2)
  • each element d A feature map F is associated in a predetermined manner with an input node (or input layer node) of the decoding artificial neural network.
  • the number and the dimensions of the maps of characteristics F are therefore linked to the characteristics of the decoding artificial neural network 28, as well as to certain header data such as the aforementioned data Fc (comprising in particular the dimensions of the image) .
  • the control module 25 then proceeds in step E60 to configure the parallelized processing unit 26 by means of the parameters defining the decoding artificial neural network 28 (parameters obtained in step E58), or in general the automatic learning method used, so that the parallelized processing unit 26 can implement the decoding artificial neural network 28 (or in general the automatic learning method, for example as a variant another deep learning method or a decision tree forest learning process).
  • This configuration step E60 includes in particular the instantiation of the decoding artificial neural network 28 within the parallelized processing unit 26, here by using the parameters obtained in step E58.
  • This instantiation may include the following steps:
  • the control module 25 then proceeds in step E64 to decoding the parameterization data Init relating respectively to the different contexts of the set of contexts used (this set being determined thanks to the information I1 decoded in step E62).
  • the control module 25 can then implement a step E66 for initializing each usable context within the entropy decoder 23 by means of the parameterization data linit of the context concerned (decoded in step E64).
  • each context is initialized with the probability model defined by the parametrization datum linit relating to this context.
  • control module 25 configures in step E66 each context usable by the entropy decoder with the probability model defined by the parameterization datum linit relating to this context.
  • the control module 25 then performs a step E68 of decoding the data I2 indicating, for each type of data to be obtained by entropy decoding, the context in which the entropy coding of the data having this type has been carried out and consequently in which the entropy decoder 23 must be configured for the entropy decoding of this data.
  • control module 25 decodes (that is to say here consults) first of all the flag I2_mode which indicates, if its value is 0, that a context is associated with each card of features F and, if its value is 1 , that a context is used for each position in the maps of features F.
  • the control module 25 decodes (i.e. here reads from the data stream) the identifiers I2_map[i] each representative of a context in which the entropy decoder 23 must be parameterized to obtain data of this type when the entropy decoder 23 receives as input part of the sequence of binary elements Fnn.
  • the control module 25 decodes (or reads), for each of the N maps of characteristics F, the identifier I2_map[i] representing the context in which the entropy decoder 23 must be parameterized. to obtain the data (here the representative values V) relating to this map of characteristics F.
  • the data here the representative values V
  • the type of data is defined by the map of characteristics F to which this data belongs (this data here being a representative value V).
  • the control module 25 decodes (or reads), for each of the WxH positions (or locations) within each map of characteristics F, the identifier I2_map[i] representative of the context in which the entropy decoder 23 must be parameterized to obtain the data (here the representative values V) located at this position.
  • the type of a datum is defined by the position of this datum (here a representative value V) within the map of characteristics F concerned.
  • step E70 the control module 25:
  • the entropic decoder 23 applies at the input of the entropy decoder 23 a part of the sequence of binary elements Fnn (in the order of reception of these binary elements), so that the entropic decoder 23 produces at output the expected datum (here a representative value V ) identical to that which was coded by entropy coding in step E26.
  • control module 25 has previously determined the number N and the dimensions H, W of the characteristic maps and therefore knows the number of representative values V (or expected data) to be obtained during the entropy decoding step E70. Moreover, as mentioned during the description of step E26, the various representative values V are coded by entropy coding in a predefined order and the representative values V (expected data) are therefore decoded in this same predefined order.
  • the context C determined to decode an element (/.e. a representative value V) of a given feature map F is thus determined on the basis of the identifier I2_map[i] T1 associated with this given map of characteristics F (the type of data corresponding in this case to the map of characteristics comprising this data).
  • the context C determined to decode a given element (/.e. a given representative value V) in a feature map F is determined on the basis of the identifier I2_map[i] associated with the position of this given element in the feature map (the data type corresponding in this case to the position of the data).
  • the entropy decoder 23 thus produces in step E70 the sequence of expected data, namely here the set of representative values V.
  • the processor 24 (here directly at the output of the entropy decoder 23 or, as a variant, via the control module 25) can then apply (/.e. present) in step E72 the representative values V to the neural network artificial 28 implemented by the parallelized processing unit 26 so that these data are processed by a decoding process using at least in part the artificial neural network 28.
  • the artificial neural network 28 receives as input the representative values V and produces as output a representation I of the coded content suitable for reproduction on an audio or video reproduction device.
  • the representative values V here in the form of feature maps F
  • the output layer of the artificial neural network 28 produces the aforementioned representation I of the encoded content .
  • the artificial neural network 28 thus produces as output (that is to say at the level of its output layer) at least one representation matrix I of an image.
  • step E6 the association of an element (/.e. of a representative value V) of a map of characteristics F with an input node (or input layer node) is predefined.
  • the artificial neural network 28 can receive as input at least some of the data produced at the output of the artificial neural network 28 during the processing of previous data (here representative values V previous), corresponding for example to the previous block or to the previous frame. In this case, a step E74 of reinjecting data produced at the output of the artificial neural network 28 into the input of the artificial neural network 28 is carried out.
  • the decoding process could use a plurality of artificial neural networks, as already mentioned above with regard to the processing of content data B.
  • the control module 25 determines in step E76 whether the processing of the sequence of binary elements Fnn by means of the artificial neural network 28 is finished. In the event of a negative determination (N), the method loops to step E70 for entropy decoding of the following part of the sequence of binary elements Fnn and application of other representative values V (produced by this entropy decoding) to the network of artificial neurons 28.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un flux de données comprend une pluralité d'identifiants et une séquence d'éléments binaires (Fnn). Un procédé de décodage de ce flux de données en une suite de données (V) de types respectifs prédéterminés comprend les étapes suivantes pour obtenir chaque donnée (V) de ladite suite : - détermination d'un contexte (C) sur la base d'un identifiant associé, parmi la pluralité d'identifiants, au type de la donnée concernée; - décodage d'une partie de la séquence d'éléments binaires (Fnn) au moyen d'un décodeur entropique (23) recevant en entrée la séquence d'éléments binaires (Fnn) et paramétré dans le contexte déterminé (C). Un dispositif électronique de décodage (20) et un programme d'ordinateur associés sont également proposés.

Description

Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés
Domaine technique de l'invention
La présente invention concerne le domaine technique du décodage de données.
Elle concerne en particulier un procédé et un dispositif électronique de décodage d’un flux de données, ainsi qu’un programme d’ordinateur et un flux de données associés.
Etat de la technique
Le codage entropique est utilisé, notamment dans le domaine du codage de contenus audio ou vidéo, pour compresser de manière optimale des données en tenant compte des statistiques d’apparition des différents symboles dans ces données.
On connaît par exemple dans ce cadre le codage CABAC (pour "Context-based adaptive binary arithmetic coding") tel que décrit dans l’article "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard', de D. Marpe, H. Schwarz, et T. Wiegand, in IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 7, pp. 620-636, juillet 2003.
Lorsqu’il est utilisé pour le codage entropique ou le décodage entropique de données dans le cadre d’une norme (par exemple une norme définissant une manière de compresser un contenu audio ou vidéo), le décodeur entropique est à chaque instant paramétré dans un contexte qui dépend, de manière prédéfinie dans la norme concernée, des éléments de syntaxe préalablement codés ou décodés.
Présentation de l'invention
La présente invention propose un procédé de décodage d’un flux de données comprenant une pluralité d’identifiants et une séquence d’éléments binaires, en une suite de données de types respectifs prédéterminés, le procédé comprenant les étapes suivantes pour obtenir chaque donnée de ladite suite :
- détermination d’un contexte sur la base d’un identifiant associé, parmi la pluralité d’identifiants, au type de la donnée concernée ;
- décodage d’une partie de la séquence d’éléments binaires au moyen d’un décodeur entropique recevant en entrée la séquence d’éléments binaires et paramétré dans le contexte déterminé. La présence, dans le flux de données, d’identifiants indicatifs du contexte à utiliser pour décoder les différents types de données donne une plus grande souplesse dans l’utilisation du codage entropique, ce qui est intéressant en particulier lorsque le format des données n’est pas totalement prédéfini.
Les données obtenues sont par exemple des valeurs représentatives d’un contenu audio ou vidéo. Ces valeurs représentatives peuvent être produites, au cours d’un procédé de codage, par un réseau de neurones artificiels de codage, comme décrit dans la suite (ou, plus généralement, par un procédé à apprentissage automatique tel qu’un procédé à apprentissage profond ou un procédé à apprentissage par forêt d’arbres décisionnels).
Le flux de données peut comprendre également une information indicative d’un ensemble de contextes utilisables au sein du décodeur entropique. Une telle information est par exemple indicative d’un nombre de contextes utilisables au sein du décodeur entropique.
Le flux de données peut comprendre par ailleurs, pour chaque contexte utilisable au sein du décodeur entropique, une donnée de paramétrisation du contexte concerné.
Le procédé de décodage peut alors comprendre une étape d’initialisation de chaque contexte utilisable au sein du décodeur entropique au moyen de la donnée de paramétrisation du contexte concerné.
L’information indicative susmentionnée et les données de paramétrisation permettent ainsi de configurer le décodeur entropique avant mise en œuvre effective du décodage entropique.
Le procédé de décodage peut comprendre par ailleurs une étape d’application des données obtenues en entrée d’un réseau de neurones artificiels.
Un tel réseau de neurones artificiels est par exemple mis en œuvre par une unité de traitement (éventuellement une unité de traitement parallélisé). Le procédé peut alors comprendre une étape de configuration de l’unité de traitement en fonction de données comprises dans le flux de données.
L’invention est particulièrement intéressante dans ce contexte où la nature technique de chacune des différentes données manipulées (ou valeurs représentatives) dépend du réseau de neurones artificiels utilisé (défini quant à lui par des données qui viennent d’être mentionnées) et n’est donc pas prédéterminée, de sorte que le contexte utilisé pour le codage entropique d’une donnée particulière ne peut pas être défini à l’avance (comme déjà indiqué, une telle définition préalable pouvant par exemple être donnée dans une norme).
Comme déjà indiqué, l’invention n’est toutefois pas limitée à ce contexte et présente un intérêt dès lors que l’association respective des données à coder et des contextes de codage entropique ne peut pas être définie à l’avance. Ainsi, l’invention peut être utilisée avantageusement pour le codage entropique de textes écrits dans plusieurs langues utilisant des alphabets différents. Le nombre de signes de l’alphabet et la probabilité d’apparition de ceux-ci étant différents dans chaque langue, l’invention permet dans une telle situation de spécifier le contexte à utiliser pour le codage entropique des signes ou des mots spécifiques à une langue.
De manière générale, le procédé de décodage peut d’ailleurs comprendre un procédé à apprentissage automatique, tel qu’un procédé à apprentissage profond (ou "deep learning" selon l’appellation anglo-saxonne souvent utilisée) ou un procédé à apprentissage par forêt d’arbres décisionnels (ou "random forest') selon l’application anglo-saxonne souvent utilisée). Le flux de données peut alors comprendre des données de configuration de ce procédé à apprentissage automatique et/ou on peut prévoir une étape de configuration d’une unité de traitement au moyen de ces données de configuration de façon à mettre en œuvre ce procédé à apprentissage automatique.
D’une manière générale, l’invention est utilisable pour coder des données issues d’un réseau de neurones ou décoder des données à fournir à un réseau de neurones. Un réseau de neurone s’entend comme un processus de traitement comportant de très nombreuses étapes similaires, seuls les paramètres de ces étapes étant différents entre eux, et fixés par un processus d’apprentissage, les étapes étant adaptées à être mises en œuvre de façon massivement parallèle. Ainsi, un réseau de neurones peut désigner une série de couches effectuant un filtrage linéaire des données issues de la couche d’entrée ou de la couche précédente, chaque filtrage étant suivi de l’application d’une fonction non linéaire (réseau de neurones au sens classique). Alternativement, un réseau de neurone peut désigner une série de tests, le résultat de chaque test déterminant les tests suivant à appliquer (forêt d’arbres décisionnels), ou encore d’autres processus de traitement ayant la caractéristique précitée.
Selon le mode de réalisation décrit ci-après, la suite de données précitée forme un ensemble de cartes de caractéristiques. Dans ce cas, selon une première possibilité, les identifiants de la pluralité d’ identifiants sont respectivement associés aux cartes de caractéristiques de l’ensemble de cartes de caractéristiques. On peut prévoir dans ce cas que le contexte déterminé pour l’obtention d’un élément d’une carte de caractéristiques donnée soit déterminé sur la base de l’identifiant associé à la carte de caractéristiques donnée.
Selon une seconde possibilité, lorsque les cartes de caractéristiques de l’ensemble de cartes de caractéristiques ont une structure commune au sein de laquelle chaque élément d’une carte de caractéristiques est défini par une position, les identifiants de la pluralité d’identifiants peuvent être respectivement associés aux différentes positions dans la structure commune. On peut alors prévoir que le contexte déterminé pour l’obtention d’un élément donné d’une carte de caractéristiques soit déterminé sur la base de l’identifiant associé à la position définissant cet élément donné.
L’invention propose également un dispositif électronique de décodage d’un flux de données comprenant une pluralité d’identifiants et une séquence d’éléments binaires, en une suite de données de types respectifs prédéterminés, le dispositif électronique comprenant un décodeur entropique recevant en entrée la séquence d’éléments binaires, et un module de configuration conçu pour déterminer un contexte sur la base d’un identifiant associé, parmi la pluralité d’identifiants, au type de la donnée à obtenir, et pour paramétrer le décodeur entropique dans le contexte déterminé de manière à obtenir ladite donnée en sortie du décodeur entropique.
L’invention propose en outre un programme d’ordinateur comprenant des instructions exécutables par un processeur et conçues pour mettre en œuvre un procédé de décodage comme proposé ci-dessus lorsque ces instructions sont exécutées par le processeur.
L’invention propose enfin un flux de données représentant une suite de données de types respectifs prédéterminés, et comprenant une pluralité d’identifiants et une séquence d’éléments binaires, chaque identifiant étant représentatif d’un contexte dans lequel un décodeur entropique est paramétré pour obtenir, lorsque ce décodeur entropique reçoit en entrée une partie de la séquence d’éléments binaires, au moins une donnée ayant un type associé à cet identifiant.
Bien entendu, les différentes caractéristiques, variantes et formes de réalisation de l'invention peuvent être associées les unes avec les autres selon diverses combinaisons dans la mesure où elles ne sont pas incompatibles ou exclusives les unes des autres.
Description détaillée de l'invention
De plus, diverses autres caractéristiques de l'invention ressortent de la description annexée effectuée en référence aux dessins qui illustrent des formes, non limitatives, de réalisation de l'invention et où :
- la figure 1 représente un dispositif électronique de codage utilisé dans le cadre de l’invention ;
- la figure 2 illustre schématiquement des cartes de caractéristiques utilisées par le dispositif électronique de codage de la figure 1 ;
- la figure 3 est un logigramme représentant des étapes d’un procédé de codage mis en œuvre au sein du dispositif électronique de codage de la figure 1 ;
- la figure 4 représente le flux de données produit par le dispositif électronique de codage de la figure 1 ;
- la figure 5 représente un exemple de dispositif électronique de décodage conforme à l’invention ; et
- la figure 6 est un logigramme représentant des étapes d’un procédé de décodage mis en œuvre au sein du dispositif électronique de décodage de la figure 5.
La figure 1 représente un dispositif électronique de codage 2 incluant un codeur entropique 10.
Ce dispositif électronique de codage 2 comprend un processeur 4 (par exemple un microprocesseur) et une unité de traitement parallélisé 6, par exemple une unité de traitement graphique (ou GPU pour "Graphical Processing Unit') ou une unité de traitement de tenseur (ou TPU pour "Tensor Processing Unit').
Le processeur 4 est programmé (par exemple au moyen d’instructions de programme d’ordinateur exécutables par le processeur 4 et mémorisées dans une mémoire - non représentée - associée au processeur 4) pour mettre en œuvre un module de commande 5 et le codeur entropique 10 déjà mentionné.
Comme schématiquement représenté en figure 1 , le module de commande 5 reçoit des données P, B représentant un contenu audio ou vidéo à compresser, ici des données de format P et des données de contenu B.
Les données de format P indiquent des caractéristiques du format de représentation du contenu audio ou vidéo, par exemple pour un contenu vidéo les dimensions (en pixels) des images, la fréquence d’image, la profondeur en bits des informations de luminance et la profondeur en bits des informations de chrominance.
Les données de contenu B forment une représentation (ici non compressée) du contenu audio ou vidéo. Par exemple, dans le cas d’un contenu vidéo, les données de contenu comprennent, pour chaque pixel de chaque image d’une séquence d’images, des données représentant une valeur de luminance du pixel et des données représentant des valeurs de chrominance du pixel.
L’unité de traitement parallélisé 6 est conçue pour mettre en œuvre un réseau de neurones artificiels 8 après avoir été configurée par le processeur 4 (par exemple par le module de commande 5). Pour ce faire, l’unité de traitement parallélisé 6 est conçue pour effectuer en parallèle à un instant donné une pluralité d’opérations du même type.
Comme expliqué dans la suite, le réseau de neurones artificiels 8 est utilisé dans le cadre d’un traitement des données de contenu B visant à obtenir des valeurs V représentatives du contenu audio ou vidéo.
En variante, on pourrait utiliser un autre type de procédé à apprentissage automatique qu’un réseau de neurones artificiels, par exemple un autre type de procédé à apprentissage profond ou un procédé à apprentissage par forêt d’arbres décisionnels.
Dans le mode de réalisation décrit ici, lorsque les données de contenu B sont appliquées en entrée du réseau de neurones artificiels 8, le réseau de neurones artificiels 8 produit en sortie les valeurs représentatives V.
Les données de contenu B appliquées en entrée du réseau de neurones artificiels 8 (c’est-à-dire appliquées à une couche d’entrée du réseau de neurones artificiels 8) peuvent représenter un bloc d’une image, ou un bloc d’une composante d’une image (par exemple un bloc d’une composante de luminance ou de chrominance de cette image, ou un bloc d’une composante de couleur de cette image), ou une image d’une séquence vidéo, ou une composante d’une image d’une séquence vidéo (par exemple une composante de luminance ou de chrominance, ou une composant de couleur), ou encore une série d’images de la séquence vidéo.
On peut prévoir par exemple dans ce cas que certains au moins des neurones (ou nœuds) de la couche d’entrée reçoivent chacun une valeur de pixel d’une composante d’une image, valeur représentée par l’une des données de contenu B. En variante, le traitement des données de contenu B peut comprendre l’utilisation de plusieurs réseaux de neurones artificiels, comme décrit par exemple dans l’article précité "DVC : An End-to-end Deep Video Compression Framework', de Guo Lu et al., 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), juin 2019.
Les valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 sont ici organisées en une séquence de cartes de caractéristiques F (ou "feature maps" selon l’appellation anglo-saxonne parfois utilisée), comme schématiquement représenté en figure 2. Le réseau de neurones artificiels 8 produit par exemple ici N cartes de caractéristiques F.
Chaque carte de caractéristiques F présente par exemple une structure bidimensionnelle (ou structure matricielle). Ainsi, chaque carte de caractéristiques F forme ici une matrice à H lignes et W colonnes.
Un élément situé à une position donnée dans une carte de caractéristiques F donnée correspond à la valeur représentative V produite par un nœud de sortie (ou nœud de la couche de sortie) du réseau de neurones artificiels, ce nœud de sortie étant associé de manière prédéfinie à cette position donnée et à cette carte de caractéristiques F donnée. Selon une possibilité de réalisation, le réseau de neurones artificiels 8 produit en sortie (c’est-à-dire sur sa couche de sortie) à un instant donné l’ensemble des N cartes de caractéristiques. Selon une autre possibilité de réalisation, différents ensembles de données de contenu B (correspondant par exemple à différentes positions dans l’image) sont appliqués à différents instants en entrée (c’est- à-dire sur la couche d’entrée) du réseau de neurones artificiels 8 et le réseau de neurones artificiels 8 produit à chacun de ces différents instants en sortie (c’est-à-dire sur sa couche de sortie) une carte de caractéristiques F correspondante (les nœuds de sortie du réseau de neurones artificiels 8 étant dans ce cas associés respectivement aux différentes positions d’une seule carte de caractéristiques F).
En variante, les valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 peuvent être organisées en une suite ordonnée de valeurs représentatives V. Lorsque les données de contenu B appliquées en entrée du réseau de neurones artificiels 8 représentent un bloc d’une image (ou un bloc d’une composante d’une image), la suite ordonnée de valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 est associée à ce bloc. Les différentes suites de valeurs représentatives successivement produites par le réseau de neurones artificiels 8 sont ainsi respectivement associées aux différents blocs de l’image (ou aux différents blocs de la composante concernée de l’image).
Selon une autre variante encore, les valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 sont placées au sein d’une structure de données à plusieurs dimensions (par exemple M dimensions). Chaque élément de cette structure est alors repéré par sa position au sein de la structure, à savoir dans l’exemple précité au moyen d’un M-uplet de coordonnées. Une valeur représentative V produite par un nœud de sortie donné (c’est-à-dire par un nœud donné de la couche de sortie) du réseau de neurones artificiels 8 forme alors un élément de la structure désigné par une position au sein de la structure associée de manière prédéfinie à ce nœud de sortie (c’est-à-dire par des coordonnées associées de manière prédéfinie à ce nœud de sortie).
Les valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 sont appliquées en entrée du codeur entropique 10.
Ces valeurs représentatives V sont par exemple appliquées dans un ordre prédéfini. Ainsi, lorsque les valeurs représentatives V sont organisées en une suite (ordonnée) de cartes de caractéristiques F, les différentes cartes de caractéristiques F sont appliquées l’une après l’autre (dans l’ordre de la suite susmentionné), et les différents éléments d’une même carte de caractéristiques F (qui correspondent chacun à une valeur représentative) sont appliqués selon un schéma prédéfini (selon leur position) au sein de la carte de caractéristiques F.
Le codeur entropique 10 est conçu pour coder plusieurs sources statistiques correspondant chacune à une probabilité particulière d’apparition des symboles à coder. Pour ce faire, le codeur entropique 10 peut être paramétré dans un contexte particulier, associé à une source statistique donnée et dans lequel le codeur entropique 10 produit un codage entropique optimal si les symboles effectivement codés (ici les valeurs représentatives V) respectent la probabilité prévue pour cette source statistique.
Le codeur entropique 10 est ici un codeur de type CABAC (pour "Context-based adaptive binary arithmetic coding"). En variante, il pourrait s’agir d’un autre type de codeur entropique, par exemple un codeur de type Huffman, un codeur arithmétique ou un codeur LZW (pour "Lempel-Ziv-Welch"). Comme expliqué dans la suite, le codeur entropique 10 est à chaque instant paramétré par le module de commande 5 dans un contexte C qui dépend du type de la valeur représentative V à coder à cet instant (valeur représentative V provenant du réseau de neurones artificiels 8).
Dans le cas décrit ici où les valeurs représentatives V sont organisées en une suite de cartes de caractéristiques F, le contexte C sélectionné par le module de commande 5 pour paramétrer le codeur entropique 10 en vue du codage entropique d’un élément d’une carte de caractéristiques F peut par exemple dépendre (de manière prédéfinie) de la carte de caractéristiques F concernée et/ou de la position de l’élément dans la carte de caractéristiques F. (L’association d’un certain contexte à une carte de caractéristiques et/ou à une position dans la carte de caractéristiques est réalisée par exemple au moyen de mesures statistiques préalables, pour un grand nombre d’images traitées au moyen du réseau de neurones artificiels de codage 8, de la probabilité d’apparition des symboles dans cette carte de caractéristiques ou à cette position. Une telle association a pour but d’isoler les sources statistiques différentes au sein des valeurs représentatives V de façon à coder chacune de ces sources statistiques avec un contexte spécifique, et ainsi maximiser la compression.)
Le codeur entropique 10 produit en sortie une séquence d’éléments binaires (ou séquence de bits) Fnn.
On décrit à présent en référence à la figure 3 un exemple de procédé de codage mis en œuvre par le dispositif électronique de codage 2.
Le procédé de la figure 3 débute par une étape E2 de sélection d’un couple processus de codage - processus de décodage. Comme déjà indiqué pour le processus de codage, le processus de codage et le processus de décodage utilisent chacun au moins un réseau de neurones artificiels.
Dans l’exemple décrit ici, le processus de codage est mis en œuvre par un réseau de neurones artificiels de codage et le processus de décodage est mis en œuvre par un réseau de neurones artificiels de décodage.
L’ensemble formé par le réseau de neurones artificiels de codage et par le réseau de neurones artificiels de décodage (la sortie du réseau de neurones artificiels de codage étant appliquée à l’entrée du réseau de neurones artificiels de décodage) constitue par exemple un auto-encodeur. Le couple processus de codage - processus de décodage est par exemple sélectionné parmi une pluralité de couples processus de codage - processus de décodage prédéfinis, c’est-à-dire ici parmi une pluralité de couples réseau de neurones artificiels de codage - réseau de de neurones artificiels de décodage.
Le couple processus de codage - processus de décodage peut par exemple être sélectionné parmi des couples processus de codage - processus de décodage pour lesquels le processus de décodage utilise un réseau de neurones artificiels disponible pour un dispositif électronique de décodage (tel que le dispositif électronique de décodage 20 représenté sur la figure 5 et décrit plus loin). Pour ce faire, le dispositif électronique de codage peut éventuellement recevoir au préalable (en provenance du dispositif électronique de décodage ou d’un serveur dédié) une liste de réseaux de neurones artificiels accessibles par ce dispositif électronique de décodage.
Le couple processus de codage - processus de décodage peut également être sélectionné en fonction de l’application visée (indiquée par exemple par un utilisateur au moyen d’une interface utilisateur non représentée du dispositif électronique de codage 2). Par exemple, si l’application visée est une visioconférence, le couple processus de codage - processus de décodage sélectionné comprend un processus de décodage à faible latence. Dans d’autres applications, le couple processus de codage - processus de décodage sélectionné comprendra un processus de décodage à accès aléatoire.
Dans un processus de décodage à faible latence d’une séquence vidéo, une image de la séquence vidéo est par exemple représentée par des données codées qui peuvent être envoyées et décodées immédiatement ; les données peuvent alors être envoyées dans l’ordre d’affichage des images de la vidéo, ce qui garantit dans ce cas une latence d’une image entre le codage et le décodage.
Dans un processus de décodage à accès aléatoire d’une séquence vidéo, les données codées relatives respectivement à une pluralité d’images sont envoyées dans un ordre différent de l’ordre d’affichage de ces images, ce qui permet d’augmenter la compression. Des images codées sans référence aux autres images (images dites intra) peuvent alors être codées régulièrement, ce qui permet de démarrer le décodage de la séquence vidéo depuis plusieurs endroits dans le flux codé. On pourra se référer à ce sujet à l’article "Overview of the High Efficiency Video Coding (HEVC) Standard', de G. J. Sullivan, J.-R. Ohm, W.-J. Han and T. Wiegand, in IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, pp. 1649-1668, déc. 2012.
Les différents critères de sélection du couple processus de codage - processus de décodage peuvent éventuellement être combinés.
Une fois le couple processus de codage - processus de décodage sélectionné, le module de commande 5 procède à l’étape E4 à la configuration de l’unité de traitement parallélisé 6 afin que l’unité de traitement parallélisé 6 puisse mettre en œuvre le processus de codage sélectionné.
Cette étape E4 comprend en particulier l’instanciation, au sein de l’unité de traitement parallélisé 6, du réseau de neurones artificiels de codage 8 utilisé par le processus de codage sélectionné.
Cette instanciation peut notamment comprendre les étapes suivantes :
- réservation, au sein de l’unité de traitement parallélisé 6, de l’espace mémoire nécessaire à la mise en œuvre du réseau de neurones artificiels de codage ; et/ou
- programmation de l’unité de traitement parallélisé 6 avec les poids T et les fonctions d’activation définissant le réseau de neurones artificiels de codage 8 ; et/ou
- chargement d’une partie au moins des données de contenu B sur une mémoire locale de l’unité de traitement parallélisé 6.
Le procédé de la figure 3 comprend alors une étape E6 de mise en œuvre du processus de codage, c’est-à-dire ici une étape d’application des données de contenu B en entrée du réseau de neurones artificiels de codage 8 (ou autrement dit une étape d’activation du réseau de neurones artificiels de codage 8 en prenant en entrée les données de contenu B).
L’étape E6 permet ainsi de produire (ici en sortie du réseau de neurones artificiels de codage 8) les valeurs représentatives V.
Les étapes qui suivent visent le codage (c’est-à-dire la préparation) du flux de données destiné au dispositif électronique de décodage (par exemple le dispositif électronique de décodage 20 décrit ci-dessous en référence à la figure 5).
Le procédé comprend ainsi notamment une étape E8 de codage d’une première partie Fc d’en-tête qui comprend des données caractéristiques du format de représentation du contenu audio ou vidéo (ici par exemple des données liées au format de la séquence vidéo en cours de codage).
Ces données formant la première partie Fc d’en-tête indiquent par exemple les dimensions (en pixels) des images, la fréquence d’image, la profondeur en bits des informations de luminance et la profondeur en bits des informations de chrominance. Ces données sont par exemple construites sur la base des données de format P susmentionnées (après un reformatage éventuel).
Le module de commande 5 procède à l’étape E10 au codage d’une seconde partie d’en-tête comprenant des données R indicatives du réseau de neurones artificiels de décodage (associé au couple processus de codage - processus de décodage sélectionné à l’étape E2).
Selon une première possibilité de réalisation, ces données indicatives R peuvent comprendre un identifiant du réseau de neurones artificiels de décodage.
Un tel identifiant désigne (parmi une pluralité de réseaux de neurones artificiels de décodage, par exemple parmi l’ensemble des réseaux de neurones artificiels de décodages disponibles pour le dispositif électronique de décodage) le réseau de neurones artificiels de décodage correspondant au réseau de neurones artificiels de codage 8 susmentionné, réseau de neurones artificiels de décodage qui doit donc être utilisé pour le décodage des valeurs représentatives V.
Autrement dit, un tel identifiant définit par convention (partagée notamment par le dispositif électronique de codage et le dispositif électronique de décodage) ce réseau de neurones artificiels de décodage, par exemple au sein de l’ensemble de réseaux de neurones artificiels de décodage disponibles pour (ou accessibles par) le dispositif électronique de décodage. Comme déjà indiqué, le dispositif électronique de codage 2 peut éventuellement recevoir au préalable (en provenance du dispositif électronique de décodage ou d’un serveur dédié) une liste de réseaux de neurones artificiels accessibles par le dispositif électronique de décodage.
Selon une seconde possibilité de réalisation, ces données indicatives R peuvent comprendre des données descriptives du réseau de neurones artificiels de décodage.
Le réseau de neurones artificiels de décodage (correspondant au réseau de neurones artificiels de codage 8 susmentionné) est par exemple codé (c’est-à-dire représenté) par ces données descriptives (ou données de codage du réseau de neurones artificiels de décodage) conformément à une norme telle que la norme MPEG-7 partie 17 ou à un format tel que le format JSON.
On pourra se référer à ce sujet à l’article "DeepCABAC: Context-adaptive binary arithmetic coding for deep neural network compression", de S. Wiedemann et al., in Proceedings of the 36th International Conference on Machine Learning, Long Beach, California, PMLR 97, 2019, ou à l’article "Compact and Computationally Efficient Representation of Deep Neural Networks", de S. Wiedemann et al., in IEEE Transactions on Neural Networks and Learning Systems (Vol. 31 , Iss. 3), mars 2020.
On peut également prévoir que les données indicatives R comprennent un indicateur indiquant si le réseau de neurones artificiels de décodage fait partie d’un ensemble prédéterminé de réseaux de neurones artificiels (auquel cas la première possibilité de réalisation mentionnée ci-dessus est utilisée) ou si le réseau de neurones artificiels de décodage est codé dans le flux de données, c’est-à-dire représenté au moyen des données descriptives précitées (auquel cas la seconde possibilité de réalisation mentionné ci-dessus est utilisée).
Le procédé de la figure 3 se poursuit par une étape E12 de détermination de la possibilité pour le dispositif électronique de décodage de mettre en œuvre le processus de décodage utilisant le réseau de neurones artificiels de décodage.
Le module de commande 5 détermine par exemple cette possibilité en déterminant (éventuellement au moyen d’échanges préalables entre le dispositif électronique de codage 2 et le dispositif électronique de décodage) si le dispositif électronique de décodage comprend un module adapté à mettre en œuvre ce processus de décodage ou un logiciel adapté à la mise en œuvre de ce processus de décodage par le dispositif électronique de décodage lorsque ce logiciel est exécuté par un processeur du dispositif électronique de décodage.
Si le module de commande 5 détermine qu’il est possible pour le dispositif électronique de décodage de mettre en œuvre le processus de décodage, le procédé se poursuit à l’étape E16 décrite plus bas.
Si le module de commande 5 détermine qu’il n’est pas possible pour le dispositif électronique de décodage de mettre en œuvre le processus de décodage, le procédé effectue l’étape E14 décrite ci-dessous (avant de passer à l’étape E16).
En variante, le choix d’effectuer ou non l’étape E14 (avant d’effectuer l’étape E16) pourrait être réalisé sur un autre critère, par exemple en fonction d’un indicateur dédié mémorisé au sein du dispositif électronique de codage 2 (et éventuellement réglable par l’utilisateur via une interface utilisateur du dispositif électronique de codage 2) ou en fonction d’un choix de l’utilisateur (obtenu par exemple via une interface utilisateur du dispositif électronique de codage 2).
Le module de commande 5 code dans le flux de données à l’étape E14 une troisième partie d’en-tête contenant un programme d’ordinateur Exe (ou code) exécutable par un processeur du dispositif électronique de décodage. (L’utilisation du programme d’ordinateur Exe au sein du dispositif électronique de décodage est décrite ci-dessous en référence à la figure 5.)
Afin d’être adapté à une exécution au sein du dispositif électronique de décodage, le programme d’ordinateur est par exemple choisi au sein d’une bibliothèque en fonction d’informations relatives à la configuration matérielle du dispositif électronique de décodage (informations reçues par exemple au cours d’échanges préalables entre le dispositif électronique de codage 2 et le dispositif électronique de décodage).
Le module de commande 5 procède ensuite à une étape E16 de configuration du codage entropique.
Au cours de cette étape de configuration 16, le module de commande 5 détermine un ensemble de sources statistiques avec lesquelles effectuer le codage entropique. Le module de commande 5 détermine par exemple un nombre de sources statistiques (et donc de contextes) à utiliser pour le codage entropique.
Pour ce faire, le module de commande 5 peut par exemple analyser les valeurs représentatives V produites comme indiqué ci-dessus et y identifier combien de sources statistiques différentes s’y trouvent. Selon une autre possibilité, le module de commande 5 peut choisir le nombre de sources statistiques en fonction de la complexité qu’il souhaite autoriser lors du codage et/ou du décodage.
Ainsi, le module de commande 5 peut diviser le signal formé par l’ensemble des valeurs représentatives V en un certain nombre (par exemple inférieur ou égal à un nombre prédéterminé, ou, en variante, sans limitation de leur nombre) de sous- signaux selon des critères prédéfinis.
On note dans la suite K le nombre de sources statistiques différentes identifiées dans le signal formé par les valeurs représentatives V (c’est-à-dire le nombre de contextes dans lesquels le codeur entropique pourra être paramétré lors du codage entropique des valeurs représentatives V). On a par exemple K = 160. Dans l’exemple décrit ici, le module de commande 5 peut créer autant de sous- signaux que de cartes de caractéristiques F, ou autant de sous-signaux que d’emplacements (c’est-à-dire de positions distinctes) dans une carte de caractéristiques F. On peut prévoir éventuellement en outre que le module de commande 5 puisse fusionner les sous-signaux qui possèdent les mêmes distributions statistiques (ou des distributions statistiques très similaires).
Ainsi, le module de commande 5 détermine également au cours de l’étape de configuration E16 à quelle source statistique (et donc à quel contexte) est associé chaque type de valeur représentative V (c’est-à-dire ici chaque élément d’une carte de caractéristiques).
Par exemple, si le module de commande 5 crée autant de sous-signaux que de cartes de caractéristiques F, le contexte associé à un élément d’une carte de caractéristiques F (c’est-à-dire à utiliser pour paramétrer le codage entropique de cet élément) dépend de la carte de caractéristiques F concernée.
En revanche, si le module de commande 5 créé autant de sous-signaux que d’emplacements dans chaque carte de caractéristiques F, le contexte associé à un élément d’une carte de caractéristiques F (c’est-à-dire à utiliser pour paramétrer le codage entropique de cet élément) dépend de la position de cet élément dans la carte de caractéristiques F.
Le procédé de la figure 3 se poursuit alors par des étapes de codage de données représentatives de la configuration du codeur entropique déterminée à l’étape E16.
Ainsi, le procédé de la figure 3 comprend tout d’abord une étape E18 de codage d’une quatrième partie d’en-tête comprenant une information 11 indicative de l’ensemble de contextes utilisés pour le codage entropique. Dans l’exemple décrit ici, l’information 11 est indicative du nombre K de contextes utilisés pour le codage entropique.
Le procédé de la figure 3 comprend ensuite une étape E20 de codage d’une cinquième partie d’en-tête comprenant, pour chaque contexte utilisé pour le codage entropique, une donnée linit de paramétrisation du contexte concerné.
Dans le cas décrit ici où le codage entropique utilisé est de type CABAC, la donnée de paramétrisation linit associée à un contexte donné est une donnée d’initialisation de ce contexte, comme décrit par exemple dans la Recommandation ITU-T H.265, partie "9.3.2.2 Initialization process for context variables". Dans d’autres modes de réalisation, la donnée de paramétrisation associée à un contexte donné peut être une donnée indicative du modèle de probabilité utilisé pour le contexte concerné lors du codage entropique.
Le procédé de la figure 3 comprend alors une étape E22 de codage d’une sixième partie d’en-tête comprenant des données 12 indiquant, pour chaque type de valeur représentative V, le contexte dans lequel le codage entropique des valeurs représentatives V ayant ce type est réalisé.
Dans l’exemple décrit, comme déjà indiqué, le module de commande 5 sélectionne comme déjà indiqué l’affectation des différents contextes respectivement aux différentes cartes de caractéristiques F (chaque carte de caractéristiques F formant un sous-signal), ou respectivement aux différentes positions (ou emplacements) définies dans les cartes de caractéristiques F (les éléments ayant une position donnée formant un sous-signal).
On propose donc ici que les données 12 comprennent :
- un indicateur I2_mode qui indique, si sa valeur est 0, qu’un contexte est associé à chaque carte de caractéristiques F et, si sa valeur est 1 , qu’un contexte est utilisé pour chaque position dans les cartes de caractéristiques F ;
- une pluralité d’identifiants I2_map[i] indiquant respectivement les contextes utilisés pour les différents types de valeurs représentatives V.
Si l’indicateur I2_mode est égal à 0, les différents types de valeurs représentatives correspondent aux différentes cartes de caractéristiques F. Si l’indicateur I2_mode est égal à 1 , les différents types de valeurs représentatives correspondent aux différentes positions au sein d’une carte de caractéristiques F.
On décrit dans la suite (sauf indication contraire) le cas où le module de commande 5 sélectionne l’affectation des différents contextes aux différentes cartes de caractéristiques, c’est-à-dire où l’indicateur I2_mode est égal à 0.
Le procédé de la figure 3 se poursuit par une étape E24 d’initialisation du codeur entropique 10 (par le module de commande 5) au moyen des données de paramétrisation susmentionnées relatives aux différents contextes. Ce type d’initialisation est décrit dans le document déjà mentionné (Recommandation ITU-T H.265, partie "9.3.2.2 Initialization process for context variables").
Le procédé de la figure 3 comprend alors une étape E26 de codage entropique des valeurs représentatives V par le codeur entropique 10, le codeur entropique 10 étant à chaque instant paramétré (par le module de commande 5) dans le contexte C utilisé (d’après les choix faits comme décrit ci-dessus) pour le type de la valeur représentative V en cours de traitement.
Par exemple, dans l’exemple décrit ici, pour le codage entropique des valeurs représentatives V contenues dans une carte de caractéristiques F donnée, le module de commande 5 paramètre le codeur entropique 10 dans le contexte C associé à cette carte de caractéristiques F donnée et applique successivement (dans un ordre prédéfini) les éléments de cette carte de caractéristiques F en entrée du codeur entropique 10.
Le codeur entropique 10 produit ainsi en sortie une séquence Fnn d’éléments binaires représentant, sous forme compressée, le contenu audio ou vidéo.
L’étape E26 peut comprendre dans certains cas une sous-étape (antérieure au codage entropique à proprement parler) de binarisation des valeurs représentatives V, comme décrit dans l’article "Context-based adaptive binary arithmetic coding in the H.264/A VC video compression standard' précité. L’objectif de cette étape de binarisation est de convertir une valeur représentative V pouvant prendre un grand nombre de valeurs en une série d’éléments binaires, chaque élément binaire étant codé par codage entropique (et dans ce cas, un contexte est associé au codage de chaque élément binaire).
On remarque que, lorsque l’étape E6 permet le traitement d’une partie seulement du contenu audio ou vidéo à compresser (par exemple lorsque l’étape E6 effectue le traitement d’un bloc, ou d’une composante, ou d’une image d’une séquence vidéo à compresser), il est possible de répéter la mise en œuvre des étapes E6 (pour obtenir des valeurs représentatives des parties successives du contenu) et E26 (pour réaliser le codage entropique de ces valeurs représentatives).
Le processeur 4 peut ainsi construire à l’étape E28 le flux de données complet comprenant l’en-tête Fet et la séquence d’éléments binaires Fnn.
Le flux de données complet est construit de sorte que l’en-tête Fet et la séquence d’éléments binaires Fnn soient identifiables individuellement.
Selon une possibilité de réalisation, l’en-tête Fet contient un indicateur de début de la séquence d’éléments binaires Fnn dans le flux de données complet. Cet indicateur est par exemple la localisation, en bits, du début de la séquence d’éléments binaires Fnn à partir du début du flux de donnée complet. (Autrement dit, l’en-tête a dans ce cas une longueur fixe prédéterminée.)
D’autres moyens d’identification de l’en-tête Fet et de la séquence d’éléments binaires Fnn sont envisageables en variante, comme par exemple un marqueur (c’est- à-dire une combinaison de bits utilisée pour indiquer le début de la séquence d’éléments binaires Fnn et dont l’usage est interdit dans le reste du flux de données, ou au moins dans l’en-tête Fet).
Le flux de données construit à l’étape E28 peut être encapsulé dans des formats de transmission connus en soi, comme le format "Packet-Transport System" ou le format "Byte-Stream".
Dans le cas du format "Packet-Transport System" (comme proposé par exemple par le protocole RTP), les données sont codées par paquets identifiables et transmis sur un réseau de communication. Le réseau peut aisément identifier les frontières des données (images, groupes d’images et ici en-tête Fet et séquence d’éléments binaires Fnn), à l’aide des informations d’identification de paquets fournies par la couche réseau.
Dans le format "Byte-Stream", il n’y a pas spécifiquement de paquets et la construction de l’étape E28 doit permettre d’identifier les frontières des données pertinentes (telles que frontières entre parties du flux correspondant à chaque image, et ici entre en-tête Fet et séquence d’éléments binaires Fnn) à l’aide de moyens supplémentaires, tels que l’utilisation d’unités de couche d’abstraction de réseau (ou unités NAL pour "Network Abstraction Layer”), où des combinaisons uniques de bits (telles que 0x00000001 ) permettent d’identifier les frontières entre données).
Le flux de données complet construit à l’étape E28 peut alors être émis à l’étape E30 à destination du dispositif électronique de décodage 20 décrit ci-après (par des moyens de communication non représenté et/ou à travers au moins un réseau de communication), ou mémorisé au sein du dispositif électronique de codage 2 (pour émission ultérieure ou, en variante, décodage ultérieur, par exemple au sein même du dispositif électronique de codage, qui est dans ce cas conçu pour mettre en œuvre en outre le procédé de décodage 20 décrit ci-dessous en référence à la figure 5).
Ce flux de données comprend ainsi, comme représenté en figure 4, l’en-tête Fet et la séquence d’éléments binaires Fnn.
Comme cela ressort de ce qui précède, l’en-tête Fet comprend : - une première partie Fc qui comprend des données caractéristiques du format de représentation du contenu audio ou vidéo ;
- une seconde partie qui comprend des données R indicatives du réseau de neurones artificiels de décodage (ou de manière générale des données indicatives d’un procédé à apprentissage automatique utilisé pour le décodage) ;
- éventuellement une troisième partie qui comprend un programme d’ordinateur Exe exécutable par un processeur du dispositif électronique de décodage ;
- une quatrième partie qui comprend une information 11 indicative de l’ensemble de contextes utilisés pour le codage entropique ;
- une cinquième partie qui comprend, pour chaque contexte utilisé pour le codage entropique, une donnée linit de paramétrisation du contexte concerné ;
- une sixième partie I2 qui comprend une pluralité d’identifiants I2_map[i] représentatifs chacun d’un contexte dans lequel le codeur entropique a été paramétré pour le codage entropique des données d’un certain type et par conséquent dans lequel un décodeur entropique est paramétré pour obtenir les données de ce type lorsque le décodeur entropique reçoit en entrée une partie de la séquence d’éléments binaires, comme décrit dans la suite.
Selon une variante envisageable, on pourrait prévoir de ne pas transmettre l’information 11 indicative de l’ensemble de contexte utilisés pour le codage entropique, le codeur entropique et le décodeur entropique pouvant alors utiliser un nombre de contextes défini à l’avance (par convention).
La figure 5 représente un dispositif électronique de décodage 20 incluant un décodeur entropique 23.
Ce dispositif électronique de décodage 20 comprend une unité de réception 21 , un processeur 24 (par exemple un microprocesseur) et une unité de traitement parallélisé 26, par exemple une unité de traitement graphique (ou GPU pour "Graphical Processing Unit') ou une unité de traitement de tenseur (ou TPU pour "Tensor Processing Unit').
L’unité de réception 21 est par exemple un circuit de communication (tel qu’un circuit de communication radiofréquence) et permet de recevoir des données (et notamment ici le flux de données décrit ci-dessus) d’un dispositif électronique extérieur, tel que le dispositif électronique de codage 2, et de communiquer ces données au processeur 24 (auquel l’unité de réception 21 est par exemple relié par un bus).
Le dispositif électronique de décodage 20 comprend également une unité de mémorisation 22, par exemple une mémoire (éventuellement une mémoire nonvolatile réinscriptible) ou un disque dur. Bien que l’unité de mémorisation 22 soit représentée en figure 5 comme un élément distinct du processeur 24, l’unité de mémorisation 22 pourrait en variante être intégrée au (c’est-à-dire comprise dans le) processeur 24.
Le processeur 24 est dans ce cas conçu pour exécuter successivement une pluralité d’instructions d’un programme d’ordinateur mémorisé par exemple dans l’unité de mémorisation 22.
Une partie de ces instructions permettent, lorsqu’elles sont exécutées par le processeur 24, de mettre en œuvre un module de commande 25 ayant notamment les fonctionnalités décrites dans la suite. En variante, certaines des fonctionnalités du module de commande 25 pourraient être mises en œuvre du fait de l’exécution, par le processeur 24, d’instructions identifiées au sein de l’en-tête Fet à l’étape E52 comme décrit ci-dessous.
Une autre partie des instructions mémorisés dans l’unité de mémorisation 22 permettent, lorsqu’elles sont exécutées par le processeur 24, de mettre en œuvre le décodeur entropique 23 déjà mentionné. En variante, le décodeur entropique 23 pourrait être mis en œuvre du fait de l’exécution, par le processeur 24, d’instructions identifiées au sein de l’en-tête Fet à l’étape E52 comme décrit ci-dessous.
Le décodeur entropique 23 est conçu pour effectuer un décodage entropique inverse du codage entropique effectué par le codeur entropique 10 du dispositif électronique de codage 2 décrit ci-dessus en référence à la figure 1 . Le décodeur entropique 23 est donc ici un décodeur entropique de type CABAC (pour "Context- based adaptive binary arithmetic coding"). En variante, il pourrait s’agir d’un autre type de codeur entropique, par exemple un décodeur de type Huffman, un décodeur arithmétique ou un décodeur LZW (pour "Lempel-Ziv-Welch").
L’unité de traitement parallélisé 26 est conçue pour mettre en œuvre le réseau de neurones artificiels 28 après avoir été configurée par le processeur 24 (ici précisément par le module de commande 25). Pour ce faire, l’unité de traitement parallélisé 26 est conçue pour effectuer en parallèle à un instant donné une pluralité d’opérations du même type.
De manière générale, l’unité de traitement parallélisé 26 est conçue pour mettre en œuvre un procédé à apprentissage automatique (tel que par exemple un procédé à apprentissage profond ou un procédé à apprentissage par forêt d’arbres décisionnels) après avoir été configurée par le processeur 24, par exemple au moyen de données de configuration d’un tel procédé à apprentissage automatique reçues au sein du flux de données.
Comme schématiquement représenté en figure 5, le processeur 24 reçoit (ici via l’unité de réception 21 ) le flux de données comprenant l’en-tête Fet et la séquence d’élément binaires Fnn.
Comme expliqué dans la suite, le réseau de neurones artificiels 28 est utilisé dans le cadre d’un traitement de données obtenues par décodage entropique de la séquence d’éléments binaires Fnn, ce traitement de données visant à obtenir un contenu audio ou vidéo correspondant au contenu audio ou vidéo initial B.
L’unité de mémorisation 22 peut mémoriser une pluralité de jeux de paramètres, chaque jeu de paramètres définissant un réseau de neurones artificiels de décodage. Comme expliqué dans la suite, le processeur 24 peut dans ce cas configurer l’unité de traitement parallélisé 26 au moyen d’un jeu de paramètres particulier parmi ces jeux de paramètres de sorte que l’unité de traitement parallélisé 26 puisse alors mettre en œuvre le réseau de neurones artificiels défini par ce jeu de paramètres particulier.
L’unité de mémorisation 22 peut notamment mémoriser un premier jeu de paramètres définissant un premier réseau de neurones artificiels formant décodeur à accès aléatoire et/ou un second jeu de paramètres définissant un second réseau de neurones artificiels formant un décodeur à faible latence.
Le dispositif électronique de décodage 20 détient dans ce cas à l’avance des possibilités de décodage tant pour des situations où l’on souhaite obtenir un accès aléatoire au contenu que pour des situations où l’on souhaite afficher sans retard le contenu.
On décrit à présent en référence à la figure 6 un procédé de décodage mis en œuvre au sein du dispositif électronique de décodage 20 et utilisant d’une part le décodeur entropique 23 et d’autre part le réseau de neurones artificiels 28 mis en œuvre par l’unité de traitement parallélisé 26. Le procédé de la figure 6 débute une étape E50 de réception (par le dispositif électronique de décodage 20, et précisément ici par l’unité de réception 21 ) du flux de données comprenant l’en-tête Fet et la séquence d’éléments binaires Fnn. L’unité de réception 21 transmet le flux de données reçu au processeur 24 pour traitement par le module de commande 25.
Le module de commande 25 procède alors à une étape E52 d’identification de l’en-tête Fet et de la séquence d’éléments binaires Fnn au sein du flux de données reçu, par exemple au moyen de l’indicateur de début de séquence d’éléments binaires (déjà mentionné lors de la description de l’étape E28).
Le module de commande 25 peut également identifier à l’étape E52 les différentes parties de l’en-tête Fet (telles que décrites plus haut en référence à la figure 4).
Dans les cas où des instructions exécutables (telles que les instructions du programme d’ordinateur Exe) sont identifiées (i.e. détectées) au sein des premières données à l’étape E52, le module de commande 25 peut lancer à l’étape E54 l’exécution de ces instructions exécutables afin de mettre en œuvre certaines au moins des étapes (décrites ci-dessous) de traitement des données d’en-tête (et éventuellement de décodage entropique). Ces instructions peuvent être exécutées par le processeur 24 ou, en variante, par une machine virtuelle instanciée au sein du dispositif électronique de décodage 20.
Le procédé de la figure 6 se poursuit par une étape E56 de décodage des données Fc caractéristiques du format de représentation du contenu audio ou vidéo de manière à obtenir des caractéristiques de ce format. Dans le cas d’un contenu vidéo par exemple, le décodage des données Fc permet d’obtenir les dimensions (en pixels) des images et/ou la fréquence d’image et/ou la profondeur en bits des informations de luminance et/ou la profondeur en bits des informations de chrominance.
Le module de commande 25 procède alors à une étape E58 de décodage des données R indicatives du réseau de neurones artificiels de décodage à utiliser.
Selon une première possibilité, comme déjà indiqué, ces données R sont un identifiant désignant le réseau de neurones artificiels de décodage 28, par exemple au sein d’un ensemble prédéterminé de réseaux de neurones artificiels. Cet ensemble prédéterminé est par exemple l’ensemble des réseaux de neurones artificiels de décodage accessibles par le dispositif électronique de décodage 20, à savoir l’ensemble des réseaux de neurones artificiels pour lesquels le dispositif électronique de décodage 20 mémorise un jeu de paramètres définissant le réseau de neurones artificiels concerné (comme indiqué ci-dessus) ou peut avoir accès à ce jeu de paramètres par connexion à un équipement électronique distant tel qu’un serveur (comme expliqué ci-dessous).
Le module de commande 25 peut dans ce cas procéder à la lecture, par exemple dans l’unité de mémorisation 22, d’un jeu de paramètres associé à l’identifiant décodé (ce jeu de paramètres définissant le réseau de neurones artificiels identifié par l’identifiant décodé).
En variante (ou dans le cas où aucun jeu de paramètres n’est mémorisé dans l’unité de mémorisation 22 pour le réseau de neurones artificiels identifié par l’identifiant décodé), le module de commande 25 peut émettre une requête d’un jeu de paramètres à destination d’un serveur distant (cette requête incluant par exemple l’identifiant décodé) et recevoir en réponse le jeu de paramètres définissant le réseau de neurones artificiels identifié par l’identifiant décodé.
Selon une seconde possibilité de réalisation, comme déjà indiqué, les données R sont des données descriptives Rc du réseau de neurones artificiels de décodage 28.
Comme déjà indiqué, ces données descriptives (ou données de codage) sont par exemple codées conformément à une norme telle que la norme MPEG-7 partie 17 ou à un format tel que le format JSON.
Le décodage de ces données descriptives permet d’obtenir les paramètres définissant le réseau de neurones artificiels à utiliser pour le décodage des données obtenues (par décodage entropique) à partir de la séquence d’éléments binaires Fnn.
Dans certains modes de réalisation, l’utilisation de la première possibilité ou de la seconde possibilité susmentionnées dépend d’un indicateur également inclus dans les données R, comme déjà indiqué.
Quelle que soit la possibilité utilisée, le décodage des données R indicatives du réseau de neurones artificiels de décodage à utiliser permet (ici au module de commande 25) de déterminer les caractéristiques du réseau de neurones artificiels de décodage 28. Par exemple, dans l’exemple décrit ici, le module de commande 25 détermine ainsi le nombre N de cartes de caractéristiques attendues en entrée du réseau de neurones artificiels de décodage 28 et les dimensions H, W de ces cartes de caractéristiques. En effet, la couche d’entrée du réseau de neurones artificiels de décodage 28 correspondant à la couche de sortie du réseau de neurones artificiels de codage 8 comme expliqué plus haut (voir par exemple la description de l’étape E2), chaque élément d’une carte de caractéristiques F est associé de manière prédéterminée à un nœud d’entrée (ou nœud de la couche d’entrée) du réseau de neurones artificiels de décodage. Le nombre et les dimensions des cartes de caractéristiques F sont donc liés aux caractéristiques du réseau de neurones artificiels de décodage 28, ainsi qu’à certaines données d’en-tête comme les données Fc susmentionnées (comprenant notamment les dimensions de l’image).
Le module de commande 25 procède alors à l’étape E60 à la configuration de l’unité de traitement parallélisé 26 au moyen des paramètres définissant le réseau de neurones artificiels de décodage 28 (paramètres obtenus à l’étape E58), ou de manière générale le procédé à apprentissage automatique utilisé, afin que l’unité de traitement parallélisé 26 puisse mettre en œuvre le réseau de neurones artificiels de décodage 28 (ou de manière générale le procédé à apprentissage automatique, par exemple en variante un autre procédé à apprentissage profond ou un procédé à apprentissage par forêt d’arbres décisionnels).
Cette étape de configuration E60 comprend notamment l’instanciation du réseau de neurones artificiels de décodage 28 au sein de l’unité de traitement parallélisé 26, ici en utilisant les paramètres obtenus à l’étape E58.
Cette instanciation peut notamment comprendre les étapes suivantes :
- réservation, au sein de l’unité de traitement parallélisé 26, de l’espace mémoire nécessaire à la mise en œuvre du réseau de neurones artificiels de décodage 28 ; et/ou
- programmation de l’unité de traitement parallélisé 26 avec les paramètres (incluant par exemple des poids T’ et des fonctions d’activation) définissant le réseau de neurones artificiels de décodage 28 (paramètres obtenus à l’étape E58).
Le module de commande 25 procède alors à l’étape E62 au décodage de l’information 11 indicative de l’ensemble de contextes utilisables au sein du décodeur entropique 23 (indicative ici du nombre K de contextes utilisables au sein du décodeur entropique 23). Comme déjà indiqué, on a par exemple K = 160. Le module de commande 25 procède ensuite à l’étape E64 au décodage des données de paramétrisation Init relatives respectivement aux différents contextes de l’ensemble de contextes utilisés (cet ensemble étant déterminé grâce à l’information 11 décodée à l’étape E62).
Le module de commande 25 peut alors mettre en œuvre une étape E66 d’initialisation de chaque contexte utilisable au sein du décodeur entropique 23 au moyen de la donnée de paramétrisation linit du contexte concerné (décodée à l’étape E64).
Précisément, le décodeur entropique 23 étant ici adaptatif, chaque contexte est initialisé avec le modèle de probabilité défini par la donnée de paramétrisation linit relative à ce contexte.
En variante, si le décodeur entropique 23 utilise un modèle de probabilité fixe pour chaque contexte, le module de commande 25 configure à l’étape E66 chaque contexte utilisable par le décodeur entropique avec le modèle de probabilité défini par la donnée de paramétrisation linit relative à ce contexte.
Le module de commande 25 effectue ensuite une étape E68 de décodage des données I2 indiquant, pour chaque type de donnée à obtenir par décodage entropique, le contexte dans lequel le codage entropique des données ayant ce type a réalisé et par conséquent dans lequel le décodeur entropique 23 doit être paramétré pour le décodage entropique de cette donnée.
Dans l’exemple décrit ici, le module de commande 25 décode (c’est-à-dire ici consulte) tout d’abord l’indicateur I2_mode qui indique, si sa valeur est 0, qu’un contexte est associé à chaque carte de caractéristiques F et, si sa valeur est 1 , qu’un contexte est utilisé pour chaque position dans les cartes de caractéristiques F.
Ainsi, en fonction de la valeur de l’indicateur I2_mode et du nombre K et des dimensions H, W des cartes de caractéristiques, le module de commande 25 décode (c’est-à-dire ici lit dans le flux de données) les identifiants I2_map[i] représentatifs chacun d’un contexte dans lequel dans lequel le décodeur entropique 23 doit être paramétré pour obtenir les données de ce type lorsque le décodeur entropique 23 reçoit en entrée une partie de la séquence d’éléments binaires Fnn.
Par exemple, si l’indicateur I2_mode vaut 0, le module de commande 25 décode (ou lit), pour chacune des N cartes de caractéristiques F, l’identifiant I2_map[i] représentatif du contexte dans lequel le décodeur entropique 23 doit être paramétré pour obtenir les données (ici les valeurs représentatives V) relatives à cette carte de caractéristiques F. Autrement dit, dans ce cas, le type d’une donnée est défini par la carte de caractéristiques F à laquelle appartient cette donnée (cette donnée étant ici une valeur représentative V).
Si l’indicateur I2_mode vaut 1 , le module de commande 25 décode (ou lit), pour chacune des WxH positions (ou emplacements) au sein de chaque carte de caractéristiques F, l’identifiant I2_map[i] représentatif du contexte dans lequel le décodeur entropique 23 doit être paramétré pour obtenir les données (ici les valeurs représentatives V) situées à cette position. Autrement dit, dans ce cas, le type d’une donnée est défini par la position de cette donnée (ici une valeur représentative V) au sein de la carte de caractéristiques F concernée.
Pour chaque donnée de la suite de donnée attendues (à savoir ici pour chacune des valeurs représentatives V à appliquer en entrée du réseau de neurones artificiels de décodage 28), à l’étape E70, le module de commande 25 :
- détermine le contexte à utiliser pour le décodage de cette donnée sur la base de l’identifiant I2_map[i] associé au type de cette donnée ;
- paramètre le décodeur entropique 23 dans le contexte C ainsi déterminé ; et
- applique en entrée du décodeur entropique 23 une partie de la séquence d’éléments binaires Fnn (dans l’ordre de réception de ces éléments binaires), de sorte que le décodeur entropique 23 produit en sortie la donnée attendue (ici une valeur représentative V) identique à celle qui a été codée par codage entropique à l’étape E26.
Comme déjà indiqué (voir ci-dessus la description de l’étape E58), le module de commande 25 a déterminé au préalable le nombre N et les dimensions H, W des cartes de caractéristiques et connait donc le nombre de valeurs représentatives V (ou données attendues) à obtenir au cours de l’étape de décodage entropique E70. Par ailleurs, comme mentionné lors de la description de l’étape E26, les différentes valeurs représentatives V sont codées par codage entropique dans un ordre prédéfini et les valeurs représentatives V (données attendues) sont donc décodées dans ce même ordre prédéfini.
D’après ce qui a déjà été expliqué, si l’indicateur I2_mode vaut 0, le contexte C déterminé pour décoder un élément (/.e. une valeur représentative V) d’une carte de caractéristiques F donnée est ainsi déterminé sur la base de l’identifiant I2_map[i] Tl associé à cette carte de caractéristiques F donnée (le type de donnée correspondant dans ce cas à la carte de caractéristiques comprenant cette donnée).
De même, si l’indicateur I2_mode vaut 1 , le contexte C déterminé pour décoder un élément donné (/.e. une valeur représentative donnée V) dans une carte de caractéristiques F est déterminé sur la base de l’identifiant I2_map[i] associé à la position de cet élément donné dans la carte de caractéristiques (le type de donnée correspondant dans ce cas à la position de la donnée).
Le décodeur entropique 23 produit ainsi à l’étape E70 la suite de données attendues, à savoir ici l’ensemble des valeurs représentatives V.
Le processeur 24 (ici directement en sortie du décodeur entropique 23 ou, en variante, par l’intermédiaire du module de commande 25) peut alors appliquer (/.e. présenter) à l’étape E72 les valeurs représentatives V au réseau de neurones artificiels 28 mis en œuvre par l’unité de traitement parallélisé 26 afin que ces données soient traitées par un processus de décodage utilisant en partie au moins le réseau de neurones artificiels 28.
Dans l’exemple décrit ici, le réseau de neurones artificiels 28 reçoit en entrée les valeurs représentatives V et produit en sortie une représentation I du contenu codé adaptée à une reproduction sur un dispositif de reproduction audio ou vidéo. Autrement dit, les valeurs représentatives V (sous forme ici de cartes de caractéristiques F) sont appliquées sur la couche d’entrée du réseau de neurones artificiels 28 et la couche de sortie du réseau de neurones artificiels 28 produit la représentation I du contenu codé susmentionnée. Dans le cas d’un contenu vidéo (comprenant une image ou une séquence d’images), le réseau de neurones artificiels 28 produit ainsi en sortie (c’est-à-dire au niveau de sa couche de sortie) au moins une représentation matricielle I d’une image.
Comme déjà vu pour le codage à l’étape E6 décrite ci-dessus, l’association d’un élément (/.e. d’une valeur représentative V) d’une carte de caractéristiques F à un nœud d’entrée (ou nœud de la couche d’entrée) est prédéfinie.
Dans certains modes de réalisation, pour le traitement de certaines valeurs représentatives V (correspondant par exemple à un bloc ou une image), le réseau de neurones artificiels 28 peut recevoir en entrée certaines au moins des données produites en sortie du réseau de neurones artificiels 28 lors du traitement de données antérieures (ici de valeurs représentatives V antérieures), correspondant par exemple au bloc précédent ou à l’image précédente. On procède dans ce cas à une étape E74 de réinjection de données produites en sortie du réseau de neurones artificiels 28 vers l’entrée du réseau de neurones artificiels 28.
Par ailleurs, selon d’autres possibilité de réalisation, le processus de décodage pourrait utiliser une pluralité de réseaux de neurones artificiels, comme déjà mentionné plus haut à propos du traitement des données de contenu B.
Le module de commande 25 détermine alors à l’étape E76 si le traitement de la séquence d’éléments binaires Fnn au moyen du réseau de neurones artificiels 28 est terminé. En cas de détermination négative (N), le procédé boucle à l’étape E70 pour décodage entropique de la partie suivante de la séquence d’éléments binaires Fnn et application d’autres valeurs représentatives V (produites par ce décodage entropique) au réseau de neurones artificiels 28.
En cas de détermination positive (P), il est mis fin au procédé à l’étape E78.

Claims

29 Revendications
1. Procédé de décodage d’un flux de données comprenant une pluralité d’identifiants (I2_map[i]) et une séquence d’éléments binaires (Fnn), en une suite de données (V) de types respectifs prédéterminés, le procédé comprenant les étapes suivantes pour obtenir chaque donnée (V) de ladite suite :
- détermination d’un contexte (C) sur la base d’un identifiant (I2_map[i]) associé, parmi la pluralité d’identifiants, au type de la donnée concernée ;
- décodage d’une partie de la séquence d’éléments binaires (Fnn) au moyen d’un décodeur entropique (23) recevant en entrée la séquence d’éléments binaires (Fnn) et paramétré dans le contexte déterminé (C).
2. Procédé de décodage selon la revendication 1 , dans lequel le flux de données comprend une information (11 ) indicative d’un ensemble de contextes utilisables au sein du décodeur entropique (23).
3. Procédé de décodage selon la revendication 2, dans lequel ladite information (11 ) est indicative d’un nombre de contextes utilisables au sein du décodeur entropique (23).
4. Procédé de décodage selon l’une des revendications 1 à 3, dans lequel le flux de données comprend, pour chaque contexte utilisable au sein du décodeur entropique, une donnée (linit) de paramétrisation du contexte concerné.
5. Procédé de décodage selon la revendication 4, comprenant une étape d’initialisation (E66) de chaque contexte utilisable au sein du décodeur entropique (23) au moyen de la donnée de paramétrisation (linit) du contexte concerné.
6. Procédé de décodage selon l’une des revendications 1 à 5, comprenant une étape d’application (E72) des données obtenues (V) en entrée d’un réseau de neurones artificiels (28).
7. Procédé de décodage selon la revendication 6, dans lequel le réseau de neurones artificiels (28) est mis en œuvre par une unité de traitement (26), le procédé comprenant une étape de configuration (E60) de l’unité de traitement (26) en fonction de données (R) comprises dans le flux de données.
8. Procédé de décodage selon l’une des revendications 1 à 7, dans lequel ladite suite de données forme un ensemble de cartes de caractéristiques (F). 30
9. Procédé de décodage selon la revendication 8, dans lequel les identifiants de la pluralité d’identifiants sont respectivement associés aux cartes de caractéristiques (F) de l’ensemble de cartes de caractéristiques, le contexte déterminé pour l’obtention d’un élément d’une carte de caractéristiques (F) donnée étant déterminé sur la base de l’identifiant associé à la carte de caractéristiques (F) donnée.
10. Procédé de décodage selon la revendication 8, dans lequel les cartes de caractéristiques (F) de l’ensemble de cartes de caractéristiques ont une structure commune au sein de laquelle chaque élément d’une carte de caractéristiques est défini par une position et dans lequel les identifiants de la pluralité d’identifiants sont respectivement associés aux différentes positions dans la structure commune, le contexte déterminé pour l’obtention d’un élément donné d’une carte de caractéristiques (F) étant déterminé sur la base de l’identifiant associé à la position définissant cet élément donné.
11. Dispositif électronique de décodage (20) d’un flux de données comprenant une pluralité d’identifiants (I2_map[i]) et une séquence d’éléments binaires (Fnn), en une suite de données (V) de types respectifs prédéterminés, le dispositif électronique comprenant :
- un décodeur entropique (23) recevant en entrée la séquence d’éléments binaires (Fnn) ; et
- un module de configuration (25) conçu pour déterminer un contexte (C) sur la base d’un identifiant (I2_map[i]) associé, parmi la pluralité d’identifiants, au type de la donnée à obtenir, et pour paramétrer le décodeur entropique (23) dans le contexte déterminé (C) de manière à obtenir ladite donnée en sortie du décodeur entropique (23).
12. Programme d’ordinateur comprenant des instructions exécutables par un processeur (24) et conçues pour mettre en œuvre un procédé de décodage selon la revendication 1 lorsque ces instructions sont exécutées par le processeur (24).
13. Flux de données représentant une suite de données (V) de types respectifs prédéterminés, et comprenant une pluralité d’identifiants (I2_map[i]) et une séquence d’éléments binaires (Fnn), chaque identifiant (I2_map[i]) étant représentatif d’un contexte (C) dans lequel un décodeur entropique (23) est paramétré pour obtenir, lorsque ce décodeur entropique (23) reçoit en entrée une partie de la séquence d’éléments binaires (Fnn), au moins une donnée ayant un type associé à cet identifiant (I2_map[i]).
EP21785841.4A 2020-09-30 2021-09-28 Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés Pending EP4222957A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2009994A FR3114717B1 (fr) 2020-09-30 2020-09-30 Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés
PCT/EP2021/076582 WO2022069437A1 (fr) 2020-09-30 2021-09-28 Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés

Publications (1)

Publication Number Publication Date
EP4222957A1 true EP4222957A1 (fr) 2023-08-09

Family

ID=74045681

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21785841.4A Pending EP4222957A1 (fr) 2020-09-30 2021-09-28 Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés

Country Status (7)

Country Link
US (2) US12483271B2 (fr)
EP (1) EP4222957A1 (fr)
JP (1) JP2023543480A (fr)
KR (1) KR20230079143A (fr)
CN (1) CN116601641A (fr)
FR (1) FR3114717B1 (fr)
WO (1) WO2022069437A1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810155B (zh) * 2020-06-17 2022-11-18 华为技术有限公司 信道编译码方法和通信装置
FR3114933B1 (fr) 2020-10-06 2023-10-13 Fond B Com Procédé et dispositif électronique de décodage d’un flux de données, et programme d’ordinateur associé
FR3124342B1 (fr) * 2021-06-17 2024-01-12 Fond B Com Procédés et dispositifs de décodage d’une partie au moins d’un flux de données, programme d’ordinateur et flux de données associés
US20250234005A1 (en) * 2022-03-07 2025-07-17 Lg Electronics Inc. Feature encoding/decoding method, device, recording medium storing bitstream, and method for transmitting bitstream

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548684A (en) * 1994-04-22 1996-08-20 Georgia Tech Research Corporation Artificial neural network viterbi decoding system and method
FI107484B (fi) * 1999-05-21 2001-08-15 Nokia Mobile Phones Ltd Menetelmä ja järjestely konvoluutiodekoodauksen toteuttamiseksi
US20040059992A1 (en) * 2002-06-17 2004-03-25 Tan Keng Tiong Methods of optimizing the decoding of signals based on a complete majority logic representation
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
HUE028417T2 (en) * 2011-01-14 2016-12-28 Ge Video Compression Llc Entropy encoding and decoding scheme
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
CN107529709B (zh) 2011-06-16 2019-05-07 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
JP6994868B2 (ja) 2017-08-09 2022-01-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
US10886943B2 (en) 2019-03-18 2021-01-05 Samsung Electronics Co., Ltd Method and apparatus for variable rate compression with a conditional autoencoder
FR3112662B1 (fr) 2020-07-17 2024-12-13 Fond B Com Procédé et dispositif électronique de décodage d’un flux de données, et flux de données associé
FR3112661B1 (fr) 2020-07-17 2024-02-02 Fond B Com Procédés de décodage d’un flux de données, dispositifs et flux de données associés

Also Published As

Publication number Publication date
CN116601641A (zh) 2023-08-15
JP2023543480A (ja) 2023-10-16
FR3114717A1 (fr) 2022-04-01
KR20230079143A (ko) 2023-06-05
US20260045958A1 (en) 2026-02-12
WO2022069437A1 (fr) 2022-04-07
FR3114717B1 (fr) 2023-10-13
US20230370087A1 (en) 2023-11-16
US12483271B2 (en) 2025-11-25

Similar Documents

Publication Publication Date Title
EP4222957A1 (fr) Procédé et dispositif électronique de décodage d'un flux de données, programme d'ordinateur et flux de données associés
EP4183130B1 (fr) Decodage video utilisant un reseau de neurones
FR2974474A1 (fr) Procedes et appareils de production et de traitement de representations de scenes multimedias
EP4183133A1 (fr) Decodage video parallelise utilisant un reseau de neurones
WO2024121109A1 (fr) Procédé et dispositif de codage et décodage d'images
US20260019650A1 (en) Electronic method and device for decoding a data stream, and associated computer program
EP2368367A1 (fr) Système et procédé interactif pour la transmission sur un réseau bas débit d'images clefs sélectionnées dans un flux video
EP3826304A2 (fr) Procédé et dispositif de compression d'images numériques et procédé et dispositif de décompression associés
WO2017129880A1 (fr) Procédé de codage et décodage de données, dispositif de codage et décodage de données et programmes d'ordinateur correspondants
WO2024240496A1 (fr) Procédé et dispositif de codage et décodage d'images
EP4356606A1 (fr) Procédés et dispositifs de décodage d'une partie au moins d'un flux de données, programme d'ordinateur et flux de données associés
WO2018073523A1 (fr) Procédé de codage et de décodage de paramètres d'image, dispositif de codage et de décodage de paramètres d'image et programmes d'ordinateur correspondants
WO2024260629A1 (fr) Procédé et dispositif de codage et décodage de séquences d'images
EP4732241A1 (fr) Procédé et dispositif de codage et décodage de séquences d'images
FR3143246A1 (fr) Procédé et dispositif de codage et décodage d’images.
EP4630971A1 (fr) Procédé et dispositif de codage et décodage d'images
FR3143247A1 (fr) Procédé et dispositif de codage et décodage de séquences d’images.
WO2024240497A1 (fr) Procédé et dispositif de codage et décodage d'images.
WO2026003294A1 (fr) Procédé et dispositif de codage et décodage d'un signal
FR3114716A1 (fr) Codage et décodage d’une vidéo multi-vues

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20230323

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: ORANGE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20251007