Halcon学习---深度学习篇segment3~评估训练后的模型

*
*此示例是一系列示例的一部分,该示例总结了
* DL细分的工作流程。 它使用MVTec药丸数据集。
*四个部分是:
* 1.数据集预处理
* 2.训练模型。
* 3.评估训练后的模型。
* 4.推断新图像。
*
*此示例包含第3部分:训练模型的评估。
*请注意:此脚本需要第1部分的输出:
* segment_pill_defects_deep_learning_1_preprocess.hdev
*如果将UsePretrainedModel设置为:= false,则还需要第2部分的输出:
* segment_pill_defects_deep_learning_2_train.hdev

dev_update_off ()

*在此示例中,评估在图形窗口中进行了说明,
*在执行之前,将以下参数设置为false可以跳过此可视化。
ShowExampleScreens := true

*默认情况下,此示例使用MVTec预训练的模型。 要使用在本示例系列的第2部分中训练的模型,请将以下变量设置为false。
UsePretrainedModel := true

if (ShowExampleScreens)
    * 初始示例窗口和参数等。
    dev_example_init (ShowExampleScreens, UsePretrainedModel, ExampleInternals)
    * 
    * 示例系列介绍文字。

********************************************************************************************************************                                      分割模型的评估是通过程序'evaluate_dl_model \'进行的。在语义分割中,每个像素都被分配了一个类ID,因此,该评估基于像素级度量,我们将在以下幻灯片中简要说明这些度量 。********************************************************************************************************************
    dev_display_screen_introduction (ExampleInternals)
    stop ()
    * 
    * 评估措施。

********************************************************************************************************************                                      分割模型的评估是通过程序'evaluate_dl_model \'进行的。在语义分割中,每个像素都被分配了一个类ID,因此,该评估基于像素级度量,我们将在以下幻灯片中简要说明这些度量 。********************************************************************************************************************

    dev_display_screen_evaluation_measures (ExampleInternals)
    stop ()

********************************************************************************************************************                                      评估措施:平均IoU度量平均值IoU计算为所有IoU类的平均值。IoU表示“交集”。 
因此,将类别IoU计算为特定类别的地面真实值和结果相交面积除以区域的并集面积。平均IoU是语义分割中的标准度量,因为它结合了真假判断。 因此,此度量非常适合比较多个模型的性能。下面,以“ apple \”类的IoU类计算为例。********************************************************************************************************************

    dev_display_screen_mean_iou (ExampleInternals)
    stop ()

********************************************************************************************************************                                      评估指标:像素精度
像素精度是正确分类的像素与像素总数之比。
也可以按类计算。
在下面,您将看到总体像素精度的计算。********************************************************************************************************************
    dev_display_screen_pixel_accuracy (ExampleInternals)
    stop ()

********************************************************************************************************************                                      混淆矩阵                                              ********************************************************************************************************************
    dev_display_screen_pixel_confusion_matrix (ExampleInternals)
    stop ()
    * 
    * 开始项目

********************************************************************************************************************                                      首先,我们在'test'分割中计算评估度量,这可能需要一段时间,将显示评估进度和估计时间,然后显示结果度量,最后以视觉方式检查 一些测试图像的结果。********************************************************************************************************************
    dev_display_screen_run_program (ExampleInternals)
    stop ()
    * 终止示例屏幕。
    dev_display_example_reset_windows (ExampleInternals)
endif


* ******************************************************
* **    评估的路径和参数   ***
* ******************************************************

* Paths.

* Project directory for any outputs written by HALCON.
ExampleDataDir := 'segment_pill_defects_data'
* File path of the preprocessed DLDataset.
DLDatasetCacheFile := ExampleDataDir + '/dldataset_pill_400x400/dl_dataset.hdict'

if (UsePretrainedModel)
    * Use the pretrained model shipping with HALCON.
    RetrainedModelFileName := 'segment_pill_defects.hdl'
else
    * Path of the retrained segmentation model.
    RetrainedModelFileName := ExampleDataDir + '/best_dl_model_segmentation.hdl'
endif

* Evaluation parameters.

* Evaluation measures.
SegmentationMeasures := ['mean_iou','pixel_accuracy','class_pixel_accuracy','pixel_confusion_matrix']
* Batch size used during evaluation.
BatchSize := 1
* The evaluation can be performed on GPU or CPU.
UseGPU := true

* Display some segmentation results after determining the best model.
NumDisplay := 10


* **********************************
* **   Evaluation of the model   ***
* **********************************

* Check availability of GPU mode.
if (UseGPU)
    get_system ('cuda_loaded', CudaLoaded)
    get_system ('cudnn_loaded', CuDNNLoaded)
    get_system ('cublas_loaded', CuBlasLoaded)
    if (not (CudaLoaded == 'true' and CuDNNLoaded == 'true' and CuBlasLoaded == 'true'))
        UseGPU := false
    endif
endif

