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.nn

Modèles de Ballé et al. Plus de détails...

Classes

class  _LowerBound
 max(x, borne) dont le gradient passe quand x >= borne ou quand il pousse x vers le haut. Plus de détails...
class  GDN
 Generalized Divisive Normalization (Ballé et al. Plus de détails...
class  FrozenGDN
 GDN figée pour le déploiement : conv 1x1 (poids gamma, biais beta), racine, division. Plus de détails...
class  _FactorizedPrior
 Densité apprise indépendante par canal (base de FactorizedDensity et EntropyBottleneck). Plus de détails...
class  FactorizedDensity
 Prior factorisé simplifié du notebook : un scalaire par couche et par canal. Plus de détails...
class  EntropyBottleneck
 Entropy bottleneck de Ballé et al. Plus de détails...
class  Analysis2017
 Transformée d'analyse de Ballé 2017 : conv 9x9/4, 5x5/2, 5x5/2, chacune suivie d'une GDN. Plus de détails...
class  Synthesis2017
 Transformée de synthèse de Ballé 2017, symétrique de Analysis2017 (IGDN + conv transposées). Plus de détails...
class  Balle2017
 Modèle du notebook (E2ECompressor) : mêmes noms de couches, checkpoints compatibles. Plus de détails...
class  FactorizedPrior2018
 bmshj2018-factorized : 4 conv 5x5 de pas 2 avec GDN entre chacune, prior factorisé. Plus de détails...
class  ScaleHyperprior2018
 bmshj2018-hyperprior : un hyper-latent z, codé avec un prior factorisé, prédit l'échelle de chaque latent. Plus de détails...
class  HyperpriorOnboard
 Partie embarquée d'un hyperprior : g_a, h_a et h_s (pour le profilage et l'export). Plus de détails...

Fonctions

 lower_bound (x, bound)
 Borne inférieure qui laisse passer le gradient (voir _LowerBound) pendant l'entraînement.
 freeze (module)
 Copie d'un module où chaque GDN devient une FrozenGDN.
 _std_cdf (x)
 Fonction de répartition de la loi normale centrée réduite.
 gaussian_likelihood (y_hat, scales)
 Probabilité de chaque latent quantifié sous une gaussienne centrée.
 scale_indexes (scales)
 Indice, dans SCALE_TABLE, de la plus petite échelle supérieure ou égale à l'échelle prédite.
 gaussian_pmfs (tail_mass=1e-9)
 Lois discrètes centrées, une par niveau de SCALE_TABLE.
 _conv (cin, cout, k=5, s=2)
 Convolution k x k de pas s avec padding « same ».
 _deconv (cin, cout, k=5, s=2)
 Convolution transposée k x k qui multiplie la taille par s.
 load_compatible (model, state_dict)
 Charge un checkpoint en ignorant les tampons propres à CompressAI.
 n_params (module)
 Nombre de paramètres d'un module (sous-modules compris).
 bits_from_likelihood (lik)
 Débit estimé, en bits, d'un tenseur de probabilités : somme de -log2(p).

Variables

float SCALE_BOUND = 0.11
 Plus petite échelle de gaussienne utilisée (en dessous, la loi est trop piquée pour être codée).
 SCALE_TABLE = torch.exp(torch.linspace(math.log(0.11), math.log(256), 64))
 Les 64 échelles quantifiées de CompressAI, de 0,11 à 256 en progression géométrique.

Description détaillée

Modèles de Ballé et al.

: 2017 (notebook) et 2018 (factorisé, hyperprior).

Les noms de couches reprennent ceux du notebook (Balle2017) et de CompressAI (modèles 2018), ce qui permet de charger leurs checkpoints tels quels, sans dépendre de CompressAI.

Contrat commun des modèles (utilisé par aidge_in_space.codecs.base.LearnedCodec) :

  • in_ch, N, M : canaux de l'image, des couches cachées et du latent ;
  • pad_multiple : l'image est complétée à un multiple de cette taille ;
  • downsampling : facteur de réduction spatiale de g_a (latent = image / downsampling) ;
  • g_a, g_s : transformées d'analyse et de synthèse.

Documentation des fonctions

◆ bits_from_likelihood()

aidge_in_space.nn.bits_from_likelihood ( lik)

Débit estimé, en bits, d'un tenseur de probabilités : somme de -log2(p).

Paramètres
likProbabilités (bornées à 1e-9 pour éviter log(0)).
Renvoie
Nombre de bits (float).

◆ freeze()

aidge_in_space.nn.freeze ( module)

Copie d'un module où chaque GDN devient une FrozenGDN.

Paramètres
moduleModule quelconque (non modifié).
Renvoie
Copie profonde en mode évaluation, exportable en ONNX avec des opérateurs simples.

◆ gaussian_likelihood()

aidge_in_space.nn.gaussian_likelihood ( y_hat,
scales )

Probabilité de chaque latent quantifié sous une gaussienne centrée.

Paramètres
y_hatLatents quantifiés (entiers).
scalesÉcarts-types prédits par h_s, même forme.
Renvoie
Tenseur de probabilités de même forme.

◆ gaussian_pmfs()

aidge_in_space.nn.gaussian_pmfs ( tail_mass = 1e-9)

Lois discrètes centrées, une par niveau de SCALE_TABLE.

Paramètres
tail_massMasse des queues coupées de part et d'autre.
Renvoie
Couple (pmfs, los) : probabilités de chaque support et première valeur de chacun, au format de aidge_in_space.entropy.make_tables().

◆ load_compatible()

aidge_in_space.nn.load_compatible ( model,
state_dict )

Charge un checkpoint en ignorant les tampons propres à CompressAI.

Paramètres
modelModèle à remplir.
state_dictDictionnaire de poids (par exemple un checkpoint CompressAI).
Renvoie
Le modèle, en mode évaluation.
Exceptions
KeyErrorsi une clé du modèle manque dans le checkpoint.

◆ lower_bound()

aidge_in_space.nn.lower_bound ( x,
bound )

Borne inférieure qui laisse passer le gradient (voir _LowerBound) pendant l'entraînement.

Paramètres
xTenseur.
boundBorne inférieure (scalaire).
Renvoie
max(x, bound).

◆ scale_indexes()

aidge_in_space.nn.scale_indexes ( scales)

Indice, dans SCALE_TABLE, de la plus petite échelle supérieure ou égale à l'échelle prédite.

Paramètres
scalesÉcarts-types prédits par h_s.
Renvoie
Tenseur d'entiers de même forme (indices de table pour le codeur arithmétique).