画像処理がしたいです。
このような要望にお応えします。
今回は、低解像度の画像が与えられると、それに基づき高解像度の画像を生成することができるAIを利用して画像処理を行いたいと思います。
具体的には、PULSEと呼ばれる手法を使用します。
下記を参考にさせていただきました。
- https://github.com/adamian98/pulse
- https://github.com/adamian98/pulse/issues/19
PULSEモデルによる低解像画像の高解像度画像変換
PULSEとは
低解像度の入力画像が与えられると、PULSEは生成モデルを検索し、知覚的にリアルな高解像度画像を探します。ここでの生成モデルは、StyleGANを採用されているみたいです。
StyleGANは、実在しない人物画像を高解像度で生成することができるモデルです。興味のある方は、下記の記事にてStyleGANを使用した高解像度画像の生成をしておりますので、確認してみてはいかがでしょうか。
それでは、PULSEモデルを利用してみます。
Google Colaboratoryの準備
・Googleのアカウントを作成します。
・Googleドライブにアクセスし、「新規」→「その他」から「Google Colaboratory」の順でクリックします。そうすると、Colaboratoryが起動します。
・Colaboratoryが起動したら、以下のコマンドをCoalboratoryのセルに入力し実行します。
そうすることで、Googleドライブをマウントします。
1 2 |
from google.colab import drive drive.mount('/content/drive') |
・実行後、認証コードの入力が促されます。このとき、「Go to this URL in a browser」が指しているURLにアクセスしgoogleアカウントを選択すると、認証コードが表示されますので、それをコピーしenterを押します。これでGoogleドライブのマウントが完了します。
PULSEの準備
Google Colaboratoryの「ランタイム」→「ランタイムのタイプ変更」でGPUを選択します。
ツールをダウンロードする場所に移動します。 本記事では、マイドライブにツールをダウンロードします。
1 |
cd drive/My\ Drive |
ツールをダウンロードします。
1 |
!git clone https://github.com/adamian98/pulse |
ダウンロードしたフォルダに移動します。
1 |
cd pulse/ |
次にデータの準備をします。下記のコマンドを実行することで入力画像中の顔を検出し、低解像度の画像として保存することができます。このとき、入力画像を保存するためのinputフォルダ、出力結果を保存するconv_dataフォルダを用意して実行します。フォルダ名については、特別な指定はありません。
1 |
!python align_face.py -input_dir ./input -output_dir ./conv_data/ |
下記のコマンドを実行することで、低解像度画像を高解像度画像に変換することができます。ここで生成された高解像度画像は、StyleGANに基づき生成された実在しない想像上の顔を作成されます。出力結果をほぞんするために、resultsフォルダを作成します。フォルダ名は、特別な指定はありません。
1 |
!python run.py -eps 3e-3 -save_intermediate -steps 100 -input_dir ./conv_data/ -output_dir ./results |
epsの設定によっては、 Could not find a face that downscales correctly within epsilonというエラーメッセージが出力されます。この点については、下記にて議論されていますので確認してみてください。
- https://github.com/adamian98/pulse/issues/19
出力結果
PULSEモデルを用いて低解像度画像を高解像度の画像に変換しました。ツールは、比較的簡単に導入することができますので、試してみてはいかがでしょうか。