resoajoe/clinical-attire-labels
clinical-attire-labels 4,000 Places365 images labelled for clinical attire and role. Every label is machine-generated. scrubs · surgical_gown · patient_gown · lab_coat · street · mask · none plus derived roles: role_staff · role_patient · role_visitor · ppe_mask Why this exists There is no public labelled dataset for medical scrubs, hospital gowns or lab coats. Fashionpedia has none of them among its 46 garment categories; dataset searches return face-mask corpora… See the full description on the dataset page: https://huggingface.co/datasets/resoajoe/clinical-attire-labels.
clinical-attire-labels
4,000 Places365 images labelled for clinical attire and role. Every label is machine-generated.
scrubs · surgical_gown · patient_gown · lab_coat · street · mask · none plus derived roles: role_staff · role_patient · role_visitor · ppe_mask
Why this exists
There is no public labelled dataset for medical scrubs, hospital gowns or lab coats. Fashionpedia has none of them among its 46 garment categories; dataset searches return face-mask corpora and construction-site PPE. Anyone trying to build a hospital attire or role classifier hits that wall immediately. This is an attempt to lower it — not by solving the problem, but by publishing labels with their provenance and error rates measured, so they can be used with the right amount of trust.
How the labels were made
`qwen2.5vl:7b`, run locally, on Places365-Standard images from four clinical scenes (hospital_room, operating_room, nursing_home, hospital) and four domestic ones (bedroom, hotel_room, dorm_room, office).
- Every image asked twice with different wording. Only agreeing answers become a
consensuslabel — 2,966 of 4,000 (74%). Both prompts' parsed answers and their raw text are retained for all 4,000 rows, including disagreements, so you can re-parse or re-adjudicate. - Cross-checked with an independent person detector (yolov8n-pose), which shares no failure mode with the VL model.
persons_detectedis included per row.
Measured error rates — please read before using
These are weak labels. Any model trained on them is bounded by a ~78%-accurate teacher, and results measured against them describe agreement with qwen2.5vl:7b, not ground truth.
Known failure modes
- Oxygen masks are labelled `mask`. The audit found a child on a nebuliser scored mask-positive. For PPE-compliance work this is backwards — infection control and respiratory support are opposite situations. Consider
persons_detectedand scene context before usingppe_mask. - Bedding is sometimes read as `patient_gown` — the 7.1% hallucination rate for that class.
- Places365 contains illustrations. At least one audited image is a cartoon of nurses. Drawings are present; filter if that matters to you.
- Consensus rate varies by difficulty: 96% on empty bedrooms, 53% on nursing homes full of people in ambiguous clothing. The dataset is easiest exactly where it is least interesting.
The taxonomy came from an audit
The first class list said "hospital gown". Inspection showed its only failures were staff in blue surgical gowns labelled as such — correct English, operationally backwards, because a clinician's sterile gown and a patient's gown mean opposite things. Splitting them is what makes role derivable:
role_staff = scrubs OR surgical_gown OR lab_coat
role_patient = patient_gown
role_visitor = street
ppe_mask = mask # orthogonal to role, a compliance signalSchema
Images are not included
Only labels. Download Places365-Standard from the official source and join on file. Places365 has its own licence and terms; this release adds no pixel data and makes no claim over it. The labels in this repository are MIT.
Scope
Operations, never diagnosis. Who is present and whether PPE is worn are staffing, workflow and compliance questions. Nothing here describes any person's health, and none of it is validated for clinical use.
Trained model
`resoajoe/clinical-attire-nano` — 47K parameters, 189 KB, 0.36 ms/frame, trained on the detector-cleaned subset of these labels.
Additional label sets (added 2026-08-31)
Two further sets from the same pipeline, same two-prompt consensus protocol, same Places365 filename keys. 3,980 additional rows.
ward_state.jsonl — 2,500 rows, room-level occupancy primitives
`rails_up` is included deliberately as a negative result. It has the highest consensus of the four (99%) and 3 positives in 1,568 samples — the model answers "no" to everything and agrees with itself perfectly. Consensus measures agreement, not information. A labeller that always says the same thing passes a consensus filter trivially. This is why every label set here now reports a positive rate alongside its consensus, and why a 2% floor is applied before anything is trained.
Raw per-prompt answers are retained in the raw field for all four questions.
bed_state.jsonl — 1,480 rows, four-way bed condition
no_bed · empty_made · empty_messy · occupied
Why this set exists. A rumpled empty bed has the lumpy silhouette a naive detector reads as a covered person — the classic false positive for bed occupancy. Separating empty_messy from occupied is the whole point.
A model trained on these labels scored BELOW CHANCE on exactly that pair (0.336–0.402 across 64/128/256 px input). The cause is measurable and is not the labels: these are whole-room images where a 2000 mm bed fills ~0.44 of the frame, so blanket folds land on 2.3 px at 256 px input, far below the ~8 px recognition threshold. On a bed crop at 256 px the same folds land on 12.8 px.
So: crop to the bed before using this set. Whole-room framing cannot answer the question the labels encode, and 56 messy examples is thin regardless — dorm rooms were the only productive source at 11%.
answer_a / answer_b hold both prompts' parsed answers, including the 270 rows where they disagreed and state is therefore null.
Not included
424 labelled frames of generated hospital-room video are held back: the frames themselves are not redistributable, so labels keyed to them would be unusable.
