机器视觉 - YoloV8 划分数据集
train/val/test 的关系
-
纯训练命令行参数
mode=train val=False model=yolov8n.pt
-
训练+val命令行参数
mode=train val=True model=yolov8n.pt
-
验证预训练模型的命令行参数
mode=val split=val model=yolov8n.pt
-
验证自有模型的命令行参数
mode=val split=val model=best.pt
-
测试自有模型的命令行参数
mode=val split=test model=best.pt
-
train 数据集: 用于训练模型的数据集
-
val 数据集: 在每个epoch完成后, 会使用val数据集进行验证, 来计算loss和mAP等指标, 验证集可以起到模型选择和早停(early stoping)作用, 有助于找到泛化能力最强的模型 . val和train 数据集最好没有交集, 但如果总数据集较少也可以使用部分train数据作为val 数据集.
-
test 数据集: test 是模型正式使用之前, 用于训练阶段从未见到的数据验证模型效果结果, test 数据集绝对不能和train/val数据集有任何交集.
-
train/val/test数据集比例: 数据量较大情况下可以选择8:1:1 , 数据集较小情况下可以选择 6:2:2, 如果过早出现了过拟合, 可以加大验证集的比例, 比如6:2:2, 甚至4:3:3.
-
train/val/test 数据集分隔工具: https://github.com/jfilter/split-folders
-
更高级的数据集合分割方法 K-Fold Cross Validation https://docs.ultralytics.com/guides/kfold-cross-validation/