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 usa nuestra base de código, considere también citar L3C
Esta es la implementación oficial de SREC en Pytorch. SREC enmarca la compresión sin pérdidas como un problema de súper resolución y aplica redes neuronales para comprimir imágenes. SREC puede lograr tasas de compresión de última generación en grandes conjuntos de datos con tiempos de ejecución prácticos. La capacitación, la compresión y la descompresión son totalmente compatibles y de código abierto.
Recomendamos los siguientes pasos para comenzar.
Consulte aquí para obtener instrucciones de instalación.
Hemos lanzado modelos entrenados tanto para Imagenet64 como para imágenes abiertas (PNG). Todos los resultados de compresión se miden en bits por subpixel (BPSP).
| Conjunto de datos | Bpsp | Pesas de modelos |
|---|---|---|
| Imagenet64 | 4.29 | modelos/imagenet64.pth |
| Imágenes abiertas | 2.70 | modelos/OpenImages.pth |
Para ejecutar código, debe estar en el directorio de nivel superior.
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"
Las imágenes de entrenamiento deben organizarse en forma de train-path/filename del nombre de archivo en el archivo de trenes. Lo mismo se aplica a las imágenes eval.
Hemos incluido nuestros archivos de capacitación y evaluación utilizados para Imagenet64 e imágenes abiertas (PNG) en el directorio datasets .
Para ImageNet64, utilizamos un conjunto ligeramente diferente de hiperparámetros que los hiperparámetros de imágenes abiertas, que son los predeterminados. Para entrenar Imagenet64 basado en la configuración de nuestro artículo, ejecute
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
Ejecute python3 -um src.train --help para una lista de hiperparámetros sintonizables.
Dado un punto de control modelo, esto evalúa los bits/subpíxeles teóricos (BPSP) basado en la probabilidad log. La verificación log BPSP inferior limita la compresión real 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"
Con Torchac instalado, puede ejecutar compresión/descompresión para convertir cualquier imagen en archivos .sREC. El siguiente comprime un directorio de imágenes.
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 desea un tiempo de ejecución preciso, le recomendamos ejecutar Python con la bandera -O para deshabilitar Afirman. También incluimos un indicador opcional --decode para que pueda verificar si descomprimir el archivo .sREC proporciona la imagen original, así como proporcionar tiempo de ejecución para la decodificación.
Para convertir archivos .sREC en PNG, puede ejecutar
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"
Puede descargar conjuntos de entrenamiento y validación de ImageNet64 aquí.
Utilizamos el mismo conjunto de imágenes de entrenamiento y validación de imágenes abiertas que L3C.
Para las imágenes de validación , puede descargarlas aquí .
Para las imágenes de capacitación , clone el repositorio de L3C y ejecute el script desde aquí
Vea este problema para ver las diferencias entre las imágenes abiertas JPEG y las imágenes abiertas PNG.
Gracias a L3C por las implementaciones de EDSR, mezclas logísticas y codificación aritmética. Un agradecimiento especial a Fabian Mentzer por informarnos sobre los problemas con el script de preprocesamiento para imágenes abiertas JPEG y resolverlas rápidamente.