[DragGAN] AIでGUIから画像を編集する

2023年7月9日日曜日

Artificial Intelligence

本記事では、DragGANと呼ばれる機械学習手法を用いてGUIから画像を編集する方法をご紹介します。

eye catch

DragGAN

概要

DragGANは、画像の任意の点を「ドラッグ」し、ユーザーと対話的な方法でGANを制御し画像を操作するImage Manipulation技術です。

従来技術では、手動で付与した注釈によって、GANを制御しており、柔軟性に欠けることがありました。

DragGANでは、ドラッグしたポイントを目標点に向かって移動するように操作するfeature-based motion supervision(特徴ベースのモーション監視)と、ポイントをローカライズし続けるための新しいpoint tracking approachの2つの主要コンポーネントにより柔軟な画像操作を実現しています。

Architecture

詳細はこちらの論文をご参照ください。

本記事では上記手法を用いて、DragGANによる画像操作を行います。

デモ(Colaboratory)

それでは、実際に動かしながら画像操作を行っていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo

また、下記から直接Google Colaboratoryで開くこともできます。
Open In Colab

なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。

環境セットアップ

それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

初めにGithubからソースコードを取得します。

%cd /content

!git clone https://github.com/XingangPan/DragGAN.git

%cd /content/DragGAN
# Commits on Jun 30, 2023
!git checkout 1a2d37d03ded94fea3caa6e1eda99e60a9980b23

次にライブラリをインストールします。

%cd /content/DragGAN

!pip install -r requirements.txt
!pip install Pillow==9.5.0

以上で環境セットアップは完了です。

学習済みモデルのセットアップ

ここでは、学習済みモデルをGoogle Colabにダウンロードします。

models_dict = {
  "https://storage.googleapis.com/self-distilled-stylegan/lions_512_pytorch.pkl": "stylegan2_lions_512_pytorch.pkl",
  "https://storage.googleapis.com/self-distilled-stylegan/dogs_1024_pytorch.pkl": "stylegan2_dogs_1024_pytorch.pkl",
  "https://storage.googleapis.com/self-distilled-stylegan/horses_256_pytorch.pkl": "stylegan2_horses_256_pytorch.pkl",
  "https://storage.googleapis.com/self-distilled-stylegan/elephants_512_pytorch.pkl": "stylegan2_elephants_512_pytorch.pkl",
  "https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan2/versions/1/files/stylegan2-ffhq-512x512.pkl": "stylegan2-ffhq-512x512.pkl",
  "https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan2/versions/1/files/stylegan2-afhqcat-512x512.pkl": "stylegan2-afhqcat-512x512.pkl",
  "http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-car-config-f.pkl": "stylegan2-car-config-f.pkl",
  "http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-cat-config-f.pkl": "stylegan2-cat-config-f.pkl"
}

%cd /content/DragGAN

!mkdir checkpoints

for k, v in models_dict.items():
  dst = './checkpoints/' + v
  !wget -c {k} \
        -O {dst}

Run DragGAN

それでは、DragGANを動かしていきます。

以下では、Gradioを用いてWebアプリを起動しています。

%cd /content/DragGAN

!python visualizer_drag_gradio.py

上記を実行して表示されるpublic URLにアクセスします。

public ip

アクセスすると以下のようなDragGANによる画像編集が可能なWebアプリを操作できます。

操作方法はこちらなどをご参考下さい。
以下は、口角を操作してみた結果です。

result

まとめ

本記事では、DragGANを用いた画像操作の方法をご紹介しました。

ライセンスの問題がクリアされれば、商業的に様々なアプリケーションに利用されそうです。

また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。


また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。

参考文献

1.  論文 - Drag Your GAN: Interactive Point-based Manipulation on the Generative Image Manifold

2. GitHub - XingangPan/DragGAN

AIで副業ならココから!

まずは無料会員登録

プロフィール

メーカーで研究開発を行う現役エンジニア
組み込み機器開発や機会学習モデル開発に従事しています

本ブログでは最新AI技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology