🚀 BẮT ĐẦU HUẤN LUYỆN MÔ HÌNH SWIN-UNET (GPU & CACHE) Initializing FeatureExtractor (mode=extended)... 📦 Đang load cache: training_data_507bd2ba4ec0d3fe107839cbf73a7a7d.joblib... ✅ Loaded 632 samples từ cache! ⚡ Đã bỏ qua download위성 data (tiết kiệm thời gian) [CACHE HIT] Using cached dataset with 632 samples Training SWIN-UNET model... Building Swin-UNet model on cuda... [SWIN-UNET] Class distribution: [ 48 89 3 86 74 38 117 50] [SWIN-UNET] Class weights: [0.37418982 0.20181024 5.98703525 0.20885013 0.24271772 0.47266082 0.15351377 0.35922223] Training Swin-UNet model with PyTorch (with class weights)... Swin-UNet Epoch 5/40, Train Loss: 1.4096, Val Loss: 1.2804, Val Acc: 48.03%, LR: 0.000293 [SWIN-UNET] Epoch 5/40 - Train Loss: 1.4096, Val Loss: 1.2804, Val Acc: 48.03% Swin-UNet Epoch 10/40, Train Loss: 1.1129, Val Loss: 1.2746, Val Acc: 57.48%, LR: 0.000271 [SWIN-UNET] Epoch 10/40 - Train Loss: 1.1129, Val Loss: 1.2746, Val Acc: 57.48% Swin-UNet Epoch 15/40, Train Loss: 1.0479, Val Loss: 1.3126, Val Acc: 50.39%, LR: 0.000238 [SWIN-UNET] Epoch 15/40 - Train Loss: 1.0479, Val Loss: 1.3126, Val Acc: 50.39% Swin-UNet Epoch 20/40, Train Loss: 0.9548, Val Loss: 1.1118, Val Acc: 52.76%, LR: 0.000196 [SWIN-UNET] Epoch 20/40 - Train Loss: 0.9548, Val Loss: 1.1118, Val Acc: 52.76% [SWIN-UNET] Early stopping at epoch 22 (best val loss: 1.1096) Swin-UNet early stopped at epoch 22 Evaluating model... Generating classification report... Saving model... [MODEL MANAGER] Saving model to: model_train/model_swin-unet_auto.joblib [MODEL MANAGER] Saving metadata to: model_train/model_swin-unet_auto_info.json [MODEL MANAGER] Model saved successfully! Training complete! ✅ Hoàn thành! Accuracy: 0.5354