Spaces:
Sleeping
Sleeping
| """Train the modality classifier (ct/mri/xray) on the built imaging set. | |
| uv run python -m ml_training.train_modality --data-dir ml_training/data/imaging \ | |
| --epochs 12 --batch-size 32 --out weights/ | |
| Uses the full modality train recipe (geometric + JPEG-quality jitter + blur, the | |
| source-confound killers) so the model cannot key on per-source compression signatures. | |
| Saves ``weights/modality_efficientnet_b0.pt`` + ``weights/modality_config.json``. | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| from ml_training.models import add_train_args, run_training, spec_from_args | |
| from ml_training.models.backbone import make_transforms | |
| MODALITY_CLASSES = ["ct", "mri", "xray"] # alphabetical, must match serving config | |
| def main(argv: list[str] | None = None) -> None: | |
| parser = argparse.ArgumentParser(description="Train the ct/mri/xray modality classifier.") | |
| add_train_args(parser) | |
| args = parser.parse_args(argv) | |
| spec = spec_from_args( | |
| args, | |
| name="modality", | |
| classes=MODALITY_CLASSES, | |
| manifest_name="manifest.csv", | |
| label_column="modality", | |
| train_transform=make_transforms(train=True, size=args.input_size), | |
| eval_transform=make_transforms(train=False, size=args.input_size), | |
| ) | |
| run_training(spec) | |
| if __name__ == "__main__": | |
| main() | |