SwinIR
画像復元用のSwin Transformerネットワークです。LibreYOLOは4倍超解像チェックポイントとして、公式の軽量ジェネレーター、実世界向け中規模ジェネレーター、実世界向け大規模ジェネレーターの推論と検証に対応します。
- タスク
- restore
- サイズ
- s, m, l at 64 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:Apache-2.0、重み:Apache-2.0。商用利用
インストール
SwinIRに任意の追加パッケージは必要ありません。インポートするものはすべて基本インストールに含まれています。
pip install libreyolo推論
重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。
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)libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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の倍数へパディングされるため、推論は写真自体の解像度で実行されます。メモリに収まらない大きさのソースは tile と tile_pad で分割でき、出力時にタイルの継ぎ目が再び合成されます。ソース、ストリーミング、結果の処理については推論を参照してください。
バリアント
3つのサイズがあり、すべて拡大率は4倍に固定されています。s は公式の軽量ジェネレーターで、4段のResidual Swin Transformer Block(RSTB)とpixel-shuffle-directアップサンプリングを備えます。m と l は実世界向けの中規模および大規模ジェネレーターで、それぞれ6段と9段のRSTB、およびバイキュービック縮小だけでなく実世界の劣化を想定した最近傍補間と畳み込みによるアップサンプラーを備えます。
検証
val() は復元出力ときれいな目標画像との間でPSNRとSSIMを測定します。どちらも境界の切り取りやリサイズを行わず、元のキャンバス上のRGBで計算されます。SSIMはsigma 1.5の11x11 Gaussianウィンドウを使い、3つの色チャンネル全体で平均されます。
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"])libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yamlデータセット引数には、劣化した入力画像のディレクトリと同じ解像度のきれいな目標画像のディレクトリを対応付けるYAMLを指定します。正確なキーについてはデータセット形式を参照してください。
エクスポート
| タスク | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore 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は利用できます。エクスポートには、すべての形式で受け付ける引数と、一部の形式で追加される引数が記載されています。
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # imgszを省略すると作業解像度ではなく小さな内部パッチサイズが# デフォルトになるため、実際にデプロイ先からモデルへ渡すサイズを指定model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で経路を選ぶため、エクスポート済み成果物も# 通常のチェックポイントと同様に読み込まれ、同じResultsオブジェクトを返すmodel = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)チェックポイント
このファミリーで公開されているすべての重みファイルです。
| ファイル | 入力(px) | 重みのライセンス |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-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の引用ブロックからコピーしています。