はじめに
以前「ControlNet」の「canny2image」と「pose2image」使い方を紹介しました。touch-sp.hatenablog.com
canny2image
pose2image
今回は「canny2image」におけるエッジ検出の設定についていろいろ試してみました。
といっても「low_threshold」と「high_threshold」を変更しただけです。
いっきに25枚の画像を出力してくれるPythonスクリプトを書きました。
結果
上から下に向けて「low_threshold」を50→100→150→200→250と変更しています。
左から右に向けて「high_threshold」を50→100→150→200→250と変更しています。
左上と右下をつなぐ線を境に対称になっています。実質15種類の画像になります。
指や髪などのエッジが正確に検出されているかをみながら一番良いものを選ぶのがよさそうです。
Pythonスクリプト
import os from PIL import Image import numpy as np from annotator.util import resize_image, HWC3 from annotator.canny import CannyDetector from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument( '--image', required=True, type=str, help='original image' ) args = parser.parse_args() original_image = np.array(Image.open(args.image)) threshold_list = [50, 100, 150, 200, 250] image_resolution = 512 apply_canny = CannyDetector() img = resize_image(HWC3(original_image), image_resolution) H, W, C = img.shape os.makedirs('results', exist_ok=True) for low_threshold in threshold_list: for high_threshold in threshold_list: detected_map = apply_canny(img, low_threshold, high_threshold) detected_map = HWC3(detected_map) pil_image_detected_map = Image.fromarray(255 - detected_map) pil_image_detected_map.save(os.path.join('results', f'{low_threshold}_{high_threshold}.png'))
関連記事
つづきの記事を書きました。touch-sp.hatenablog.com