From 00778f8249d43754534d45796b38bffabe487e89 Mon Sep 17 00:00:00 2001 From: liangming Date: Sun, 23 Aug 2026 13:05:13 +0800 Subject: [PATCH] Cast ControlNet image columns before preprocessing --- examples/controlnet/train_controlnet.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/controlnet/train_controlnet.py b/examples/controlnet/train_controlnet.py index ff6bdc1e05b4..8887a32f222e 100644 --- a/examples/controlnet/train_controlnet.py +++ b/examples/controlnet/train_controlnet.py @@ -33,6 +33,7 @@ from accelerate import Accelerator from accelerate.logging import get_logger from accelerate.utils import ProjectConfiguration, set_seed +from datasets import Image as DatasetImage from datasets import load_dataset from huggingface_hub import create_repo, upload_folder from packaging import version @@ -657,6 +658,12 @@ def make_train_dataset(args, tokenizer, accelerator): f"`--conditioning_image_column` value '{args.conditioning_image_column}' not found in dataset columns. Dataset columns are: {', '.join(column_names)}" ) + # Local copies of datasets such as fill50k may store image paths as + # strings, while the preprocessing below expects decoded PIL images. + for column in (image_column, conditioning_image_column): + if not isinstance(dataset.features[column], DatasetImage): + dataset = dataset.cast_column(column, DatasetImage()) + def tokenize_captions(examples, is_train=True): captions = [] for caption in examples[caption_column]: