Advertisement

Halcon 深度学习(三):缺陷检测

阅读量:

目录

  • 前言

  • 一、准备

    • 1、准备缺陷检测所需图片
      • 1.1、images文件夹:3种类型图片
      • 1.2、divisionImages文件夹:3种类型图片(用于分割背景)
  • 二、编写代码

    • 1、设置输入输出路径
    • 2、设置参数
    • 3、处理图片、拆分
    • 4、预处理数据集
    • 5、测试
  • 三、下载地址


前言

最近学习深度学习时的一些总结和看法,参照深度学习的自带案例(segment_pill_deep_learning_1_preprocess.hdev)


一、准备

1、准备缺陷检测所需图片

1.1、images文件夹:3种类型图片

在这里插入图片描述
每个类型中分为3种:contamination(污染)、crack(裂纹)、good(正常)
在这里插入图片描述
contamination(污染)
在这里插入图片描述
crack(裂纹)
在这里插入图片描述
good(正常)
在这里插入图片描述

1.2、divisionImages文件夹:3种类型图片(用于分割背景)

在这里插入图片描述
每个类型中分为3种:contamination(污染)、crack(裂纹)、good(正常)
在这里插入图片描述
contamination(污染)、crack(裂纹)、good(正常)
在这里插入图片描述

二、编写代码

1、设置输入输出路径

复制代码
    *** 设置输入输出路径 *** *总路径
    AllDir := 'E:/视觉/halcon_深度学习/DeepLearning/缺陷检测/'
    *图片路径
    ImageDir := AllDir + 'images'
    *分割图片路径
    DivisionImagesDir := AllDir + 'divisionImages'
    *存放数据总路径
    DataDir := AllDir + 'data'
    *预处理后的路径
    DataDirectoryBaseName := DataDir + '/dldataset'
    *存储预处理参数
    PreprocessParamFileBaseName := DataDir + '/dl_preprocess_param'
    
    
    csharp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/vBOF1CgJiRzjYHsdb85L09Vnt2qm.png)

2、设置参数

复制代码
    *** 设置参数 *** *类别名称
    ClassNames := ['good','contamination','crack']
    *类别ID
    ClassIDs := [0,1,2]
    *拆分数据集
    TrainingPercent := 70
    ValidationPercent := 15
    *图片尺寸参数
    ImageWidth := 400
    ImageHeight := 400
    ImageNumChannels := 3
    *图片灰度范围
    ImageRangeMin := -127
    ImageRangeMax := 128
    *图像预处理的进一步参数
    ContrastNormalization := 'false'
    DomainHandling := 'full_domain'
    IgnoreClassIDs := []
    SetBackgroundID := []
    ClassIDsBackground := []
    *随机种子
    SeedRand := 42
    
    
    csharp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/ak8CeZchjQl465XJqTdfNYg0V9Un.png)

3、处理图片、拆分

复制代码
    *** 处理图片并进行拆分 *** *设置随机种子
    set_system ('seed_rand', SeedRand)
    *通过参数将文件夹中数据分割为数据集 参数:图像路径、分割图像路径、类别名称、类别ID、图像路径列表、分割图像路径列表、字典、生成的数据集
    read_dl_dataset_segmentation (ImageDir, DivisionImagesDir, ClassNames, ClassIDs, [], [], [], DLDataset)
    *拆分数据集
    split_dl_dataset (DLDataset, TrainingPercent, ValidationPercent, [])
    
    
    csharp
    
    
在这里插入图片描述

4、预处理数据集

复制代码
    *** 预处理数据集 ***
    file_exists (DataDir, FileExists)
    if (not FileExists)
    make_dir (DataDir)
    endif
    *创建预处理参数
    create_dl_preprocess_param ('segmentation', ImageWidth, ImageHeight, ImageNumChannels, ImageRangeMin, ImageRangeMax, ContrastNormalization, DomainHandling, IgnoreClassIDs, SetBackgroundID, ClassIDsBackground, [], DLPreprocessParam)
    *预处理后的数据集路径
    PreprocessParamFile := PreprocessParamFileBaseName +'.hdict'
    *将参数写入
    write_dict (DLPreprocessParam, PreprocessParamFile, [], [])
    *创建字典
    create_dict (GenParam)
    set_dict_tuple (GenParam, 'overwrite_files', true)
    *预处理
    preprocess_dl_dataset (DLDataset, DataDirectoryBaseName, DLPreprocessParam, GenParam, DLDatasetFilename)
    
    
    csharp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/Y4kFojfBapHy5IZXiWMm1ANJr3eS.png)
在这里插入图片描述

5、测试

复制代码
    *** 测试 *** *随机选取10张图像
    get_dict_tuple (DLDataset, 'samples', DatasetSamples)
    find_dl_samples (DatasetSamples, 'split', 'train', 'match', SampleIndices)
    tuple_shuffle (SampleIndices, ShuffledIndices)
    read_dl_samples (DLDataset, ShuffledIndices[0:9], DLSampleBatchDisplay)

    create_dict (WindowHandleDict)
    for Index := 0 to |DLSampleBatchDisplay| - 1 by 1
    *可视化不同的图像、注释和推理结果
    dev_display_dl_data (DLSampleBatchDisplay[Index], [], DLDataset, ['image','segmentation_image_ground_truth'], [], WindowHandleDict)
    get_dict_tuple (WindowHandleDict, 'segmentation_image_ground_truth', WindowHandleImage)
    dev_set_window (WindowHandleImage[1])
    Text := 'Press Run (F5) to continue'
    dev_disp_text (Text, 'window', 400, 40, 'black', [], [])
    stop ()
    endfor
    *关闭窗体
    dev_display_dl_data_close_windows (WindowHandleDict)
    
    
    csharp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/tS7waGsvBIuWkjdf64lUNqgPR08p.png)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、下载地址

很多人找我要源码,Github又不太好上传大文件,我就把我的网站新增了下载功能,如果下载接口出现问题请大家评论区回复一下,谢谢。

地址:https://zhoujinyong.com/index.aspx/Files/缺陷检测.rar

全部评论 (0)

还没有任何评论哟~