見出し画像

Google Colab で ControlNet によるpix2pixを試す

「Google Colab」で「ControlNet」によるpix2pixを試したので、まとめました。

1. ControlNet

「ControlNet」は、入力に対して画像で条件づけするDiffusionモデルです。入力画像の構造を維持したまま、pix2pixできます。

構造を維持するために、以下の10種類の手法が提案されています。

・Canny Edge
・M-LSD Lines
・HED Boundary
・User Scribbles
・Fake Scribbles
・Human Pose
・Semantic Segmentation
・Depth
・Normal Map
・Anime Line Drawing

2. Colabでの実行

「Google Colab」での実行手順は、次のとおりです。
エッジ検出で構造の維持を行う「Canny Edge」を使っています。

(1) メニュー「編集→ノートブックの設定」で、「ハードウェアアクセラレータ」に「GPU」を選択。

(2) Googleドライブにマウント。

# Googleドライブのマウント
from google.colab import drive
drive.mount("/content/drive")

(3) 作業フォルダに移動。
以下ではマイドライブ直下のworkを作業フォルダとしています。

# 作業フォルダの作成と移動
import os
os.makedirs("/content/drive/My Drive/work", exist_ok=True)
%cd "/content/drive/My Drive/work"

(4) パッケージのクローン。

# パッケージのクローン
!git clone https://github.com/lllyasviel/ControlNet.git
%cd ControlNet

(5) 「requirements.txt」作成して、「ControlNet」フォルダ直下に配置。
リポジトリにはconda用の「environment.yaml」しかないので、自前で用意します。

・requirements.txt

gradio
albumentations
opencv-contrib-python
imageio
imageio-ffmpeg
pytorch-lightning
omegaconf
test-tube
streamlit
einops
transformers
webdataset
kornia
open_clip_torch
invisible-watermark
streamlit-drawable-canvas
torchmetrics
timm
addict
yapf
prettytable

(6) HuggingFaceから「control_sd15_canny.pth」をダウンロードして、「ControlNet/models」フォルダに配置。

(7) パッケージのインストール。

# パッケージのインストール
!pip install -r requirements.txt

(8) 「ControlNet/gradio_canny2image.py」の最終行を次のように変更。
Colabではローカルでなくshare=Trueでシェアして利用します。<user>と<password>は新規のユーザー名とパスワード (公開コンテンツにアクセスするために利用) を指定してください。

block.launch(server_name='0.0.0.0')
    ↓
block.launch(auth=("<user>", "<password>"), share=True)

(9) 「ControlNet/gradio_canny2image.py」の実行。

!python gradio_canny2image.py

(10) 「public URL」が表示されたら、クリック。

(11) 先程指定したユーザー名とパスワードでログイン。

(12) 画像をアップロードして、プロンプトを入力して、Runボタンを押す。
猫を維持したまま背景がビーチになりました。

関連



この記事が気に入ったらサポートをしてみませんか?