old_output.txt (39797B)
1 Using device: cuda 2 Downloading/locating dataset via kagglehub... 3 Dataset root: /home/vin/.cache/kagglehub/datasets/amanneo/diabetic-retinopathy-resized-arranged/versions/1 4 Dataset split — train: 24588, val: 5269, test: 5269 5 6 ====================================================================== 7 Experiment: resnet50 | CLAHE: False 8 ====================================================================== 9 Using 2 GPUs via DataParallel 10 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/nn/modules/linear.py:125: UserWarning: Attempting to use hipBLASLt on an unsupported architecture! Overriding blas backend to hipblas (Triggered internally at /tmp/guix-build-python-pytorch-rocm-2.5.1.drv-0/source/aten/src/ATen/Context.cpp:296.) 11 return F.linear(input, self.weight, self.bias) 12 [resnet50_clahe=False] Epoch 1/50 | train loss: 1.0245 | val loss: 0.9964 | macro F1: 0.1852 | weighted F1: 0.3999 | lr: 1.00e-06 13 [resnet50_clahe=False] Epoch 2/50 | train loss: 0.9314 | val loss: 0.8414 | macro F1: 0.2588 | weighted F1: 0.4671 | lr: 4.00e-06 14 [resnet50_clahe=False] Epoch 3/50 | train loss: 0.7615 | val loss: 0.6517 | macro F1: 0.3182 | weighted F1: 0.4632 | lr: 7.00e-06 15 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 16 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 17 [resnet50_clahe=False] Epoch 4/50 | train loss: 0.6579 | val loss: 0.5784 | macro F1: 0.3628 | weighted F1: 0.5279 | lr: 1.00e-05 18 [resnet50_clahe=False] Epoch 5/50 | train loss: 0.6052 | val loss: 0.5553 | macro F1: 0.3466 | weighted F1: 0.5052 | lr: 9.99e-06 19 [resnet50_clahe=False] Epoch 6/50 | train loss: 0.5523 | val loss: 0.5035 | macro F1: 0.3929 | weighted F1: 0.6145 | lr: 9.96e-06 20 [resnet50_clahe=False] Epoch 7/50 | train loss: 0.5230 | val loss: 0.4800 | macro F1: 0.4087 | weighted F1: 0.5930 | lr: 9.90e-06 21 [resnet50_clahe=False] Epoch 8/50 | train loss: 0.4867 | val loss: 0.5005 | macro F1: 0.3790 | weighted F1: 0.5139 | lr: 9.82e-06 22 [resnet50_clahe=False] Epoch 9/50 | train loss: 0.4552 | val loss: 0.5179 | macro F1: 0.3835 | weighted F1: 0.5228 | lr: 9.72e-06 23 [resnet50_clahe=False] Epoch 10/50 | train loss: 0.4253 | val loss: 0.4365 | macro F1: 0.4274 | weighted F1: 0.6266 | lr: 9.60e-06 24 [resnet50_clahe=False] Epoch 11/50 | train loss: 0.4028 | val loss: 0.4509 | macro F1: 0.4160 | weighted F1: 0.6024 | lr: 9.46e-06 25 [resnet50_clahe=False] Epoch 12/50 | train loss: 0.3771 | val loss: 0.4038 | macro F1: 0.4373 | weighted F1: 0.6812 | lr: 9.30e-06 26 [resnet50_clahe=False] Epoch 13/50 | train loss: 0.3598 | val loss: 0.4183 | macro F1: 0.4330 | weighted F1: 0.6428 | lr: 9.12e-06 27 [resnet50_clahe=False] Epoch 14/50 | train loss: 0.3373 | val loss: 0.4384 | macro F1: 0.4201 | weighted F1: 0.6056 | lr: 8.92e-06 28 [resnet50_clahe=False] Epoch 15/50 | train loss: 0.3218 | val loss: 0.4118 | macro F1: 0.4360 | weighted F1: 0.6580 | lr: 8.71e-06 29 [resnet50_clahe=False] Epoch 16/50 | train loss: 0.3145 | val loss: 0.4351 | macro F1: 0.4273 | weighted F1: 0.6133 | lr: 8.48e-06 30 [resnet50_clahe=False] Epoch 17/50 | train loss: 0.2979 | val loss: 0.4389 | macro F1: 0.4241 | weighted F1: 0.6119 | lr: 8.23e-06 31 [resnet50_clahe=False] Epoch 18/50 | train loss: 0.2895 | val loss: 0.4328 | macro F1: 0.4269 | weighted F1: 0.6206 | lr: 7.97e-06 32 [resnet50_clahe=False] Epoch 19/50 | train loss: 0.2756 | val loss: 0.4400 | macro F1: 0.4357 | weighted F1: 0.6137 | lr: 7.69e-06 33 [resnet50_clahe=False] Epoch 20/50 | train loss: 0.2712 | val loss: 0.4219 | macro F1: 0.4503 | weighted F1: 0.6445 | lr: 7.40e-06 34 [resnet50_clahe=False] Epoch 21/50 | train loss: 0.2614 | val loss: 0.4592 | macro F1: 0.4380 | weighted F1: 0.5830 | lr: 7.10e-06 35 [resnet50_clahe=False] Epoch 22/50 | train loss: 0.2565 | val loss: 0.4278 | macro F1: 0.4368 | weighted F1: 0.6325 | lr: 6.80e-06 36 [resnet50_clahe=False] Epoch 23/50 | train loss: 0.2517 | val loss: 0.4127 | macro F1: 0.4541 | weighted F1: 0.6641 | lr: 6.48e-06 37 [resnet50_clahe=False] Epoch 24/50 | train loss: 0.2415 | val loss: 0.4373 | macro F1: 0.4382 | weighted F1: 0.6198 | lr: 6.16e-06 38 [resnet50_clahe=False] Epoch 25/50 | train loss: 0.2382 | val loss: 0.4130 | macro F1: 0.4585 | weighted F1: 0.6676 | lr: 5.83e-06 39 [resnet50_clahe=False] Epoch 26/50 | train loss: 0.2363 | val loss: 0.4211 | macro F1: 0.4591 | weighted F1: 0.6563 | lr: 5.50e-06 40 [resnet50_clahe=False] Epoch 27/50 | train loss: 0.2290 | val loss: 0.4322 | macro F1: 0.4538 | weighted F1: 0.6440 | lr: 5.17e-06 41 [resnet50_clahe=False] Epoch 28/50 | train loss: 0.2263 | val loss: 0.4299 | macro F1: 0.4437 | weighted F1: 0.6414 | lr: 4.83e-06 42 [resnet50_clahe=False] Epoch 29/50 | train loss: 0.2177 | val loss: 0.4171 | macro F1: 0.4536 | weighted F1: 0.6538 | lr: 4.50e-06 43 [resnet50_clahe=False] Epoch 30/50 | train loss: 0.2174 | val loss: 0.4189 | macro F1: 0.4599 | weighted F1: 0.6671 | lr: 4.17e-06 44 [resnet50_clahe=False] Epoch 31/50 | train loss: 0.2156 | val loss: 0.4180 | macro F1: 0.4590 | weighted F1: 0.6540 | lr: 3.84e-06 45 [resnet50_clahe=False] Epoch 32/50 | train loss: 0.2094 | val loss: 0.4388 | macro F1: 0.4489 | weighted F1: 0.6309 | lr: 3.52e-06 46 [resnet50_clahe=False] Epoch 33/50 | train loss: 0.2095 | val loss: 0.4170 | macro F1: 0.4544 | weighted F1: 0.6624 | lr: 3.20e-06 47 [resnet50_clahe=False] Epoch 34/50 | train loss: 0.2047 | val loss: 0.4129 | macro F1: 0.4593 | weighted F1: 0.6698 | lr: 2.90e-06 48 [resnet50_clahe=False] Epoch 35/50 | train loss: 0.1990 | val loss: 0.4372 | macro F1: 0.4538 | weighted F1: 0.6288 | lr: 2.60e-06 49 [resnet50_clahe=False] Epoch 36/50 | train loss: 0.1997 | val loss: 0.4292 | macro F1: 0.4531 | weighted F1: 0.6472 | lr: 2.31e-06 50 [resnet50_clahe=False] Epoch 37/50 | train loss: 0.2002 | val loss: 0.4450 | macro F1: 0.4547 | weighted F1: 0.6356 | lr: 2.03e-06 51 [resnet50_clahe=False] Epoch 38/50 | train loss: 0.1953 | val loss: 0.4359 | macro F1: 0.4492 | weighted F1: 0.6448 | lr: 1.77e-06 52 [resnet50_clahe=False] Epoch 39/50 | train loss: 0.1960 | val loss: 0.4283 | macro F1: 0.4617 | weighted F1: 0.6526 | lr: 1.52e-06 53 [resnet50_clahe=False] Epoch 40/50 | train loss: 0.1910 | val loss: 0.4416 | macro F1: 0.4534 | weighted F1: 0.6405 | lr: 1.29e-06 54 [resnet50_clahe=False] Epoch 41/50 | train loss: 0.1896 | val loss: 0.4199 | macro F1: 0.4626 | weighted F1: 0.6711 | lr: 1.08e-06 55 [resnet50_clahe=False] Epoch 42/50 | train loss: 0.1915 | val loss: 0.4326 | macro F1: 0.4648 | weighted F1: 0.6557 | lr: 8.78e-07 56 [resnet50_clahe=False] Epoch 43/50 | train loss: 0.1904 | val loss: 0.4213 | macro F1: 0.4547 | weighted F1: 0.6577 | lr: 6.98e-07 57 [resnet50_clahe=False] Epoch 44/50 | train loss: 0.1883 | val loss: 0.4284 | macro F1: 0.4598 | weighted F1: 0.6512 | lr: 5.37e-07 58 [resnet50_clahe=False] Epoch 45/50 | train loss: 0.1909 | val loss: 0.4330 | macro F1: 0.4561 | weighted F1: 0.6465 | lr: 3.97e-07 59 [resnet50_clahe=False] Epoch 46/50 | train loss: 0.1902 | val loss: 0.4259 | macro F1: 0.4594 | weighted F1: 0.6519 | lr: 2.77e-07 60 [resnet50_clahe=False] Epoch 47/50 | train loss: 0.1863 | val loss: 0.4299 | macro F1: 0.4550 | weighted F1: 0.6489 | lr: 1.78e-07 61 [resnet50_clahe=False] Epoch 48/50 | train loss: 0.1882 | val loss: 0.4276 | macro F1: 0.4600 | weighted F1: 0.6555 | lr: 1.00e-07 62 [resnet50_clahe=False] Epoch 49/50 | train loss: 0.1891 | val loss: 0.4210 | macro F1: 0.4625 | weighted F1: 0.6657 | lr: 4.46e-08 63 [resnet50_clahe=False] Epoch 50/50 | train loss: 0.1895 | val loss: 0.4263 | macro F1: 0.4566 | weighted F1: 0.6599 | lr: 1.12e-08 64 Training complete: 50 epochs, 7514.0s, best val macro F1: 0.4648 65 Checkpoint saved: results/resnet50_clahe=False/best_model.pth 66 67 Test results — Weighted F1: 0.6570 | Macro F1: 0.4630 | Accuracy: 0.6111 | Kappa: 0.5341 68 precision recall f1-score support 69 70 Healthy (0) 0.86 0.67 0.75 3872 71 Mild NPDR (1) 0.11 0.35 0.17 366 72 Moderate NPDR (2) 0.46 0.50 0.48 794 73 Severe NPDR (3) 0.45 0.41 0.43 131 74 Proliferative DR (4) 0.64 0.40 0.49 106 75 76 accuracy 0.61 5269 77 macro avg 0.50 0.47 0.46 5269 78 weighted avg 0.73 0.61 0.66 5269 79 80 81 ====================================================================== 82 Experiment: resnet50 | CLAHE: True 83 ====================================================================== 84 Using 2 GPUs via DataParallel 85 [resnet50_clahe=True] Epoch 1/50 | train loss: 1.0238 | val loss: 1.0225 | macro F1: 0.1611 | weighted F1: 0.3049 | lr: 1.00e-06 86 [resnet50_clahe=True] Epoch 2/50 | train loss: 0.9321 | val loss: 0.8636 | macro F1: 0.2377 | weighted F1: 0.3381 | lr: 4.00e-06 87 [resnet50_clahe=True] Epoch 3/50 | train loss: 0.7489 | val loss: 0.7394 | macro F1: 0.2726 | weighted F1: 0.2384 | lr: 7.00e-06 88 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 89 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 90 [resnet50_clahe=True] Epoch 4/50 | train loss: 0.6605 | val loss: 0.6103 | macro F1: 0.3472 | weighted F1: 0.4773 | lr: 1.00e-05 91 [resnet50_clahe=True] Epoch 5/50 | train loss: 0.6087 | val loss: 0.5574 | macro F1: 0.3812 | weighted F1: 0.5527 | lr: 9.99e-06 92 [resnet50_clahe=True] Epoch 6/50 | train loss: 0.5717 | val loss: 0.6886 | macro F1: 0.3069 | weighted F1: 0.3767 | lr: 9.96e-06 93 [resnet50_clahe=True] Epoch 7/50 | train loss: 0.5410 | val loss: 0.5472 | macro F1: 0.3861 | weighted F1: 0.5587 | lr: 9.90e-06 94 [resnet50_clahe=True] Epoch 8/50 | train loss: 0.5153 | val loss: 0.6006 | macro F1: 0.3587 | weighted F1: 0.4748 | lr: 9.82e-06 95 [resnet50_clahe=True] Epoch 9/50 | train loss: 0.4801 | val loss: 0.5778 | macro F1: 0.3511 | weighted F1: 0.4467 | lr: 9.72e-06 96 [resnet50_clahe=True] Epoch 10/50 | train loss: 0.4605 | val loss: 0.6081 | macro F1: 0.3479 | weighted F1: 0.3552 | lr: 9.60e-06 97 [resnet50_clahe=True] Epoch 11/50 | train loss: 0.4312 | val loss: 0.5329 | macro F1: 0.3830 | weighted F1: 0.5007 | lr: 9.46e-06 98 [resnet50_clahe=True] Epoch 12/50 | train loss: 0.4050 | val loss: 0.6114 | macro F1: 0.3433 | weighted F1: 0.3942 | lr: 9.30e-06 99 [resnet50_clahe=True] Epoch 13/50 | train loss: 0.3893 | val loss: 0.4973 | macro F1: 0.4002 | weighted F1: 0.5184 | lr: 9.12e-06 100 [resnet50_clahe=True] Epoch 14/50 | train loss: 0.3720 | val loss: 0.5185 | macro F1: 0.3813 | weighted F1: 0.4926 | lr: 8.92e-06 101 [resnet50_clahe=True] Epoch 15/50 | train loss: 0.3572 | val loss: 0.4602 | macro F1: 0.4253 | weighted F1: 0.6034 | lr: 8.71e-06 102 [resnet50_clahe=True] Epoch 16/50 | train loss: 0.3412 | val loss: 0.4855 | macro F1: 0.4119 | weighted F1: 0.5678 | lr: 8.48e-06 103 [resnet50_clahe=True] Epoch 17/50 | train loss: 0.3293 | val loss: 0.5191 | macro F1: 0.3913 | weighted F1: 0.4668 | lr: 8.23e-06 104 [resnet50_clahe=True] Epoch 18/50 | train loss: 0.3160 | val loss: 0.4860 | macro F1: 0.4172 | weighted F1: 0.5307 | lr: 7.97e-06 105 [resnet50_clahe=True] Epoch 19/50 | train loss: 0.3008 | val loss: 0.4435 | macro F1: 0.4492 | weighted F1: 0.6188 | lr: 7.69e-06 106 [resnet50_clahe=True] Epoch 20/50 | train loss: 0.3014 | val loss: 0.4456 | macro F1: 0.4312 | weighted F1: 0.6130 | lr: 7.40e-06 107 [resnet50_clahe=True] Epoch 21/50 | train loss: 0.2881 | val loss: 0.4873 | macro F1: 0.4171 | weighted F1: 0.5459 | lr: 7.10e-06 108 [resnet50_clahe=True] Epoch 22/50 | train loss: 0.2866 | val loss: 0.4176 | macro F1: 0.4596 | weighted F1: 0.6512 | lr: 6.80e-06 109 [resnet50_clahe=True] Epoch 23/50 | train loss: 0.2749 | val loss: 0.4252 | macro F1: 0.4611 | weighted F1: 0.6455 | lr: 6.48e-06 110 [resnet50_clahe=True] Epoch 24/50 | train loss: 0.2686 | val loss: 0.4157 | macro F1: 0.4631 | weighted F1: 0.6507 | lr: 6.16e-06 111 [resnet50_clahe=True] Epoch 25/50 | train loss: 0.2612 | val loss: 0.4571 | macro F1: 0.4375 | weighted F1: 0.5825 | lr: 5.83e-06 112 [resnet50_clahe=True] Epoch 26/50 | train loss: 0.2605 | val loss: 0.4122 | macro F1: 0.4560 | weighted F1: 0.6547 | lr: 5.50e-06 113 [resnet50_clahe=True] Epoch 27/50 | train loss: 0.2521 | val loss: 0.4362 | macro F1: 0.4559 | weighted F1: 0.6230 | lr: 5.17e-06 114 [resnet50_clahe=True] Epoch 28/50 | train loss: 0.2487 | val loss: 0.4511 | macro F1: 0.4397 | weighted F1: 0.5744 | lr: 4.83e-06 115 [resnet50_clahe=True] Epoch 29/50 | train loss: 0.2446 | val loss: 0.4332 | macro F1: 0.4599 | weighted F1: 0.6134 | lr: 4.50e-06 116 [resnet50_clahe=True] Epoch 30/50 | train loss: 0.2440 | val loss: 0.4364 | macro F1: 0.4538 | weighted F1: 0.5992 | lr: 4.17e-06 117 [resnet50_clahe=True] Epoch 31/50 | train loss: 0.2387 | val loss: 0.4493 | macro F1: 0.4453 | weighted F1: 0.5933 | lr: 3.84e-06 118 [resnet50_clahe=True] Epoch 32/50 | train loss: 0.2329 | val loss: 0.4114 | macro F1: 0.4750 | weighted F1: 0.6623 | lr: 3.52e-06 119 [resnet50_clahe=True] Epoch 33/50 | train loss: 0.2332 | val loss: 0.4253 | macro F1: 0.4582 | weighted F1: 0.6266 | lr: 3.20e-06 120 [resnet50_clahe=True] Epoch 34/50 | train loss: 0.2295 | val loss: 0.4181 | macro F1: 0.4710 | weighted F1: 0.6431 | lr: 2.90e-06 121 [resnet50_clahe=True] Epoch 35/50 | train loss: 0.2271 | val loss: 0.4429 | macro F1: 0.4485 | weighted F1: 0.6159 | lr: 2.60e-06 122 [resnet50_clahe=True] Epoch 36/50 | train loss: 0.2248 | val loss: 0.4404 | macro F1: 0.4527 | weighted F1: 0.6060 | lr: 2.31e-06 123 [resnet50_clahe=True] Epoch 37/50 | train loss: 0.2201 | val loss: 0.4329 | macro F1: 0.4633 | weighted F1: 0.6234 | lr: 2.03e-06 124 [resnet50_clahe=True] Epoch 38/50 | train loss: 0.2219 | val loss: 0.4181 | macro F1: 0.4654 | weighted F1: 0.6392 | lr: 1.77e-06 125 [resnet50_clahe=True] Epoch 39/50 | train loss: 0.2201 | val loss: 0.4433 | macro F1: 0.4566 | weighted F1: 0.6084 | lr: 1.52e-06 126 [resnet50_clahe=True] Epoch 40/50 | train loss: 0.2203 | val loss: 0.4200 | macro F1: 0.4683 | weighted F1: 0.6455 | lr: 1.29e-06 127 [resnet50_clahe=True] Epoch 41/50 | train loss: 0.2174 | val loss: 0.4340 | macro F1: 0.4613 | weighted F1: 0.6123 | lr: 1.08e-06 128 [resnet50_clahe=True] Epoch 42/50 | train loss: 0.2191 | val loss: 0.4246 | macro F1: 0.4619 | weighted F1: 0.6323 | lr: 8.78e-07 129 Early stopping at epoch 42 (no improvement for 10 epochs). 130 Training complete: 42 epochs, 7428.3s, best val macro F1: 0.4750 131 Checkpoint saved: results/resnet50_clahe=True/best_model.pth 132 133 Test results — Weighted F1: 0.6473 | Macro F1: 0.4426 | Accuracy: 0.6058 | Kappa: 0.5234 134 precision recall f1-score support 135 136 Healthy (0) 0.86 0.66 0.75 3872 137 Mild NPDR (1) 0.12 0.32 0.17 366 138 Moderate NPDR (2) 0.39 0.52 0.45 794 139 Severe NPDR (3) 0.35 0.33 0.34 131 140 Proliferative DR (4) 0.46 0.56 0.50 106 141 142 accuracy 0.61 5269 143 macro avg 0.44 0.48 0.44 5269 144 weighted avg 0.72 0.61 0.65 5269 145 146 147 ====================================================================== 148 Experiment: efficientnet_b0 | CLAHE: False 149 ====================================================================== 150 Using 2 GPUs via DataParallel 151 [efficientnet_b0_clahe=False] Epoch 1/50 | train loss: 1.0094 | val loss: 1.0305 | macro F1: 0.1622 | weighted F1: 0.2599 | lr: 1.00e-06 152 [efficientnet_b0_clahe=False] Epoch 2/50 | train loss: 0.9135 | val loss: 0.8390 | macro F1: 0.2462 | weighted F1: 0.3625 | lr: 4.00e-06 153 [efficientnet_b0_clahe=False] Epoch 3/50 | train loss: 0.7802 | val loss: 0.6796 | macro F1: 0.3085 | weighted F1: 0.4454 | lr: 7.00e-06 154 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 155 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 156 [efficientnet_b0_clahe=False] Epoch 4/50 | train loss: 0.6916 | val loss: 0.6145 | macro F1: 0.3412 | weighted F1: 0.4696 | lr: 1.00e-05 157 [efficientnet_b0_clahe=False] Epoch 5/50 | train loss: 0.6479 | val loss: 0.6016 | macro F1: 0.3530 | weighted F1: 0.4816 | lr: 9.99e-06 158 [efficientnet_b0_clahe=False] Epoch 6/50 | train loss: 0.6232 | val loss: 0.5439 | macro F1: 0.3814 | weighted F1: 0.5468 | lr: 9.96e-06 159 [efficientnet_b0_clahe=False] Epoch 7/50 | train loss: 0.6024 | val loss: 0.5210 | macro F1: 0.3909 | weighted F1: 0.5471 | lr: 9.90e-06 160 [efficientnet_b0_clahe=False] Epoch 8/50 | train loss: 0.5788 | val loss: 0.5330 | macro F1: 0.3936 | weighted F1: 0.5652 | lr: 9.82e-06 161 [efficientnet_b0_clahe=False] Epoch 9/50 | train loss: 0.5693 | val loss: 0.4784 | macro F1: 0.4241 | weighted F1: 0.6237 | lr: 9.72e-06 162 [efficientnet_b0_clahe=False] Epoch 10/50 | train loss: 0.5533 | val loss: 0.4836 | macro F1: 0.4168 | weighted F1: 0.6054 | lr: 9.60e-06 163 [efficientnet_b0_clahe=False] Epoch 11/50 | train loss: 0.5360 | val loss: 0.4841 | macro F1: 0.4225 | weighted F1: 0.6004 | lr: 9.46e-06 164 [efficientnet_b0_clahe=False] Epoch 12/50 | train loss: 0.5262 | val loss: 0.4864 | macro F1: 0.4240 | weighted F1: 0.5978 | lr: 9.30e-06 165 [efficientnet_b0_clahe=False] Epoch 13/50 | train loss: 0.5072 | val loss: 0.4667 | macro F1: 0.4395 | weighted F1: 0.6369 | lr: 9.12e-06 166 [efficientnet_b0_clahe=False] Epoch 14/50 | train loss: 0.4993 | val loss: 0.4608 | macro F1: 0.4295 | weighted F1: 0.5932 | lr: 8.92e-06 167 [efficientnet_b0_clahe=False] Epoch 15/50 | train loss: 0.4913 | val loss: 0.4630 | macro F1: 0.4375 | weighted F1: 0.6177 | lr: 8.71e-06 168 [efficientnet_b0_clahe=False] Epoch 16/50 | train loss: 0.4824 | val loss: 0.4439 | macro F1: 0.4395 | weighted F1: 0.6329 | lr: 8.48e-06 169 [efficientnet_b0_clahe=False] Epoch 17/50 | train loss: 0.4761 | val loss: 0.4512 | macro F1: 0.4469 | weighted F1: 0.6369 | lr: 8.23e-06 170 [efficientnet_b0_clahe=False] Epoch 18/50 | train loss: 0.4608 | val loss: 0.4420 | macro F1: 0.4512 | weighted F1: 0.6506 | lr: 7.97e-06 171 [efficientnet_b0_clahe=False] Epoch 19/50 | train loss: 0.4509 | val loss: 0.4284 | macro F1: 0.4489 | weighted F1: 0.6558 | lr: 7.69e-06 172 [efficientnet_b0_clahe=False] Epoch 20/50 | train loss: 0.4410 | val loss: 0.4232 | macro F1: 0.4586 | weighted F1: 0.6566 | lr: 7.40e-06 173 [efficientnet_b0_clahe=False] Epoch 21/50 | train loss: 0.4339 | val loss: 0.4292 | macro F1: 0.4498 | weighted F1: 0.6438 | lr: 7.10e-06 174 [efficientnet_b0_clahe=False] Epoch 22/50 | train loss: 0.4260 | val loss: 0.4554 | macro F1: 0.4252 | weighted F1: 0.6216 | lr: 6.80e-06 175 [efficientnet_b0_clahe=False] Epoch 23/50 | train loss: 0.4163 | val loss: 0.4584 | macro F1: 0.4267 | weighted F1: 0.5894 | lr: 6.48e-06 176 [efficientnet_b0_clahe=False] Epoch 24/50 | train loss: 0.4194 | val loss: 0.4317 | macro F1: 0.4393 | weighted F1: 0.6219 | lr: 6.16e-06 177 [efficientnet_b0_clahe=False] Epoch 25/50 | train loss: 0.4121 | val loss: 0.4469 | macro F1: 0.4260 | weighted F1: 0.6084 | lr: 5.83e-06 178 [efficientnet_b0_clahe=False] Epoch 26/50 | train loss: 0.4032 | val loss: 0.4448 | macro F1: 0.4315 | weighted F1: 0.6125 | lr: 5.50e-06 179 [efficientnet_b0_clahe=False] Epoch 27/50 | train loss: 0.3985 | val loss: 0.4556 | macro F1: 0.4163 | weighted F1: 0.5744 | lr: 5.17e-06 180 [efficientnet_b0_clahe=False] Epoch 28/50 | train loss: 0.4012 | val loss: 0.4414 | macro F1: 0.4369 | weighted F1: 0.6114 | lr: 4.83e-06 181 [efficientnet_b0_clahe=False] Epoch 29/50 | train loss: 0.3901 | val loss: 0.4544 | macro F1: 0.4269 | weighted F1: 0.5848 | lr: 4.50e-06 182 [efficientnet_b0_clahe=False] Epoch 30/50 | train loss: 0.3827 | val loss: 0.4198 | macro F1: 0.4493 | weighted F1: 0.6541 | lr: 4.17e-06 183 Early stopping at epoch 30 (no improvement for 10 epochs). 184 Training complete: 30 epochs, 4417.0s, best val macro F1: 0.4586 185 Checkpoint saved: results/efficientnet_b0_clahe=False/best_model.pth 186 187 Test results — Weighted F1: 0.6544 | Macro F1: 0.4565 | Accuracy: 0.6092 | Kappa: 0.5508 188 precision recall f1-score support 189 190 Healthy (0) 0.86 0.68 0.76 3872 191 Mild NPDR (1) 0.12 0.38 0.18 366 192 Moderate NPDR (2) 0.43 0.44 0.43 794 193 Severe NPDR (3) 0.37 0.40 0.39 131 194 Proliferative DR (4) 0.50 0.55 0.52 106 195 196 accuracy 0.61 5269 197 macro avg 0.46 0.49 0.46 5269 198 weighted avg 0.73 0.61 0.65 5269 199 200 201 ====================================================================== 202 Experiment: efficientnet_b0 | CLAHE: True 203 ====================================================================== 204 Using 2 GPUs via DataParallel 205 [efficientnet_b0_clahe=True] Epoch 1/50 | train loss: 1.0340 | val loss: 0.9535 | macro F1: 0.1977 | weighted F1: 0.4595 | lr: 1.00e-06 206 [efficientnet_b0_clahe=True] Epoch 2/50 | train loss: 0.9357 | val loss: 0.8644 | macro F1: 0.2540 | weighted F1: 0.4719 | lr: 4.00e-06 207 [efficientnet_b0_clahe=True] Epoch 3/50 | train loss: 0.8071 | val loss: 0.7581 | macro F1: 0.2782 | weighted F1: 0.3761 | lr: 7.00e-06 208 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 209 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 210 [efficientnet_b0_clahe=True] Epoch 4/50 | train loss: 0.7152 | val loss: 0.7045 | macro F1: 0.3216 | weighted F1: 0.4750 | lr: 1.00e-05 211 [efficientnet_b0_clahe=True] Epoch 5/50 | train loss: 0.6679 | val loss: 0.6061 | macro F1: 0.3530 | weighted F1: 0.5111 | lr: 9.99e-06 212 [efficientnet_b0_clahe=True] Epoch 6/50 | train loss: 0.6345 | val loss: 0.5824 | macro F1: 0.3795 | weighted F1: 0.5610 | lr: 9.96e-06 213 [efficientnet_b0_clahe=True] Epoch 7/50 | train loss: 0.6218 | val loss: 0.6082 | macro F1: 0.3673 | weighted F1: 0.5309 | lr: 9.90e-06 214 [efficientnet_b0_clahe=True] Epoch 8/50 | train loss: 0.5995 | val loss: 0.5310 | macro F1: 0.4200 | weighted F1: 0.6034 | lr: 9.82e-06 215 [efficientnet_b0_clahe=True] Epoch 9/50 | train loss: 0.5713 | val loss: 0.5494 | macro F1: 0.3984 | weighted F1: 0.5903 | lr: 9.72e-06 216 [efficientnet_b0_clahe=True] Epoch 10/50 | train loss: 0.5695 | val loss: 0.5148 | macro F1: 0.4143 | weighted F1: 0.5797 | lr: 9.60e-06 217 [efficientnet_b0_clahe=True] Epoch 11/50 | train loss: 0.5582 | val loss: 0.5137 | macro F1: 0.4164 | weighted F1: 0.6019 | lr: 9.46e-06 218 [efficientnet_b0_clahe=True] Epoch 12/50 | train loss: 0.5420 | val loss: 0.4829 | macro F1: 0.4390 | weighted F1: 0.6368 | lr: 9.30e-06 219 [efficientnet_b0_clahe=True] Epoch 13/50 | train loss: 0.5272 | val loss: 0.5464 | macro F1: 0.4034 | weighted F1: 0.5600 | lr: 9.12e-06 220 [efficientnet_b0_clahe=True] Epoch 14/50 | train loss: 0.5217 | val loss: 0.5122 | macro F1: 0.4191 | weighted F1: 0.5894 | lr: 8.92e-06 221 [efficientnet_b0_clahe=True] Epoch 15/50 | train loss: 0.5070 | val loss: 0.4664 | macro F1: 0.4436 | weighted F1: 0.6234 | lr: 8.71e-06 222 [efficientnet_b0_clahe=True] Epoch 16/50 | train loss: 0.5059 | val loss: 0.5205 | macro F1: 0.4144 | weighted F1: 0.5574 | lr: 8.48e-06 223 [efficientnet_b0_clahe=True] Epoch 17/50 | train loss: 0.4872 | val loss: 0.4746 | macro F1: 0.4323 | weighted F1: 0.6283 | lr: 8.23e-06 224 [efficientnet_b0_clahe=True] Epoch 18/50 | train loss: 0.4801 | val loss: 0.4534 | macro F1: 0.4345 | weighted F1: 0.6202 | lr: 7.97e-06 225 [efficientnet_b0_clahe=True] Epoch 19/50 | train loss: 0.4659 | val loss: 0.4260 | macro F1: 0.4591 | weighted F1: 0.6698 | lr: 7.69e-06 226 [efficientnet_b0_clahe=True] Epoch 20/50 | train loss: 0.4631 | val loss: 0.4721 | macro F1: 0.4343 | weighted F1: 0.6318 | lr: 7.40e-06 227 [efficientnet_b0_clahe=True] Epoch 21/50 | train loss: 0.4559 | val loss: 0.4620 | macro F1: 0.4281 | weighted F1: 0.6117 | lr: 7.10e-06 228 [efficientnet_b0_clahe=True] Epoch 22/50 | train loss: 0.4491 | val loss: 0.4908 | macro F1: 0.4294 | weighted F1: 0.6191 | lr: 6.80e-06 229 [efficientnet_b0_clahe=True] Epoch 23/50 | train loss: 0.4461 | val loss: 0.4441 | macro F1: 0.4530 | weighted F1: 0.6423 | lr: 6.48e-06 230 [efficientnet_b0_clahe=True] Epoch 24/50 | train loss: 0.4359 | val loss: 0.4833 | macro F1: 0.4273 | weighted F1: 0.6094 | lr: 6.16e-06 231 [efficientnet_b0_clahe=True] Epoch 25/50 | train loss: 0.4335 | val loss: 0.4640 | macro F1: 0.4372 | weighted F1: 0.6126 | lr: 5.83e-06 232 [efficientnet_b0_clahe=True] Epoch 26/50 | train loss: 0.4239 | val loss: 0.4630 | macro F1: 0.4415 | weighted F1: 0.6327 | lr: 5.50e-06 233 [efficientnet_b0_clahe=True] Epoch 27/50 | train loss: 0.4233 | val loss: 0.4814 | macro F1: 0.4333 | weighted F1: 0.5907 | lr: 5.17e-06 234 [efficientnet_b0_clahe=True] Epoch 28/50 | train loss: 0.4195 | val loss: 0.4707 | macro F1: 0.4348 | weighted F1: 0.6253 | lr: 4.83e-06 235 [efficientnet_b0_clahe=True] Epoch 29/50 | train loss: 0.4106 | val loss: 0.4524 | macro F1: 0.4444 | weighted F1: 0.6188 | lr: 4.50e-06 236 Early stopping at epoch 29 (no improvement for 10 epochs). 237 Training complete: 29 epochs, 5039.9s, best val macro F1: 0.4591 238 Checkpoint saved: results/efficientnet_b0_clahe=True/best_model.pth 239 240 Test results — Weighted F1: 0.6583 | Macro F1: 0.4510 | Accuracy: 0.6225 | Kappa: 0.5388 241 precision recall f1-score support 242 243 Healthy (0) 0.85 0.71 0.77 3872 244 Mild NPDR (1) 0.11 0.31 0.17 366 245 Moderate NPDR (2) 0.41 0.36 0.38 794 246 Severe NPDR (3) 0.35 0.48 0.41 131 247 Proliferative DR (4) 0.46 0.62 0.53 106 248 249 accuracy 0.62 5269 250 macro avg 0.44 0.50 0.45 5269 251 weighted avg 0.71 0.62 0.66 5269 252 253 254 ====================================================================== 255 Experiment: vit_b_16 | CLAHE: False 256 ====================================================================== 257 Using 2 GPUs via DataParallel 258 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/nn/functional.py:6278: UserWarning: 1Torch was not compiled with memory efficient attention. (Triggered internally at /tmp/guix-build-python-pytorch-rocm-2.5.1.drv-0/source/aten/src/ATen/native/transformers/hip/sdp_utils.cpp:655.) 259 attn_output = scaled_dot_product_attention( 260 [vit_b_16_clahe=False] Epoch 1/50 | train loss: 0.8742 | val loss: 0.6483 | macro F1: 0.3378 | weighted F1: 0.5137 | lr: 1.00e-06 261 [vit_b_16_clahe=False] Epoch 2/50 | train loss: 0.6200 | val loss: 0.5276 | macro F1: 0.4139 | weighted F1: 0.6270 | lr: 4.00e-06 262 [vit_b_16_clahe=False] Epoch 3/50 | train loss: 0.5423 | val loss: 0.4780 | macro F1: 0.4336 | weighted F1: 0.6650 | lr: 7.00e-06 263 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 264 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 265 [vit_b_16_clahe=False] Epoch 4/50 | train loss: 0.4824 | val loss: 0.4713 | macro F1: 0.4397 | weighted F1: 0.6484 | lr: 1.00e-05 266 [vit_b_16_clahe=False] Epoch 5/50 | train loss: 0.3943 | val loss: 0.5388 | macro F1: 0.4058 | weighted F1: 0.5305 | lr: 9.99e-06 267 [vit_b_16_clahe=False] Epoch 6/50 | train loss: 0.3380 | val loss: 0.4502 | macro F1: 0.4414 | weighted F1: 0.6493 | lr: 9.96e-06 268 [vit_b_16_clahe=False] Epoch 7/50 | train loss: 0.2967 | val loss: 0.5407 | macro F1: 0.4048 | weighted F1: 0.5500 | lr: 9.90e-06 269 [vit_b_16_clahe=False] Epoch 8/50 | train loss: 0.2683 | val loss: 0.4669 | macro F1: 0.4255 | weighted F1: 0.6103 | lr: 9.82e-06 270 [vit_b_16_clahe=False] Epoch 9/50 | train loss: 0.2491 | val loss: 0.5058 | macro F1: 0.4202 | weighted F1: 0.5681 | lr: 9.72e-06 271 [vit_b_16_clahe=False] Epoch 10/50 | train loss: 0.2314 | val loss: 0.5206 | macro F1: 0.3947 | weighted F1: 0.5672 | lr: 9.60e-06 272 [vit_b_16_clahe=False] Epoch 11/50 | train loss: 0.2123 | val loss: 0.4093 | macro F1: 0.4600 | weighted F1: 0.6873 | lr: 9.46e-06 273 [vit_b_16_clahe=False] Epoch 12/50 | train loss: 0.1984 | val loss: 0.4557 | macro F1: 0.4462 | weighted F1: 0.6466 | lr: 9.30e-06 274 [vit_b_16_clahe=False] Epoch 13/50 | train loss: 0.1796 | val loss: 0.5881 | macro F1: 0.3977 | weighted F1: 0.4722 | lr: 9.12e-06 275 [vit_b_16_clahe=False] Epoch 14/50 | train loss: 0.1653 | val loss: 0.5450 | macro F1: 0.4196 | weighted F1: 0.5442 | lr: 8.92e-06 276 [vit_b_16_clahe=False] Epoch 15/50 | train loss: 0.1543 | val loss: 0.4631 | macro F1: 0.4565 | weighted F1: 0.6523 | lr: 8.71e-06 277 [vit_b_16_clahe=False] Epoch 16/50 | train loss: 0.1406 | val loss: 0.4707 | macro F1: 0.4367 | weighted F1: 0.6526 | lr: 8.48e-06 278 [vit_b_16_clahe=False] Epoch 17/50 | train loss: 0.1301 | val loss: 0.4762 | macro F1: 0.4604 | weighted F1: 0.6645 | lr: 8.23e-06 279 [vit_b_16_clahe=False] Epoch 18/50 | train loss: 0.1178 | val loss: 0.4418 | macro F1: 0.4740 | weighted F1: 0.7078 | lr: 7.97e-06 280 [vit_b_16_clahe=False] Epoch 19/50 | train loss: 0.1070 | val loss: 0.5175 | macro F1: 0.4431 | weighted F1: 0.6389 | lr: 7.69e-06 281 [vit_b_16_clahe=False] Epoch 20/50 | train loss: 0.0997 | val loss: 0.4831 | macro F1: 0.4548 | weighted F1: 0.7043 | lr: 7.40e-06 282 [vit_b_16_clahe=False] Epoch 21/50 | train loss: 0.0932 | val loss: 0.5100 | macro F1: 0.4572 | weighted F1: 0.6734 | lr: 7.10e-06 283 [vit_b_16_clahe=False] Epoch 22/50 | train loss: 0.0820 | val loss: 0.5025 | macro F1: 0.4599 | weighted F1: 0.6818 | lr: 6.80e-06 284 [vit_b_16_clahe=False] Epoch 23/50 | train loss: 0.0732 | val loss: 0.5247 | macro F1: 0.4565 | weighted F1: 0.6924 | lr: 6.48e-06 285 [vit_b_16_clahe=False] Epoch 24/50 | train loss: 0.0690 | val loss: 0.5487 | macro F1: 0.4732 | weighted F1: 0.7083 | lr: 6.16e-06 286 [vit_b_16_clahe=False] Epoch 25/50 | train loss: 0.0631 | val loss: 0.5392 | macro F1: 0.4704 | weighted F1: 0.7079 | lr: 5.83e-06 287 [vit_b_16_clahe=False] Epoch 26/50 | train loss: 0.0585 | val loss: 0.5939 | macro F1: 0.4463 | weighted F1: 0.6931 | lr: 5.50e-06 288 [vit_b_16_clahe=False] Epoch 27/50 | train loss: 0.0534 | val loss: 0.5767 | macro F1: 0.4859 | weighted F1: 0.7079 | lr: 5.17e-06 289 [vit_b_16_clahe=False] Epoch 28/50 | train loss: 0.0489 | val loss: 0.5820 | macro F1: 0.4646 | weighted F1: 0.7143 | lr: 4.83e-06 290 [vit_b_16_clahe=False] Epoch 29/50 | train loss: 0.0472 | val loss: 0.5762 | macro F1: 0.4666 | weighted F1: 0.7230 | lr: 4.50e-06 291 [vit_b_16_clahe=False] Epoch 30/50 | train loss: 0.0435 | val loss: 0.6125 | macro F1: 0.4653 | weighted F1: 0.7279 | lr: 4.17e-06 292 [vit_b_16_clahe=False] Epoch 31/50 | train loss: 0.0415 | val loss: 0.6332 | macro F1: 0.4475 | weighted F1: 0.7150 | lr: 3.84e-06 293 [vit_b_16_clahe=False] Epoch 32/50 | train loss: 0.0366 | val loss: 0.6243 | macro F1: 0.4765 | weighted F1: 0.7230 | lr: 3.52e-06 294 [vit_b_16_clahe=False] Epoch 33/50 | train loss: 0.0338 | val loss: 0.6617 | macro F1: 0.4562 | weighted F1: 0.7240 | lr: 3.20e-06 295 [vit_b_16_clahe=False] Epoch 34/50 | train loss: 0.0330 | val loss: 0.6543 | macro F1: 0.4573 | weighted F1: 0.7261 | lr: 2.90e-06 296 [vit_b_16_clahe=False] Epoch 35/50 | train loss: 0.0306 | val loss: 0.6551 | macro F1: 0.4678 | weighted F1: 0.7145 | lr: 2.60e-06 297 [vit_b_16_clahe=False] Epoch 36/50 | train loss: 0.0278 | val loss: 0.6882 | macro F1: 0.4576 | weighted F1: 0.7208 | lr: 2.31e-06 298 [vit_b_16_clahe=False] Epoch 37/50 | train loss: 0.0263 | val loss: 0.6960 | macro F1: 0.4667 | weighted F1: 0.7268 | lr: 2.03e-06 299 Early stopping at epoch 37 (no improvement for 10 epochs). 300 Training complete: 37 epochs, 5571.3s, best val macro F1: 0.4859 301 Checkpoint saved: results/vit_b_16_clahe=False/best_model.pth 302 303 Test results — Weighted F1: 0.6913 | Macro F1: 0.4654 | Accuracy: 0.6800 | Kappa: 0.5326 304 precision recall f1-score support 305 306 Healthy (0) 0.83 0.79 0.81 3872 307 Mild NPDR (1) 0.12 0.17 0.14 366 308 Moderate NPDR (2) 0.41 0.46 0.43 794 309 Severe NPDR (3) 0.50 0.37 0.43 131 310 Proliferative DR (4) 0.63 0.43 0.51 106 311 312 accuracy 0.68 5269 313 macro avg 0.50 0.45 0.47 5269 314 weighted avg 0.71 0.68 0.69 5269 315 316 317 ====================================================================== 318 Experiment: vit_b_16 | CLAHE: True 319 ====================================================================== 320 Using 2 GPUs via DataParallel 321 [vit_b_16_clahe=True] Epoch 1/50 | train loss: 0.8458 | val loss: 0.6484 | macro F1: 0.3372 | weighted F1: 0.5862 | lr: 1.00e-06 322 [vit_b_16_clahe=True] Epoch 2/50 | train loss: 0.6195 | val loss: 0.5034 | macro F1: 0.4192 | weighted F1: 0.6381 | lr: 4.00e-06 323 [vit_b_16_clahe=True] Epoch 3/50 | train loss: 0.5527 | val loss: 0.4780 | macro F1: 0.4058 | weighted F1: 0.5776 | lr: 7.00e-06 324 /home/vin/src/public/eel4759_finalproject_classification/guix-root/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:240: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. 325 warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning) 326 [vit_b_16_clahe=True] Epoch 4/50 | train loss: 0.4705 | val loss: 0.5859 | macro F1: 0.3382 | weighted F1: 0.3211 | lr: 1.00e-05 327 [vit_b_16_clahe=True] Epoch 5/50 | train loss: 0.3984 | val loss: 0.4626 | macro F1: 0.4063 | weighted F1: 0.5911 | lr: 9.99e-06 328 [vit_b_16_clahe=True] Epoch 6/50 | train loss: 0.3541 | val loss: 0.5024 | macro F1: 0.4102 | weighted F1: 0.5132 | lr: 9.96e-06 329 [vit_b_16_clahe=True] Epoch 7/50 | train loss: 0.3034 | val loss: 0.5261 | macro F1: 0.3908 | weighted F1: 0.5489 | lr: 9.90e-06 330 [vit_b_16_clahe=True] Epoch 8/50 | train loss: 0.2757 | val loss: 0.5225 | macro F1: 0.4164 | weighted F1: 0.5205 | lr: 9.82e-06 331 [vit_b_16_clahe=True] Epoch 9/50 | train loss: 0.2469 | val loss: 0.5351 | macro F1: 0.4040 | weighted F1: 0.5129 | lr: 9.72e-06 332 [vit_b_16_clahe=True] Epoch 10/50 | train loss: 0.2217 | val loss: 0.4544 | macro F1: 0.4237 | weighted F1: 0.6428 | lr: 9.60e-06 333 [vit_b_16_clahe=True] Epoch 11/50 | train loss: 0.2108 | val loss: 0.4344 | macro F1: 0.4614 | weighted F1: 0.6458 | lr: 9.46e-06 334 [vit_b_16_clahe=True] Epoch 12/50 | train loss: 0.1908 | val loss: 0.3916 | macro F1: 0.4673 | weighted F1: 0.6911 | lr: 9.30e-06 335 [vit_b_16_clahe=True] Epoch 13/50 | train loss: 0.1738 | val loss: 0.4206 | macro F1: 0.4557 | weighted F1: 0.6754 | lr: 9.12e-06 336 [vit_b_16_clahe=True] Epoch 14/50 | train loss: 0.1640 | val loss: 0.5151 | macro F1: 0.4403 | weighted F1: 0.5692 | lr: 8.92e-06 337 [vit_b_16_clahe=True] Epoch 15/50 | train loss: 0.1422 | val loss: 0.4217 | macro F1: 0.4604 | weighted F1: 0.6939 | lr: 8.71e-06 338 [vit_b_16_clahe=True] Epoch 16/50 | train loss: 0.1299 | val loss: 0.5239 | macro F1: 0.4394 | weighted F1: 0.5880 | lr: 8.48e-06 339 [vit_b_16_clahe=True] Epoch 17/50 | train loss: 0.1205 | val loss: 0.4722 | macro F1: 0.4480 | weighted F1: 0.6693 | lr: 8.23e-06 340 [vit_b_16_clahe=True] Epoch 18/50 | train loss: 0.1061 | val loss: 0.4824 | macro F1: 0.4514 | weighted F1: 0.6643 | lr: 7.97e-06 341 [vit_b_16_clahe=True] Epoch 19/50 | train loss: 0.0960 | val loss: 0.4572 | macro F1: 0.4621 | weighted F1: 0.6980 | lr: 7.69e-06 342 [vit_b_16_clahe=True] Epoch 20/50 | train loss: 0.0899 | val loss: 0.4783 | macro F1: 0.4621 | weighted F1: 0.6845 | lr: 7.40e-06 343 [vit_b_16_clahe=True] Epoch 21/50 | train loss: 0.0842 | val loss: 0.5032 | macro F1: 0.4517 | weighted F1: 0.6685 | lr: 7.10e-06 344 [vit_b_16_clahe=True] Epoch 22/50 | train loss: 0.0742 | val loss: 0.5754 | macro F1: 0.4630 | weighted F1: 0.6337 | lr: 6.80e-06 345 Early stopping at epoch 22 (no improvement for 10 epochs). 346 Training complete: 22 epochs, 3937.8s, best val macro F1: 0.4673 347 Checkpoint saved: results/vit_b_16_clahe=True/best_model.pth 348 349 Test results — Weighted F1: 0.6913 | Macro F1: 0.4777 | Accuracy: 0.6705 | Kappa: 0.5624 350 precision recall f1-score support 351 352 Healthy (0) 0.85 0.76 0.80 3872 353 Mild NPDR (1) 0.13 0.22 0.16 366 354 Moderate NPDR (2) 0.43 0.48 0.45 794 355 Severe NPDR (3) 0.33 0.43 0.37 131 356 Proliferative DR (4) 0.66 0.56 0.60 106 357 358 accuracy 0.67 5269 359 macro avg 0.48 0.49 0.48 5269 360 weighted avg 0.72 0.67 0.69 5269 361 362 363 ====================================================================== 364 Model CLAHE W-F1 M-F1 Acc Kappa Time(s) Epochs 365 ---------------------------------------------------------------------- 366 resnet50 False 0.6570 0.4630 0.6111 0.5341 7514.0 50 367 resnet50 True 0.6473 0.4426 0.6058 0.5234 7428.3 42 368 efficientnet_b0 False 0.6544 0.4565 0.6092 0.5508 4417.0 30 369 efficientnet_b0 True 0.6583 0.4510 0.6225 0.5388 5039.9 29 370 vit_b_16 False 0.6913 0.4654 0.6800 0.5326 5571.3 37 371 vit_b_16 True 0.6913 0.4777 0.6705 0.5624 3937.8 22 372 ====================================================================== 373 374 Summary saved to results/summary.csv 375 Comparison chart saved to results/comparison_chart.png