隶属于:
C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\Deep-Learning\AnomalyDetection
- 本示例展示了全局上下文异常检测(Global Context Anomaly Detection,简称 GC-AD)的一般工作流程。
- 通过 GC-AD,你可以在无异常图像上训练模型,然后将其用于检测新图像中的异常。
- 该工作流程被拆分为不同的部分,这些部分被封装在各自的局部程序中。每个部分的参数可以在相应的程序中进行自定义。
- 请参考相关章节了解有关 GC-AD 的更多详细信息。
3
2
2
1
* 本示例展示了全局上下文异常检测(Global Context Anomaly Detection,简称 GC-AD)的一般工作流程。
* 通过 GC-AD,你可以在无异常图像上训练模型,然后将其用于检测新图像中的异常。
* 该工作流程被拆分为不同的部分,这些部分被封装在各自的局部程序中。每个部分的参数可以在相应的程序中进行自定义。
* 请参考相关章节了解有关 GC-AD 的更多详细信息。
*
dev_update_off ()
dev_close_window ()
set_system ('seed_rand', 73)
*
*** 设置 ***
* 默认情况下,本示例使用已经训练好的模型。
* 如果你想自行训练模型,请将 TrainedModel 设置为 false。
* 如果要评估之前训练好的模型,请将 TrainedModel 设置为模型的路径。
TrainedModel := 'detect_juice_bottle_gc_anomalies.hdl'
*
* ImageDir 是包含所用图像文件夹的基础目录。
* ImageDir 中必须有一个名为“good”或“ok”的子文件夹。
* 在训练中,仅使用“good”或“ok”文件夹中的图像。
* 名称不同的子文件夹中的图像将被视为包含异常的图像,
* 可用于后续的定性评估。
* 注意:只要你的无异常图像位于名为“good”或“ok”的子文件夹中,
* 你就可以立即在自己的数据上训练 GC-AD 模型。
get_image_dir (HalconImages)
ImageDir := HalconImages + '/juice_bottle'
ImageSubDirs := ['good', 'logical_anomaly', 'structural_anomaly']
* 默认情况下,将预处理后的图像缩放到预训练模型的输入尺寸(256×256 像素)
* 或训练模型的输入尺寸(如果 TrainedModel 设置为模型路径)。
* 在训练新模型时,你可以选择将这些值设置为整数,以使用自定义图像尺寸。
ImageWidth := 'default'
ImageHeight := 'default'
*
* 可以通过参数 PatchSize 设置 GC-AD 模型的局部网络的粒度。
* 有关更多信息,请参考 get_dl_model_param 的文档。
* 默认情况下,使用预训练模型的块大小(33 像素)或训练模型的块大小。
* 在训练新模型时,你可以将此值设置为整数,以使用自定义块大小。
PatchSize := 'default'
*
*** 工作流程 ***
*
display_info_text ('start')
stop ()
dev_close_window ()
*
*你可以在这个程序中更改数据集设置:
load_dataset_and_model (TrainedModel, ImageDir, ImageSubDirs, ImageWidth, ImageHeight, PatchSize, DLDataset, DLPreprocessParam, PreprocessDir, DLModelHandle)
*
if (TrainedModel == false)
*你可以在这个程序中更改训练设置:
train (DLDataset, DLModelHandle)
endif
*
evaluate (DLDataset, DLModelHandle)
*
if (TrainedModel == false)
write_dl_model (DLModelHandle, 'final_dl_anomaly_global_context.hdl')
endif
*
inference (DLDataset, DLPreprocessParam, DLModelHandle)
*
*调用此程序是可选的:
compare_gc_anomaly_networks (ImageDir, ImageSubDirs, DLPreprocessParam, DLModelHandle)
*
clean_up_output (PreprocessDir)