Markdownで表示

Real-ESRGAN

バイキュービック縮小だけでなく、合成した劣化を使って学習された実用的なブラインド超解像アップスケーラーです。LibreYOLOは4倍、2倍、高速4倍チェックポイントの推論と検証に対応します。

タスク
restore
サイズ
x4, x2, x4t at 64 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of SciencesのReal-ESRGAN、BSD-3-Clause。論文ソース
ライセンス
コード:Apache-2.0 and BSD-3-Clause、重み:BSD-3-Clause。商用利用

インストール

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

bash
pip install libreyolo

推論

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

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

復元結果にボックスは含まれません。result.restored は、各次元が入力の Results.restore_scale 倍のキャンバスを持つ密な (H, W, 3) uint8 RGB画像です。save=True を指定すると、アノテーション付きプロットではなく、その画像を直接書き込みます。入力はRGBに変換され、alphaチャンネルは破棄されます。メモリに収まらない大きさのソースは tiletile_pad で分割でき、出力時にタイルの継ぎ目が再び合成されます。ソース、ストリーミング、結果の処理については推論を参照してください。

バリアント

拡大率にちなんで名付けられた3つのチェックポイントがあります。x4 は、23個のResidual-in-Residual Dense Blockを持つRRDBNet(RealESRGAN_x4plus)で、4倍処理における品質重視のデフォルトです。x2 は2倍処理用の同じRRDBNetアーキテクチャです。x4t はSRVGGNetCompact(realesr-general-x4v3)で、動画や低レイテンシでの4倍処理向けに構築された、より小さく高速なジェネレーターです。アップストリームの汎用モデルには、推論時に合成する一対のノイズ除去強度ネットワークも含まれます。この移植では、その強度調整機能を提供せず、基本の x4t ジェネレーターを実行します。

検証

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

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRealESRGANx4-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])
CLI
libreyolo val model=LibreRealESRGANx4-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 を返します。エクスポートには、すべての形式で受け付ける引数と、一部の形式で追加される引数が記載されています。

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

チェックポイント

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

ファイル入力(px)重みのライセンス
restore
LibreRealESRGANx4t-restore.ptbsd-3-clause
LibreRealESRGANx4-restore.ptbsd-3-clause
LibreRealESRGANx2-restore.ptbsd-3-clause

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

ライセンス

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

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

原著作物
Real-ESRGAN, Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences
アップストリームのライセンス
BSD-3-Clause
アップストリームのソース
github.com/xinntao/Real-ESRGAN
LibreYOLOのコード
MIT
重み
BSD-3-Clause、huggingface.co/LibreYOLOで再公開
解釈
BSD-3-Clause is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, the condition list and the disclaimer with any copy you redistribute, in source or compiled form, and its third clause forbids using the names of Xintao Wang or the project's contributors to endorse or promote a derived product without separate written permission. It carries no patent grant, unlike Apache-2.0. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; Real-ESRGAN's training is a GAN over a synthetic degradation pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.

引用

@InProceedings{wang2021realesrgan,
    author    = {Xintao Wang and Liangbin Xie and Chao Dong and Ying Shan},
    title     = {Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data},
    booktitle = {International Conference on Computer Vision Workshops (ICCVW)},
    date      = {2021}
}

著者によるgithub.com/xinntao/Real-ESRGAN#bibtexの引用ブロックからコピーしています。

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