Skip to content

Repository files navigation

๐ŸŒณ Poplar: A Scalable Pipeline for Human-Centric Image Dataset Synthesis

Zhishan Zou1
1Beijing University of Posts and Telecommunications

arXiv 2608.00440   Website   GitHub   Hugging Face   ModelScope   License

Poplar teaser

Poplar is a reproducible and resumable Specify โ†’ Render โ†’ Inspect pipeline for constructing customizable human-centric image-text datasets. Instead of optimizing isolated generations, Poplar makes collection-level semantic coverage, rendering provenance, and quality-control decisions explicit and auditable.

๐Ÿ“ข News

  • ๐Ÿ˜Š [2026/08/03] We release the human-centric image dataset Poplar-9K on Hugging Face and ModelScope.
  • ๐Ÿ”ฅ [2026/08/01] We release the complete Poplar pipeline, configurations, and reproducibility contract.

๐ŸŒŸ Overview

Poplar pipeline

Poplar connects three replaceable stages through append-only JSONL records:

  1. Specify samples structured subject, clothing, activity, scene, capture, and lighting attributes under commonsense compatibility constraints. Qwen3.5-27B-FP8 verbalizes each valid specification as a photography-oriented prompt without selecting or changing its canvas.
  2. Render produces one image per specification with Krea 2 Turbo and the Krea2-realism-V2 adapter. A conservative deterministic prefilter retries near-grayscale, severely blurred or low-detail, and corrupt outputs.
  3. Inspect invokes Qwen3.5-27B-FP8 once per image-prompt pair. It rejects intrinsic defects and critical or major prompt mismatches while preserving the generation prompt byte-for-byte.

๐Ÿง  Photography-Oriented Specification

Poplar separates what the dataset should contain from how each sample is described. The semantic layer specifies people, clothing, activities, and scenes; the capture layer describes photographer perspective, device, framing, lighting, and plausible non-studio characteristics. This makes the planned dataset composition inspectable before any image is rendered.

Photography-oriented prompt design

๐Ÿ”Ž Auditable Quality Control

Technical file checks alone cannot identify prompt mismatches, duplicated subjects, stitched layouts, implausible interactions, cropped faces, anatomy errors, or sensitive content. Poplar records structured defect flags, mismatch severity, visible evidence, and confidence for every reviewed candidate. Rejected records remain available for auditing but never enter the curated release.

Representative rejected candidates

โš™๏ธ Getting Started

๐ŸŽฒ Clone

git clone https://github.com/choucisan/poplar.git
cd poplar

๐ŸŽน Requirements

  • Linux and Python 3.10
  • NVIDIA GPUs with a driver compatible with the CUDA 12.6 PyTorch wheels
  • Four GPUs for the released schedule
  • Access to the model repositories declared in configs/poplar_pipeline.json

The reference schedule uses GPU 0 for Specify, GPUs 1-2 for the sharded Krea renderer, and GPU 3 for Inspect. Stages execute in dependency order; GPUs do not need to host all models simultaneously.

Stage Default model GPUs Output
Specify Qwen/Qwen3.5-27B-FP8 0 Structured attributes and immutable prompts
Render krea/Krea-2-Turbo + realism adapter 1, 2 Candidate images and rendering manifest
Inspect Qwen/Qwen3.5-27B-FP8 3 Review, keep, and reject manifests

๐ŸŽน Installation

With Conda:

conda env create -f environment.yml
conda activate poplar

With uv:

uv sync --python 3.10
source .venv/bin/activate

Authenticate with Hugging Face when a model requires license acceptance:

hf auth login

Hugging Face environment variables are respected without code changes. Use HF_HOME to select a cache directory and HF_ENDPOINT to select an explicit mirror.

๐Ÿš€ Run Poplar

Validate the Released Configuration

Validate paths and configuration values and print every subprocess without loading model weights or creating run artifacts:

bash scripts/run_pipeline.sh --dry-run

Run or Resume the Full Pipeline

bash scripts/run_pipeline.sh

The launcher selects the project uv environment or the active Conda environment and invokes pipeline.py. Every stage appends records and skips completed identifiers, so the same command safely resumes an interrupted run. Shards are merged only after the expected number of records is present.

Run selected stages when their dependencies already exist:

bash scripts/run_pipeline.sh --stages specify
bash scripts/run_pipeline.sh --stages render inspect

Scale the Candidate Budget

Poplar does not hard-code the Poplar-9K dataset size. Assign each scaled run a distinct name so its resumable records remain isolated:

# Small validation run
bash scripts/run_pipeline.sh \
  --candidate-count 100 \
  --run-name poplar_100

# 100K-candidate construction run
bash scripts/run_pipeline.sh \
  --candidate-count 100000 \
  --run-name poplar_100k

