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

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

Info

Publication number
EP4226614A1
EP4226614A1 EP21786467.7A EP21786467A EP4226614A1 EP 4226614 A1 EP4226614 A1 EP 4226614A1 EP 21786467 A EP21786467 A EP 21786467A EP 4226614 A1 EP4226614 A1 EP 4226614A1
Authority
EP
European Patent Office
Prior art keywords
decoding
neural network
artificial neural
context
data
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
EP21786467.7A
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 EP4226614A1 publication Critical patent/EP4226614A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • 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
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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 an associated computer program.
  • 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 is at each instant configured in a context which depends, in a manner predefined in the standard concerned, on the previously decoded syntax elements.
  • the present invention proposes a method for decoding a sequence of bits, the method comprising the following steps:
  • the decoding method can thus comprise, at each of a plurality of iterations (comprising a current iteration and a previous iteration), obtaining values decoded by entropy decoding (by means of the aforementioned entropy decoder) , the method for decoding the sequence of binary elements defined above can then comprise the following steps:
  • the method may further comprise a step of applying the new decoded value at the input of the artificial neural network so as to produce, at the output of the artificial neural network, data representative of an audio or video content.
  • the artificial neural network thus produces on the one hand the context index and on the other hand the data representative of the audio or video content.
  • the sequence of bits may be included in a data stream.
  • This data stream can then further comprise information indicative of a set of contexts that can be used within the entropy decoder.
  • This information is for example indicative of a number of contexts that can be used within the entropy decoder.
  • the method may further comprise a step of initializing each context usable within the entropy decoder, for example by means of parameterization data included in the data stream comprising the sequence of binary elements.
  • the artificial neural network can be implemented by a processing unit.
  • the method can then comprise a step of configuring the processing unit according to data included in the data stream comprising the sequence of binary elements.
  • the entropy decoder can be parameterized in a predefined initial context as long as the artificial neural network does not produce a context index.
  • the entropy decoding can thus be performed in this initial context to process the first elements of the sequence of binary elements and thus obtain first decoded values to be applied as input to the artificial neural network so that the artificial neural network produces an index of context.
  • the artificial neural network is for example implemented by means of a parallelized processing unit designed to perform in parallel at a given instant a plurality of operations of the same type.
  • the entropy decoder can be implemented by means of a separate processor from the parallelized processing unit.
  • the invention also proposes a computer program comprising instructions executable by a processor and designed to implement a decoding method as described above when these instructions are executed by the processor.
  • the invention finally proposes an electronic device for decoding a sequence of binary elements, comprising:
  • an artificial neural network designed to receive previously decoded values as input and to produce a context index as output;
  • control module designed to configure the entropy decoder in the context identified by the context index produced, so as to obtain a new decoded value at the output of the entropy decoder.
  • the previously decoded values are for example decoded by entropy decoding during an iteration which precedes the iteration during which the new decoded value is obtained (/.e. produced by the entropy decoder).
  • This electronic decoding device may comprise a synchronization mechanism capable of suspending an entropy decoding process by the entropy decoder as long as a new context index is not produced at the output of the artificial neural network.
  • This electronic decoding device can also comprise a processing unit capable of implementing the artificial neural network.
  • the control module can then be designed to configure the processing unit according to data included in the data stream comprising the sequence of bits, so that the processing unit can implement the network of artificial neurons as shown above.
  • the electronic decoding device may also comprise a processor separate from the processing unit and designed to implement the entropy decoder.
  • FIG. 1 shows a data processing assembly comprising several parts of an artificial neural network
  • FIG. 1 schematically illustrates maps of characteristics used within the processing unit of Figure 1;
  • FIG. 3 shows an electronic coding device used in the context of the invention
  • FIG. 4 is a flowchart representing the steps of an encoding method implemented within the electronic encoding device of Figure 3;
  • FIG. 5 shows the data stream produced by the electronic encoding device of Figure 3;
  • FIG. 6 shows an example of an electronic decoding device according to the invention.
  • FIG. 7 is a flowchart representing the steps of a decoding method implemented within the electronic decoding device of Figure 6.
  • FIG. 1 represents a data processing assembly of which different parts are used either for the coding of an audio or video content, or for the decoding of coded data in order to render an audio or video content, as explained below.
  • This set includes a coding artificial neural network 8, an entropic encoder 10, a context determining artificial neural network 40, an entropic decoder 30 and a decoding artificial neural network 28.
  • the coding artificial neural network 8 is designed to receive as input (that is to say on an input layer) content data B forming a representation (here uncompressed) of an audio or video content.
  • 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 content data B applied at a given time to the input layer of the coding 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 from a video sequence, or a component of an image from a video sequence (for example a component luminance or chrominance, or a color component), or even a series of images of the video sequence.
  • the coding artificial neural network 8 When these content data B are applied as input (i.e. on the input layer) of the coding artificial neural network 8, the coding artificial neural network 8 produces values V at the output, they also representative of the audio or video content.
  • the representative values V produced at the output of the coding artificial neural network 8 however form a more compact representation than the corresponding content data B applied at the input of the coding artificial neural network 8.
  • the number of nodes of the layer output of the artificial neural network coding 8 is lower (for example 4 times lower, even 8 times lower or 16 times lower) than the number of nodes of the input layer of the artificial neural network coding 8.
  • the representative values V produced at the output of the artificial neural network 8 are for example organized into a sequence of feature maps F (or "feature maps" according to the Anglo-Saxon designation sometimes used), as schematically represented in FIG. 2.
  • the coding artificial neural network 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 map of features F corresponds to the representative value V produced by an output node (or output layer node) of the coding artificial neural network 8, this output node being associated in a predefined manner at this given position and at this given map of characteristics F.
  • the network of artificial neurons 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 coding artificial neural network 8 can be organized into an ordered sequence of representative values V.
  • the content data B applied to the input of the coding artificial neural network 8 represents a block of an image (or a block of a component of an image)
  • the ordered sequence of representative values V produced at the output of the coding artificial neural network 8 is associated with this block.
  • the different sequences of representative values successively produced by the artificial coding 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 coding 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 coding artificial neural network 8 then forms an element of the structure designated by a position within of 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 (that is to say on the output layer) of the coding artificial neural network 8 are applied on the one hand to the input of the entropic coder 10 and on the other hand to the input (c i.e. on the input layer) of the context determination artificial neural network 40.
  • the context determination artificial neural network 40 thus receives as input (that is to say on its input layer) representative values V (corresponding for example to a block of an image being coded, or to a block of a component of the image being coded) and consequently produces at output a context index C.
  • the context index C is here produced on an output node of the artificial neural network for determining context 40.
  • the context determination artificial neural network 40 presents only this single output node.
  • the context determination artificial neural network 40 could produce as output a plurality of context indices C each associated respectively with at least one representative value V (for example with a set of representative values V).
  • the context indices C produced at the output of the context determination artificial neural network 40 can be respectively associated with the different maps of characteristics F (each containing a set of representative values V).
  • the context index C produced by the context determination artificial neural network 40 is applied to the entropy coder 10 and to the entropy decoder 30.
  • 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.
  • K the number of contexts in which the entropy coder 10 can be parameterized during the entropy coding of the representative values V (that is to say the number of different statistical sources which can be processed in the signal formed by representative values V).
  • K 160.
  • the entropy coder 10 is here a coder of the CABAC type (for "Context-based adaptive binary arithmetic coding”). Alternatively, 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”).
  • the representative values V received at the input of the entropy coder 10 are ordered in a predefined manner for entropy coding by the entropy coder 10.
  • the different F feature maps are processed in the order of this sequence and, within each F feature map, the elements (i.e. the representative values V) are taken into account in a predefined (scanning) order.
  • the entropy coder 10 carries out the entropy coding of the ordered representative values V received as input, while being parameterized in the context designated by the context index C produced at the output of the context determination artificial neural network 40.
  • the entropy coder 10 performs the entropy coding of the ordered representative values V received as input , while being parameterized (at each instant) in the context designated by the context index C associated with the feature map F during entropy coding.
  • the entropic encoder 10 then produces at output a sequence of bits Fnn.
  • this sequence of binary elements Fnn corresponds to the compressed data stream representing the audio or video content (data stream generated at the output of the electronic coding device 2 described later with reference to FIG. 3 and intended to the electronic decoding device 20 described below with reference to FIG. 6).
  • the sequence of binary elements Fnn is applied at the input of the entropy decoder 30, the entropy decoder 30 being parameterized in the context designated by the context index C produced at the output of the context determination artificial neural network C.
  • the entropy decoder 30 is designed to perform inverse entropy decoding of the entropy coding performed by the entropy encoder 10 mentioned above.
  • the entropy decoder 30 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”
  • the entropy decoder 30 therefore produces at output representative values V identical to those applied at the input of the entropy coder 10. (It should be recalled in this respect that entropy coding is lossless coding.)
  • the representative values V produced at the output of the entropy decoder 30 are applied at the input (that is to say on an input layer) of the decoding artificial neural network 28.
  • the respective allocation of the representative values V to the input nodes (or nodes of the input layer) of the decoding artificial neural network 28 is predefined. (It should also be noted that the output layer of the coding artificial neural network 8 corresponds to the input layer of the decoding artificial neural network 28. Indeed, the use of entropic coding allows better data compression , but does not modify this data.)
  • the decoding artificial neural network 28 When the decoding artificial neural network 28 receives the representative values V as input, the decoding artificial neural network 28 produces at output (that is to say on an output layer) a representation I of the content adapted to a reproduction on an audio or video reproduction device.
  • 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 block (or of a block of an image component or, alternatively, of an image or of an image component).
  • Such a set of data can be optimized, during a training phase of the various artificial neural networks 8, 28, 40 as described now, for a particular type of content and/or a particular rate-distortion trade-off.
  • a sequence of learning audio or video content (for example here a series of learning videos) is selected. This is a set of content representative of the type of content that it is desired to compress with this data processing set.
  • Each content (here each video) of the learning sequence can then be applied (as content data B) as input to the coding artificial neural network 8, which makes it possible to produce each time (as explained below above) a sequence of binary elements Fnn (at the output of the entropic encoder 10) and a representation I to be displayed (at the output of the decoding artificial neural network 28).
  • a cost function is used to numerically evaluate the performance of the data processing set in its current configuration.
  • a cost function is for example rate-distortion cost such as R+ ⁇ .D, where D is the distortion (quadratic error) between the rendered content (using the representation I) and the initial content (represented by the content data B), R is the bit rate (actual or estimated) of the compressed stream (i.e. of the sequence of bits Fnn), and ⁇ is a parameter supplied by the user, making it possible to choose the compromise between compression and quality.
  • This cost function is used within a gradient backpropagation learning algorithm to scale the weights assigned to the neurons of the artificial neural networks 8, 28, 40 so as to minimize the cost function.
  • weights assigned to the neurons of the artificial neural networks 8, 28, 40 when the minimum cost is considered reached define these artificial neural networks 8, 28, 40, and therefore the data processing set, as they will be used in the following.
  • FIG. 3 thus represents an electronic coding device 2 using the coding artificial neural network 8, the context determination artificial neural network 40 and the entropic 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 an audio or video content to be compressed, here format data P and content data B.
  • content data B are of the same nature as those mentioned above in the context of the description of Figure 1 and will not be described again.
  • the format data P indicates characteristics of the format of representation of 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 depth in bits of the chrominance information.
  • the parallelized processing unit 6 is designed to implement the coding artificial neural network 8 and the context determination artificial neural network 40 (both forming part of a data processing set such as that of the FIG. 1) 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 “global coding network” 9 denotes the artificial neural network formed by the artificial coding neural network 8 and by the artificial context determination neural network 40.
  • the parallelized processing unit 6 is thus designed to implement this global coding network 9 (after having been configured by the processor 4 as already indicated).
  • the method of FIG. 4 begins with a step E2 of selecting a data processing set from among a plurality of data processing sets in accordance with what has been described above with reference to FIG.
  • these different data processing sets can have the same general structure (as shown in Figure 1), but the different artificial neural networks 8, 28, 40 are defined by varying weights (associated with the neurons) from one data processing set to another (the optimization criteria being different from one data processing set to another).
  • the data processing set can for example be selected from among data processing sets for which the decoding artificial neural network 28 and the context determination artificial neural network 40 (together forming a global decoding network as explained later) are available for an electronic decoding device (such as the electronic decoding device 20 shown in FIG. 6 and described later).
  • 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 data processing assembly 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 targeted application is a videoconference, the selected data processing set allows low latency decoding. In other applications, the selected data processing set might allow random access decoding.
  • 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 images of the video are displayed, which in this case guarantees a latency of one image between the coding and the 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.
  • the data processing set can also be selected in order to obtain the best possible compression-distortion compromise.
  • the different criteria for selecting the data processing set 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 coding provided in this data processing set.
  • This step E4 comprises in particular the instantiation, within the parallelized processing unit 6, of the global coding network 9 comprising the coding artificial neural network 8 and the context determination artificial neural network 40 of the selected data processing set.
  • This instantiation may include the following steps:
  • 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. 6).
  • the method thus notably comprises a step E6 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 current video sequence coding).
  • 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 E8 to the coding of a second header part comprising data R indicative of the global decoding network comprising the artificial neural network for decoding 28 and the artificial neural network for determining of context 40 which are part of the data processing set selected in step E2.
  • these indicative data R can comprise an identifier of the global decoding network.
  • Such an identifier designates (among a plurality of global decoding networks, for example among all the global decoding networks available for the electronic decoding device) the global decoding network corresponding to the global coding network 9 mentioned above, global network of decoding which must therefore be used for decoding the representative values V.
  • a global decoding network comprising on the one hand a network of artificial decoding neurons corresponding to the network of artificial coding neurons 8 included in the global coding network 9 , and on the other hand the context determination artificial neural network 40 included in the global coding network 9.
  • such an identifier defines by convention (shared in particular by the electronic coding device and the electronic decoding device) this global decoding network, for example within the set of global decoding networks available for (or accessible by ) the electronic decoding device.
  • the electronic coding device 2 can optionally receiving 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 global decoding network.
  • the global decoding network (comprising the decoding artificial neural network 28 and the context determination artificial neural network 40 which are part of the data processing set selected in step E2) is for example coded (c that is to say represented) by these descriptive data (or coding data of the decoding artificial neural network) in accordance with a standard such as the MPEG-7 part 17 standard 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 global decoding 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 network global decoding is encoded in the data stream, that is to say represented by means of the aforementioned descriptive data (in which case the second embodiment mentioned above is used).
  • the method of FIG. 4 continues with a step E10 of determining the possibility for the electronic decoding device to implement the decoding process using the aforementioned global decoding 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 process of decoding 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 E14 described below.
  • step E12 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 E12 described below (before going to step E14 ).
  • step E12 could be made on another criterion, for example according to a dedicated indicator stored within the electronic coding device 2 (and possibly 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 electronic coding device 2).
  • the control module 5 codes in the data stream at step E12 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 7.)
  • 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 method of FIG. 4 then continues with steps of encoding data representative of the configuration of the entropy coder 10 used in the data processing assembly selected in step E2 (and therefore of the entropy decoder 30 of this same assembly ).
  • the method of FIG. 4 firstly comprises a step E14 of coding a fourth header part comprising information 11 indicative of the set of contexts used for the entropy coding.
  • the information I1 is indicative of the number K of contexts used for the entropy coding.
  • the method of FIG. 4 then comprises a step E16 of coding a fifth part of the header comprising, for each context used for the entropy coding, a data item linit 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 ITLI-T H.265, part "9.3.2.2 Initialization process for context variables".
  • the parametrization datum associated with a given context may be datum indicative of the probability model used for the context concerned during the entropy coding.
  • the method of FIG. 4 continues with a step E18 of initializing the entropic encoder 10 (by the control module 5) by means of the aforementioned parametrization data relating to the different 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. 4 then comprises a step E20 of implementing the coding process, that is to say here a step of applying the content data B at the input of the global coding network 9 (or in other words a step of activating the global coding network 9 by taking the content data B as input). (The content data B is therefore then applied as input to the coding artificial neural network 8.)
  • Step E20 thus makes it possible to produce (here at the output of the global coding network 9) the representative values V and the context index C.
  • the representative values V are produced at the output of the artificial coding neural network 8; these representative values V are applied as input to the context determination artificial neural network 40 so that this context determination artificial neural network 40 produces the context index C as output.
  • the method of FIG. 4 then comprises a step E22 of entropy coding of the representative values V by the entropy coder 10, the entropy coder 10 being parameterized (possibly via the control module 5) in the context defined by the index of context C produced at the output of the global coding network 9 (here precisely at the output of the context determination artificial neural network 40).
  • the entropy coding of the representative values V by the entropic encoder 10 is carried out by parameterizing the encoder entropy 10 in the context defined by the context index C associated with the set containing the representative value V during entropy coding.
  • 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 E22 may in some cases include 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 E20 allows the processing of only part of the audio or video content to be compressed (for example when step E20 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 E20 (to obtain values representative of the successive parts of the content) and E22 (to carry out the entropy coding of these representative values).
  • the processor 4 can thus construct in step E24 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 a start indicator of the sequence of bits Fnn in the complete data stream.
  • This indicator is for example the location, in bits, of the start of the sequence of binary elements Fnn from the start 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. i.e. a combination of bits used to indicate the start of the sequence of bits Fnn and whose use is prohibited in the rest of the data stream, or at least in the header Fet).
  • a marker i.e. i.e. a combination of bits used to indicate the start of the sequence of bits 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 E24 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 E24 In the "Byte-Stream" format, there are no specific packets and the construction of step E24 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 E24 The complete data stream constructed in step E24 can then be transmitted in step E26 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 6).
  • This data stream thus comprises, as represented in FIG. 5, the header Fet and the sequence of bits Fnn.
  • the Fet header includes:
  • first part Fc which comprises data characteristic of the representation format of the audio or video content
  • second part which comprises data R indicative of the global decoding network (which comprises a network of artificial decoding neurons and a network of artificial neurons for determining the context);
  • FIG. 6 represents an electronic decoding device 20 using the entropy decoder 30, the artificial neural network for determining context 40 and the artificial neural network for decoding 28 (these elements having been introduced above with reference to FIG. 1 ).
  • 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 represented in FIG. 5 as a separate element from the processor 24, the storage unit storage 22 could alternatively be integrated into (i.e. included in) 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 30 already mentioned.
  • the entropy decoder 30 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 parallelized processing unit 26 is designed to implement the context determination artificial neural network 40 and the decoding artificial neural network 28 after having been configured by the processor 24 (here precisely by the control module 25) . To do this, the parallelized processing unit 26 is designed to perform in parallel at a given instant a plurality of operations of the same type.
  • the context determination artificial neural network 40 and the decoding artificial neural network 28 together form an artificial neural network referred to here as the “global decoding network” and referenced 29 in FIG. 6.
  • the processor 24 receives (here via the reception unit 21) the data stream comprising the header Fet and the sequence of bits Fnn.
  • the decoding artificial neural network 28 is used in the context of processing data obtained by entropy decoding (by means of the entropy decoder 30) of the sequence of binary elements Fnn, this data processing aimed at obtaining 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 global decoding network (comprising a network of artificial neural context determination and a network of artificial decoding neural).
  • 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 implements the artificial neural network (that is to say here the global decoding 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. 7 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.
  • Receiver unit 21 transmits the received data stream to processor 24 for processing by control module 25.
  • the 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 E24).
  • the control module 25 can also identify in step E52 the different parts of the header Fet (as described above with reference to FIG. 5).
  • 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. 7 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 global decoding network to be used.
  • these data R are an identifier designating the global decoding network 28, for example within a predetermined set of artificial neural networks.
  • This predetermined set is for example the set of global decoding networks accessible by the electronic decoding device 20, namely the set of global decoding networks for which the electronic decoding device 20 stores a set of parameters defining the network of artificial neurons concerned (as indicated above) or can 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 global decoding network identified by the decoded identifier).
  • control module 25 can send a request for a set of parameters intended for a remote server (this request including for example the decoded identifier) and receive in response the set of parameters defining the artificial neural network (forming here the global decoding network) identified by the decoded identifier.
  • the set of parameters may in practice comprise certain parameters defining the decoding artificial neural network 28 and other parameters defining the context determination artificial neural network 40.
  • the data R is descriptive data Rc of the global decoding network 29.
  • 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.
  • the decoding of these descriptive data makes it possible to obtain the parameters defining the global decoding network 29 to be used, comprising the artificial neural network for determining context 40 and the artificial neural network for decoding 28 (to which the data obtained by entropy decoding from the sequence of bits Fnn, as explained below).
  • Such parameters may in practice comprise certain parameters defining the decoding artificial neural network 28 and other parameters defining the context determination artificial neural network 40.
  • 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 global decoding network to be used makes it possible (here to the control module 25) to determine in particular the characteristics of the artificial neural network of decoding 28.
  • the control module 25 thus determines the number N of characteristic maps expected at the input of the decoding artificial neural network 28 and the dimensions H, W of these characteristic 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, each element of a map of characteristics 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) .
  • control module 25 then proceeds in step E60 to configure the parallelized processing unit 26 by means of the parameters defining the global decoding network 29 (parameters obtained in step E58), so that the processing unit parallelized processing 26 can implement this global decoding network 29 (comprising the context determination artificial neural network 40 and the decoding artificial neural network 28).
  • This configuration step E60 notably comprises the instantiation of the global decoding network 29 (and therefore the instantiation of the artificial neural network for determining context 40 and of the artificial neural network for decoding 28) within the processing unit parallelized 26, here using the parameters obtained in step E58.
  • This instantiation may include the following steps:
  • the configuration step E60 can further comprise the application of predefined (initial) values (stored for example in the storage unit 22) on the input layer of the global decoding network 29 so that the global decoding network decoding 29 is activated and thus produces at output (precisely at the output of the context determination artificial neural network 40) an initial context index C.
  • 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 item 11 decoded in step E62).
  • the control module 25 can then implement a step E66 for initializing each usable context within the entropy decoder 30 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 parameterization datum linit relating to this context.
  • control module 25 configures in step E66 each context usable by the entropy decoder 30 with the probability model defined by the relative parameterization data linit to this context.
  • the control module 25 then applies (step E70) at the input of the entropy decoder 30 the sequence of binary elements Fnn (received via the reception unit 21), while setting the parameters of the entropy decoder 30 in the context identified by the index of context C produced at the output of the global decoding network 29 (that is to say here produced at the output of the context determination artificial neural network 40).
  • the context index C is for example the aforementioned initial context index C, produced due to the early activation of global decoding network 29 during step E60 as explained above.
  • the entropy decoder 30 can be parameterized in a predefined initial context, possibly stored in the storage unit 22 (step E60 does not include in this case the application of predefined values to the global decoding network 29 for early activation of the latter).
  • the entropy decoder 30 is therefore parameterized in the context identified by the context index C produced by the global decoding network 29 when representative values V, decoded (by entropy decoding) during the previous passage to step E70, have been applied at the input of the global decoding network 29 (during the previous going to step E72).
  • the entropy decoder 30 thus produces in step E70 new representative values V (by entropy decoding of the sequence of binary elements Fnn).
  • a synchronization mechanism can be provided between the global decoding network 29 and the entropy coder 30 (in order to guarantee that the context index C to be used is available at the moment when the entropy decoding of the corresponding representative value V takes place ).
  • This synchronization mechanism comprises for example the suspension of the entropy decoding (by the entropy decoder 30) as long as a new context index C is not available at the output of the global decoding network 29 (that is to say precisely at the output of the context determination artificial neural network 40).
  • an intermediate variable C′ is stored in memory (for example in a register of the processor 24 or in the storage unit 22) and updated by the global decoding network 29 (i.e. i.e. precisely by the context-determining artificial neural network 40).
  • the global decoding network 29 i.e. i.e. precisely by the context-determining artificial neural network 40.
  • an entropy decoding of one (or a predetermined number of) representative value(s) V is carried out with the context defined by the intermediate variable C' (identical to the context index C produced by the global decoding network 29), then the entropic decoding is again suspended (until a new update of the intermediate variable C′ following the production of a new context index C at the output of the global decoding network 29, that is to say at the output of the context determination artificial neural network 40).
  • the synchronization mechanism consists in making the progress of the entropic decoding (by the decoder entropy 30) of the production of the context index C by the global decoding network 29 (that is to say precisely by the context determination artificial neural network 40).
  • information for example the context index C itself or, as a variant, dedicated synchronization information
  • the global decoding network 29 for example from the artificial neural network context determination 40
  • the entropy decoder 30 when the part of the neural network (for example the layer of the neural network) which supplies the context index C to be used is activated.
  • the decoding entropy of the representative values V by the entropy decoder 30 is achieved by parametrizing the entropy decoder 30 at each instant in the context defined by the context index C associated with the set containing the representative value V to be obtained by entropy decoding at this instant .
  • the entropy decoder 30 allows the successive (entropic) decoding of the different characteristic maps F and the control module 25 can therefore (at each instant) parameterize the entropy decoder 30 in the context defined by the context index C associated with the map of characteristics F during entropy decoding.
  • the processor 24 (here directly at the output of the entropy decoder 30 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 (global decoding network) 29 implemented by the parallelized processing unit 26 so that on the one hand these representative values V are processed by a decoding process using at least in part the artificial neural decoding network 28 and on the other hand that a (new) context index C is produced at the output of the artificial neural network for determining context C.
  • the decoding artificial neural network 28 receives the representative values V as input 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 are applied to the input layer of the decoding artificial neural network 28 and the output layer of the decoding artificial neural network 28 produces the representation I of the aforementioned 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.
  • the decoding artificial neural network 28 can receive as input at least some of the data produced at the output of the neural network artificial decoding devices 28 during the processing of previous data (here of previous representative values V), corresponding for example to the previous block or to the previous image. In this case, a step E74 of reinjecting data produced at the output of the decoding artificial neural network 28 into the input of the decoding artificial neural network 28 is carried out.
  • the control module 25 determines in step E76 whether the processing of the sequence of bits Fnn is finished.
  • step E70 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 decoding neurons 28.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un procédé de décodage d'une séquence d'éléments binaires comprend les étapes suivantes : - application, en entrée d'un réseau de neurones artificiels (29), de valeurs préalablement décodées (V); - en conséquence de ladite application, production d'un indice de contexte (C) en sortie du réseau de neurones artificiels (29); - obtention d'une nouvelle valeur décodée (V) par application d'une partie de la séquence d'éléments binaires (Fnn) à un décodeur entropique (30) paramétré dans le contexte identifié par l'indice de contexte (C) produit. 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, et programme d’ordinateur associé
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 associé.
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.
Lors du décodage, le décodeur entropique est à chaque instant configuré dans un contexte qui dépend, de manière prédéfinie dans la norme concernée, des éléments de syntaxe préalablement décodés.
Présentation de l'invention
La présente invention propose un procédé de décodage d’une séquence d’éléments binaires, le procédé comprenant les étapes suivantes :
- application, en entrée d’un réseau de neurones artificiels, de valeurs préalablement décodées ;
- en conséquence de ladite application, production d’un indice de contexte en sortie du réseau de neurones artificiels ;
- obtention d’une nouvelle valeur décodée par application d’une partie de la séquence d’éléments binaires à un décodeur entropique paramétré dans le contexte identifié par l’indice de contexte produit.
La production de l’identifiant de contexte au moyen d’un réseau de neurones artificiels 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. Comme expliqué dans la suite, le procédé de décodage peut ainsi comprendre, à chacune d’une pluralité d’itérations (comprenant une itération courante et une itération précédente), une obtention de valeurs décodées par décodage entropique (au moyen du décodeur entropique susmentionné), le procédé de décodage de la séquence d’éléments binaires défini ci-dessus pouvant alors comprendre les étapes suivantes :
- application, en entrée d’un réseau de neurones artificiels, des valeurs décodées obtenues par décodage entropique à l’itération précédente ;
- en conséquence de ladite application, production d’un indice de contexte en sortie du réseau de neurones artificiels ;
- obtention des valeurs décodées à l’itération courante par application d’une partie de la séquence d’éléments binaires au décodeur entropique paramétré dans le contexte identifié par l’indice de contexte produit.
Le procédé peut comprendre en outre une étape d’application de la nouvelle valeur décodée en entrée du réseau de neurones artificiels de manière à produire, en sortie du réseau de neurones artificiels, des données représentatives d’un contenu audio ou vidéo. Dans ce cas, le réseau de neurones artificiels produit ainsi d’une part l’indice de contexte et d’autre part les données représentatives du contenu audio ou vidéo.
On peut prévoir par exemple qu’une première partie du réseau de neurones artificiels produise l’indice de contexte (cette première partie étant de ce fait dénommée "réseau de neurones artificiels de détermination de contexte" dans la description qui suit) et qu’une seconde partie du réseau de neurones artificiels produise les données représentative du contenu audio ou vidéo (cette seconde partie étant de ce fait dénommée "réseau de neurones artificiels de décodage" dans la description qui suit).
On peut prévoir par ailleurs qu’un processus de décodage entropique par le décodeur entropique soit suspendu tant qu’un nouvel indice de contexte n’est pas produit en sortie du réseau de neurones artificiels. Ceci permet une synchronisation entre le réseau de neurones artificiels et le décodeur entropique.
La séquence d’éléments binaires peut être comprise dans un flux de données. Ce flux de données peut alors comprendre en outre une information indicative d’un ensemble de contextes utilisables au sein du décodeur entropique. Cette information est par exemple indicative d’un nombre de contextes utilisables au sein du décodeur entropique.
Le procédé peut comprendre en outre une étape d’initialisation de chaque contexte utilisable au sein du décodeur entropique, par exemple au moyen d’une donnée de paramétrisation comprise dans le flux de données comprenant la séquence d’éléments binaires.
Comme c’est le cas dans les modes de réalisation décrits dans la suite, le réseau de neurones artificiels peut être mis en œuvre par une unité de traitement.
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 comprenant la séquence d’éléments binaires.
Il est également possible, par exemple lors de cette étape de configuration, d’appliquer des valeurs prédéfinies en entrée du réseau de neurones artificiels de manière à produire (en sortie du réseau de neurones artificiels) un indice de contexte initial (avant même que le décodeur entropique ait débuté le décodage de la séquence d’éléments binaires). Le décodeur entropique est ainsi paramétré dans le contexte désigné par cet indice de contexte initial pour le décodage entropique des premiers éléments de la séquence d’éléments binaires (de manière à obtenir des premières valeurs décodées à appliquer en entrée du réseau de neurones artificiels pour amorcer le processus décrit ci-dessus).
Selon une autre possibilité, le décodeur entropique peut être paramétré dans un contexte initial prédéfini tant que le réseau de neurones artificiels ne produit pas un indice de contexte. Le décodage entropique peut ainsi être effectué dans ce contexte initial pour traiter les premiers éléments de la séquence d’éléments binaires et obtenir ainsi des premières valeurs décodées à appliquer en entrée de réseau de neurones artificiels de sorte que le réseau de neurones artificiels produise un indice de contexte.
Le réseau de neurones artificiels est par exemple mis en œuvre au moyen d’une unité de traitement parallélisé conçue pour effectuer en parallèle à un instant donné une pluralité d’opérations du même type.
Le décodeur entropique peut quant à lui être mis en œuvre au moyen d’un processeur distinct de l’unité de traitement parallélisé.
L’invention propose également 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 tel que décrit ci-dessus lorsque ces instructions sont exécutées par le processeur.
L’invention propose enfin un dispositif électronique de décodage d’une séquence d’éléments binaires, comprenant :
- un réseau de neurones artificiels conçu pour recevoir en entrée des valeurs préalablement décodées et pour produire en sortie un indice de contexte ;
- un décodeur entropique conçu pour recevoir en entrée la séquence d’éléments binaires ;
- un module de commande conçu pour paramétrer le décodeur entropique dans le contexte identifié par l’indice de contexte produit, de manière à obtenir une nouvelle valeur décodée en sortie du décodeur entropique.
Comme expliqué dans la suite, les valeurs préalablement décodées sont par exemple décodées par décodage entropique lors d’une itération qui précède l’itération au cours de laquelle la nouvelle valeur décodée est obtenue (/.e. produite par le décodeur entropique).
Ce dispositif électronique de décodage peut comprendre un mécanisme de synchronisation apte à suspendre un processus de décodage entropique par le décodeur entropique tant qu’un nouvel indice de contexte n’est pas produit en sortie du réseau de neurones artificiels.
Ce dispositif électronique de décodage peut également comprendre une unité de traitement apte à mettre en œuvre le réseau de neurones artificiels.
Le module de commande peut alors être conçu pour configurer l’unité de traitement en fonction de données comprises dans le flux de données comprenant la séquence d’éléments binaires, de manière à ce que l’unité de traitement puisse mettre en œuvre le réseau de neurones artificiels comme indiqué ci-dessus.
Le dispositif électronique de décodage peut comprendre par ailleurs un processeur distinct de l’unité de traitement et conçu pour mettre en œuvre le décodeur entropique.
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 ensemble de traitement de données comprenant plusieurs parties de réseau de neurones artificiels ;
- la figure 2 illustre schématiquement des cartes de caractéristiques utilisées au sein de l’ensemble de traitement de la figure 1 ;
- la figure 3 représente un dispositif électronique de codage utilisé dans le cadre de l’invention ;
- la figure 4 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 3 ;
- la figure 5 représente le flux de données produit par le dispositif électronique de codage de la figure 3 ;
- la figure 6 représente un exemple de dispositif électronique de décodage conforme à l’invention ; et
- la figure 7 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 6.
La figure 1 représente un ensemble de traitement de données dont différentes parties sont utilisées soit pour le codage d’un contenu audio ou vidéo, soit pour le décodage de données codées afin de restituer un contenu audio ou vidéo, comme expliqué dans la suite.
Cet ensemble comprend un réseau de neurones artificiels de codage 8, un codeur entropique 10, un réseau de neurones artificiels de détermination de contexte 40, un décodeur entropique 30 et un réseau de neurones artificiels de décodage 28.
Le réseau de neurones artificiels de codage 8 est conçu pour recevoir en entrée (c’est-à-dire sur une couche d’entrée) des données de contenu B formant une représentation (ici non compressée) d’un 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.
Les données de contenu B appliquées à un instant donné sur la couche d’entrée du réseau de neurones artificiels de codage 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 que certains au moins des neurones (ou nœuds) de la couche d’entrée du réseau de neurones artificiels de codage 8 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.
Lorsque ces données de contenu B sont appliquées en entrée (c’est-à-dire sur la couche d’entrée) du réseau de neurones artificiels de codage 8, le réseau de neurones artificiels de codage 8 produit en sortie des valeurs V, elles aussi représentatives du contenu audio ou vidéo.
Les valeurs représentatives V produites en sortie du réseau de neurones artificiels de codage 8 forment toutefois une représentation plus compacte que les données de contenu B correspondantes appliquées en entrée du réseau de neurones artificiels de codage 8. Par exemple, le nombre de nœuds de la couche de sortie du réseau de neurones artificiels de codage 8 est inférieur (par exemple 4 fois inférieur, voire 8 fois inférieur ou 16 fois inférieur) au nombre de nœuds de la couche d’entrée du réseau de neurones artificiels de codage 8.
Les valeurs représentatives V produites en sortie du réseau de neurones artificiels 8 sont par exemple 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 de codage 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 de codage 8, 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 de codage 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 de codage 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 de codage 8 est associée à ce bloc. Les différentes suites de valeurs représentatives successivement produites par le réseau de neurones artificiels de codage 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 de codage 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 de codage 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 (c’est-à-dire sur la couche de sortie) du réseau de neurones artificiels de codage 8 sont appliquées d’une part en entrée du codeur entropique 10 et d’autre part en entrée (c’est-à-dire sur la couche d’entrée) du réseau de neurones artificiels de détermination de contexte 40. Le réseau de neurones artificiels de détermination de contexte 40 reçoit ainsi en entrée (c’est-à-dire sur sa couche d’entrée) des valeurs représentatives V (correspondant par exemple à un bloc d’une image en cours de codage, ou à un bloc d’une composante de l’image en cours de codage) et produit en conséquence en sortie un indice de contexte C. L’indice de contexte C est ici produit sur un nœud de sortie du réseau de neurones artificiels de détermination de contexte 40.
Dans l’exemple décrit ici, le réseau de neurones artificiels de détermination de contexte 40 ne présente que cet unique nœud de sortie. En variante toutefois, le réseau de neurones artificiels de détermination de contexte 40 pourrait produire en sortie une pluralité d’indices de contexte C associés chacun respectivement à au moins une valeur représentative V (par exemple à un ensemble de valeurs représentatives V). Dans le cas décrit ci-dessus, les indices de contexte C produits en sortie du réseau de neurones artificiels de détermination de contexte 40 peuvent être respectivement associés aux différentes cartes de caractéristiques F (contenant chacune un ensemble de valeurs représentatives V).
Comme visible sur la figure 1 , l’indice de contexte C produit par le réseau de neurones artificiels de détermination de contexte 40 est appliqué au codeur entropique 10 et au décodeur entropique 30.
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.
On note dans la suite K le nombre de contextes dans lesquels le codeur entropique 10 pourra être paramétré lors du codage entropique des valeurs représentatives V (c’est-à-dire le nombre de sources statistiques différentes qui pourront être traitées dans le signal formé par les valeurs représentatives V). On a par exemple K = 160.
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").
Les valeurs représentatives V reçues en entrée du codeur entropique 10 sont ordonnées de manière prédéfinie pour codage entropique par le codeur entropique 10.
Par exemple, dans l’exemple décrit ici où les valeurs représentatives sont organisées en une séquence de cartes de caractéristiques F, les différentes cartes de caractéristiques F sont traitées dans l’ordre de cette séquence et, au sein de chaque carte de caractéristiques F, les éléments (i.e. les valeurs représentatives V) sont pris en compte dans un ordre (de balayage) prédéfini.
Le codeur entropique 10 effectue le codage entropique des valeurs représentatives V ordonnées reçues en entrée, tout en étant paramétré dans le contexte désigné par l’indice de contexte C produit en sortie du réseau de neurones artificiels de détermination de contexte 40. Dans la variante où une pluralité d’indices de contexte C sont produits en sortie du réseau de neurones artificiels de détermination de contexte 40, en association respectivement avec les différentes cartes de caractéristiques F, le codeur entropique 10 effectue le codage entropique des valeurs représentatives V ordonnées reçues en entrée, tout en étant paramétré (à chaque instant) dans le contexte désigné par l’indice de contexte C associé à la carte de caractéristiques F en cours de codage entropique.
Le codeur entropique 10 produit alors en sortie une séquence d’éléments binaires Fnn. Comme cela ressortira dans la suite, cette séquence d’éléments binaires Fnn correspond au flux de données compressées représentant le contenu audio ou vidéo (flux de données généré en sortie du dispositif électronique de codage 2 décrit plus loin en référence à la figure 3 et destiné au dispositif électronique de décodage 20 décrit plus loin en référence à la figure 6).
La séquence d’éléments binaires Fnn est appliquée en entrée du décodeur entropique 30, le décodeur entropique 30 étant paramétré dans le contexte désigné par l’indice de contexte C produit en sortie du réseau de neurones artificiels de détermination de contexte C.
Le décodeur entropique 30 est conçu pour effectuer un décodage entropique inverse du codage entropique effectué par le codeur entropique 10 mentionné ci- dessus. Le décodeur entropique 30 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").
Le décodeur entropique 30 produit donc en sortie des valeurs représentatives V identiques à celles appliquées en entrée du codeur entropique 10. (On rappelle à cet égard que le codage entropique est un codage sans perte.)
Les valeurs représentatives V produites en sortie du décodeur entropique 30 sont appliquées en entrée (c’est-à-dire sur une couche d’entrée) du réseau de neurones artificiels de décodage 28.
L’attribution respective des valeurs représentatives V aux nœuds d’entrée (ou nœuds de la couche d’entrée) du réseau de neurones artificiels de décodage 28 est prédéfinie. (On remarque d’ailleurs que la couche de sortie du réseau de neurones artificiels de codage 8 correspond à la couche d’entrée du réseau de neurones artificiels de décodage 28. En effet, l’utilisation du codage entropique permet une meilleure compression des données, mais ne modifie pas ces données.)
Lorsque le réseau de neurones artificiels de décodage 28 reçoit en entrée les valeurs représentatives V, le réseau de neurones artificiels de décodage 28 produit en sortie (c’est-à-dire sur une couche de sortie) une représentation I du contenu adaptée à une reproduction sur un dispositif de reproduction audio ou vidéo.
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’un bloc d’image (ou d’un bloc d’une composante d’image ou, en variante, d’une image ou d’une composante d’image).
On a décrit ci-dessus en référence à la figure 1 un ensemble de traitement de données permettant, à partir de données de contenu B, de produire un flux compressé (séquence d’éléments binaires Fnn) représentant ce contenu et, en utilisant ce flux compressé, une représentation I de ce contenu destinée à une reproduction sur un dispositif de reproduction audio ou vidéo.
Un tel ensemble de données peut être optimisé, lors d’une phase d’apprentissage des différents réseaux de neurones artificiels 8, 28, 40 comme décrit à présent, pour un type de contenu particulier et/ou un compromis débit-distorsion particulier. Dans un premier temps, une séquence de contenus audio ou vidéo d’apprentissage (par exemple ici une série de vidéos d’apprentissage) est sélectionnée. Il s’agit d’un ensemble de contenus représentatifs du type de contenus que l’on souhaite compresser avec cet ensemble de traitement de données.
Chaque contenu (ici chaque vidéo) de la séquence d’apprentissage peut alors être appliquée (en tant que données de contenu B) en entrée du réseau de neurones artificiels de codage 8, ce qui permet de produire à chaque fois (comme expliqué ci- dessus) une séquence d’éléments binaires Fnn (en sortie du codeur entropique 10) et une représentation I à afficher (en sortie du réseau de neurones artificiels de décodage 28).
Une fonction de coût est utilisée pour évaluer numériquement la performance de l’ensemble de traitement de données dans sa configuration courante. Une telle fonction de coût est par exemple coût débit-distorsion tel que R+À.D, où D est la distorsion (erreur quadratique) entre le contenu restitué (à l’aide de la représentation I) et le contenu initial (représenté par les données de contenu B), R est le débit (réel ou estimé) du flux compressé (c’est-à-dire de la séquence d’éléments binaires Fnn), et À est un paramètre fourni par l’utilisateur, permettant de choisir le compromis entre compression et qualité.
Cette fonction de coût est utilisée au sein d’un algorithme d’apprentissage par rétropropagation du gradient pour faire évoluer les poids affectés aux neurones des réseaux de neurones artificiels 8, 28, 40 de manière à minimiser la fonction de coût.
Les poids affectés aux neurones des réseaux de neurones artificiels 8, 28, 40 lorsque le coût minimal est considéré atteint définissent ces réseaux de neurones artificiels 8, 28, 40, et donc l’ensemble de traitement de données, tels qu’ils seront utilisés dans la suite.
Il est ainsi possible de définir plusieurs tels ensembles de traitement de données optimaux (définis chacun notamment par un ensemble de poids affectés aux neurones des réseaux de neurones artificiels 8, 28, 40) respectivement pour différents types de contenus (/.e. de séquences d’apprentissage) et/ou différents compromis entre compression et qualité (chaque compromis correspondant à un paramètre À spécifique). On décrit à présent comment les parties d’un tel ensemble de traitement de données peuvent être utilisées au sein d’un dispositif électronique de codage et d’un dispositif électronique de décodage.
La figure 3 représente ainsi un dispositif électronique de codage 2 utilisant le réseau de neurones artificiels de codage 8, le réseau de neurones artificiels de détermination de contexte 40 et le 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 3, 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. Ces données de contenu B sont de même nature que celles mentionnées plus haut dans le cadre de la description de la figure 1 et ne seront pas décrites à nouveau.
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.
L’unité de traitement parallélisé 6 est conçue pour mettre en œuvre le réseau de neurones artificiels de codage 8 et le réseau de neurones artificiels de détermination de contexte 40 (faisant tous deux partie d’un ensemble de traitement de données tel que celui de la figure 1 ) 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.
On désigne dans la suite "réseau global de codage" 9 le réseau de neurones artificiels formé par le réseau de neurones artificiels de codage 8 et par le réseau de neurones artificiels de détermination de contexte 40. L’unité de traitement parallélisé 6 est ainsi conçue pour mettre en œuvre ce réseau global de codage 9 (après avoir été configurée par le processeur 4 comme déjà indiqué).
On décrit à présent en référence à la figure 4 un exemple de procédé de codage mis en œuvre par le dispositif électronique de codage 2.
Le procédé de la figure 4 débute par une étape E2 de sélection d’un ensemble de traitement de données parmi une pluralité d’ensembles de traitement de données conformes à ce qui a été décrit plus haut en référence à la figure 1 .
Comme déjà expliqué, ces différents ensembles de traitement de données peuvent avoir la même structure générale (telle que représentée sur la figure 1 ), mais les différents réseaux de neurones artificiels 8, 28, 40 sont définis par des poids (associés aux neurones) variables d’un ensemble de traitement de données à l’autre (les critères d’optimisation étant différents d’un ensemble de traitement de données à l’autre).
L’ensemble de traitement de données peut par exemple être sélectionné parmi des ensembles de traitement de données pour lesquels le réseau de neurones artificiels de décodage 28 et le réseau de neurones artificiels de détermination de contexte 40 (formant ensemble un réseau global de décodage comme expliqué plus loin) sont disponibles pour un dispositif électronique de décodage (tel que le dispositif électronique de décodage 20 représenté sur la figure 6 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.
L’ensemble de traitement de données 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, l’ensemble de traitement de données sélectionné permet un décodage à faible latence. Dans d’autres applications, l’ensemble de traitement de données sélectionné pourrait permettre un 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.
L’ensemble de traitement de données peut également être sélectionné afin d’obtenir le meilleur compromis compression-distorsion possible.
Les différents critères de sélection de l’ensemble de traitement de données peuvent éventuellement être combinés.
Une fois l’ensemble de traitement de données 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 codage prévu dans cet ensemble de traitement de données.
Cette étape E4 comprend en particulier l’instanciation, au sein de l’unité de traitement parallélisé 6, du réseau global de codage 9 comprenant le réseau de neurones artificiels de codage 8 et le réseau de neurones artificiels de détermination de contexte 40 de l’ensemble de traitement de données 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 global de codage 9 ; 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 global de codage 9 ; 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. 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 6).
Le procédé comprend ainsi notamment une étape E6 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 E8 au codage d’une seconde partie d’en-tête comprenant des données R indicatives du réseau global de décodage comprenant le réseau de neurones artificiels de décodage 28 et le réseau de neurones artificiels de détermination de contexte 40 qui font partie de l’ensemble de traitement de données 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 global de décodage.
Un tel identifiant désigne (parmi une pluralité de réseaux globaux de décodage, par exemple parmi l’ensemble des réseaux globaux de décodages disponibles pour le dispositif électronique de décodage) le réseau global de décodage correspondant au réseau global de codage 9 susmentionné, réseau global de décodage qui doit donc être utilisé pour le décodage des valeurs représentatives V. (Un tel réseau global de décodage comprenant d’une part un réseau de neurones artificiels de décodage correspondant au réseau de neurones artificiels de codage 8 compris dans le réseau global de codage 9, et d’autre part le réseau de neurones artificiels de détermination de contexte 40 compris dans le réseau global de codage 9.)
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 global de décodage, par exemple au sein de l’ensemble de réseaux globaux 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 global de décodage.
Le réseau global de décodage (comprenant le réseau de neurones artificiels de décodage 28 et le réseau de neurones artificiels de détermination de contexte 40 qui font partie de l’ensemble de traitement de données sélectionné à l’étape E2) 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 global 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 global 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 4 se poursuit par une étape E10 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 global de décodage susmentionné.
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 E14 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 E12 décrite ci-dessous (avant de passer à l’étape E14).
En variante, le choix d’effectuer ou non l’étape E12 (avant d’effectuer l’étape E14) 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 E12 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 7.)
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 procédé de la figure 4 se poursuit alors par des étapes de codage de données représentatives de la configuration du codeur entropique 10 utilisé dans l’ensemble de traitement de données sélectionné à l’étape E2 (et donc du décodeur entropique 30 de ce même ensemble).
Ainsi, le procédé de la figure 4 comprend tout d’abord une étape E14 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 4 comprend ensuite une étape E16 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 ITLI-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 4 se poursuit par une étape E18 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 4 comprend alors une étape E20 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 global de codage 9 (ou autrement dit une étape d’activation du réseau global de codage 9 en prenant en entrée les données de contenu B). (Les données de contenu B sont donc alors appliquées en entrée du réseau de neurones artificiels de codage 8.)
L’étape E20 permet ainsi de produire (ici en sortie du réseau global de codage 9) les valeurs représentatives V et l’indice de contexte C. Précisément, les valeurs représentatives V sont produites en sortie du réseau de neurones artificiels de codage 8 ; ces valeurs représentatives V sont appliquées en entrée du réseau de neurones artificiels de détermination de contexte 40 de sorte que ce réseau de neurones artificiels de détermination de contexte 40 produit en sortie l’indice de contexte C.
Le procédé de la figure 4 comprend alors une étape E22 de codage entropique des valeurs représentatives V par le codeur entropique 10, le codeur entropique 10 étant paramétré (éventuellement par l’intermédiaire du module de commande 5) dans le contexte défini par l’indice de contexte C produit en sortie du réseau global de codage 9 (ici précisément en sortie du réseau de neurones artificiels de détermination de contexte 40). Dans la variante où le réseau de neurones artificiels de détermination de contexte 40 (et donc le réseau global de codage 9) produit une pluralité d’indices de contexte C respectivement associés à des ensembles de valeurs représentatives V, le codage entropique des valeurs représentatives V par le codeur entropique 10 est réalisé en paramétrant le codeur entropique 10 dans le contexte défini par l’indice de contexte C associé à l’ensemble contenant la valeur représentative V en cours de codage entropique.
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 E22 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 E20 permet le traitement d’une partie seulement du contenu audio ou vidéo à compresser (par exemple lorsque l’étape E20 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 E20 (pour obtenir des valeurs représentatives des parties successives du contenu) et E22 (pour réaliser le codage entropique de ces valeurs représentatives).
Le processeur 4 peut ainsi construire à l’étape E24 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 E24 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 E24 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 E24 peut alors être émis à l’étape E26 à 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 6).
Ce flux de données comprend ainsi, comme représenté en figure 5, 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 global de décodage (qui comprend un réseau de neurones artificiels de décodage et un réseau de neurones artificiels de détermination de contexte) ;
- é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é.
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 ensemble de contextes défini à l’avance (par convention).
La figure 6 représente un dispositif électronique de décodage 20 utilisant le décodeur entropique 30, le réseau de neurones artificiels de détermination de contexte 40 et le réseau de neurones artificiels de décodage 28 (ces éléments ayant été introduits ci-dessus en référence à la figure 1 ).
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 30 déjà mentionné. En variante, le décodeur entropique 30 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.
L’unité de traitement parallélisé 26 est conçue pour mettre en œuvre le réseau de neurones artificiels de détermination de contexte 40 et le réseau de neurones artificiels de décodage 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.
Comme déjà indiqué, le réseau de neurones artificiels de détermination de contexte 40 et le réseau de neurones artificiels de décodage 28 forment ensemble un réseau de neurones artificiels dénommé ici "réseau global de décodage" et référencé 29 sur la figure 6.
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 de décodage 28 est utilisé dans le cadre d’un traitement de données obtenues par décodage entropique (au moyen du décodeur entropique 30) 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 global de décodage (comprenant un réseau de neurones artificiels de détermination de contexte et 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 parai lé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 (c’est-à-dire ici le réseau global de décodage) 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 7 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 30 (paramétré en fonction de l’indice de contexte C produit par le réseau de neurones artificiels de détermination de contexte 40) 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 7 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 E24). 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 5).
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 7 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 global 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 global 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 globaux de décodage accessibles par le dispositif électronique de décodage 20, à savoir l’ensemble des réseaux globaux de décodage 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 global de décodage 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 global de décodage 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 (formant ici le réseau global de décodage) identifié par l’identifiant décodé.
Le jeu de paramètres (lu ou reçu) peut comprendre en pratique certains paramètres définissant le réseau de neurones artificiels de décodage 28 et d’autres paramètres définissant le réseau de neurones artificiels de détermination de contexte 40.
Selon une seconde possibilité de réalisation, comme déjà indiqué, les données R sont des données descriptives Rc du réseau global de décodage 29.
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 global de décodage 29 à utiliser, comprenant le réseau de neurones artificiels de détermination de contexte 40 et le réseau de neurones artificiels de décodage 28 (auxquelles sont appliquées les données obtenues par décodage entropique à partir de la séquence d’éléments binaires Fnn, comme expliqué ci- dessous).
De tels paramètres peuvent comprendre en pratique certains paramètres définissant le réseau de neurones artificiels de décodage 28 et d’autres paramètres définissant le réseau de neurones artificiels de détermination de contexte 40.
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 global décodage à utiliser permet (ici au module de commande 25) de déterminer notamment 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, 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 global de décodage 29 (paramètres obtenus à l’étape E58), afin que l’unité de traitement parallélisé 26 puisse mettre en œuvre ce réseau global de décodage 29 (comprenant le réseau de neurones artificiels de détermination de contexte 40 et le réseau de neurones artificiels de décodage 28).
Cette étape de configuration E60 comprend notamment l’instanciation du réseau global de décodage 29 (et donc l’instanciation du réseau de neurones artificiels de détermination de contexte 40 et 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 global de décodage 29 ; 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 global de décodage 29 (paramètres obtenus à l’étape E58).
L’étape de configuration E60 peut comprendre en outre l’application de valeurs (initiales) prédéfinies (mémorisées par exemple dans l’unité de mémorisation 22) sur la couche d’entrée du réseau global de décodage 29 de sorte que le réseau de global de décodage 29 soit activé et produise ainsi en sortie (précisément en sortie du réseau de neurones artificiels de détermination de contexte 40) un indice de contexte C initial. 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 30 (indicative ici du nombre K de contextes utilisables au sein du décodeur entropique 30). 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 30 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 30 é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 30 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 30 avec le modèle de probabilité défini par la donnée de paramétrisation linit relative à ce contexte.
Le module de commande 25 applique alors (étape E70) en entrée du décodeur entropique 30 la séquence d’éléments binaires Fnn (reçue via l’unité de réception 21 ), tout en paramétrant le décodeur entropique 30 dans le contexte identifié par l’indice de contexte C produit en sortie du réseau global de décodage 29 (c’est-à-dire ici produit en sortie du réseau de neurones artificiels de détermination de contexte 40).
Lors de la première itération (c’est-à-dire lors du premier passage à l’étape E70), l’indice de contexte C est par l’exemple l’indice de contexte C initial susmentionné, produit du fait de l’activation anticipée du réseau global de décodage 29 lors de l’étape E60 comme expliqué ci-dessus. En variante, tant que le réseau global de décodage 29 ne produit pas un indice de contexte C (c’est-à-dire ici lors de la première itération), le décodeur entropique 30 peut être paramétré dans un contexte initial prédéfini, éventuellement mémorisé dans l’unité de mémorisation 22 (l’étape E60 ne comportant pas dans ce cas d’application de valeurs prédéfinies au réseau global de décodage 29 pour activation anticipée de celui-ci). Lors des itérations ultérieures (c’est-à-dire lors des passages ultérieurs à l’étape E70 du fait de la boucle décrite ci-dessous à l’étape E76), le décodeur entropique 30 est donc paramétré dans le contexte identifié par l’indice de contexte C produit par le réseau global de décodage 29 lorsque des valeurs représentatives V, décodées (par décodage entropique) lors du précédent passage à l’étape E70, ont été appliquées en entrée du réseau global de décodage 29 (lors du précédent passage à l’étape E72).
Le décodeur entropique 30 produit ainsi à l’étape E70 de nouvelles valeurs représentatives V (par décodage entropique de la séquence d’éléments binaires Fnn).
On peut prévoir en pratique un mécanisme de synchronisation entre le réseau global de décodage 29 et le codeur entropique 30 (afin de garantir que l’indice de contexte C à utiliser est disponible au moment où le décodage entropique de la valeur représentative correspondante V a lieu). Ce mécanisme de synchronisation comprend par exemple la suspension du décodage entropique (par le décodeur entropique 30) tant qu’un nouvel indice de contexte C n’est pas disponible en sortie du réseau global de décodage 29 (c’est-à-dire précisément en sortie du réseau de neurones artificiels de détermination de contexte 40).
Selon une première possibilité de réalisation, une variable intermédiaire C’ est stockée en mémoire (par exemple dans un registre du processeur 24 ou dans l’unité de mémorisation 22) et mise à jour par le réseau global de décodage 29 (c’est-à-dire précisément par le réseau de neurones artificiels de détermination de contexte 40). Tant qu’un nouvel indice de contexte C n’est pas fournie par le réseau global de décodage 29 (c’est-à-dire précisément par le réseau de neurones artificiels de détermination de contexte 40), le décodage entropique (par le décodeur entropique 30) est interrompu. Dès que la variable intermédiaire C’ est mise à jour en mémoire, un décodage entropique d’une (ou d’un nombre prédéterminé de) valeur(s) représentative(s) V est effectué avec le contexte défini par la variable intermédiaire C’ (identique à l’indice de contexte C produit par le réseau global de décodage 29), puis le décodage entropique est à nouveau suspendu (jusqu’à une nouvelle mise à jour de la variable intermédiaire C’ suite à la production d’un nouvel indice de contexte C en sortie du réseau global de décodage 29, c’est-à-dire en sortie du réseau de neurones artificiels de détermination de contexte 40).
Selon une seconde possibilité de réalisation, le mécanisme de synchronisation consiste à faire dépendre l’avancement du décodage entropique (par le décodeur entropique 30) de la production de l’indice de contexte C par le réseau global de décodage 29 (c’est-à-dire précisément par le réseau de neurones artificiels de détermination de contexte 40). Dans ce second mode de réalisation, une information (par l’exemple l’indice de contexte C lui-même ou, en variante, une information dédiée de synchronisation) est transmise du réseau global de décodage 29 (par exemple du réseau de neurones artificiels de détermination de contexte 40) au décodeur entropique 30, lorsque la partie du réseau de neurones (par exemple la couche du réseau de neurones) qui fournit l’indice de contexte C à utiliser est activée. Lorsque cette information est transmise, une valeur représentative V (ou un nombre prédéterminé de valeurs représentatives V) est décodée par décodage entropique (par le décodeur entropique 30 paramétré dans le contexte défini par l’indice de contexte C courant).
Par ailleurs, dans la variante déjà mentionnée où le réseau de neurones artificiels de détermination de contexte 40 (et donc le réseau global de décodage 29) produit une pluralité d’indices de contexte C respectivement associés à des ensembles de valeurs représentatives V, le décodage entropique des valeurs représentatives V par le décodeur entropique 30 est réalisé en paramétrant à chaque instant le décodeur entropique 30 dans le contexte défini par l’indice de contexte C associé à l’ensemble contenant la valeur représentative V à obtenir par décodage entropique à cet instant.
Par exemple, dans l’exemple décrit ici où les valeurs représentatives V sont organisées en une séquence de cartes de caractéristiques F, le décodeur entropique 30 permet le décodage (entropique) successif des différentes cartes de caractéristiques F et le module de commande 25 peut donc (à chaque instant) paramétrer le décodeur entropique 30 dans le contexte défini par l’indice de contexte C associé à la carte de caractéristiques F en cours de décodage entropique.
Le processeur 24 (ici directement en sortie du décodeur entropique 30 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 (réseau global de décodage) 29 mis en œuvre par l’unité de traitement parallélisé 26 afin que d’une part que ces valeurs représentative V soient traitées par un processus de décodage utilisant en partie au moins le réseau de neurones artificiels de décodage 28 et d’autre part qu’un (nouvel) indice de contexte C soit produit en sortie du réseau de neurones artificiels de détermination de contexte C. Dans l’exemple décrit ici, le réseau de neurones artificiels de décodage 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 de décodage 28 et la couche de sortie du réseau de neurones artificiels de décodage 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à indiqué dans le cadre de la description de la figure 1 , 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) du réseau de neurones artificiels de décodage 28 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 de décodage 28 peut recevoir en entrée certaines au moins des données produites en sortie du réseau de neurones artificiels de décodage 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 de décodage 28 vers l’entrée du réseau de neurones artificiels de décodage 28.
Le module de commande 25 détermine alors à l’étape E76 si le traitement de la séquence d’éléments binaires Fnn 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 de décodage 28.
En cas de détermination positive (P), il est mis fin au procédé à l’étape E78.

Claims

Revendications
1. Procédé de décodage d’une séquence d’éléments binaires (Fnn), le procédé comprenant les étapes suivantes :
- application (E72), en entrée d’un réseau de neurones artificiels (29), de valeurs préalablement décodées (V) ;
- en conséquence de ladite application, production d’un indice de contexte (C) en sortie du réseau de neurones artificiels (29) ;
- obtention (E70) d’une nouvelle valeur décodée (V) par application d’une partie de la séquence d’éléments binaires (Fnn) à un décodeur entropique (30) paramétré dans le contexte identifié par l’indice de contexte (C) produit.
2. Procédé de décodage selon la revendication 1 , comprenant en outre une étape (E72) d’application de la nouvelle valeur décodée (V) en entrée du réseau de neurones artificiels (29) de manière à produire, en sortie du réseau de neurones artificiels (29), des données (I) représentatives d’un contenu audio ou vidéo.
3. Procédé de décodage selon la revendication 1 ou 2, dans lequel un processus de décodage entropique par le décodeur entropique (30) est suspendu tant qu’un nouvel indice de contexte (C) n’est pas produit en sortie du réseau de neurones artificiels (29).
4. Procédé de décodage selon la revendication 1 à 3, dans lequel la séquence d’éléments binaires (Fnn) est comprise dans un flux de données comprenant en outre une information (11 ) indicative d’un ensemble de contextes utilisables au sein du décodeur entropique (30).
5. Procédé de décodage selon la revendication 4, dans lequel ladite information (11 ) est indicative d’un nombre de contextes utilisables au sein du décodeur entropique (30).
6. Procédé de décodage selon l’une des revendications 1 à 5, comprenant une étape (E66) d’initialisation de chaque contexte utilisable au sein du décodeur entropique (30) au moyen d’une donnée de paramétrisation (linit) comprise dans un flux de données comprenant la séquence d’éléments binaires (Fnn).
7. Procédé de décodage selon l’une des revendications 1 à 6, dans lequel le réseau de neurones artificiels (29) 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 comprises dans un flux de données comprenant la séquence d’éléments binaires (Fnn).
8. Procédé de décodage selon l’une des revendications 1 à 7, dans lequel le réseau de neurones artificiels (29) est mis en œuvre au moyen d’une unité de traitement parallélisé (26) conçue pour effectuer en parallèle à un instant donné une pluralité d’opérations du même type.
9. Procédé de décodage selon la revendication 8, dans lequel le décodeur entropique (30) est mis en œuvre au moyen d’un processeur (24) distinct de l’unité de traitement parallélisé (26).
10. Programme d’ordinateur comprenant des instructions exécutables par un processeur 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.
11 . Dispositif électronique de décodage (20) d’une séquence d’éléments binaires (Fnn), comprenant :
- un réseau de neurones artificiels (29) conçu pour recevoir en entrée des valeurs préalablement décodées (V) et pour produire en sortie un indice de contexte (C) ;
- un décodeur entropique (30) conçu pour recevoir en entrée la séquence d’éléments binaires (Fnn) ;
- un module de commande (25) conçu pour paramétrer le décodeur entropique (30) dans le contexte identifié par l’indice de contexte (C) produit, de manière à obtenir une nouvelle valeur décodée (V) en sortie du décodeur entropique (30).
12. Dispositif électronique de décodage selon la revendication 11 , comprenant un mécanisme de synchronisation apte à suspendre un processus de décodage entropique par le décodeur entropique (30) tant qu’un nouvel indice de contexte (C) n’est pas produit en sortie du réseau de neurones artificiels (29).
13. Dispositif électronique de décodage selon la revendication 11 ou 12, comprenant une unité de traitement (26) apte à mettre en œuvre le réseau de neurones artificiels (29).
14. Dispositif électronique de décodage selon la revendication 13, dans lequel le module de commande (25) est conçu pour configurer l’unité de traitement (29) en fonction de données (R) comprises dans un flux de données comprenant la séquence d’éléments binaires (Fnn).
15. Dispositif électronique de décodage selon la revendication 13 ou 14, comprenant un processeur (24) distinct de l’unité de traitement (26) et conçu pour mettre en œuvre le décodeur entropique (30).
EP21786467.7A 2020-10-06 2021-10-01 Procédé et dispositif électronique de décodage d'un flux de données, et programme d'ordinateur associé Pending EP4226614A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2010214A FR3114933B1 (fr) 2020-10-06 2020-10-06 Procédé et dispositif électronique de décodage d’un flux de données, et programme d’ordinateur associé
PCT/EP2021/077157 WO2022073885A1 (fr) 2020-10-06 2021-10-01 Procédé et dispositif électronique de décodage d'un flux de données, et programme d'ordinateur associé

Publications (1)

Publication Number Publication Date
EP4226614A1 true EP4226614A1 (fr) 2023-08-16

Family

ID=73793423

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21786467.7A Pending EP4226614A1 (fr) 2020-10-06 2021-10-01 Procédé et dispositif électronique de décodage d'un flux de données, et programme d'ordinateur associé

Country Status (7)

Country Link
US (2) US12445659B2 (fr)
EP (1) EP4226614A1 (fr)
JP (1) JP2023545042A (fr)
KR (1) KR20230081719A (fr)
CN (1) CN116601954A (fr)
FR (1) FR3114933B1 (fr)
WO (1) WO2022073885A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9313514B2 (en) * 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
US10963782B2 (en) * 2016-11-04 2021-03-30 Salesforce.Com, Inc. Dynamic coattention network for question answering
JP6956803B2 (ja) * 2017-05-26 2021-11-02 グーグル エルエルシーGoogle LLC ニューラルネットワークを使用するタイル型画像圧縮
WO2019009449A1 (fr) * 2017-07-06 2019-01-10 삼성전자 주식회사 Procédé et dispositif de codage/décodage d'image
JP6994868B2 (ja) * 2017-08-09 2022-01-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
EP3562162A1 (fr) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Procédé et appareil de codage et de décodage vidéo basés sur la mise en uvre d'un réseau neuronal de cabac
US10886943B2 (en) * 2019-03-18 2021-01-05 Samsung Electronics Co., Ltd Method and apparatus for variable rate compression with a conditional autoencoder
KR20250117730A (ko) * 2019-03-18 2025-08-05 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 신경망의 매개변수를 압축하기 위한 방법 및 장치
CN110728726B (zh) * 2019-10-24 2022-09-23 湖南大学 一种基于用户交互与深度神经网络的图像压缩方法
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
FR3114717B1 (fr) 2020-09-30 2023-10-13 Fond B Com Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés
CN113658130B (zh) * 2021-08-16 2023-07-28 福州大学 基于双重孪生网络的无参考屏幕内容图像质量评估方法

Also Published As

Publication number Publication date
CN116601954A (zh) 2023-08-15
US20260019650A1 (en) 2026-01-15
WO2022073885A1 (fr) 2022-04-14
US12445659B2 (en) 2025-10-14
KR20230081719A (ko) 2023-06-07
JP2023545042A (ja) 2023-10-26
FR3114933A1 (fr) 2022-04-08
FR3114933B1 (fr) 2023-10-13
US20230379506A1 (en) 2023-11-23

Similar Documents

Publication Publication Date Title
EP4183130B1 (fr) Decodage video utilisant un reseau de neurones
WO2022069437A1 (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
EP2700226B1 (fr) Procedes et appareils de production et de traitement de representations de scenes multimedias
WO2022013247A1 (fr) Decodage video parallelise utilisant un reseau de neurones
WO2024121109A1 (fr) Procédé et dispositif de codage et décodage d'images
WO2022073885A1 (fr) Procédé et dispositif électronique de décodage d'un flux de données, et programme d'ordinateur associé
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
JP2024520961A (ja) データストリームの少なくとも一部を復号化するための方法と装置、コンピュータプログラム、及び関連するデータストリーム
FR2923970A1 (fr) Procede et dispositif de formation, de transfert et de reception de paquets de transport encapsulant des donnees representatives d'une sequence d'images
WO2024260628A1 (fr) Procédé et dispositif de codage et décodage de séquences d'images
WO2024260629A1 (fr) Procédé et dispositif de codage et décodage de séquences d'images
WO2026003293A1 (fr) Procédé et dispositif de codage et décodage d'un signal
WO2024121107A1 (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
FR3143246A1 (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.
WO2016097556A1 (fr) Procédé de codage d'une image numérique, procédé de décodage, dispositifs, terminal d'utilisateur et programmes d'ordinateurs associes

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: 20230406

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