Enterprise-ready security: ISO 27001 + SOC 2 Type I compliant.
Lessonbeginner

Collect High-Quality, Representative Data

Capture real production conditions, not staged-only images — and avoid the collection biases that quietly kill models.

Most dataset failures are collection failures. The team captures clean, well-lit examples on a single camera in one week, then the model fails in production on the long tail. Quality over quantity, but variance over both.

Outcome

Collect or source images that mirror real deployment conditions, with diversity across camera, time, geography, and operator — and an audit log to prove it.

Fast Track
If you already know your way around, here's the short version.
  1. Capture from production cameras when possible — not staged setups.

  2. Spread collection across days, shifts, and weather, not one heroic session.

  3. Prioritize data from your real production setup; use public or synthetic data only to fill specific gaps.

  4. Log every image's metadata (camera, time, location) for traceability.

Hands-on

Link to this sectionQuality over quantity — and variance over both#

Object detection examples across scenes

A useful rule from the Ultralytics training-results guidance: a model's ceiling is set by the worst-represented scenario in its training data. So:

  • 10,000 nearly-identical images from one camera at noon → great metrics on the val set, terrible on a different camera at dusk.
  • 1,500 images that span 12 scenarios → modest val metrics, but they generalize.

Optimize for variance first, volume second.

Link to this sectionWhere to source data#

Prioritize data from your actual production setup — see the data collection and annotation guide for deeper coverage on the sources below:

SourceWhen it helpsWhen it hurts
Production cameras (live)Closest to deployment; ground truthSlow; may need data agreements
Production cameras (archived)Lots of variance for freeOld footage may not match current setup
Public datasets (COCO, Open Images, VOC)Bootstrap quickly; add diversityDomain shift from your real scenes
Web scrapingCheap varianceInconsistent quality, licensing risk
Synthetic dataFill rare classes (faults, hazards)Overfit to renderer's style
Staged capturesEdge cases you can't wait forEasy to over-rely on

The large majority of your data should come from your real production setup. Public datasets help only in specific cases (e.g. license-plate detection), and synthetic data only to fill rare classes you can't yet capture.

Link to this sectionCommon collection pitfalls#

The failure modes that show up over and over:

PitfallSymptomFix
Single-day collectionHigh val mAP, drops at dusk in prodSpread across ≥ 7 days, ideally a full month
One cameraModel fails on second cameraCapture from ≥ 3 different cameras
Staged-only dataModel fails on real chaosAt least 80% from genuine production
Duplicate framesInflated metrics, leaked valDedup at upload (Ultralytics Platform does this with content hashing)
Biased operatorClass imbalance you didn't plan forSample across shifts, sites, and people
Missing rare casesModel misses safety eventsStratified sampling or synthetic top-up
Time correlationVal frames ~1s after train framesSplit by day or scene, not random per-image

Link to this sectionBias is a collection problem, not a modeling problem#

A biased dataset produces a biased model — and you can't fix it later with hyperparameters. The data collection guide on bias calls out four levers:

  • Diverse sources — don't collect from one site, one shift, or one team.
  • Balanced representation — across age, gender, ethnicity, geography (where applicable to your task).
  • Continuous monitoring — re-audit the dataset every few weeks for drift in coverage.
  • Mitigation techniques — oversample rare classes, augment heavily on minority groups, fairness-aware sampling.

For face / person detection in particular, ethical collection matters as much as technical correctness — see the AI ethics glossary entry.

Link to this sectionLog everything you capture#

Every image should carry, at minimum: camera ID, timestamp, location, and any operator-relevant metadata (shift, weather, conditions). Without this you can't:

  • Stratify splits later (lesson 6).
  • Diagnose a regression to a specific source.
  • Re-collect more of an under-represented scenario.

Ultralytics Platform preserves this metadata as you upload; for self-hosted pipelines, encode it in filenames or a sidecar JSON. Either way: don't drop it.

If your data includes faces, license plates, or any biometric / PII data, you'll need consent and a retention policy. The data privacy glossary entry is the right place to start, and the regions / compliance lesson in the Build with Ultralytics Platform course covers dataRegion for keeping data in the right jurisdiction.

Try It

Audit your last 200 collected images. For each, check: do you know the camera, the time, and the location? If not, your collection metadata pipeline needs fixing before scaling.

Done When
You've finished the lesson when all of these are true.
  • ≥ 80% of your dataset comes from real production sources.

  • You have images from at least 3 different cameras / capture conditions.

  • Every image has at least camera + timestamp metadata.

  • You've checked for duplicates and removed them before annotation.

What's next

Pixels in hand. Next: turn them into labels — consistently, the first time.