CoolFace
Datasetpublic

terminusresearch/pseudo-camera-10k-structured-json

pseudo-camera-10k, structured JSON captions The 9,997 training images from bghira/pseudo-camera-10k, recaptioned into the structured JSON caption schema that Ideogram 4 consumes. The images are unchanged: free photographs from world class photographers, Lanczos-resized so the shorter edge is 1024px, nothing upsampled. The original dataset carries short CogVLM prose captions. This one replaces them with one JSON object per image describing the scene at three levels: an overall… See the full description on the dataset page: https://huggingface.co/datasets/terminusresearch/pseudo-camera-10k-structured-json.

sourceHugging Faceccupdated 12d agoView on Hugging Face
0likes332downloads
Dataset Card

pseudo-camera-10k, structured JSON captions

The 9,997 training images from bghira/pseudo-camera-10k, recaptioned into the structured JSON caption schema that Ideogram 4 consumes. The images are unchanged: free photographs from world class photographers, Lanczos-resized so the shorter edge is 1024px, nothing upsampled.

The original dataset carries short CogVLM prose captions. This one replaces them with one JSON object per image describing the scene at three levels: an overall description, a style block, and a compositional breakdown into bounding-boxed elements with per-element colour palettes.

Layout

train/
  00/ .. 09/           # ten shards of up to 1,000 images each
    <stem>.png
    <stem>.txt         # single-line JSON caption for the image with the same stem

Captions sit next to their images so the folder works directly with SimpleTuner's textfile caption strategy, which scans instance_data_dir recursively. The shards exist only because the Hub limits a directory to 10,000 files; they carry no meaning.

Caption schema

Every caption is a single-line JSON object with these keys, in this order:

json
{
  "high_level_description": "2-3 sentence description of the whole image",
  "style_description": {
    "aesthetics": "mood and quality words",
    "lighting": "lighting description",
    "photo": "camera, lens, perspective and focus notes",
    "medium": "photograph",
    "color_palette": ["#RRGGBB", "..."]
  },
  "compositional_deconstruction": {
    "background": "what the background contains",
    "elements": [
      {
        "type": "obj",
        "bbox": [x0, y0, x1, y1],
        "desc": "description of this element",
        "color_palette": ["#RRGGBB", "..."]
      }
    ]
  }
}

Bounding boxes are integer pixel coordinates in the image's native resolution. Elements are listed most salient first. Where an image contains legible text, an element with "type": "text" carries the transcription in a "text" field. Hex colours are uppercase six-digit.

Example, for a baboon portrait in the set:

json
{"high_level_description": "A close-up portrait of a hamadryas baboon facing the camera, its face and chest illuminated by warm directional light against a mottled rock wall background. The animal has a pale gray mantle of fur framing a bare pink-brown muzzle and dark eyes.",
 "style_description": {"aesthetics": "moody, naturalistic, intimate wildlife portrait", "lighting": "warm low-angle side light raking across the face and shoulders, creating deep shadows and a dramatic chiaroscuro effect", "photo": "telephoto close-up, shallow depth of field with softly blurred textured rock backdrop, eye-level frontal perspective, sharp focus on the eyes and muzzle", "medium": "photograph", "color_palette": ["#6B5A4A", "#A6957D", "#8C6B5C", "#4A3B30", "#5F6B45", "#2A211B"]},
 "compositional_deconstruction": {"background": "an out-of-focus textured rock or cave wall with patches of moss/lichen in olive green and warm ochre tones, darker and shadowed on the left side",
  "elements": [
   {"type": "obj", "bbox": [174, 195, 782, 1024], "desc": "hamadryas baboon with a thick pale gray mantle of fur covering its head, shoulders, and chest, facing forward", "color_palette": ["#A6957D", "#8B7A66", "#4A3B30"]},
   {"type": "obj", "bbox": [366, 330, 610, 645], "desc": "bare pink-brown muzzle and face of the baboon with a prominent snout, nostrils, and closed mouth", "color_palette": ["#8C6B5C", "#6B4A3C", "#3A2622"]},
   {"type": "obj", "bbox": [388, 335, 560, 385], "desc": "dark eyes set beneath a darker gray-black brow band of fur", "color_palette": ["#2A211B", "#4A3B30"]},
   {"type": "obj", "bbox": [410, 210, 640, 300], "desc": "dark blackish-gray fur cap on top of the head contrasting with the lighter mantle", "color_palette": ["#2E2A26", "#4A433C"]}
  ]}}

Statistics

images9,997
median caption size1.96 KB
elements per caption, mean5.1
elements with a bbox100%
captions with a text element1,775
median words in the high level description47

How the captions were made

Each image was captioned independently by a vision-language model prompted with the schema above, one image per request so no caption could leak into another. Every output was parsed as strict JSON and run through SimpleTuner's Ideogram caption canonicaliser; anything that failed to parse, was missing the top-level keys, or had non-object entries in elements was discarded and the image was recaptioned until it passed. About 1% of first attempts were rejected this way.

Bounding boxes come from the captioner's own estimate of the region and were not verified against a detector. Treat them as approximate.

Using with SimpleTuner

json
{
  "id": "pseudo-camera-10k-structured",
  "type": "local",
  "instance_data_dir": "/path/to/train",
  "caption_strategy": "textfile",
  "disable_multiline_split": true,
  "resolution": 1024,
  "resolution_type": "pixel_area",
  "minimum_image_size": 1024,
  "cache_dir_vae": "cache/vae/pseudo-camera-10k-structured"
}

For Ideogram 4 training the captions already match the model's schema, so --ideogram_auto_json finds a JSON object and canonicalises it instead of wrapping prose in a placeholder structure. For other model families the JSON string is passed to the text encoder as-is; if you want plain prose instead, read high_level_description out of each file.

Limitations

Natural photographs are noisy and the set does not reflect the diversity of much larger collections. Captions describe only what is visible and avoid identifying people. They are descriptive but not audited image by image, and the style fields are the captioner's interpretation rather than camera metadata.

terminusresearch/pseudo-camera-10k-structured-json · CoolFace