Google Colab で Flux の ControlNet を試す
「Google Colab」で「Flux」の「ControlNet」を試したのでまとめました。
前回
1. ControlNet
「ControlNet」は、「Stable Diffusion」モデルにおいて、新たな条件を指定することで生成される画像をコントロールする機能です。プロンプトでは指示しきれないポーズや構図の指定が可能になります。
今回は、「InstantX」提供の「ControlNet」を使います。
2. Canny
「Canny」は、「Canny Edge検出」で構図を指定する「ControlNet」です。
(1) パッケージのインストール。
# パッケージのインストール
!pip install git+https://github.com/huggingface/diffusers
!pip install controlnet_aux opencv-python
(2) モデルカードで「Agree and access repository」をクリック。
(3) HuggingFaceのログイン。
!huggingface-cli login
指示に従って次の情報を入力します。
(4) 初期画像の準備。
Colab右端のフォルダアイコンから初期画像 (init_image.png) をアップロードして読み込む。
・init_image.png
from diffusers.utils import load_image
# 初期画像の準備
init_image = load_image("init_image.png")
init_image = init_image.resize((1024, 1024))
# 確認
init_image
(5) 初期画像をCanny画像に変換。
from controlnet_aux import CannyDetector
# Canny画像の準備
canny_detector = CannyDetector()
canny_image = canny_detector(init_image, image_resolution=1024)
# 確認
canny_image
(6) パイプラインの準備。
「InstantX/FLUX.1-dev-Controlnet-Canny」と「black-forest-labs/FLUX.1-dev」をダウンロードします。
import torch
from diffusers.pipelines.flux.pipeline_flux_controlnet import FluxControlNetPipeline
from diffusers.models.controlnet_flux import FluxControlNetModel
# パイプラインの準備
controlnet = FluxControlNetModel.from_pretrained(
'InstantX/FLUX.1-dev-Controlnet-Canny',
torch_dtype=torch.bfloat16
)
pipe = FluxControlNetPipeline.from_pretrained(
'black-forest-labs/FLUX.1-dev',
controlnet=controlnet,
torch_dtype=torch.bfloat16
)
pipe.to("cuda")
(7) プロンプトの準備と画像生成の実行。
from diffusers.utils import load_image
# プロンプトの準備
prompt = "cute cat-ear maid, white background, japanese anime style"
# 画像生成
image = pipe(
prompt,
control_image=canny_image,
controlnet_conditioning_scale=0.5,
num_inference_steps=50,
guidance_scale=3.5,
).images[0]
image.save("image.png")
関連
この記事が気に入ったらサポートをしてみませんか?