|
AIDGE IN SPACE
Banc d'essai de compression d'image apprise pour l'embarqué
|
Codage entropique : codeur arithmétique 32 bits (repris du notebook) et tables de fréquences. Plus de détails...
Classes | |
| class | BitWriter |
| Écriture bit à bit dans un tampon d'octets (bit de poids fort en premier). Plus de détails... | |
| class | BitReader |
| Lecture bit à bit d'un tampon d'octets ; renvoie des zéros au-delà de la fin. Plus de détails... | |
| class | ArithmeticEncoder |
| Codeur arithmétique entier sur STATE_BITS bits (méthode des bits en attente). Plus de détails... | |
| class | ArithmeticDecoder |
| Décodeur symétrique de ArithmeticEncoder. Plus de détails... | |
| class | CdfTables |
| Ensemble de tables de fréquences cumulées, prêtes pour le codeur arithmétique. Plus de détails... | |
Fonctions | |
| make_tables (pmfs, los, precision=PRECISION, tail_mass=1e-9) | |
| Convertit des lois discrètes en tables de fréquences entières. | |
| encode_symbols (values, table_idx, tables) | |
| Code une suite d'entiers, chacun avec sa table. | |
| decode_symbols (data, table_idx, tables) | |
| Décode un flux de encode_symbols(). | |
Variables | |
| int | PRECISION = 16 |
| Précision des fréquences, en bits : chaque table somme à 2^PRECISION. | |
| int | BYPASS_BITS = 20 |
| Nombre de bits bruts écrits après un symbole d'échappement. | |
| int | STATE_BITS = 32 |
| Taille des registres du codeur arithmétique, en bits. | |
| FULL | |
| Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart. | |
| HALF | |
| Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart. | |
| QUARTER | |
| Bornes de l'intervalle du codeur : 2^STATE_BITS, sa moitié et son quart. | |
| int | MASK = FULL - 1 |
| Masque des STATE_BITS bits de poids faible. | |
Codage entropique : codeur arithmétique 32 bits (repris du notebook) et tables de fréquences.
Chaque symbole est codé avec sa propre table (un canal pour un prior factorisé, un niveau d'échelle pour un prior gaussien). Les valeurs hors du support d'une table passent par un symbole d'échappement suivi de BYPASS_BITS bits bruts (codage zigzag), si bien que toute valeur entière de moins de 2^19 en valeur absolue reste codable.
| aidge_in_space.entropy.decode_symbols | ( | data, | |
| table_idx, | |||
| tables ) |
Décode un flux de encode_symbols().
| data | Flux binaire. |
| table_idx | Les mêmes indices de table qu'à l'encodage. |
| tables | Les mêmes CdfTables qu'à l'encodage. |
| aidge_in_space.entropy.encode_symbols | ( | values, | |
| table_idx, | |||
| tables ) |
Code une suite d'entiers, chacun avec sa table.
| values | Tableau d'entiers (aplati dans l'ordre de numpy). |
| table_idx | Indice de table de chaque valeur, même nombre d'éléments. |
| tables | CdfTables. |
| ValueError | si une valeur échappée dépasse BYPASS_BITS bits après codage zigzag. |
| aidge_in_space.entropy.make_tables | ( | pmfs, | |
| los, | |||
| precision = PRECISION, | |||
| tail_mass = 1e-9 ) |
Convertit des lois discrètes en tables de fréquences entières.
Les queues de probabilité inférieure à tail_mass sont coupées et renvoyées vers le symbole d'échappement ; chaque symbole conservé reçoit une fréquence d'au moins 1.
| pmfs | Liste de lois : pmfs[i][j] = P(valeur = los[i] + j). |
| los | Première valeur du support de chaque loi. |
| precision | Les fréquences de chaque table somment à 2^precision. |
| tail_mass | Masse en dessous de laquelle une queue est coupée. |
| ValueError | si une table a trop de symboles pour la précision demandée. |