Sheng Cao, Chao-Yuan Wu, Philipp Krähenbühl.

@article { cao2020lossless ,
title = { Lossless Image Compression through Super-Resolution } ,
author = { Cao, Sheng and Wu, Chao-Yuan and and Kr{"a}henb{"u}hl, Philipp } ,
year = { 2020 } ,
journal = { arXiv preprint arXiv:2004.02872 } ,
}Si vous utilisez notre base de code, veuillez envisager également de citer L3C
Il s'agit de la mise en œuvre officielle de SREC dans Pytorch. SREC cadres sans perte de compression en tant que problème de super-résolution et applique des réseaux de neurones pour compresser les images. SREC peut atteindre des taux de compression de pointe sur de grands ensembles de données avec des temps d'exécution pratiques. La formation, la compression et la décompression sont entièrement prises en charge et open source.
Nous recommandons les étapes suivantes pour commencer.
Voir ici pour les instructions d'installation.
Nous avons publié des modèles formés pour ImageNet64 et Open Images (PNG). Tous les résultats de compression sont mesurés en bits par sous-pixel (BPSP).
| Ensemble de données | Bpsp | Poids du modèle |
|---|---|---|
| Imagenet64 | 4.29 | Modèles / ImageNet64.pth |
| Images ouvertes | 2.70 | modèles / openImages.pth |
Pour exécuter du code, vous devez être dans le répertoire de haut niveau.
python3 -um src.train
--train-path "path to directory of training images"
--train-file "list of filenames of training images, one filename per line"
--eval-path "path to directory of eval images"
--eval-file "list of filenames of eval images, one filename per line"
--plot "directory to store model output"
--batch "batch size"
Les images d'entraînement doivent être organisées sous forme de train-path/filename à partir du nom de fichier dans le fichier de train. La même chose s'applique aux images d'évaluation.
Nous avons inclus nos fichiers de formation et d'évaluation utilisés pour ImageNet64 et Open Images (PNG) dans le répertoire datasets .
Pour ImageNet64, nous utilisons un ensemble d'hyperparamètres légèrement différent des hyperparamètres d'images ouvertes, qui sont la valeur par défaut. Pour entraîner ImageNet64 en fonction des paramètres de notre article, exécutez
python3 -um src.train
--train-path "path to directory of training images"
--train-file "list of filenames of training images, one filename per line"
--eval-path "path to directory of eval images"
--eval-file "list of filenames of eval images, one filename per line"
--plot "directory to store model output"
--batch "batch size"
--epochs 10
--lr-epochs 1
--crop 64
Exécutez python3 -um src.train --help pour une liste d'hyperparamètres réglables.
Compte tenu d'un point de contrôle de modèle, cela évalue les bits / sous-pixels théoriques (BPSP) basés sur le journal log. Le journal de journalisation BPSP est inférieur à la compression réelle BPSP.
python3 -um src.eval
--path "path to directory of images"
--file "list of filenames of images, one filename per line"
--load "path to model weights"
Avec Torchac installé, vous pouvez exécuter la compression / décompression pour convertir n'importe quelle image en fichiers .srec. Le suivant compresse un répertoire d'images.
python3 -um src.encode
--path "path to directory of images"
--file "list of filenames of images, one filename per line"
--save-path "directory to save new .srec files"
--load "path to model weights"
Si vous souhaitez un runtime précis, nous vous recommandons d'exécuter Python avec un indicateur -O pour désactiver les affirmations. Nous incluons également un indicateur --decode facultatif afin que vous puissiez vérifier si la décompression du fichier .srec donne l'image d'origine, ainsi que de fournir du décodage.
Pour convertir les fichiers .srec en PNG, vous pouvez exécuter
python3 -um src.decode
--path "path to directory of .srec images"
--file "list of filenames of .srec images, one filename per line"
--save-path "directory to save png files"
--load "path to model weights"
Vous pouvez télécharger les ensembles de formation et de validation ImageNet64 ici.
Nous utilisons le même ensemble d'images de formation et de validation d'images ouvertes que L3C.
Pour les images de validation , vous pouvez les télécharger ici .
Pour la formation des images , veuillez cloner le réprimande L3C et exécuter le script à partir d'ici
Voir ce problème pour les différences entre les images ouvertes jpeg et les images ouvertes png.
Merci à L3C pour les implémentations d'EDSR, de mélanges logistiques et de codage arithmétique. Un merci spécial à Fabian Mentzer de nous avoir informé des problèmes avec le script de prétraitement pour les images ouvertes jpeg et les résoudre rapidement.