Candidate indices are distributed deterministically across the configured Specify and Inspect GPUs, including uneven totals. The released Krea renderer shards one model instance across exactly two visible GPUs. Running multiple renderer instances requires an external job scheduler.

When resuming selected stages, repeat the same --candidate-count and --run-name values used to create the run.

Use Local Model Weights

Local model directories can override Hugging Face identifiers without editing the released configuration:

export POPLAR_PROMPT_MODEL=/models/Qwen3.5-27B-FP8
export POPLAR_RENDER_MODEL=/models/Krea-2-Turbo
export POPLAR_RENDER_ADAPTER=/models/Krea2-realism-V2
export POPLAR_INSPECT_MODEL=/models/Qwen3.5-27B-FP8

bash scripts/run_pipeline.sh

POPLAR_RENDER_ADAPTER may point to an adapter directory or directly to its .safetensors file. Set POPLAR_CONFIG to run a separate configuration file and POPLAR_PYTHON to select an explicit Python interpreter.

๐Ÿ“ฆ Output Contract

The default Poplar-9K run writes:

prompts/poplar_9k/
โ”œโ”€โ”€ prompts_shard_0.jsonl
โ””โ”€โ”€ prompts.jsonl
outputs/poplar_9k/
โ”œโ”€โ”€ realism_*.png
โ”œโ”€โ”€ manifest.jsonl
โ”œโ”€โ”€ rejected_prefilter/
โ””โ”€โ”€ reviews/
    โ”œโ”€โ”€ review_shard_0.jsonl
    โ”œโ”€โ”€ review.jsonl
    โ”œโ”€โ”€ keep.jsonl
    โ”œโ”€โ”€ reject.jsonl
    โ””โ”€โ”€ summary.txt
logs/poplar_9k/

The records implement the reproducibility contract described in the paper:

  • Prompt records: immutable prompt and SHA-256 hash, taxonomy version, structured attributes, canvas, and requested rendering seed.
  • Rendering manifest: model and adapter identifiers, dimensions, requested and actual seeds, inference settings, accepted prefilter metrics, and retry history.
  • Review records: rubric version, model identifier, defect flags, prompt mismatches and severity, visible people, evidence, confidence, and timestamp.
  • Release manifests: separate auditable keep/reject decisions that retain the original prompt and provenance; rejected items additionally retain failure categories and visible evidence.

Run artifacts, generated images, model caches, and logs are ignored by Git.

๐Ÿ—‚๏ธ Repository Layout

poplar/
โ”œโ”€โ”€ configs/
โ”‚   โ”œโ”€โ”€ poplar_pipeline.json       # Released Poplar-9K construction policy
โ”‚   โ”œโ”€โ”€ realism_taxonomy.json      # Attribute spaces and compatibility rules
โ”‚   โ””โ”€โ”€ review_rubric.txt          # Inspection criteria and output schema
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ run_pipeline.sh            # One-command launcher
โ”‚   โ””โ”€โ”€ merge_review_shards.py     # Deterministic review merge
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ test_release_contract.py   # Configuration and provenance tests
โ”œโ”€โ”€ pipeline.py                    # Unified Specify-Render-Inspect CLI
โ”œโ”€โ”€ generate_prompt_shard.py       # Structured sampling and prompt generation
โ”œโ”€โ”€ merge_prompt_shards.py         # Deterministic prompt merge
โ”œโ”€โ”€ krea_pipeline.py               # Rendering, prefilter, retry, and manifest
โ”œโ”€โ”€ review_images.py               # Immutable-prompt VLM inspection
โ””โ”€โ”€ filter_reviewed.py             # Keep/reject manifests and statistics

โœ… Tests

The release-contract tests do not load model weights or require a GPU:

python -m unittest discover -s tests -v

They validate the full dry-run command graph, scaled-run namespacing, immutable prompts, and preservation of rejection evidence.

๐Ÿ“š Citation

@misc{zou2026poplar,
  title        = {Poplar: A Scalable Pipeline for Human-Centric Image Dataset Synthesis},
  author       = {Zhishan Zou},
  year         = {2026},
  eprint       = {2608.00440},
  archivePrefix = {arXiv},
  primaryClass = {cs.CV},
  doi          = {10.48550/arXiv.2608.00440},
  url          = {https://arxiv.org/abs/2608.00440}
}

๐Ÿ“– References and Acknowledgements

Poplar builds on the following open models and libraries:

๐Ÿ“ฎ Contact

For questions, corrections, or collaboration requests:

choucisan@gmail.com

About

Official implementation of Poplar: A Scalable Pipeline for Human-Centric Image Dataset Synthesis

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages