Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ELECTRONIC METHOD AND DEVICE FOR DECODING A DATA STREAM, AND ASSOCIATED COMPUTER PROGRAM
Document Type and Number:
WIPO Patent Application WO/2022/073885
Kind Code:
A1
Abstract:
A method for decoding a bit sequence comprises the following steps: - applying, at the input of an artificial neural network (29), previously decoded values (V); - as a result of the previously decoded values being applied, producing a context index (C) at the output of the artificial neural network (29); - obtaining a new decoded value (V) by applying a portion of the bit sequence (Fnn) to an entropic decoder (30) parameterised in the context identified by the produced context index (C). An electronic decoding device (20) and an associated computer program are also provided.

Inventors:
HENRY FÉLIX (FR)
CLARE GORDON (FR)
Application Number:
PCT/EP2021/077157
Publication Date:
April 14, 2022
Filing Date:
October 01, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FOND B COM (FR)
International Classes:
H04N19/136; G06T9/00; H04N19/196; H04N19/91
Domestic Patent References:
WO2018218249A12018-11-29
Foreign References:
EP3624452A12020-03-18
Other References:
DETLEV MARPE ET AL: "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard", 21 May 2003 (2003-05-21), XP055382532, Retrieved from the Internet [retrieved on 20170619], DOI: 10.1109/TCSVT.2003.815173
GARY J SULLIVAN; JENS-RAINER OHM; WOO-JIN HAN; THOMAS WIEGAND: "Overview of the High Efficiency Video Coding (HEVC) Standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, 1 January 2012 (2012-01-01), US, pages 1 - 19, XP055045358, ISSN: 1051-8215, DOI: 10.1109/TCSVT.2012.2221191
D. MARPEH. SCHWARZT. WIEGAND: "Transactions on Circuits and Systems for Video Technology", vol. 13, July 2003, IEEE, article "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard'", pages: 620 - 636
G. J. SULLIVANJ.-R. OHMW.-J. HANT. WIEGAND: "Overview of the High Efficiency Video Coding (HEVC) Standard'", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 22, no. 12, December 2012 (2012-12-01), pages 1649 - 1668
S. WIEDEMANN ET AL.: "DeepCABAC: Context-adaptive binary arithmetic coding for deep neural network compression", PROCEEDINGS OF THE 36TH INTERNATIONAL CONFÉRENCE ON MACHINE LEARNING, LONG BEACH, CALIFORNIA, 2019
S. WIEDEMANN ET AL.: "Compact and Computationally Efficient Représentation of Deep Neural Networks", IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS, vol. 31, March 2020 (2020-03-01)
"9.3.2.2 Initialization process for context variables", RECOMMANDATION ITU-T H.265
CONTEXT-BASED ADAPTIVE BINARY ARITHMETIC CODING IN THE H.264/AVC VIDEO COMPRESSION STANDARD'
Attorney, Agent or Firm:
BONNANS, Arnaud et al. (FR)
Download PDF:
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).

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.