数据集分割
这个功能解决什么问题
训练一个模型,光有一堆图片不够。你还需要回答两个问题:
- 训练到第几轮停下来最合适?
- 训练出来的模型在「没见过的图」上表现怎么样?
为了回答这两个问题,工业界把数据分成三份。
- 训练集(train):给模型「学习」用的图。
- 验证集(val):训练过程中反复用这批图测一下,用来挑最佳训练轮数和调超参。
- 测试集(test):训练完全结束后,用这批图做最终评估,衡量模型的泛化能力。
数据集分割就是干这件事:把工作区里所有图片按比例划分到这三个集合里,让训练脚本能正确读取。
入口
数据集分割入口在项目工作区的数据集详情页「操作」标签页里。
进入项目工作区的数据集详情页
打开对应项目,左侧导航点「数据集」。
点击「操作」标签页
在详情页顶部的标签栏选「操作」(注意:全局数据集列表是只读模式,没有这个标签页)。
找到「数据集分割」
在「操作」标签页里找到「数据集分割」区域,点击展开分割界面。

两种分割模式
平台支持两种分割模式,根据你的需求选一种。
模式 1:重新分配所有图片
把数据集里的所有图片(不管现在分在哪个集合)打乱重新按新比例分配。
- 第一次给数据集做分割。
- 想彻底重新洗牌,不保留任何已有的集合划分。
- 数据量比较小,想让三个集合的样本分布更随机。
这种模式下,你设置的比例就是最终的训练集 / 验证集 / 测试集占比。比如设 70 / 15 / 15,所有图片打乱后按 70% / 15% / 15% 分到三个集合里。
模式 2:从训练集分割
保留现有的验证集和测试集,只从训练集里抽出一部分图片补足验证集和测试集的新比例。
- 已经做过一次分割,现在想稍微调一下比例(比如验证集从 10% 提到 15%)。
- 不想动现有的验证集和测试集,只想增量调整。
这个模式下的百分比基数是整个数据集(train + val + test)的总图数,不是只看现有训练集。
比如数据集一共 1000 张,当前 700 / 150 / 150。你想让验证集最终占 20%,就填 20,平台算出最终验证集应该是 200 张,需要从训练集抽出 50 张补过去,结果变成 650 / 200 / 150。不是填「从训练集里拿出 20%」。
联动滑块
不管哪种模式,比例都用三个联动滑块控制:训练集、验证集、测试集。三个滑块加起来始终是 100%,你只需要调一个,另外两个会自动跟着变。
- 拖训练集:训练集锁定为新值,剩下的百分比由验证集和测试集按当前比例分摊。
- 例:当前 70 / 15 / 15,把训练拖到 50%,剩下 50% 按验证 : 测试 = 1 : 1 瓜分,得到 50 / 25 / 25。
- 拖验证集:训练集不变,测试集自动调整凑齐 100%。
- 例:当前 70 / 15 / 15,把验证拖到 25%,训练保持 70%,测试自动变成 5%。
- 拖测试集:训练集不变,验证集自动调整凑齐 100%。
- 例:当前 70 / 15 / 15,把测试拖到 25%,训练保持 70%,验证自动变成 5%。
- 底部总计:底部始终显示「总计 100%」,方便确认。
三个独立滑块加起来很容易不等于 100%,导致分割失败。联动滑块直接从机制上杜绝这个问题,怎么拖都是合法比例。

