【controlnet_aux】複数の画像に対してまとめてControlNet用のPreprocessを行う

はじめに

controlnet-auxというライブラリを使って複数の画像に対してまとめてControlNet用のPreprocessを行うスクリプトを書きました。

controlnet-auxについては以下を見て下さい。
touch-sp.hatenablog.com

Pythonスクリプト

from PIL import Image
import glob
import os
from controlnet_aux.processor import Processor
import argparse

parser = argparse.ArgumentParser()
parser.add_argument(
    '--input',
    type=str,
    required=True,
    help="input folder name"
)
parser.add_argument(
    '--output',
    type=str,
    required=True,
    help="output folder name"
)
parser.add_argument(
    '--type',
    type=str,
    required=True,
    help="type of processor"
)
args = parser.parse_args()

input_folder = args.input
output_folder = args.output

images = glob.glob(f"{input_folder}/*.png")

processor = Processor(args.type)

os.makedirs(output_folder, exist_ok=True)

for image in images:
    im = Image.open(image).resize((512, 512))
    fname = os.path.basename(image)
    result = processor(im, to_pil=True)
    result.save(os.path.join(output_folder, fname))

使い方

上記スクリプトを「preprocess.py」という名前で保存しています。

python preprocess.py --input dance_images --output lineart_coarse --type lineart_coarse

追記

動画をいったん画像にばらすのが面倒くさいので動画に対して直接Preprocessが行えるスクリプトを新たに書きました。
touch-sp.hatenablog.com




このエントリーをはてなブックマークに追加