論文|プロジェクト
これは、 Pytorchによる反復洗練(SR3)を介した画像超解像度の非公式の実装です。
紙の説明から異なる可能性のあるいくつかの実装の詳細があります。これは、詳細が欠落しているため、実際のSR3構造とは異なる場合があります。具体的には、
DDPMのようなResNetブロックとチャネル連結スタイルを使用しました。DDPMのように。FilM構造がWaveGradで行ったように、アフィン変換なしでそれを埋め込みました。高級したい場合
★★★新しい:フォローアップパレットイメージからイメージからイメージへの拡散モデルが利用可能になりました。こちらの詳細をご覧ください★★★
注:最大逆ステップの予算を設定しますNvidia 1080Tiでモデルパラメーターを制限し、画像ノイズと色相の偏差が高解像度の画像に表示されることがあり、スコアが低くなります。最適化の余地がたくさんあります。より広範な実験とコードの強化については、あらゆる貢献を歓迎します。
| タスク/メトリック | SSIM(+) | psnr(+) | fid( - ) | IS(+) |
|---|---|---|---|---|
| 16×16-> 128×128 | 0.675 | 23.26 | - | - |
| 64×64-> 512×512 | 0.445 | 19.87 | - | - |
| 128×128 | - | - | ||
| 1024×1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtこのペーパーは、「拡散確率モデルの除去」に基づいており、それぞれモデルの埋め込み入力としてタイムステップ/ガンマを使用するDDPM/SR3ネットワーク構造の両方を構築します。実験では、SR3モデルは、同じ逆ステップと学習率でより良い視覚的結果を達成できます。さまざまなモデルをトレーニングするために、注釈付きサフィックス名を使用してJSONファイルを選択できます。
| タスク | プラットフォームコード:QWER) |
|---|---|
| 16×16-> 128×128 FFHQ -Celebahq | Google Drive | Baidu Yun |
| 64×64-> 512×512 FFHQ -Celebahq | Google Drive | Baidu Yun |
| FFHQの128×128フェイスジェネレーション | Google Drive | Baidu Yun |
# Download the pretrained model and edit [sr|sample]_[ddpm|sr3]_[resolution option].json about "resume_state":
"resume_state" : [ your pretrained model ' s path ]データがない場合は、次の手順でデータを準備できます。
データセットをダウンロードして、スクリプトを使用してLMDBまたはPNG形式で準備します。
# Resize to get 16×16 LR_IMGS and 128×128 HR_IMGS, then prepare 128×128 Fake SR_IMGS by bicubic interpolation
python data / prepare_data . py - - path [ dataset root ] - - out [ output root ] - - size 16 , 128 - l次に、データセットの構成をデータパスと画像解像度に変更する必要があります。
"datasets" : {
"train" : {
"dataroot" : " dataset/ffhq_16_128 " , // [output root] in prepare.py script
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " lmdb " , //lmdb or img, path of img files
},
"val" : {
"dataroot" : " dataset/celebahq_16_128 " , // [output root] in prepare.py script
}
},また、次の手順で画像データを使用することもできます。また、データセットフォルダーにいくつかの例があります。
最初は、このような画像レイアウトを整理する必要があります。この手順は、 data/prepare_data.pyで自動的に終了できます。
# set the high/low resolution images, bicubic interpolation images path
dataset/celebahq_16_128/
├── hr_128 # it's same with sr_16_128 directory if you don't have ground-truth images.
├── lr_16 # vinilla low resolution images
└── sr_16_128 # images ready to super resolution # super resolution from 16 to 128
python data / prepare_data . py - - path [ dataset root ] - - out celebahq - - size 16 , 128 - l注:バニラ高解像度の画像があるかどうかにかかわらず、上記のスクリプトを使用できます。
次に、データセットの構成をデータパスと画像解像度に変更する必要があります。
"datasets" : {
"train|val" : { // train and validation part
"dataroot" : " dataset/celebahq_16_128 " ,
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " img " , //lmdb or img, path of img files
}
}, # Use sr.py and sample.py to train the super resolution task and unconditional generation task, respectively.
# Edit json files to adjust network structure and hyperparameters
python sr . py - p train - c config / sr_sr3 . json # Edit json to add pretrain model path and run the evaluation
python sr . py - p val - c config / sr_sr3 . json
# Quantitative evaluation alone using SSIM/PSNR metrics on given result root
python eval . py - p [ result root ]Own Dataにステップのような画像パスを設定し、スクリプトを実行します。
# run the script
python infer . py - c [ config file ]ライブラリは、体重とバイアスを使用した実験追跡、モデルチェックポイント、モデル予測の視覚化をサポートしています。アクセストークンを使用して、W&Bとログインをインストールする必要があります。
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
W&Bロギング機能は、 sr.py 、 sample.py 、およびinfer.pyファイルに追加されます。 -enable_wandbを渡してロギングを開始できます。
-log_wandb_ckpt :この引数を-enable_wandbと一緒に渡して、モデルチェックポイントをW&Bアーティファクトとして保存します。 sr.pyとsample.py両方がモデルチェックポイントで有効になっています。-log_eval :この引数を-enable_wandbと一緒に渡して、インタラクティブなW&Bテーブルとして評価結果を保存します。この機能ではsr.pyのみが有効になっていることに注意してください。 sample.py評価モードで実行すると、生成された画像は自動的に画像メディアパネルとしてログに記録されます。-log_infer :実行中はinfer.pyを実行しているときに、この引数と-enable_wandbとともにこの引数を渡して、インタラクティブなW&Bテーブルとして推論結果をログに記録します。これらの機能の使用については、こちらをご覧ください。
私たちの仕事は、次の理論的作品に基づいています。
さらに、私たちは次のプロジェクトから多くの利益を得ています。