* Check if all necessary files exist.
check_model_availability (ExampleDataDir, DLDatasetCacheFile, RetrainedModelFileName, UsePretrainedModel)

* Read the retrained model.
read_dl_model (RetrainedModelFileName, DLModelHandle)

* Initialize the model.
if (not UseGPU)
    set_dl_model_param (DLModelHandle, 'runtime', 'cpu')
endif
set_dl_model_param (DLModelHandle, 'runtime_init', 'immediately')

* Read the preprocessed DLDataset file.
read_dict (DLDatasetCacheFile, [], [], DLDataset)

* Set parameters for evaluation.
create_dict (GenParamEval)
set_dict_tuple (GenParamEval, 'measures', SegmentationMeasures)
set_dict_tuple (GenParamEval, 'show_progress', 'true')

set_dl_model_param (DLModelHandle, 'batch_size', BatchSize)

* Evaluate the retrained model.
evaluate_dl_model (DLDataset, DLModelHandle, 'split', 'test', GenParamEval, EvaluationResult, EvalParams)


* ******************************
* **   Display the results   ***
* ******************************

* Display measures.
create_dict (WindowHandleDict)
create_dict (GenParamEvalDisplay)
set_dict_tuple (GenParamEvalDisplay, 'display_mode', ['measures','absolute_confusion_matrix'])
dev_display_segmentation_evaluation (EvaluationResult, EvalParams, GenParamEvalDisplay, WindowHandleDict)

dev_disp_text ('Press Run (F5) to continue', 'window', 'bottom', 'right', 'black', 'box', 'true')
stop ()

* Close window handles.
dev_display_dl_data_close_windows (WindowHandleDict)


* **************************************
* **   Visual inspection of images   ***
* **************************************

* Evaluate the performance of the model qualitatively
* by visual inspection of images.
* Select test images randomly.
get_dict_tuple (DLDataset, 'samples', DatasetSamples)
find_dl_samples (DatasetSamples, 'split', 'test', 'match', SampleIndices)
tuple_shuffle (SampleIndices, ShuffledIndices)
* Read the selected samples.
read_dl_samples (DLDataset, ShuffledIndices[0:NumDisplay - 1], DLSampleBatch)

* Set parameters for visualization of sample images.
create_dict (WindowHandleDict)
create_dict (GenParamDisplay)
set_dict_tuple (GenParamDisplay, 'segmentation_exclude_class_ids', 0)
set_dict_tuple (GenParamDisplay, 'segmentation_transparency', '80')

* Set batch size of the model to 1.
set_dl_model_param (DLModelHandle, 'batch_size', 1)

* Apply the retrained model and visualize the results.
for SampleIndex := 0 to NumDisplay - 1 by 1
    * 
    * Apply the model.
    apply_dl_model (DLModelHandle, DLSampleBatch[SampleIndex], [], DLResult)
    * 
    * Display the result.
    dev_display_dl_data (DLSampleBatch[SampleIndex], DLResult, DLDataset, ['segmentation_image_ground_truth','segmentation_image_result'], GenParamDisplay, WindowHandleDict)
    * 
    dev_display_continue_message (WindowHandleDict)
    stop ()
endfor

* Close the windows.
dev_display_dl_data_close_windows (WindowHandleDict)

if (ShowExampleScreens)
    * Display final screen.
    dev_display_screen_final (ExampleInternals)
    stop ()
    * Close example windows.
    dev_close_example_windows (ExampleInternals)
endif

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon中自定义训练深度学习模型,可以按照以下步骤进行: 1. 数据准备:首先,你需要准备好用于训练的数据集。这包括标注好的图像和对应的标签。确保数据集具有足够的多样性和覆盖性。 2. 模型选择:根据你的任务需求和数据集特点,选择适合的深度学习模型架构。Halcon支持常见的深度学习框架(如TensorFlow和Caffe),你可以在这些框架中选择合适的模型进行训练。 3. 数据预处理:对于深度学习模型训练,通常需要进行数据预处理,包括图像尺寸调整、数据增强、归一化等操作。你可以使用Halcon提供的图像处理功能对数据进行预处理。 4. 模型训练:使用选定的深度学习框架,在Halcon外部进行模型训练。你可以使用TensorFlow或Caffe等框架提供的API和工具进行模型训练。根据框架的文档和示例,设置好训练参数,加载数据集,开始训练。 5. 导入模型:在模型训练完成后,将训练好的模型导入到Halcon中进行图像处理任务。Halcon提供了接口和函数,用于加载和使用深度学习模型。 6. 模型推理:使用导入的模型进行图像处理任务。你可以将待处理的图像输入到模型中,进行推理得到结果。根据任务需求,可以使用Halcon提供的函数进行后续的处理和分析。 需要注意的是,Halcon虽然提供了对深度学习模型的支持,但深度学习训练过程主要在外部进行。Halcon更多地用于模型的部署和应用。因此,在自定义训练深度学习模型时,你需要结合Halcon和外部深度学习框架进行相关操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值