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 } ,
}Se você usar nossa base de código, considere também citar L3C
Esta é a implementação oficial do SREC em Pytorch. O SREC enquadra a compactação sem perda como um problema de super-resolução e aplica redes neurais para comprimir imagens. O SREC pode atingir taxas de compressão de ponta em grandes conjuntos de dados com horários de execução práticos. Treinamento, compressão e descompressão são totalmente suportados e de origem aberta.
Recomendamos as etapas a seguir para começar.
Veja aqui para obter instruções de instalação.
Lançamos modelos treinados para o ImageNet64 e o Open Images (PNG). Todos os resultados da compressão são medidos em bits por subpixel (BPSP).
| Conjunto de dados | BPSP | Pesos do modelo |
|---|---|---|
| Imagenet64 | 4.29 | modelos/imagenet64.Pth |
| Imagens abertas | 2.70 | models/OpenImages.tth |
Para executar o código, você precisa estar no diretório de nível 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"
As imagens de treinamento devem ser organizadas na forma de train-path/filename do nome do arquivo no arquivo de trem. A mesma coisa se aplica às imagens de avaliação.
Incluímos nossos arquivos de treinamento e avaliação usados para ImageNet64 e Open Images (PNG) no diretório datasets .
Para o ImageNet64, usamos um conjunto ligeiramente diferente de hiperparâmetros do que os hiperparâmetros de imagens abertas, que são o padrão. Para treinar ImageNet64 com base em configurações de nosso artigo, execute
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
Run python3 -um src.train --help para uma lista de hiperparâmetros ajustáveis.
Dado um ponto de verificação do modelo, isso avalia bits/subpixels teóricos (BPSP) com base na probabilidade de log. O BPSP de Log-Prove de Log-BODIDOS O BPSP real de compressão.
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"
Com o Torchac instalado, você pode executar a compactação/descompressão para converter qualquer imagem em arquivos .srec. O seguinte comprime um diretório de imagens.
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"
Se você deseja um tempo de execução preciso, recomendamos a execução do Python com -O sinalizador para desativar as afirmações. Também incluímos um sinalizador opcional --decode para que você possa verificar se a descompressão do arquivo .srec fornece a imagem original, além de fornecer tempo de execução para a decodificação.
Para converter arquivos .srec em png, você pode executar
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"
Você pode baixar conjuntos de treinamento e validação ImageNet64 aqui.
Utilizamos o mesmo conjunto de imagens de treinamento e validação de imagens abertas como L3C.
Para imagens de validação , você pode baixá -las aqui .
Para treinar imagens , clone o repo L3C e execute o script daqui
Veja esta questão para obter diferenças entre imagens abertas jpeg e imagens abertas png.
Agradecemos ao L3C pelas implementações do EDSR, misturas logísticas e codificação aritmética. Agradecimentos especiais a Fabian Mentzer por nos informar sobre os problemas com o script de pré -processamento de imagens abertas JPEG e resolvê -las rapidamente.