*
*此示例是一系列示例的一部分,该示例总结了
* 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
halcon中的深度学习网络有哪几个
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章