AIDGE IN SPACE
Banc d'essai de compression d'image apprise pour l'embarqué
Chargement...
Recherche...
Aucune correspondance
Référence de la classe aidge_in_space.codecs.base.LearnedCodec

Codec à base de réseau de neurones (transformées apprises + codage entropique). Plus de détails...

Graphe d'héritage de aidge_in_space.codecs.base.LearnedCodec:
[légende]

Fonctions membres publiques

 __init__ (self)
 Initialise le cache des modèles chargés.
 make_model (self, level)
 Architecture non entraînée du niveau (suffit au profilage, sans téléchargement).
 load_weights (self, model, level)
 Charge les poids du niveau dans le modèle.
 architecture (self, level)
 Texte court qui distingue deux architectures, par exemple « N=128, M=192 ».
 model (self, level)
 Modèle entraîné du niveau, chargé au premier appel puis gardé en cache (LRU).
 encoder (self, level)
 Transformée d'analyse g_a aux GDN gelées : ce qui part dans ONNX, Aidge et sur la carte.
 onboard_module (self, model)
 Tout ce qui s'exécute à bord pour produire le flux (hors codage arithmétique).
 run (self, img, level, mode, backend="torch", real_rate=True)
 Compresse puis décompresse une image.
 decode_latents (self, model, stream)
 Relit l'en-tête d'un flux de run() puis décode ses latents.
Fonctions membres publiques hérités de aidge_in_space.codecs.base.Codec
 available (self)
 Indique si le codec peut s'exécuter sur cette machine.
 levels (self, mode)
 Niveaux proposés, du plus bas au plus haut débit.
 __repr__ (self)
 Représentation courte : classe et identifiant.

Attributs publics statiques

int in_ch = 3
 Canaux d'entrée du modèle (3 pour les modèles RGB, qui reçoivent une image grise répliquée).
 coding = FactorizedCoding()
 Codage entropique des latents (aidge_in_space.coding.LatentCoding).
int max_cached_models = 4
 Nombre de modèles chargés gardés en mémoire (cache LRU).
Attributs publics statiques hérités de aidge_in_space.codecs.base.Codec
str key = ""
 Identifiant unique, utilisé par la ligne de commande et dans les CSV.
str label = ""
 Nom affiché.
str family = ""
 "Classique" ou "Appris" ; les codecs classiques sont listés en premier.
str description = ""
 Description courte affichée dans l'onglet « Codecs et aide ».
tuple modes = ("gris", "rgb")
 Modes d'image acceptés : "gris" et/ou "rgb".
tuple backends = ()
 Moteurs d'exécution possibles pour l'encodeur (voir aidge_in_space.backends) ; vide = sans objet.

Attributs protégés

 _cache = OrderedDict()
 Modèles chargés, indexés par Level.value, du moins au plus récemment utilisé.

Description détaillée

Codec à base de réseau de neurones (transformées apprises + codage entropique).

Une sous-classe fournit make_model() et load_weights() ; tout le reste est commun :

  • l'image est complétée (padding par réplication) à un multiple de model.pad_multiple ;
  • la transformée d'analyse g_a, aux GDN gelées, s'exécute sur le moteur choisi (PyTorch, ONNX Runtime ou Aidge, voir aidge_in_space.backends) ;
  • les latents sont codés par l'objet coding, puis décodés et vérifiés si le débit est réel ;
  • la transformée de synthèse g_s s'exécute toujours en PyTorch (elle tourne au sol).

Le modèle renvoyé par make_model() doit exposer in_ch, N, M, pad_multiple, downsampling, g_a, g_s, plus ce que demande coding (par exemple prior).

Documentation des fonctions membres

◆ architecture()

aidge_in_space.codecs.base.LearnedCodec.architecture ( self,
level )

Texte court qui distingue deux architectures, par exemple « N=128, M=192 ».

Deux niveaux de même architecture ont le même coût embarqué : l'onglet « Encodeur embarqué » ne profile qu'un niveau par architecture.

Paramètres
levelLevel du codec.
Renvoie
Description de l'architecture.

Réimplémentée dans aidge_in_space.codecs.balle2017.Balle2017Codec, et aidge_in_space.codecs.bmshj2018.Pretrained2018.

◆ decode_latents()

aidge_in_space.codecs.base.LearnedCodec.decode_latents ( self,
model,
stream )

Relit l'en-tête d'un flux de run() puis décode ses latents.

Paramètres
modelModèle qui a produit le flux.
streamFlux complet (en-tête HEADER + données).
Renvoie
Latents quantifiés y_hat, tenseur 1 x M x h x w.
Exceptions
ValueErrorsi la signature ou la version de l'en-tête ne correspond pas.

◆ encoder()

aidge_in_space.codecs.base.LearnedCodec.encoder ( self,
level )

Transformée d'analyse g_a aux GDN gelées : ce qui part dans ONNX, Aidge et sur la carte.

Paramètres
levelLevel du codec.
Renvoie
Module gelé, mis en cache sur le modèle.

◆ load_weights()

aidge_in_space.codecs.base.LearnedCodec.load_weights ( self,
model,
level )

Charge les poids du niveau dans le modèle.

Paramètres
modelModèle renvoyé par make_model(level).
levelLevel du codec.
Exceptions
Exceptionsi les poids sont introuvables ou incompatibles.

Réimplémentée dans aidge_in_space.codecs.balle2017.Balle2017Codec, et aidge_in_space.codecs.bmshj2018.Pretrained2018.

◆ make_model()

aidge_in_space.codecs.base.LearnedCodec.make_model ( self,
level )

Architecture non entraînée du niveau (suffit au profilage, sans téléchargement).

Paramètres
levelLevel du codec.
Renvoie
torch.nn.Module respectant le contrat décrit dans la classe.

Réimplémentée dans aidge_in_space.codecs.balle2017.Balle2017Codec, et aidge_in_space.codecs.bmshj2018.Pretrained2018.

◆ model()

aidge_in_space.codecs.base.LearnedCodec.model ( self,
level )

Modèle entraîné du niveau, chargé au premier appel puis gardé en cache (LRU).

Paramètres
levelLevel du codec.
Renvoie
Modèle en mode évaluation.

◆ onboard_module()

aidge_in_space.codecs.base.LearnedCodec.onboard_module ( self,
model )

Tout ce qui s'exécute à bord pour produire le flux (hors codage arithmétique).

Paramètres
modelModèle, entraîné ou non (le profilage n'a pas besoin des poids).
Renvoie
Module gelé (g_a, plus h_a et h_s pour un hyperprior).

◆ run()

aidge_in_space.codecs.base.LearnedCodec.run ( self,
img,
level,
mode,
backend = "torch",
real_rate = True )

Compresse puis décompresse une image.

Paramètres
imgImage uint8, H x W (gris) ou H x W x 3 (rgb).
levelLevel choisi parmi levels(mode).
mode"gris" ou "rgb".
backendMoteur de l'encodeur (codecs appris uniquement), clé de aidge_in_space.backends.BACKENDS.
real_rateTrue : flux réellement produit ; False : débit estimé si le codec le permet.
Renvoie
Result dont l'image reconstruite a la même forme que img.

Avec real_rate, le flux (en-tête HEADER compris) est décodé et comparé aux latents de l'encodeur : le résultat est dans info["décodage exact"].

Réimplémentée à partir de aidge_in_space.codecs.base.Codec.


La documentation de cette classe a été générée à partir du fichier suivant :
  • base.py