MENU

【Python】DeblurGANで写真/画像のブレ補正に挑戦!

写真を撮影してあとで確認すると、思った以上にブレが目立つことがあります。特にスマホやコンパクトデジタルカメラでは、暗所撮影やシャッタースピードの影響で、手ブレが発生しやすくなります。

最近では、AIを活用したブレ補正技術が進化し、プロの写真編集ソフトでも導入されています。しかし、こうしたソフトの多くは高価で、誰もが気軽に使えるわけではありません。そこで今回は、DeblurGAN というAI技術を使って、写真や画像のブレをどこまで補正できるのかを検証してみます。

目次

DeblurGANとは

引用元:DeblurGAN公式GITHUB

DeblurGANは、ブレた画像をクリアな状態に復元するために設計された深層学習モデルで、以下の2つの技術を組み合わせています。

  • 敵対的生成ネットワーク(GAN) – 画像のブレ補正を学習するために、生成モデルと識別モデルを対抗させ、高品質な画像復元を実現。
  • 畳み込みネットワーク(ConvNet) – 局所的な特徴を詳細に捉え、ブレの原因となる情報を補正しながら、クリアな画質を生成。

これらの技術を組み合わせることで、従来の手法よりもより自然で高精度なブレ補正が可能になります。

DeblurGANの特徴

多様な画像に適用可能
風景写真、ポートレート、スポーツ撮影など、さまざまなシーンのブレ補正に対応。

学習ベースのブレ補正
従来のアルゴリズムでは、ぼやけた画像の特定パターンに依存して補正を行っていましたが、DeblurGANは学習データを基に適応的にブレを補正できるため、幅広い状況に対応できます。

細部を保持しながらブレを除去
一般的なブレ補正では細かいディテールが失われることがありますが、DeblurGANは画像のエッジや質感を保ったまま、ブレを軽減することが可能です。

DeblurGAN の公式サイト

引用元:DeblurGAN公式GITHUB

DeblurGANの概要とソースコードは、Git上にある DeblurGAN公式ページに掲載されています。本記事では、ここに記載されいている内容をできるだけわかりやすく解説したものになります。

https://github.com/VITA-Group/DeblurGANv2?tab=readme-ov-file

インストールの前提条件

DeblurGANのページでは、モデルのダウンロード方法とデモプログラムの使い方に関する記述があるだけで、詳しいインストール方法が記載されていません。

今回は、私のPCで試して動作した構成を記載しています。

Python/CUDAのバージョン

動作に必要な環境は次の通りです。

必要な環境・ライブラリバージョンなど備考
Python 環境Python 3.8.10
Git 環境その時の最新版
Pytorchtorch 1.10.0+cu113
CUDA Toolkit11.3
cuDNN8.9.78.9.0以上なら動作可能

インストール手順の概要

次の手順でインストールを行います。

Step1
Python動作環境の構築
①Python 3.8.10の環境準備
②Gitの環境準備
③CUDA Toolkit 11.3のインストール
④cuDNN 8.9.7
Step2
DeblurGAN のインストール
GitHubからDeblurGAN をインストール後、各種モジュールをインストール
Step3
各種モデルのインストール
GitHubに公開されている学習済みモデルをダウンロードします。
これは、コマンドを1行実行することで完了します。

インストール手順

Step1.Python動作環境の構築

【最初の一歩】生成AI向けPython環境構築手順(スクリーンショットで解説)」の記載内容(①②③④)を実行してください。

Python環境構築手順の①~④をインストールしてください。
FFMPEGのインストールは不要です(使わないだけなので、インストールしても差し支えはありません)。

Step2.DeblurGAN のインストール

あらかじめ、DeblurGAN をインストールするための任意のフォルダを作成しておきます。今回は、Oドライブの直下に BLURというフォルダを作成し、そこにインストールすることにします。

まず、コマンドプロンプトを開き、インストールしたいフォルダ(今回はOドライブ直下のDeblurGAN フォルダ)に移動し、次のコマンドを実行します。

git clone https://github.com/VITA-Group/DeblurGANv2.git

DeblurGAN のモジュールがインストールに成功したら、次のコマンドを実行してください。

cd DeblurGANv2
pip install -r requirements.txt


