从零搭建安全帽检测(8)— 泛化性检验:构建独立测试集与模型性能公正评估
在前一章的实验中,基于SHWD数据集训练的模型在验证集上取得了mAP50高达0.887的优异表现。然而,一个严谨的AI工程师必须此刻保持清醒:这个性能数字真的代表了模型面对未知场景时的真实能力吗?抑或,这只是模型对验证集数据“过度熟悉”后给出的虚假高分?
任何在验证集上进行模型选择或超参数调整的行为,都可能导致模型对其产生“隐性记忆”,从而使得评估结果偏离其真实的泛化水平。为了得到无可辩驳的结论,我们必须将模型置于一个它完全陌生的“终极考场” — 独立测试集。
本章,我们将暂缓模型优化的脚步,回归到机器学习最根本的原则之一:公正评估。我们将从SHWD数据集中剥离出从未被模型窥见过的测试样本,构建一个绝对干净的测试集,并在此之上对上一章得到的最终模型进行“终极审判”。这不仅是对模型泛化能力的严格检验,更是对我们整个项目科学性与严谨性的一次重要升华。
通俗地讲,如果一个学生只能把课本上的题做好,在面对新题时解决不了,那么它的学习能力就是不全面的。
一、测试集整理
在SHWD对应的VOC2028目录中,ImageSets/Main/中的test.txt、train.txt、trainval.txt和val.txt分别放置了项目对测试集、训练集、训练验证集和验证集的划分,我们使用该划分方法来重新训练模型,并使用测试集来严谨测试模型的泛化性。
shwd_test
├── VOC2028
│ ├── Annotations/
│ ├── ImageSets/
│ ├── JPEGImages/
│ ├── labels/