字段说明
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
分割模式 | 单选 | 必填 | 重新分配所有图片 | 两种模式二选一:「重新分配所有图片」或「从训练集分割」。详见上方说明。 |
训练集比例 | 滑块(联动) | 必填 | 70 | 训练集占比(%)。拖动时验证集和测试集按当前比例自动分配剩余份额。 |
验证集比例 | 滑块(联动) | 必填 | 15 | 验证集占比(%)。拖动时训练集不变,测试集自动调整。 |
测试集比例 | 滑块(联动) | 必填 | 15 | 测试集占比(%)。拖动时训练集不变,验证集自动调整。 |
随机种子 | 数字 | 可选 | 随机 | 控制分割的随机性。相同种子 + 相同比例会得到**完全相同**的分割结果,便于复现实验。 |
随机种子
随机种子控制打乱算法的随机源。这个字段经常被忽略,但对实验复现很关键。
- 相同种子 + 相同比例 = 相同结果:填同样的种子,跑两次分割会得到完全一致的训练集 / 验证集 / 测试集划分。
- 不同种子 = 不同划分:换一个种子,相同比例下图片的分配结果不同。
- 留空 = 随机:每次分割都用不同的随机种子,结果不可复现。
- 跑对比实验时:想比较两个模型架构或两套超参在同一份数据划分上的效果,固定种子保证公平比较。
- 复现别人结果时:知道对方的种子和比例,能精确还原对方的分割。
- 平时探索性训练:留空就行,让随机性帮你打散样本。
操作步骤
选择分割模式
在分割面板顶部选择「重新分配所有图片」或「从训练集分割」。
调整比例
拖动三个联动滑块,让训练集 / 验证集 / 测试集的比例符合预期。底部会实时显示「总计 100%」和预估的图片数。
(可选)填随机种子
想要结果可复现就填一个固定的种子(比如 42),想完全随机就留空。
查看预览
面板下方会显示分割预览:每个集合最终会分到多少张图片。确认数字合理。
确认执行
点底部的「确认分割」按钮。系统会弹出不可逆警告对话框,再次确认后开始执行。
等待分割完成
分割在后台异步执行,可能需要几秒到几十秒(取决于图片数量)。完成后页面会自动刷新数据。
不可逆警告
数据集分割会改变图片在 train / val / test 三个目录之间的物理位置,操作不可撤销。
- 分割完成后,没有「撤销分割」按钮。
- 想恢复分割前的状态,唯一办法是重新跑一次分割(用原来的模式 + 原来的随机种子,理论上能还原,但不保证 100% 一致)。
- 如果数据集已经发布过版本,可以从旧版本恢复,但工作区里当前的所有改动会丢失。
分割之前请再三确认比例和模式。如果不确定,先发布一个版本做快照留底,再做分割。
分割完成后
分割执行完毕后:
- 数据集详情页图片标签页的训练 / 验证 / 测试 Tab 数字会更新成新的比例。
- 详情页头部统计区显示的总图片数不变,只是三个集合的占比变了。
- 已经发布的旧版本不受影响(版本是不可变快照)。
- 后续基于这个数据集工作区发布的新版本会包含新的分割结果。
训练任务只读取已发布的数据集版本,不会直接读取可变工作区。如果你想让训练用上新的分割结果,必须重新发布一个版本。详见发布数据集版本。
接下来
常见问题
当前数据集可能还没有任何图片分到训练集里(比如刚上传还没分割过)。这种情况下「从训练集分割」没有意义,只能用「重新分配所有图片」。先做一次完整分割,后续才能用增量模式微调。
记住百分比基数是整个数据集(train + val + test)的总图数,不是只看现有训练集。比如总共 1000 张,想让验证集最终占 20% 就填 20,平台会算出最终验证集应该是 200 张,再从训练集抽差额补过去。
训练任务用的是已发布版本,不是工作区。分割完工作区后必须重新发布一个版本,新版本才会包含新的分割结果。然后基于新版本创建训练任务,才能看到新分割带来的效果。
常见推荐:
- 数据少(<1000 张):80 / 10 / 10 或 70 / 20 / 10。让训练集尽量大。
- 数据中等(1000-10000 张):70 / 15 / 15 或 70 / 20 / 10。平衡训练和评估。
- 数据多(>10000 张):80 / 10 / 10 或 90 / 5 / 5。数据多了验证集和测试集不需要太大比例。
这是经验值,具体比例根据你的任务和数据特性调整。