Skip to course content
Free computer vision course

Computer Vision and Multimodal AI

Unit 01.04: Writing down what this dataset may not be used for

The most useful artefact from this module is a short document saying what the dataset may not be used for.

Permission, content, gaps, prohibitions

What was collected, under what permission, what is incidentally in it, and what it must not support.

The code prints a dataset card.

import json

card = {
    "dataset": "warehouse-damage-2026",
    "collected": "photographs of shipping cartons, taken by staff",
    "permission": "employer owns the images; no people are the subject",
    "known_content": ["cartons", "shelving", "occasional hands"],
    "stripped": ["EXIF location", "EXIF timestamp"],
    "may_be_used_for": ["detecting visible carton damage"],
    "may_NOT_be_used_for": ["identifying staff", "productivity monitoring",
                            "any use outside this warehouse's lighting"],
    "known_gaps": ["daylight only", "one warehouse", "no wet-weather images"],
}
print(json.dumps(card, indent=2))

print("\n`may_NOT_be_used_for` is the field that survives the project")

# Write this before collecting, not after. The gaps list is what stops the
# model being deployed to a second site where nothing looks the same.

may_NOT_be_used_for is the field that survives the project. Models get reused, and the reuse is always a reasonable-sounding extension proposed by someone who was not there when the data was collected.

known_gaps is what stops deployment to a second site. "Daylight only, one warehouse" is a sentence that prevents an expensive mistake.

The mistake this prevents

The mistake is writing this after the model works. Written then, it describes what was built and rules nothing out - and the prohibitions you would have written at the start are exactly the ones that are now inconvenient.

Takeaway

Write the dataset card before collecting, and put the prohibitions and the gaps in it. It outlives the project and it is what governs reuse.