Unit 01.02: Permission is a property of the dataset, not the model
Permission is a property of the dataset, and it travels with every model trained on it.
Five sources, four of which need a decision
Publicly visible does not mean licensed; customer-uploaded does not mean usable for training.
The code sorts five common sources.
DATASETS = [
("scraped from a public website", "no", "public does not mean licensed"),
("photos staff took at work", "ask", "the employer may own them, the subjects may not have agreed"),
("a licensed dataset, research-only", "read it", "many forbid commercial use"),
("images customers uploaded to you", "check", "your terms may not cover model training"),
("images you generated yourself", "yes", "and record how"),
]
print(f"{'source':38} {'usable?':8} why")
for source, usable, why in DATASETS:
print(f"{source:38} {usable:8} {why}")
print("""
Permission is a property of the dataset and it travels with every model trained
on it. A weights file carries no licence, so the question has to be answered
and written down at collection time -- afterwards you cannot tell which images
a model saw.
""")
The customer-uploaded row is the one that catches organisations out. The images are yours to store and process for the service; whether your terms cover training a model on them is a separate question with a different answer.
A weights file carries no licence and no provenance. Once training has happened you cannot tell from the model which images it saw, which is why the question has to be answered at collection time.
The mistake this prevents
The mistake is treating this as a legal formality to resolve before launch. It determines what you may collect, so it has to be settled first - a dataset assembled without it may have to be discarded entirely.
Takeaway
Answer and record the permission question at collection time. A model carries no provenance, so afterwards you cannot establish what it was trained on.
