DragGANという技術を使うと、このように1枚の画像の特定の点を自然な形で動かすことができます。
DragGANはHugging FaceやWindowsで試すことができますが、そのままでは用意された画像しか編集できません。
自分で用意した画像を編集するには、そのためのモデルを作成する必要があります。
この記事ではDragGANを使って自分で用意した画像を編集する方法を紹介します。
DragGANで自分の用意した画像を編集するには?
DragGANの背後にはPTI(Pivotal Tuning Inversion)という技術が使われています。
自分で用意した画像をベースにPTIのモデルを作成することで、DragGANで編集できるようになります。
今回は自分で用意した画像からPTIのモデルを作成し、それをDragGANで使う方法を解説します。
なお、今回の内容はすべてGoogle Colabで行うのでWindowsでもMacでもLinuxでも試すことができます。
PTIのモデルを作る
まずはGoogle Colabで以下のノートブックにアクセスします。
「ドライブにコピー」をクリックして自分のドライブにノートブックをコピーします。
コピーしたノートブックが開いたらStep3までのセルを順に実行しましょう。
途中、Googleドライブへのアクセス許可を求められるので「Googleドライブに接続」をクリックしてGoogleアカウントにログインし、アクセスを許可してください。
Step3までの実行が完了したらStep4のタブを開きます。
Step4では、最初のセルだけを実行します。
次に自分で用意した画像をColab上にアップロードします。
Google Colabの画面左側にあるフォルダアイコンを押すと、ファイルの一覧が出てきます。
ここで「PTI/image_original」に画像をドラッグドロップして追加します。
追加する画像は必ず「image.jpeg」という名前にしましょう。
今回はStable Diffusionで生成した画像をサンプルとして使います。
画像をアップロードしたらStep4の残りのセルをすべて実行します。
Step5がPTIの最後のステップです。
Step5を実行するとモデルが作られます。これには5分程度時間がかかります。
Step5を終えたらモデルを保存します。
「Save Latent space and Model Weights」のすべてのセルを実行するとモデルが保存されます。
DragGANを設定する
いよいよDragGANの設定です。
「【重要】ここでPythonファイルを編集してください」というテキストが書かれている直前のセルまでを順に実行します。
「【重要】ここでPythonファイルを編集してください」の手前のセルの実行が終わったら、Pythonファイルの一部を修正します。
画面左側のファイルリストで「/content/DragGAN/visualizer_drag_gradio.py」を探してダブルクリックします。
画面の右側にコードエディタが開くのでこれを使ってPythonファイルを編集します。
まずは75行目あたりを見てください。
state['renderer'].init_network
の4番目の引数のNone
を変数名w_
loadに書き換えます。
そして、変数w_load
にはtorch.load('/content/DragGAN/checkpoints/0.pt')
を代入します。
w_load = torch.load('/content/DragGAN/checkpoints/0.pt')
state['renderer'].init_network(
...(省略)
# None, # w_load
w_load,
...(省略)
)
次に、166行目あたりを見てください。
変数名init_pkl
を次のように書き換えます。
# init_pkl = 'stylegan2_lions_512_pytorch'
init_pkl = 'stylegan2_custom_512_pytorch'
ここまでできたら最後のセルを実行します。
ログに出てくる「Running on public URL」をクリックするとDragGANのGUIが開きます。
自分で追加した画像が表示されるはずです。
DragGANで画像を編集する
画面が開いたら任意の2点をクリックして「Start」ボタンを押すだけです。
以下のように2点を参照して画像が動きます(以下は早送りです)。
まとめ
この記事では、DragGANで自分の用意した画像を編集する方法を紹介しました。
自分で用意した画像が使えるとなると、いろいろな使い道が考えられますね。
もしこの記事で不明な点があれば、以下のツイッターアカウントにメンションして聞いてください!
↓
記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!
また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!