我的三個模型 ResNet34、VGG16、EfficientNetB0 都完成了 Stage 1 和 Stage 2 的訓練與微調,並在驗證集上取得了不錯的準確度。今天,我們將進入專案的最終評估環節:使用模型從未見過的測試集進行客觀檢驗,並透過混淆矩陣 (Confusion Matrix) 找出哪個模型表現最穩定、泛化能力最強,準備部署到 Hugging Face。
一、最終測試與性能總結
測試集 (Test Set) 是檢驗模型泛化能力的最後一道防線。它在整個訓練過程中都被隔離,確保我們得到的評估結果是客觀且公正的。
# 載入最終訓練好的 ResNet34 權重 (Stage 2)
learn_resnet.load('resnet34_stage-2')
# 使用測試集 (Test Set) 進行最終驗證
test_dl = dls.test_dl(get_image_files(TEST_PATH))
results = learn_resnet.validate(dl=test_dl)
# results[0] 為測試損失 (test_loss),results[1] 為測試準確度 (test_accuracy)
print(f"ResNet34 測試集損失: {results[0]:.4f}")
print(f"ResNet34 測試集準確度: {results[1]:.4f}")
| 模型架構 | 專案實測表現 | 最終結論 |
|---|---|---|
| ResNet34 | 準確度高且穩定,泛化能力強。 | 冠軍模型:在準確度與泛化能力上取得最佳平衡。 |
| VGG16 | 在部分類別(如 Tsunami)分類落差大。 | 性能較不穩定,對細節敏感度不足。 |
| EfficientNet-B0 | 部分類別 AUC 高,但整體分類準確率不如 ResNet34 穩定。 | 高效模型:適合輕量部署,但準確性略有犧牲。 |