iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
AI & Data

Diffusion 模型、物件偵測Yolo v7& Yolo v4 系列 第 11

DAY 11 Canny - 擷取圖片中的邊緣

  • 分享至 

  • xImage
  •  
tags: 第 16 屆 iThome 鐵人賽 (2023)

{%hackmd BJrTq20hE %}

ControlNet透過添加附加條件來控制擴散模型的神經網路結構。 提供了在文字到影像生成過程中使用條件輸入(例如塗鴉、邊緣圖、分割圖、姿勢關鍵點等)來增強穩定擴散的方法。 生成的圖像將更接近輸入圖像,這比傳統的圖像到圖像生成方法有很大的改進。

ControlNet 模型可以使用小資料集進行訓練。 然後整合任何預先訓練的穩定擴散模型來增強模型以實現微調。

下載canny模型

還記得我們的抱臉怪嗎? 沒錯ˋˇˊ 這一次的模型庫就是在Hugging face上面的可以自行下載

pip install opencv-contrib-python

controlnet-aux

OpenPose 處理器需要 controlnet-aux 軟體包。 執行以下命令進行安裝:

pip install controlnet-aux
Uploading file..._439vf1ulg

xformers(可選)

xformers 套件可以提高推理速度。 最新版本提供了對 PyTorch 1.13.1 的 pipwheels 支援。

pip install -U xformers

可以安裝conda來支援torch1.12.1或torch1.13.1

conda 安裝 xformers

好了,到這裡環境就搭建好了。

canny edge圖像生成

下面的範例就是使用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

https://www.youtube.com/watch?v=WrQrnnB5QDo&t=6s&ab_channel=%E6%9D%B0%E5%85%8B%E8%89%BE%E7%B1%B3%E7%AB%8B


上一篇
DAY 10 ControlNet – 用 10 個模型掌控人物姿勢、轉換風格!
下一篇
DAY 12 OpenPose(骨架圖生圖)
系列文
Diffusion 模型、物件偵測Yolo v7& Yolo v4 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言