正确分割数据集
Correctly splitting the dataset
我已经下载了一个包含 10 个 class 个对象的数据集用于对象检测。数据集不分为训练、验证和测试。然而,作者在他的论文中提到将数据集划分为 20% 训练、20% 验证和 60% 测试,图像是随机选择的。
按照作者所说的标准,我随机选择了 20% 的图像用于训练,20% 的图像用于验证,60% 的图像用于测试。
我想知道几件事
1)我是否需要将困难的图像放入训练集或验证集或测试集中?例如目前测试集中有41张困难图像,训练集中有30张,验证集中有20张。
2) 如何确保所有十个对象 classes 均匀分布?
已更新
3)理想情况下,对于平衡分割困难的图像应该平均分配?如果测试难度更大,或者训练难度更大,或者验证难度更大,对结果的影响有多大?
10 classes:飞机、储罐、棒球场、网球场、篮球场、田径场、桥梁、船舶、港口和车辆。
我总共有 650 张图像,其中 466 张图像正好有一个 class 并且图像中有不止一个对象
飞机 = 88 张图像,储罐 = 10 张图像,棒球场 = 46 张图像,网球场 = 29 张图像,篮球场 = 32 张图像,地面跑道 = 55 张图像,桥梁 58 张图像,船 = 36 张图像,港口 27 张图像,以及车辆=85 张图片。
其余 184 张图像有多个 class。
共757架飞机、302艘轮船、655个储罐、390个棒球场、524个网球场、159个篮球场、163个田径场、224个港口、124座桥梁、477辆汽车
最常用的技术是随机选择。例如,如果您有 1000 张图像,您可以创建一个包含每个文件名称的数组,并且您可以使用随机排列对元素进行随机化。然后可以使用前200个元素进行训练,接下来的200个元素进行验证,其他元素进行测试(以20%、20%、60%为例)
如果存在极度不平衡的 class,您可以在每组中强制使用相同比例的 classes。为此,您必须执行我在 class.
中提到的 class 的程序
您不应该手动选择图像。如果你知道你的数据集中有一些困难的图像,你不能手动选择它们以将它们包含在训练、验证和测试集中。
如果你想公平地比较你的算法,如果几张图片可以高度修改准确性。您可以多次重复随机拆分。在某些情况下,训练集中会有很多困难的图像,而在其他情况下,验证或测试集中会有很多困难的图像。然后,您可以提供准确度(或您使用的指标)的均值和标准差。
更新:
我明白了,在你的描述中,一张图片中有不止 1 个对象。不是吗?
比如,你能不能有两艘船和一座桥?
我曾经使用在每个图像中包含单个对象的数据集。然后为了检测图像中的多个对象,我扫描图像的不同部分以寻找单个对象。
可能是你提到的论文的作者随机划分了数据集。如果您在研究论文中使用更复杂的划分,您应该提及它。
关于你的问题,即每组中有更多困难图像的效果如何,答案非常复杂。这取决于算法以及训练集的图像与验证集和测试集的图像比较时的相似程度。
对于复杂的模型(例如具有很多层和神经元的神经网络),您可以在训练集上获得所需的准确度(例如 100%)。然后,如果图像与验证集和测试集中的图像非常相似,则准确性将相似。但如果它们不是很相似,那么你就过度拟合了,验证集和测试集的准确性会变慢。为了解决这个问题,您需要一个更简单的模型(例如减少神经元数量或使用良好的正则化技术),在这种情况下,训练集的准确性会变慢,但验证集和测试集的准确性将更接近使用训练集获得的准确性。
我已经下载了一个包含 10 个 class 个对象的数据集用于对象检测。数据集不分为训练、验证和测试。然而,作者在他的论文中提到将数据集划分为 20% 训练、20% 验证和 60% 测试,图像是随机选择的。
按照作者所说的标准,我随机选择了 20% 的图像用于训练,20% 的图像用于验证,60% 的图像用于测试。
我想知道几件事
1)我是否需要将困难的图像放入训练集或验证集或测试集中?例如目前测试集中有41张困难图像,训练集中有30张,验证集中有20张。
2) 如何确保所有十个对象 classes 均匀分布?
已更新
3)理想情况下,对于平衡分割困难的图像应该平均分配?如果测试难度更大,或者训练难度更大,或者验证难度更大,对结果的影响有多大?
10 classes:飞机、储罐、棒球场、网球场、篮球场、田径场、桥梁、船舶、港口和车辆。
我总共有 650 张图像,其中 466 张图像正好有一个 class 并且图像中有不止一个对象 飞机 = 88 张图像,储罐 = 10 张图像,棒球场 = 46 张图像,网球场 = 29 张图像,篮球场 = 32 张图像,地面跑道 = 55 张图像,桥梁 58 张图像,船 = 36 张图像,港口 27 张图像,以及车辆=85 张图片。
其余 184 张图像有多个 class。
共757架飞机、302艘轮船、655个储罐、390个棒球场、524个网球场、159个篮球场、163个田径场、224个港口、124座桥梁、477辆汽车
最常用的技术是随机选择。例如,如果您有 1000 张图像,您可以创建一个包含每个文件名称的数组,并且您可以使用随机排列对元素进行随机化。然后可以使用前200个元素进行训练,接下来的200个元素进行验证,其他元素进行测试(以20%、20%、60%为例)
如果存在极度不平衡的 class,您可以在每组中强制使用相同比例的 classes。为此,您必须执行我在 class.
中提到的 class 的程序您不应该手动选择图像。如果你知道你的数据集中有一些困难的图像,你不能手动选择它们以将它们包含在训练、验证和测试集中。
如果你想公平地比较你的算法,如果几张图片可以高度修改准确性。您可以多次重复随机拆分。在某些情况下,训练集中会有很多困难的图像,而在其他情况下,验证或测试集中会有很多困难的图像。然后,您可以提供准确度(或您使用的指标)的均值和标准差。
更新:
我明白了,在你的描述中,一张图片中有不止 1 个对象。不是吗? 比如,你能不能有两艘船和一座桥? 我曾经使用在每个图像中包含单个对象的数据集。然后为了检测图像中的多个对象,我扫描图像的不同部分以寻找单个对象。
可能是你提到的论文的作者随机划分了数据集。如果您在研究论文中使用更复杂的划分,您应该提及它。
关于你的问题,即每组中有更多困难图像的效果如何,答案非常复杂。这取决于算法以及训练集的图像与验证集和测试集的图像比较时的相似程度。
对于复杂的模型(例如具有很多层和神经元的神经网络),您可以在训练集上获得所需的准确度(例如 100%)。然后,如果图像与验证集和测试集中的图像非常相似,则准确性将相似。但如果它们不是很相似,那么你就过度拟合了,验证集和测试集的准确性会变慢。为了解决这个问题,您需要一个更简单的模型(例如减少神经元数量或使用良好的正则化技术),在这种情况下,训练集的准确性会变慢,但验证集和测试集的准确性将更接近使用训练集获得的准确性。