学习halocon自带的分类学习的例子:
创建网络和数据预处理
训练网络
评估训练的效果
测试新图像
①设置输入输出路径:1.分类图像数据路径RawImageBaseFolder 2.设置样本数据文件夹ExampleDataDir
②设置参数:LabelSource/TraningPercent/ValidationPercent/ImageWidth/ImageHeight/ImageNumChannels/NormalizationType/DomainHanding 为了设置可再生或者说可复制的分割我们需要设置一个随机种子。(这意味着重新运行脚本将导致DLDataset的相同拆分。)
③读取标记数据,分割成train, validation and test:
read_dl_dataset_classification (RawImageBaseFolder, LabelSource, DLDataset) 产生一个用来分类DLDataset数据集字典。
RawImageFolder是包含图像的文件夹的元组。这些文件夹中的所有图像及其子文件夹都添加到词典DLDataset中
LabelSource确定用于提取图像基本真值标签的模式。
告诉字典里面的东西,样本路径/分类的名字/标签ID等。这个算子的目的就是根据输入的样本的路径,得到样本的字典。
在Halcon里面这个DLDataset内部结构是这个样子的
split_dl_dataset (DLDataset, TrainingPercent, ValidationPercent, [])分割数据集
④预处理数据集
1.判断存不存在输出目录file_exisits
2.设置预处理的参数create_dl_prepeocess_param
create_dict (PreprocessSettings)
set_dict_tuple (PreprocessSettings, ‘overwrite_files’, true)
创建一个字典。给这个里面添加一个键:overwrite_files。 给这个键赋值:true
preprocess_dl_dataset (DLDataset, DataDirectory, DLPreprocessParam, GenParam, DLDatasetFileName)
此过程根据字典DLPreprocessParam中的参数对字典DLDataset中的样本进行预处理。
修改后的字典DLDataset和预处理样本的字典DLSample被写入指定DataDirectory中的文件中,由此DLDataset的名称和路径在字符串DLDatasetFileName中返回。
write_dict (DLPreprocessParam, PreprocessParamFileBaseName, [], [])为了在检测时候使用,存储预处理参数
⑤预览预处理的数据集
get_dict_tuple (DLDataset, ‘samples’, DatasetSamples)
find_dl_samples (DatasetSamples, ‘split’, ‘train’, ‘match’, SampleIndices)
此过程根据模式集检索KeyName与KeyValue匹配的样本索引。结果,返回元组sampleindex,给出搜索根据模式集匹配的样本的索引。如果不匹配,则返回空元组[]。如果样本为[],也会出现这种情况。KeyValue可以是数字、字符串或混合元组值。模式定义了搜索行为。它可以采用以下值:
-“match”:条目KeyName下的示例值与KeyValue完全匹配。
-“or”:条目KeyName下的示例值必须只有一个元素,并且它与元组KeyValue中的任何元素都匹配。
-“contain”:条目KeyName下样本值中的任何元素都与元组KeyValue中的任何元素匹配。
tuple_shuffle (SampleIndices, ShuffledIndices)
对元组的元素进行随机排序
read_dl_samples (DLDataset, ShuffledIndices[0:9], DLSampleBatchDisplay)
从样本字典里面读取数据
SampleIndexes确定读取DLDataset的哪些样本。
读入词典的元组在DLSampleBatch中返回。
对于DLDataset中的每个样本,DLSample字典的路径由键“DLSample\U file\U name”(在字典“sample”中)和键“DLSample\U dir”(在字典DLDataset中)指定的目录确定。注意,如果样本没有可用的“dlsample\u file\u name”密钥,则该过程会自动生成密钥。它使用后缀为“dlsample.hdict”的图像ID来执行此操作,并测试文件是否存在于“dlsample_dir”中。如果存在,则读取此文件并创建键“dlsample\u file\u name”的条目。
create_dict (WindowHandleDict)
for Index := 0 to |DLSampleBatchDisplay| - 1 by 1
dev_display_dl_data (DLSampleBatchDisplay[Index], [], DLDataset, ‘classification_ground_truth’, [], WindowHandleDict)
endfor
dev_close_window_dict (WindowHandleDict)