MinusZone - ImagesCopyWorkspace
The dataset copier that's secretly the same node as KohyaSSDatasetConfig
- workspace_config
- images
- conditioning_images
- workspace_images_dir
Here's a confusing thing about this pack: MZ_ImagesCopyWorkspace and MZ_KohyaSSDatasetConfig are the same node. The pack registers one class under both names - the older display name and the newer one. So if a workflow you downloaded uses this and a tutorial uses the other, you're looking at identical behavior. Don't reinstall anything; just pick whichever shows up in your node search.
The job is straightforward: copy a ComfyUI IMAGE batch into the training workspace and build the dataset config for it. The README calls it "copy images to the training folder and some dataset configurations," which undersells it slightly - it also handles resizing, optional ControlNet conditioning images, and a same-caption fallback.
How it works
Feed it the workspace_config from MZ_KohyaSSInitWorkspace and an IMAGE batch. Each image gets resized to resolution (default 1024, max dimension), saved into the workspace's train_images/ folder with an md5-derived filename, and the node writes the dataset file kohya will consume. If you pass conditioning_images, they're resized to match and dropped into a parallel conditioning_images/ folder with matching names - that's the ControlNet path. Output is workspace_images_dir (a STRING path to where the data now lives).
Inputs worth touching
images- your training set as a batch. The README explicitly suggests the upload-folder node from ComfyUI-VideoHelperSuite to get images in without burning VRAM loading them all at once.conditioning_images- only for ControlNet training. Preprocessed inputs, same count and order asimages.enable_bucket- leave on unless you have a reason; bucketing is standard now.same_caption_generate+same_caption- stamp one caption on every image. Handy placeholder before a real captioning pass.force_clearvsforce_clear_only_images- the difference between nuking the whole dataset folder and just clearing image files. Worth knowing if you re-run with a new image set: left off, stale images stay and silently pollute your dataset.
Install and gotchas
Same as the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ
# restart ComfyUI
Or ComfyUI Manager → search ComfyUI-TrainTools-MZ.
The recurring trap is re-running the graph after changing images: if you don't enable force_clear, old images sit next to new ones and your LoRA learns a mix. Second trap: default image_format is webp - fine on a normal install, but if your save step later errors with a format complaint, switch to png and rerun. The node is also the controlnet gate: if you set a controlnet template in the train node but never wired conditioning_images, training will happily start and then fail or produce garbage - the two must go together.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| workspace_config | MZ_TT_SS_WorkspaceConfig | — | |
| images | IMAGE | — | |
| enable_bucket | COMBO | enable | 2 options: enable, disable |
| resolution | INT | 1024 | — |
| num_repeats | INT | 1 | — |
| caption_extension | COMBO | .caption | 2 options: .caption, .txt |
| batch_size | INT | 1 | — |
| force_clear | COMBO | disable | 2 options: enable, disable |
| force_clear_only_images | COMBO | disable | 2 options: enable, disable |
| same_caption_generate | COMBO | disable | 2 options: enable, disable |
| same_caption | STRING | — | |
| image_format | COMBO | webp | 3 options: png, jpg, webp |
| dataset_config_extension | COMBO | .json | 2 options: .toml, .json |
| conditioning_imagesopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| workspace_images_dir | STRING | — |