Sheng Cao、Chao-Yuan Wu、PhilippKrä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"
トレーニング画像は、列車のファイルのファイル名のtrain-path/filenameの形で整理する必要があります。同じことが評価画像にも当てはまります。
datasetsディレクトリにImagENET64とOpen Images(PNG)に使用されるトレーニングおよび評価ファイルを含めました。
ImagENET64の場合、デフォルトであるOpen Images HyperParametersとはわずかに異なるハイパーパラメーターセットを使用します。私たちの論文からの設定に基づいて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トレーニングと検証セットをこちらからダウンロードできます。
L3Cと同じオープン画像のトレーニング画像と検証画像のセットを使用します。
検証画像については、ここからダウンロードできます。
画像のトレーニングについては、L3Cリポジトリをクローンしてここからスクリプトを実行してください
オープン画像JPEGとオープン画像PNGの違いについては、この問題を参照してください。
EDSR、ロジスティック混合物、算術コーディングの実装についてL3Cに感謝します。 Open Images JPEGの前処理スクリプトの問題とそれらを迅速に解決してくれたFabian Mentzerに感謝します。