transformers/Swin2SR のインストールと動作確認(超解像)(Python 3.12,PyTorch を使用)(Windows 上)

URL: https://huggingface.co/docs/transformers/model_doc/swin2sr

手順の要点: Python 3.12PyTorchtransformers を用いて,Swin2SR による超解像を行う.

ソフトウェア等の利用条件等は,利用者で確認すること.

前準備

Python 3.12 のインストール

Pythonのインストールを行い、Pythonのプログラムを実行する環境を整える。扱う環境は、Windows搭載パソコンである。金子研究室では、Python 3.12.10を推奨する。

[Windows での Python 3.12 のインストール手順を見るには、ここをクリック]

Windows での Python 3.12 のインストール

以下のいずれかの方法でPython 3.12をインストールする。Pythonがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。

REM Python 3.12 をシステム領域にインストール
winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\""
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Python 3.12 のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )

REM Python と Scripts を PATH 先頭に追加
powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; if(Test-Path $p){$k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); $new=$c; if((';'+$new+';') -notlike \"*;$p;*\"){$new=$p+';'+$new}; if((';'+$new+';') -notlike \"*;$s;*\"){$new=$s+';'+$new}; if($new -ne $c){$k.SetValue('Path',$new,$t)}; $k.Close()}"

REM 現在のセッションにも反映(システムPATHを再取得して連結)
for /f "usebackq tokens=2,*" %A in (`reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path`) do set "PATH=%B"

REM pip / wheel の更新
python -m pip install --no-user -U pip wheel
if not "%ERRORLEVEL%"=="0" ( color 0c & echo pip / wheel の更新に失敗しました & ping 127.0.0.1 -n 6 >nul & color )

方法 2:インストーラーによるインストール

  1. Python公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンからWindows用インストーラーをダウンロードする。
  2. ダウンロードしたインストーラーを実行する。
  3. 初期画面の下部に表示される「Add python.exe to PATH」にチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから python コマンドを実行できない。
  4. 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。

インストールの確認

コマンドプロンプトで以下を実行する。

python --version

バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。

PyTorch, transformers のインストール

コマンドプロンプト管理者として実行し,次のコマンドを実行

CUDA 対応の PyTorch をインストールするコマンドは,PyTorch 公式サイトで確認できる: https://pytorch.org/get-started/locally/

pip でインストールする現行の PyTorch は,CUDA の実行に必要なライブラリを wheel パッケージ内に同梱しているため,NVIDIA CUDA ツールキットや NVIDIA cuDNN をシステムに個別インストールする必要はない.NVIDIA製GPUを使用する場合は,最新のNVIDIA ドライバのインストールのみが必要である.

python -m pip install -U numpy pillow
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
python -m pip install -U transformers

NVIDIA製GPUを搭載していないPCの場合,あるいはCPUのみで動作確認を行う場合は,PyTorch のインストールに次のコマンドを使用する.

python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

このページで説明のために使用する画像

画像ファイル fruits.jpg, home.jpg のダウンロード

画像ファイル fruits.jpg, home.jpg のダウンロードは, Windows でコマンドプロンプト管理者として実行し, 次のコマンドを実行する.

mkdir c:\image
cd c:\image
curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
curl -L https://github.com/opencv/opencv/blob/master/samples/data/home.jpg?raw=true -o home.jpg

上のコマンドがうまく実行できないときは, 別ページを参考にダウンロードを行う.

https://github.com/opencv/opencv/tree/master/samples/data で公開されている fruits.jpg, home.jpg を使用する

超解像(transformers/Swin2SR, Python 3.12, PyTorch を使用)

Windows での手順を下に示す.Ubuntu でも同様の手順になる.

  1. Windows で,コマンドプロンプト管理者として実行
  2. Python プログラムの実行

    まず,次のコマンドを実行し,作業ディレクトリに移動する.

    copy c:\image\fruits.jpg .
    python
    

    続けて,次の Python プログラムを実行する.事前学習済みモデルは,初回実行時に caidas/swin2SR-classical-sr-x2-64 から自動的にダウンロードされる.「fruits.jpg」のところは,画像ファイル名を指定すること.

    import torch
    from PIL import Image
    from transformers import AutoImageProcessor, Swin2SRForImageSuperResolution
    
    processor = AutoImageProcessor.from_pretrained("caidas/swin2SR-classical-sr-x2-64")
    model = Swin2SRForImageSuperResolution.from_pretrained("caidas/swin2SR-classical-sr-x2-64")
    
    image = Image.open("fruits.jpg").convert("RGB")
    inputs = processor(image, return_tensors="pt")
    
    with torch.no_grad():
        outputs = model(**inputs)
    
    output = outputs.reconstruction.data.squeeze().float().cpu().clamp_(0, 1).numpy()
    output = (output.transpose(1, 2, 0) * 255.0).round().astype("uint8")
    Image.fromarray(output).save("output_fruits.jpg")
    

    結果は「output_fruits.jpg」に保存される.

    元画像は次の通り

    出来た画像は次の通り