AIDGE IN SPACE
Banc d'essai de compression d'image apprise pour l'embarqué
Chargement...
Recherche...
Aucune correspondance
Référence de l'espace de nommage aidge_in_space.coding

Codage entropique des latents, une classe par famille de modèle d'entropie. Plus de détails...

Classes

class  LatentCoding
 Interface du codage entropique des latents d'un modèle. Plus de détails...
class  FactorizedCoding
 Prior factorisé (Ballé 2017, bmshj2018-factorized) : une table par canal. Plus de détails...
class  HyperpriorCoding
 Scale hyperprior gaussien (bmshj2018-hyperprior). Plus de détails...

Fonctions

 factorized_tables (prior, R=LIKELIHOOD_TABLE_RANGE)
 Tables de fréquences d'un prior factorisé, une par canal.
 channel_index (shape)
 Indice de table de chaque symbole d'un tenseur 1 x C x h x w : son canal.
 factorized_encode (prior, tables, y, real)
 Quantifie y autour des médianes et le code avec un prior factorisé.
 factorized_decode (prior, tables, data, shape)
 Décode un flux de factorized_encode().
 gaussian_tables ()
 Tables des lois gaussiennes discrètes, une par niveau de aidge_in_space.nn.SCALE_TABLE.

Variables

int LIKELIHOOD_TABLE_RANGE = 255
 Demi-largeur (en pas de quantification) du support des tables d'un prior factorisé, autour de la médiane.
 _GAUSSIAN_TABLES = None
 Cache de gaussian_tables().

Description détaillée

Codage entropique des latents, une classe par famille de modèle d'entropie.

Un codec appris (aidge_in_space.codecs.base.LearnedCodec) délègue à un objet LatentCoding tout ce qui dépend du modèle d'entropie :

  • la partie du réseau qui s'exécute à bord (onboard()) ;
  • la préparation des tables de fréquences (prepare()) ;
  • le codage des latents en un flux binaire, ou la seule estimation de son débit (encode()) ;
  • le décodage du flux (decode()).

Pour ajouter un modèle d'entropie (mean-scale hyperprior, contexte autorégressif...), il suffit d'écrire une nouvelle sous-classe de LatentCoding et de l'affecter à l'attribut coding du codec.

Documentation des fonctions

◆ channel_index()

aidge_in_space.coding.channel_index ( shape)

Indice de table de chaque symbole d'un tenseur 1 x C x h x w : son canal.

Paramètres
shapeForme (1, C, h, w).
Renvoie
Tableau d'entiers de longueur C*h*w, dans l'ordre de parcours de numpy (canal par canal).

◆ factorized_decode()

aidge_in_space.coding.factorized_decode ( prior,
tables,
data,
shape )

Décode un flux de factorized_encode().

Paramètres
priorPrior factorisé du modèle.
tablesTables de factorized_tables().
dataFlux binaire.
shapeForme (1, C, h, w) du tenseur codé.
Renvoie
Tenseur quantifié y_hat (médianes rajoutées).

◆ factorized_encode()

aidge_in_space.coding.factorized_encode ( prior,
tables,
y,
real )

Quantifie y autour des médianes et le code avec un prior factorisé.

Paramètres
priorPrior factorisé du modèle.
tablesTables de factorized_tables(), ou None si real est faux.
yTenseur 1 x C x h x w.
realTrue pour produire le flux, False pour la seule estimation du débit.
Renvoie
Dictionnaire décrit dans LatentCoding.encode().

◆ factorized_tables()

aidge_in_space.coding.factorized_tables ( prior,
R = LIKELIHOOD_TABLE_RANGE )

Tables de fréquences d'un prior factorisé, une par canal.

Paramètres
prioraidge_in_space.nn.FactorizedDensity ou aidge_in_space.nn.EntropyBottleneck.
RDemi-largeur du support autour de la médiane ; les valeurs plus éloignées sont échappées.
Renvoie
aidge_in_space.entropy.CdfTables pour les symboles q = round(y - médiane).

◆ gaussian_tables()

aidge_in_space.coding.gaussian_tables ( )

Tables des lois gaussiennes discrètes, une par niveau de aidge_in_space.nn.SCALE_TABLE.

Ces tables ne dépendent pas des poids : elles sont calculées une fois pour tous les modèles.

Renvoie
aidge_in_space.entropy.CdfTables indexées par aidge_in_space.nn.scale_indexes().