# Product photo sample provenance

The two original input photos were generated with the built-in imagegen tool on November 4, 2026. They depict fictional, unbranded products. They are not customer photographs or stock photographs.

The generated 1536 × 1024 PNGs are preserved as `*-generated.png`. Each was resized once with `sips -Z 600` to a 600 × 400 RGB `*-input.png`, without cropping or background editing.

The `*-cutout.png` files are actual BiRefNet general worker outputs. The `*-upscaled.webp` files are actual Real-ESRGAN x4plus worker outputs produced from those cutouts, using `scale: 2` and `output_format: webp`. Outputs were not retouched. Both workers ran through their existing handlers with cached weights on a local CPU and a temporary local storage server. No hosted model API or RunPod GPU was called.

`product-samples.json` records dimensions, processing times, file hashes, settings, and limitations. Processing times include local decoding, inference, encoding, and storage transfer but exclude model loading. They are CPU observations, not hosted latency or GPU benchmarks.

Generation prompts:

- Ceramic mug: photorealistic commercial still life of one matte sand-colored ceramic mug with a large rounded handle, centered on warm gray tabletop against a darker gray studio backdrop, soft window light from upper left, fully visible, clear space around edges and inside handle, subtle speckles, opaque background, landscape 3:2, no labels, logos, text, people, plants, props, watermark, or graphics.
- Amber bottle: photorealistic commercial still life of one short amber-brown skincare pump bottle with a matte black pump and no label, centered on pale warm gray tabletop against muted sage-gray studio wall, soft upper-left window light, fully visible, clear surrounding space and restrained shadow, opaque backdrop, landscape 3:2, no branding, text, people, plants, props, watermark, or graphics.

To reproduce a worker stage, use the existing `platform/workers/local_run.py` with each worker's local environment, cached weights, `REQUIRE_GPU=0`, and `REQUIRE_HTTPS=0`. The first stage uses `--params '{"output":"cutout"}'`; the second uses `--params '{"scale":2,"output_format":"webp"}'`. Set `--max-units 1` for these 0.24 MP inputs. See that helper's docstring for full invocation.
