はじめに
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