Y2K DIGICAM LORA (2026)

(a licensed dataset pipeline)
Doc. ref: HK-Y2K-LORA-2026
Category
Generative & Visual
Medium
Python, SigLIP 2, MiniCPM-V, fal.ai krea-2-trainer
Venue
gitlab.com/closestfriend/y2k-lora-for-krea
State
complete
Tags
dataset, curation, lora

Not a training codebase — a six-stage pipeline that builds a licensed image and caption dataset for a style LoRA trained elsewhere, on fal.ai’s hosted krea-2-trainer. Each stage is a standalone script handing off through files: scrape, rank, curate, fetch, caption, package.

Six standalone stages handing off through files, with the captioner falling back to Qwen3-VL when the primary model returns a degenerate caption.
Six standalone stages handing off through files, with the captioner falling back to Qwen3-VL when the primary model returns a degenerate caption.

Images come from Wikimedia Commons “Taken with…” categories across eleven configured cameras — Nokia N95, several Sony Ericsson and Canon PowerShot models, Sony DSC, Kodak EasyShare — capped at 1,000 per category. Licensing is a hard allowlist of CC0, public domain, CC BY, and CC BY-SA; anything else is rejected and the rejection counted rather than silently dropped. EXIF capture dates must fall between 2003 and 2010. That gate produced 903 harvested rows, of which 160 full-resolution images were fetched after ranking and curation.

Ranking uses SigLIP 2 to score each thumbnail by mean cosine similarity to six candid, flash-lit, party-scene prompts minus mean similarity to six encyclopedic landmark prompts — the aim being to separate snapshots from the well-composed hobbyist photography that dominates the source categories. The ranking narrows the field; a static HTML gallery then supports click-through human curation, and the final cut is made by eye. Three variants were packaged from the shared pool: 160 images combined, 122 cameraphone-only, 38 compact-digicam-only, each with its own trigger phrase and attribution CSV.

Captioning went through a documented reversal. The design specified a local Qwen3-VL model, on the reasoning that Qwen3-VL is Krea 2’s own text encoder. In testing, that path produced degenerate output on a meaningful share of images: empty non-answers and repetition loops, reproducible across temperatures and fresh model loads, so a per-image failure rather than sampling noise. Making it work at all required resizing inputs to 1024×1024, reloading the model for every image to avoid state leaking between calls, and forcing each reply to begin with one of six rotating deterministic openers, because the negation-heavy instruction otherwise produced near-empty replies. MiniCPM-V, served locally through Ollama, produced clean captions on the same images and became the primary path, with Qwen3-VL kept as fallback.

Captions are checked against a degeneracy filter before acceptance, and packaging refuses to build if any kept image lacks a caption. The pipeline uses no API keys and states a constraint of no Google Gemini anywhere in it; SigLIP 2 is admitted as an Apache-licensed open-weight exception. The repository includes a checkpoint from an 1,800-step training run.

Last updated: 2026.09.03 20:20:09 UTCHnshokrian@gmail.com