|
| 1 | +_base_: |
| 2 | + - base_banis+.yaml |
| 3 | + |
| 4 | +experiment_name: nisb_base_banis_plus_cldice |
| 5 | +description: >- |
| 6 | + banis+ (MedNeXt-L/k3) single-head, 8-channel output: 6 affinity (r1+r10) + |
| 7 | + 1 foreground + 1 skeleton-aware SDT. Adds a connectivity-aware SoftClDice loss |
| 8 | + on the foreground channel to discourage breaks at thin neurites (the per-voxel |
| 9 | + affinity BCE under-penalizes a single missing voxel on a 1-voxel-wide |
| 10 | + connector, which is exactly what fragments long backbones and caps NERL). |
| 11 | + Affinity decode path is unchanged (channels 0:3). erosion=2, bf16-mixed, |
| 12 | + cosine 200k inherited. |
| 13 | +
|
| 14 | +save_path: outputs/nisb_base_banis_plus_cldice |
| 15 | + |
| 16 | +default: |
| 17 | + model: |
| 18 | + # Single shared head: backbone emits all 8 channels (no `heads:` dict). |
| 19 | + out_channels: 8 |
| 20 | + loss: |
| 21 | + deep_supervision: false |
| 22 | + losses: |
| 23 | + # Affinity (decode signal) — unchanged from banis+/v1. |
| 24 | + - function: PerChannelBCEWithLogitsLoss |
| 25 | + weight: 1.0 |
| 26 | + pred_slice: "0:6" |
| 27 | + target_slice: "0:6" |
| 28 | + kwargs: |
| 29 | + auto_pos_weight: true |
| 30 | + max_pos_weight: 10.0 |
| 31 | + # Foreground head: plain BCE for calibration ... |
| 32 | + - function: WeightedBCEWithLogitsLoss |
| 33 | + weight: 1.0 |
| 34 | + pred_slice: "6:7" |
| 35 | + target_slice: "6:7" |
| 36 | + # ... plus connectivity-aware clDice on the same foreground channel. |
| 37 | + - function: SoftClDiceLoss |
| 38 | + weight: 0.5 |
| 39 | + pred_slice: "6:7" |
| 40 | + target_slice: "6:7" |
| 41 | + kwargs: |
| 42 | + sigmoid: true |
| 43 | + num_iters: 5 |
| 44 | + mode: binary |
| 45 | + # Skeleton-aware SDT (auxiliary structure signal). |
| 46 | + - function: SmoothL1Loss |
| 47 | + weight: 10.0 |
| 48 | + pred_slice: "7:8" |
| 49 | + target_slice: "7:8" |
| 50 | + kwargs: |
| 51 | + tanh: true |
| 52 | + data: |
| 53 | + label_transform: |
| 54 | + erosion: 0 # do NOT erode GT (erosion>=2 erases thin neurites from all targets) |
| 55 | + targets: |
| 56 | + - name: affinity |
| 57 | + kwargs: |
| 58 | + offsets: ["1-0-0", "0-1-0", "0-0-1", "10-0-0", "0-10-0", "0-0-10"] |
| 59 | + affinity_mode: banis |
| 60 | + - name: binary |
| 61 | + - name: skeleton_aware_edt |
| 62 | + kwargs: |
| 63 | + alpha: 0.8 |
| 64 | + bg_value: -1.0 |
| 65 | + |
| 66 | +train: |
| 67 | + optimization: |
| 68 | + precision: "bf16-mixed" |
| 69 | + monitor: |
| 70 | + logging: |
| 71 | + scalar: |
| 72 | + loss: |
| 73 | + - train_loss_total_epoch |
| 74 | + - val_loss_total |
| 75 | + - train_loss_term_0_weighted |
| 76 | + - train_loss_term_1_weighted |
| 77 | + - train_loss_term_2_weighted |
| 78 | + - train_loss_term_3_weighted |
| 79 | + loss_every_n_steps: 100 |
| 80 | + images: |
| 81 | + channel_mode: all |
0 commit comments