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 } ,
}코드베이스를 사용하는 경우 L3C 인용도 고려하십시오.
이것은 Pytorch에서 SREC의 공식 구현입니다. SREC는 사망자가없는 압축을 수퍼 해상도 문제로 프레임하고 신경망을 적용하여 이미지를 압축합니다. SREC는 실제 런타임이있는 대규모 데이터 세트에서 최첨단 압축 속도를 달성 할 수 있습니다. 훈련, 압축 및 감압은 완전히 지원되고 개방적입니다.
시작하기위한 다음 단계를 권장합니다.
설치 지침은 여기를 참조하십시오.
Imagenet64 및 Open Images (PNG) 모두에 대한 숙련 된 모델을 출시했습니다. 모든 압축 결과는 서브 픽셀 (BPSP) 당 비트로 측정됩니다.
| 데이터 세트 | BPSP | 모델 가중치 |
|---|---|---|
| imagenet64 | 4.29 | 모델/imagenet64.pth |
| 열린 이미지 | 2.70 | 모델/OpenImages.pth |
코드를 실행하려면 최상위 디렉토리에 있어야합니다.
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"
훈련 이미지는 기차 파일의 Filename의 train-path/filename 형태로 구성되어야합니다. 이미지 평가에도 동일한 것이 적용됩니다.
datasets 디렉토리의 ImageNet64 및 Open Images (PNG)에 사용되는 교육 및 평가 파일이 포함되었습니다.
imagenet64의 경우, 기본값 인 열린 이미지 하이퍼 파라미터와 약간 다른 하이퍼 파라미터 세트를 사용합니다. 우리의 논문의 설정을 바탕으로 imagenet64를 훈련 시키려면
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
조정 가능한 하이퍼 파라미터 목록을 보려면 python3 -um src.train --help 실행하십시오.
모델 체크 포인트가 주어지면 이것은 로그-이성에 기초한 이론적 비트/서브 픽셀 (BPSP)을 평가합니다. Log-Likelihood BPSP는 실제 압축 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"
Torchac이 설치된 경우 압축/압축 압축을 실행하여 이미지를 .SREC 파일로 변환 할 수 있습니다. 다음은 이미지 디렉토리를 압축합니다.
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"
정확한 런타임을 원한다면 Asserts를 비활성화하려면 -O 플래그로 Python을 실행하는 것이 좋습니다. 또한 옵션 --decode 플래그가 포함되어있어 .srec 파일이 원래 이미지를 제공 할뿐만 아니라 디코딩 런타임을 제공하는지 확인할 수 있습니다.
.srec 파일을 PNG로 변환하려면 실행할 수 있습니다
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"
여기에서 imagenet64 교육 및 검증 세트를 다운로드 할 수 있습니다.
Open Images의 동일한 교육 및 검증 이미지를 L3C와 사용합니다.
유효성 검사 이미지 의 경우 여기에서 다운로드 할 수 있습니다.
교육 이미지를 보려면 L3C Repo를 복제하고 여기에서 스크립트를 실행하십시오.
열린 이미지 JPEG와 Open Images PNG의 차이점은이 문제를 참조하십시오.
EDSR, 로지스틱 혼합물 및 산술 코딩의 구현에 대한 L3C에 감사드립니다. Open Images의 전처리 스크립트 JPEG에 대한 문제에 대해 알리고 빠르게 해결 한 Fabian Mentzer에게 특별한 감사를드립니다.