SwinIR

画像復元用のSwin Transformerネットワークです。LibreYOLOは4倍超解像チェックポイントとして、公式の軽量ジェネレーター、実世界向け中規模ジェネレーター、実世界向け大規模ジェネレーターの推論と検証に対応します。

タスク
restore
サイズ
s, m, l at 64 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Computer Vision Lab, ETH ZurichのSwinIR、Apache-2.0。論文ソース
ライセンス
コード:Apache-2.0、重み:Apache-2.0。商用利用

インストール

SwinIRに任意の追加パッケージは必要ありません。インポートするものはすべて基本インストールに含まれています。

bash
pip install libreyolo

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSwinIRm-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)
CLI
libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
大きな画像向けのタイル分割
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tileは順伝播を重なり合うタイルに分割し、継ぎ目を再び合成する# tile_padは各タイルを切り戻す前に周囲へ加えるハロー領域# どちらもPython専用のキーワード引数であり# CLIフラグではないresult = model("large-photo.jpg", tile=512, tile_pad=16, save=True)

復元結果にボックスは含まれません。result.restored は、各次元が入力の4倍のキャンバスを持つ密な (H, W, 3) uint8 RGB画像です。save=True を指定すると、アノテーション付きプロットではなく、その画像を直接書き込みます。入力はリサイズされずに8の倍数へパディングされるため、推論は写真自体の解像度で実行されます。メモリに収まらない大きさのソースは tiletile_pad で分割でき、出力時にタイルの継ぎ目が再び合成されます。ソース、ストリーミング、結果の処理については推論を参照してください。

バリアント

3つのサイズがあり、すべて拡大率は4倍に固定されています。s は公式の軽量ジェネレーターで、4段のResidual Swin Transformer Block(RSTB)とpixel-shuffle-directアップサンプリングを備えます。ml は実世界向けの中規模および大規模ジェネレーターで、それぞれ6段と9段のRSTB、およびバイキュービック縮小だけでなく実世界の劣化を想定した最近傍補間と畳み込みによるアップサンプラーを備えます。

検証

val() は復元出力ときれいな目標画像との間でPSNRとSSIMを測定します。どちらも境界の切り取りやリサイズを行わず、元のキャンバス上のRGBで計算されます。SSIMはsigma 1.5の11x11 Gaussianウィンドウを使い、3つの色チャンネル全体で平均されます。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])
CLI
libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yaml

データセット引数には、劣化した入力画像のディレクトリと同じ解像度のきれいな目標画像のディレクトリを対応付けるYAMLを指定します。正確なキーについてはデータセット形式を参照してください。

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore to ONNX:対応restore to TorchScript:対応restore to ExecuTorch:非対応restore to TensorRT:対応restore to OpenVINO:対応restore to Paddle:非対応restore to MNN:非対応restore to RKNN:非対応restore to ncnn:非対応restore to TFLite:対応restore to CoreML:非対応restore to Core AI:非対応

エクスポート済み成果物はファイル接尾辞に基づいて LibreYOLO() から再度読み込めます。そのため、.onnx または .engine ファイルはチェックポイントと同様に動作し、同じ Results を返します。このファミリーでは、ExecuTorchと、マトリックスでブロック対象と示されたすべての形式を利用できません。ONNX、TorchScript、TensorRT、OpenVINO、TFLiteは利用できます。エクスポートには、すべての形式で受け付ける引数と、一部の形式で追加される引数が記載されています。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # imgszを省略すると作業解像度ではなく小さな内部パッチサイズが# デフォルトになるため、実際にデプロイ先からモデルへ渡すサイズを指定model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)
CLI
libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で経路を選ぶため、エクスポート済み成果物も# 通常のチェックポイントと同様に読み込まれ、同じResultsオブジェクトを返すmodel = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)

チェックポイント

このファミリーで公開されているすべての重みファイルです。

ファイル入力(px)重みのライセンス
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-2.0

上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。

ライセンス

ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。

これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。

原著作物
SwinIR, Computer Vision Lab, ETH Zurich
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/JingyunLiang/SwinIR
LibreYOLOのコード
MIT
重み
Apache-2.0、huggingface.co/LibreYOLOで再公開
解釈
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; SwinIR's real-world variants need a degradation and GAN training pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.

引用

@article{liang2021swinir,
  title={SwinIR: Image Restoration Using Swin Transformer},
  author={Liang, Jingyun and Cao, Jiezhang and Sun, Guolei and Zhang, Kai and Van Gool, Luc and Timofte, Radu},
  journal={arXiv preprint arXiv:2108.10257},
  year={2021}
}

著者によるgithub.com/JingyunLiang/SwinIR#citationの引用ブロックからコピーしています。

LibreYOLO v1.5.0で検証済みです。このページのサポート表、チェックポイント、ベンチマーク値は手作業で記述したものではなく、リリース済みライブラリと公開済みの重みから生成されています。