Phase 3 classifier

This commit is contained in:
Johnny Fernandes
2026-05-05 00:36:37 +01:00
parent 799ec0c13a
commit 66913b2354
10 changed files with 111 additions and 29 deletions
+23 -28
View File
@@ -328,7 +328,7 @@ Note: Comparison pairs (baseline vs treatment) are defined in the analysis noteb
### 3.1 Experiment Configs
Use the best preprocessing choices from Phase 2. The placeholders below assume 224×224, face crop enabled, and no augmentation unless Phase 2 results justify different settings.
- [ ] Create `classifier/configs/phase3/p3_resnet34.json`
- [x] Create `classifier/configs/phase3/p3_resnet34.json`
- backbone: resnet34
- pretrained: true
- epochs: 15
@@ -336,14 +336,12 @@ Use the best preprocessing choices from Phase 2. The placeholders below assume 2
- lr: 1e-4
- weight_decay: 1e-4
- image_size: 224
- face_crop: true (or best from Phase 2B/E)
- face_crop_margin: 0.6
- augment: false (or best from Phase 2D/E)
- augment: false (placeholder until Phase 2 results confirm)
- subsample: 0.2
- seed: 42
- early_stopping_patience: 5
- [ ] Create `classifier/configs/phase3/p3_resnet50.json`
- [x] Create `classifier/configs/phase3/p3_resnet50.json`
- backbone: resnet50
- pretrained: true
- epochs: 15
@@ -351,14 +349,12 @@ Use the best preprocessing choices from Phase 2. The placeholders below assume 2
- lr: 1e-4
- weight_decay: 1e-4
- image_size: 224
- face_crop: true (or best from Phase 2B/E)
- face_crop_margin: 0.6
- augment: false (or best from Phase 2D/E)
- augment: false (placeholder until Phase 2 results confirm)
- subsample: 0.2
- seed: 42
- early_stopping_patience: 5
- [ ] Create `classifier/configs/phase3/p3_efficientnet_b0.json`
- [x] Create `classifier/configs/phase3/p3_efficientnet_b0.json`
- backbone: efficientnet_b0
- pretrained: true
- epochs: 15
@@ -366,44 +362,43 @@ Use the best preprocessing choices from Phase 2. The placeholders below assume 2
- lr: 1e-4
- weight_decay: 1e-4
- image_size: 224
- face_crop: true (or best from Phase 2B/E)
- augment: false (or best from Phase 2D/E)
- augment: false (placeholder until Phase 2 results confirm)
- subsample: 0.2
- seed: 42
- early_stopping_patience: 5
- [ ] Create `classifier/configs/phase3/p3_convnext_tiny.json`
- [x] Create `classifier/configs/phase3/p3_convnext_tiny.json`
- backbone: convnext_tiny
- pretrained: true
- epochs: 15
- batch_size: 32
- lr: 1e-4
- lr: 5e-5 (reduced for ConvNeXt stability)
- weight_decay: 1e-4
- image_size: 224
- face_crop: true (or best from Phase 2B/E)
- augment: false (or best from Phase 2D/E)
- augment: false (placeholder until Phase 2 results confirm)
- subsample: 0.2
- seed: 42
- early_stopping_patience: 5
- [ ] Create `classifier/configs/phase3/p3_mobilenetv3_small.json`
- backbone: mobilenetv3_small
- [x] Create `classifier/configs/phase3/p3_mobilenetv3_small.json`
- backbone: mobilenet_v3_small
- pretrained: true
- epochs: 15
- batch_size: 32
- lr: 1e-4
- weight_decay: 1e-4
- image_size: 224
- face_crop: true (or best from Phase 2B/E)
- augment: false (or best from Phase 2D/E)
- augment: false (placeholder until Phase 2 results confirm)
- subsample: 0.2
- seed: 42
- early_stopping_patience: 5
- [x] Remove `p3a_mobilenet_v3_large.json` (not in plan, MobileNet V3 Large fills no distinct niche)
### 3.2 Model Implementation
- [ ] Implement ConvNeXt-Tiny in `classifier/src/models/convnext.py`
- [ ] Implement MobileNetV3-Small in `classifier/src/models/mobilenet.py`
- [ ] Register both models in `classifier/src/models/__init__.py`
- [x] Implement ConvNeXt-Tiny in `classifier/src/models/convnext.py`
- [x] Implement MobileNetV3-Small in `classifier/src/models/mobilenet.py`
- [x] Register both models in `classifier/src/models/__init__.py`
### 3.3 Training
- [ ] Train ResNet34 with 5-fold stratified group CV
@@ -570,9 +565,9 @@ This section is the consolidated notebook checklist for the notebooks referenced
- [x] Rename `classifier/run_cv.py` to `classifier/run.py` (pipeline expects classifier/run.py)
### Model Implementations
- [ ] Implement ConvNeXt-Tiny in `classifier/src/models/convnext.py`
- [ ] Implement MobileNetV3-Small in `classifier/src/models/mobilenet.py`
- [ ] Register both models in `classifier/src/models/__init__.py`
- [x] Implement ConvNeXt-Tiny in `classifier/src/models/convnext.py`
- [x] Implement MobileNetV3-Small in `classifier/src/models/mobilenet.py`
- [x] Register both models in `classifier/src/models/__init__.py`
### Normalization Implementation
- [ ] Implement function to calculate mean/std from real training images only
@@ -589,9 +584,9 @@ This section is the consolidated notebook checklist for the notebooks referenced
- [ ] Implement pairwise source AUC variance calculations
### Grad-CAM Improvements
- [ ] Ensure Grad-CAM works for all model types (CNN-based)
- [ ] Implement Grad-CAM for ConvNeXt
- [ ] Implement Grad-CAM for MobileNetV3
- [x] Ensure Grad-CAM works for all model types (CNN-based)
- [x] Implement Grad-CAM for ConvNeXt (last Conv2d found automatically by `find_conv()`)
- [x] Implement Grad-CAM for MobileNetV3 (last Conv2d found automatically by `find_conv()`)
- [ ] Organize Grad-CAM outputs by experiment, model, prediction type, source
---