RayyanAhmed9477/pexels-advertisement-photography
Pexels Advertisement & Product Photography Dataset A curated dataset of 12,917 high-quality advertisement and product photography images sourced from Pexels, enriched with AI-generated captions for text-to-image model fine-tuning. Dataset Overview Attribute Value Total Images 12,917 Source Pexels API Categories 40 search queries Avg Resolution 842 x 886 px Min Resolution 512 px (shortest side) Total Size ~2.4 GB (parquet with embedded images)… See the full description on the dataset page: https://huggingface.co/datasets/RayyanAhmed9477/pexels-advertisement-photography.
Pexels Advertisement & Product Photography Dataset
A curated dataset of 12,917 high-quality advertisement and product photography images sourced from Pexels, enriched with AI-generated captions for text-to-image model fine-tuning.
Dataset Overview
Pipeline
This dataset was built through a multi-stage pipeline:
1. Scraping (Pexels API)
- 40 curated search queries spanning product photography, commercial advertising, luxury brands, food, fashion, automotive, tech, and more
- Up to 400 images per query via paginated API calls
- 12,927 unique images downloaded at medium resolution (940px wide)
2. Filtering
- Resolution filter: Minimum 512px on shortest side (removes low-quality thumbnails)
- Perceptual deduplication: pHash-based near-duplicate removal (hamming distance threshold)
- Aesthetic scoring: CLIP-based aesthetic predictor scores each image
- Result: 12,917 images retained (99.9% pass rate — Pexels quality is inherently high)
3. Caption Enrichment (VLM)
Each image was captioned by Qwen3-VL-8B with two complementary styles:
- `caption_long`: Detailed advertising description (~50-100 words) describing composition, lighting, mood, product placement, and marketing context
- `caption_short`: Concise tag-style caption (~10-20 words) with comma-separated descriptors for style, category, and key visual elements
This dual-caption approach enables stochastic caption sampling during training (e.g., 70% long / 30% short) for better prompt generalization.
Search Queries (40 Categories)
<details> <summary>Click to expand full query list</summary>
Product Photography:
- product photography studio white background
- cosmetics product shot professional
- perfume bottle luxury commercial
- jewelry product photography
- luxury watch product shot
- skincare product minimal
- running shoes product
- headphones technology product
- handbag luxury product
- sunglasses product photography
- wine bottle product shot
- smartphone product photography
- beauty product flat lay
- e-commerce product listing
Food & Beverage:
- food photography commercial
- coffee cup latte art
- chocolate dessert food photography
- beverage drink commercial
- food advertisement menu
Automotive & Fashion:
- car automotive photography
- automobile car advertisement
- fashion accessories product
- fashion advertisement editorial
- furniture modern interior design
Advertising & Commercial:
- advertisement commercial campaign
- brand advertisement poster
- luxury brand advertisement
- retail store advertisement display
- billboard advertisement commercial
- magazine advertisement layout
- digital advertisement banner
- commercial branding photography
- marketing campaign visual
- sale promotion advertisement
- shopping advertisement retail
- real estate advertisement property
- tech gadget advertisement
- fitness sports advertisement
- beauty cosmetics advertisement campaign
- holiday seasonal advertisement
</details>
Dataset Statistics
Usage
from datasets import load_dataset
# Load the dataset
ds = load_dataset("RayyanAhmed9477/pexels-advertisement-photography", split="train")
# Access an example
example = ds[0]
image = example["image"] # PIL Image
long_caption = example["caption_long"] # Detailed advertising description
short_caption = example["caption_short"] # Tag-style caption
score = example["aesthetic_score"] # Aesthetic quality score
# For LoRA fine-tuning with stochastic captioning
import random
caption = long_caption if random.random() < 0.7 else short_captionUse with Diffusers
This dataset is designed for fine-tuning text-to-image diffusion models (e.g., Stable Diffusion, FLUX, Qwen-Image) via LoRA:
from datasets import load_dataset
ds = load_dataset("RayyanAhmed9477/pexels-advertisement-photography", split="train")
# Example: prepare for diffusers training
for example in ds:
image = example["image"]
caption = example["caption_long"] # or caption_short
# ... your training pipelineSchema
License & Attribution
- Images are sourced from Pexels under the Pexels License
- Pexels License permits free use for commercial and non-commercial purposes
- No attribution required, but appreciated
- AI-generated captions are provided as-is
Built With
- Pexels API for image sourcing
- Qwen3-VL-8B for caption generation
- CLIP for aesthetic scoring
- pHash for deduplication
Citation
@dataset{pexels_ad_photography_2026,
title={Pexels Advertisement & Product Photography Dataset},
author={Rayyan Ahmed},
year={2026},
url={https://huggingface.co/datasets/RayyanAhmed9477/pexels-advertisement-photography},
note={12,917 images with dual AI captions for text-to-image fine-tuning}
}