halcon案例classify_pill_defects_deep_learning_1_preprocess

隶属于:
C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\Deep-Learning\Classification

  • 本示例是深度学习分类工作流的一系列示例之一。它使用了MVTec药片数据集。
  • 这四个部分分别是:
    1. 数据集预处理。
    1. 模型训练。
    1. 训练后模型的评估。
    1. 对新图像进行推理。
      1

2

1

2

1

2

1
1

1

2

1
1

1

1

1
1

1

1

1


* 
* 本示例是深度学习分类工作流的一系列示例之一。它使用了MVTec药片数据集。
* 
* 这四个部分分别是:
* 1. 数据集预处理。
* 2. 模型训练。
* 3. 训练后模型的评估。
* 4. 对新图像进行推理。
* 
* 提示:若想查看工作流的简洁版本,请查看以下示例:
* dl_classification_workflow.hdev
* 

* 本示例包含第1部分:“数据集预处理”。 
dev_update_off ()

* 在本示例中,预处理步骤会在执行前通过图形窗口进行解释。若要跳过此可视化,请将以下参数设置为false。
ShowExampleScreens := true
* 
if (ShowExampleScreens)
  
      * 初始化示例窗口及参数等。
    dev_example_init (ShowExampleScreens, ExampleInternals)
    * 
  
      * 示例系列的介绍文本。
    dev_display_screen_introduction_part_1 (ExampleInternals)
    stop ()
    dev_display_screen_introduction_part_2 (ExampleInternals)
    stop ()
    * 
  
        * 读取数据集。
    dev_display_screen_read_dataset (ExampleInternals)
    stop ()
    * 
  
    * 解释如何拆分数据集。
    dev_display_screen_split_dataset (ExampleInternals)
    stop ()
    * 

        * 解释如何对数据集进行预处理并运行程序。
    dev_display_screen_run_program (ExampleInternals)
    stop ()
endif
* 

* *********************************
* **   设置输入/输出路径   *** 
* *********************************

* 获取示例的路径。
get_system ('example_dir', PathExample)
* 包含真实分类图像数据的文件夹。
RawImageBaseFolder := PathExample + '/images/pill/'
* 所有示例数据都将写入此文件夹。
ExampleDataDir := 'classify_pill_defects_data'
* 数据集目录基础名称,用于preprocess_dl_dataset输出的任何内容。
DataDirectoryBaseName := ExampleDataDir + '/dldataset_pill'
* *************************
* **   设置参数   *** 
* *************************
* 用于读取数据集的LabelSource。
LabelSource := 'last_folder'
* 用于拆分数据集的百分比。
TrainingPercent := 70
ValidationPercent := 15
* 某些模型可能对图像属性有局限性,
* 请参阅read_dl_model()以了解您所选模型的相关信息。
* 在预处理过程中图像将被缩放至的图像尺寸。
ImageWidth := 300
ImageHeight := 300
ImageNumChannels := 3 
* 图像预处理的进一步参数。
NormalizationType := 'none'
DomainHandling := 'full_domain'
* 为了获得可重现的拆分,我们设置随机种子。
* 这意味着重新运行脚本将产生相同的数据集拆分。
SeedRand := 42 
***************************************************************************** 
* **   读取标记数据并将其拆分为训练、验证和测试   *** 
* ***************************************************************************** 
*设置随机种子。
set_system ('seed_rand', SeedRand)
* 

* 使用read_dl_dataset_classification过程读取数据集。
* 或者,您也可以使用read_dict()读取DLDataset字典,
* 例如,该字典由MVTec深度学习工具创建。
read_dl_dataset_classification (RawImageBaseFolder, LabelSource, DLDataset)
* 生成拆分。
split_dl_dataset (DLDataset, TrainingPercent, ValidationPercent, [])
* 
* 

* 
* *********************************
* **   预处理数据集   *** 
* *********************************
* 如果输出目录尚不存在,则创建该目录。
file_exists (ExampleDataDir, FileExists)
if (not FileExists)
    make_dir (ExampleDataDir)
endif
* 
* 创建预处理参数。
create_dl_preprocess_param ('classification', ImageWidth, ImageHeight, ImageNumChannels, -127, 128, \
                            NormalizationType, DomainHandling, [], [], [], [], DLPreprocessParam)
* 
* 数据集目录,用于preprocess_dl_dataset输出的任何内容。
DataDirectory := DataDirectoryBaseName + '_' + ImageWidth + 'x' + ImageHeight
* 
* 预处理数据集。这可能需要几秒钟。
GenParam := dict{overwrite_files: 'auto'}
preprocess_dl_dataset (DLDataset, DataDirectory, DLPreprocessParam, GenParam, DLDatasetFileName)
* 
* 单独存储预处理参数,以便在推理等过程中使用。
PreprocessParamFileBaseName := DataDirectory + '/dl_preprocess_param.hdict'
write_dict (DLPreprocessParam, PreprocessParamFileBaseName, [], [])
* 

* ******************************************* 
* **   预览预处理后的数据集   *** 
* ******************************************* 
* 

* 在进入训练阶段之前,建议检查预处理后的数据集。
* 显示10个随机选择的训练图像的DLSamples。
find_dl_samples (DLDataset.samples, 'split', 'train', 'match', SampleIndices)
tuple_shuffle (SampleIndices, ShuffledIndices)
read_dl_samples (DLDataset, ShuffledIndices[0:9], DLSampleBatchDisplay)
* 
WindowHandleDict := dict{}
for Index := 0 to |DLSampleBatchDisplay| - 1 by 1
    *遍历DLSampleBatchDisplay中的样本。
    dev_display_dl_data (DLSampleBatchDisplay[Index], [], DLDataset, \
                         'classification_ground_truth', [], WindowHandleDict)
    Text := 'Press Run (F5) to continue'
    dev_disp_text (Text, 'window', 'bottom', 'right', 'black', [], [])
    stop ()
endfor
* 
* 关闭用于可视化的窗口。
dev_close_window_dict (WindowHandleDict)
* 
if (ShowExampleScreens)
    *提示深度学习分类训练过程示例。
    dev_display_screen_next_example (ExampleInternals)
    stop ()
    * 关闭示例窗口。
    dev_close_example_windows (ExampleInternals)
endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值