Skip to Content
Ai LogFloor-300 round 2 — Brian's label review

Floor-300 round 2 — Brian’s label review

Date: 2026-08-13

Prepared (not yet trained) changes for the next expansion round, from Brian’s review of the round-1 74-class set. Round 1 (floor300-medsiglip-s17) was left running to completion; these changes target round 2.

The three changes

  1. impetiginization → impetigo. For our purposes impetiginization (a secondary-infection overlay) is not a distinct diagnosis; fold it into impetigo.
  2. acne cystic → acne vulgaris. Cystic acne is a subtype of acne vulgaris; fold it into the parent.
  3. Remove seborrheic keratosis. It is a lesion, not a rash, and its differential includes cancerous lesions we specifically want to avoid surfacing as a benign named class. Dropped from the label file so its images fall to the “other” pool (abstain/refer), rather than being learned as a confident class.

Net: 74 → 71 classes. Merge effect on parents (round-1 synonym-merged counts): impetigo 12,065 → 13,383; acne vulgaris 15,042 → 16,002; seborrheic keratosis 432 → other-pool.

Implementation (branch feature/floor300-synonym-labels)

  • labels/floor300_r2.txt — round-1 set minus the three classes (71 lines).
  • ddtrain/datasets/synonyms.py — new CLINICAL_MERGES map (impetiginization→impetigo, acne cystic|cystic acne→acne vulgaris), kept separate from SYNONYM_MAP. normalize_diagnosis(dx, extra=) applies SYNONYM_MAP then the optional extra map.
  • dataset.clinical_merges config flag (default false; requires synonym_map: true). Kept opt-in so the round-1 74-class set (floor300.txt) stays exactly reproducible — impetiginization / acne cystic remain distinct classes there.
  • configs/floor300_medsiglip_r2.yaml — identical MedSigLIP recipe, label_file: labels/floor300_r2.txt, clinical_merges: true.
  • Tests: tests/test_synonyms.py::TestClinicalMerges (merges only apply with the extra map; parents are fixed points; compose with synonym map). Full suite green.

To run round 2

Same flow as round 1 (scripts/runpod_train.sh), config configs/floor300_medsiglip_r2.yaml. Dataset is unchanged (v1), so a warm pod skips the re-sync.

Last updated on