第 16 屆 iThome 鐵人賽 (2023)
{%hackmd BJrTq20hE %}
ControlNet透過添加附加條件來控制擴散模型的神經網路結構。 提供了在文字到影像生成過程中使用條件輸入(例如塗鴉、邊緣圖、分割圖、姿勢關鍵點等)來增強穩定擴散的方法。 生成的圖像將更接近輸入圖像,這比傳統的圖像到圖像生成方法有很大的改進。
ControlNet 模型可以使用小資料集進行訓練。 然後整合任何預先訓練的穩定擴散模型來增強模型以實現微調。
還記得我們的抱臉怪嗎? 沒錯ˋˇˊ 這一次的模型庫就是在Hugging face上面的可以自行下載
pip install opencv-contrib-python
OpenPose 處理器需要 controlnet-aux 軟體包。 執行以下命令進行安裝:
pip install controlnet-aux
xformers 套件可以提高推理速度。 最新版本提供了對 PyTorch 1.13.1 的 pipwheels 支援。
pip install -U xformers
可以安裝conda來支援torch1.12.1或torch1.13.1
conda 安裝 xformers
好了,到這裡環境就搭建好了。
下面的範例就是使用canny edge ControlNet進行影像生成。 它需要精細邊緣圖像作為輸入。
import cv2
import numpy as np
from PIL import Image
image = Image.open('input.png')
image = np.array(image)
low_threshold = 100
high_threshold = 200
image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
canny_image = Image.fromarray(image)
canny_image.save('canny.png')
Canny的邊緣檢測能夠讓我們把圖形記錄下來,像是把圖片變成線稿,這樣再交給下一次生成的時候就能夠產生出動作和圖案相似的圖片,有點像是把圖片的PSD檔記錄下來,然後拿給另一個繪師作畫。
https://zhuanlan.zhihu.com/p/612815907
https://vocus.cc/article/640ee135fd8978000155ef23