在上两篇文章中,我们讲到了两个函数。
read_dl_dataset_classification 用于获取一个数据集,对于halcon来说就是一个字典:
halcon获取数据集的函数不止这一个方式,我还知道两个函数:
其一就是:read_dl_dataset_from_coco
这个函数,读取的是一个深度学习中通用的一种数据集,coco数据集
得到的也是一个结构相同的字典,唯一不同的是,samples里面多了一些标注框的信息!
其二,就是read_dict() 读取一个现成的halcon字典。但是这种符合深度学习的现成的字典那里来?这个可以通过halcon的一个深度学习工具进行导出!
接下来我们回归正题,得到了这个字典之后,我们需要干嘛?
其实之前的文章中以及指出了。
没错就是这个,split_dl_dataset,接下来我们就来分析这个函数的作用!
该过程会将每个样本分配到 ‘train’、‘validation’ 或 ‘test’ 中,并在每个样本中添加一个新的键 ‘split’,其值为 ‘train’、‘validation’ 或 ‘test’。
这里有个注意的地方,输出算子参数的时候 只需输入 ‘train’、‘validation’ 也就是训练和验证的比例。剩下的就是 ‘test’ 测试的比例。所以填写的时候 ‘train’ + ‘validation’ 要小于100% , 不如你就没有测试 'test’的比例了!
split_dl_dataset
是一个用于将数据集分割成训练、验证和测试集的过程。以下是该过程的主要参数的解释:
DLDataset (input_control):
TrainingPercent (input_control):
ValidationPercent (input_control):
GenParam (input_control):
GenParam
字典可能包含以下键:
‘overwrite_split’ (string):
‘model_type’ (string):
该过程会将每个样本分配到 ‘train’、‘validation’ 或 ‘test’ 中,并在每个样本中添加一个新的键 ‘split’,其值为 ‘train’、‘validation’ 或 ‘test’。如果样本已经包含 ‘split’ 键,过程会返回警告,但可以使用 GenParam
覆盖。
* Preprocess the data in DLDataset.
split_dl_dataset (DLDataset, 60, 20, [])
在运行了这句之后,就会发现每个sample中就会多一个"split"标签, 来表明这个对象是属于 ‘train’、‘validation’ 还是 'test’的。
GenParam 就是分配时有自己的一套逻辑,这个GenParam 参数会影响分配的逻辑。
对字典进行拆分(split_dl_dataset)
之后才是 determine_dl_model_detection_param
所以,目前的流程为,读取样本字典,然后对样本拆分,然后根据已拆分的字典。生成一些高级参数。以供后续训练等步骤使用。