Generates a high-resolution family portrait in Dutch Masters style (Rembrandt, Vermeer) using FLUX.1-dev + per-person LoRAs.
- RTX 4090 (24GB VRAM) ✓
- 32GB RAM ✓
- ~80GB disk space
portrait-studio/
├── ComfyUI/ # Generation UI (http://localhost:8188)
├── SimpleTuner/ # LoRA training framework
├── training-data/
│ ├── Alice/ # Photos for Alice (add yours here)
│ ├── Bob/ # Photos for Bob
│ └── ...
├── loras/
│ ├── Alice/ # Training outputs for Alice
│ └── Bob/
├── models/ # (unused — models live in ComfyUI/models/)
└── output/ # Generated images
Secure Boot is blocking the NVIDIA driver. Disable Secure Boot in BIOS/UEFI:
- Reboot → press Del/F2/F12 at the manufacturer logo
- Find Security → Secure Boot → set to Disabled
- Save and reboot
- Verify:
nvidia-smishould show your RTX 4090
# First: accept the FLUX.1-dev license at https://huggingface.co/black-forest-labs/FLUX.1-dev
# Then: create a token at https://huggingface.co/settings/tokens (Read access is enough)
HF_TOKEN=hf_yourtoken ./download_models.sh./add_person.sh Alice
./add_person.sh Bob
./add_person.sh Carol
# etc.Each command creates training-data/Alice/ and the training config.
Copy 15–30 photos of each person into their training directory:
training-data/Alice/
close_face_smiling.jpg
half_body_outdoor.jpg
different_angle.jpg
...
Photo tips:
- 15–30 images minimum (more = better identity)
- Mix of head shots, half-body, and 3/4 shots
- Varied lighting (indoor, outdoor, flash, natural)
- Different expressions (neutral, smiling, serious)
- Eyes clearly visible
- Minimum 512×512 resolution; 1024×1024+ preferred
./train_lora.sh Alice # ~1-2 hours on RTX 4090
./train_lora.sh Bob
./train_lora.sh CarolMonitor training progress at http://localhost:6006 (TensorBoard).
After training, each LoRA is automatically copied to:
ComfyUI/models/loras/<name>_flux.safetensors
./start_comfyui.shOpen http://localhost:8188 in your browser, then:
- Click Load → select
dutch_masters_portrait_workflow.json - In the LoraLoader nodes, set each person's LoRA file
- In the positive prompt, replace
portrait_PERSON1etc. with the trigger words fromadd_person.shoutput (e.g.portrait_alice) - Click Queue Prompt
The workflow generates at 1024×1280 then upscales 4× to 4096×5120 pixels (~13×17 inches at 300 DPI). For a 16×20 print, run a second 1.5× upscale pass in ComfyUI or use Topaz Gigapixel.
Each person's trigger word is: portrait_<firstname_lowercase>
- Alice →
portrait_alice - Bob →
portrait_bob
Dutch Masters style prompts:
- "oil painting in the style of Rembrandt van Rijn, dramatic chiaroscuro lighting"
- "Dutch Golden Age portrait, Vermeer-style soft diffused light, sfumato"
- "17th century Netherlands, rich dark background, ornate period clothing"
Composition:
- Generate multiple seeds (change the seed in KSampler) — composition varies a lot
- For very large families (5+ people), consider generating 2-3 at a time and compositing
LoRA weights:
- Start at 0.85 per person
- If someone's identity is weak, increase their weight to 0.9–1.0
- If someone overrides the style, lower their weight to 0.7–0.75
- Style stays at FLUX default (no explicit style LoRA needed — the prompt handles it)
Steps to get print-ready:
- Generate with the ComfyUI workflow → 4096×5120 base
- Optional: Second 1.5× upscale pass for 6144×7680 (20×25" at 300 DPI)
- Touch up faces with Photoshop or GIMP if needed
- Export as TIFF for printing
flux-portrait— ComfyUI (Python 3.11, PyTorch 2.6+CUDA12.4)simpletuner— LoRA training (Python 3.12, PyTorch 2.6+CUDA12.4)