上記の pip コマンドにより CPU版のpytorch がインストールされているため、一旦pytorchをアンインストールします。

pip uninstall torch torchvision torchaudio

次に、GPU対応のpytorch をインストールします。


pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

Step3.各種モデルのインストール

続けて、学習済みモデルをインストールします。具体的には、公式GITHUBのページを少しスクロールすると、下記のリンクが表示されます。リックは通常版(fpn_inception.h5)と軽量版(fpn_mobilenet.h5)の2種類ありますが、通常版(fpn_inception.h5) の方リンクをクリックします。

Googleドライブに移動するので、「このままダウンロード」をクリックしてください。

fpn_inception.h5 をダウンロードしたら、下記の通り DeblurGANをインストールしたフォルダ内にコピーしてください。

以上でモデルのインストールは完了です。

DeblurGAN フォルダ構成について

ここまでの手順が完了すると、上記のフォルダ構成になっているはずです。次の章で説明するデモプログラム(predict.py)に関係するフォルダは次の通りです。

フォルダ名内容
config設定ファイル(config.yaml)の保存先フォルダ。
config.yaml には、デモプログラムが参照する入出力フォルダや、学習パラメータ等が記述されている。
test_imgブレの強いテスト画像が1枚だけ格納されている。
submitブレ除去済みの画像が3枚格納されている。
predict.pyを実行すると、ブレ済み画像がこのフォルダに格納される。

DeblurGAN デモプログラムの実行

デモプログラムを動かす前に、テスト画像を所定のフォルダにコピーする必要があります。config.yaml ファイルの定義内容を書き換える方法もありますが、今回は config.yaml の記述に従ったフォルダにテスト画像をコピーすることにします。

上図の通り、dataset1フォルダを作成し、その配下に blur フォルダを作成、そこにtest_img フォルダに保存されている画像ファイルをコピーします。
下記のコマンドを実行すると、フォルダが作成され、テスト画像ファイルがコピーされます。

md dataset1
md dataset1\blur
copy test_img\000027.png dataset1\blur

デモプログラム(predict.py)の実行

下記のコマンドを実行すると、先ほどコピーしたテスト画像のブレが補正され、結果が submit フォルダに保存されます。

python predict.py

テスト画像の結果を確認する

実行すると数秒~十数秒後(GPUの性能により異なる)でブレ除去された画像が submit フォルダに保存されます。

テスト画像

ブレ除去後の画像

クリックすると拡大表示されますので、どの程度改善されたかご確認ください。正直言って凄いです。

手持ちの写真でブレ除去の性能を確認

では、フリー画像を2枚ほど使って、ブレ除去をしてみたいと思います。

画像サンプル1(ブレ弱)

画像サンプル2(ブレ強)

結果は以下の通りです。分かり易いように、一部分を等倍で切り出して掲載しています。完全にブレが取り切れているか怪しいですが、まあまあ効果はあるようです。

補正前(画像サンプル1)

DeblurGANによる補正後(画像サンプル1)

ブレの大きな画像は、相変わらず部れています。ほんの少し改善されているような気もしますが、ブレが小さい場合に比べて効果は少ないようです。デモ画像ではかなり効果があったのですが、ちょっと残念ですね。

補正前(画像サンプル2)

DeblurGANによる補正後(画像サンプル2)

下記は、ブレの弱い画像にアンシャープマスクをした結果(左)と、DeblurGANでブレ補正した結果(右)の画像を比較した結果です。わずかながら、アンシャープマスクの方が線が濃なりましたが、逆にザラザラ感が増た気がします。

アンシャープマスクによる補正後(画像サンプル1)

DeblurGANによる補正後(画像サンプル1)

まとめ

今回は DeblurGAN について、インストール方法と使い方を紹介しました。

DeblurGAN は動画向けのアルゴリズムであるため、写真のブレ除去の性能はあまり高くないようです。とはいうものの、軽い手振れ補正程度であれば、アンシャープマスク並みのブレ除去が可能です。

有料サービスのAIブレ補正には遠く及びませんが、弱いブレなら効果を発揮しますので、Python 3.8 の環境でGPUを既に使われているなら、とりあえずインストールしておいても損はないかと思います。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次