以下是学习HALCON中语义分割例程segment_pill_defects_deep_learning_1_preprocess的笔记。
一、创建个数据集
开始halcon语义分割的第一步是创建一个用于深度学习的语义分割的模型,在这个模型中将设置各种用于深度学习的参数。
1、模型的数据结构如下:
DLDataset
{
'image_dir' : 所有图像文件夹路径
'segmentation_dir' : 所有标签图像文件夹的路径
'class_names'[] : 类名
'class_ids'[] : 类ID
'samples'[] : 样本,将图片和与它相对应标签图片路径配对
{
'image_file_name' : 相对于'image_dir'的图片文件路径(包括图片文件名)
'segmentation_file_name' : 相对于'segmentation_dir'的标签图像文件路径(包括标签图像文件名)
'image_id' : 图像索引号
'split' :所属的子集(训练,验证和测试)
'dlsample_file_name' :对应这个样本的DLSampleBatch保存在硬盘上的文件名
}
'preprocess_param'[] :记录预处理参数的数据结构,在第三段中有详细的记录
'dlsample_dir' :DLSampleBatch的输出路径
'class_weights' :每个类的权重
}
2、在创建模型前要检查以下几点:
- 类名的个数与类的ID号是否是对应的
- 每个类ID必是唯一的
- image_dir只能是一个字符串
- SegmentationDir只能是一个字符串
- 检查ImageList和SegmentationList是否具有相同的长度,或者SegmentationList是否为空
二、划分样本,分为三个不相交的子集:训练,验证和测试并在模型的'samples'项中注明
例程中要求按照训练75%、验证15%、测试15%的百分比化分。
三、创建一个预处理参数的数据结构,并保存
结构如下:
DLPreprocessParam
{
'model_type' :结构的类型
‘image_width’ :图片的宽