Halcon 纹理缺陷检测 apply_texture_inspection_model
在纹理中找瑕疵。基于高斯混合模型(GMM)分类器的纹理检查模型,适用于图像金字塔,可以分析纹理的多个频率范围。
【要求】训练样本,必须完美无瑕疵。
【步骤】
1、创建模型
create_texture_inspection_model 或 read_texture_inspection_model
2、加载训练样本
add_texture_inspection_model_image
查看样本get_texture_inspection_model_image
保存样本write_object
移除样本remove_texture_inspection_model_image,可降低模型内存需求。
3、训练模型
train_texture_inspection_model
每层金字塔都会训练一个GMM模型,并确定该层的'novelty_threshold'(区分有无瑕疵的阈值)。
参数的获取与设定
get_texture_inspection_model_param
set_texture_inspection_model_param
'patch_normalization':'weber'对亮度鲁棒,‘none’需要亮度作为评判(默认)
'patch_rotational_robustness':'true'对旋转鲁棒,'false'需要旋转作为评判(默认)
加快训练的方法:
① 缩放训练样本(zoom),通常模型对低分辨率纹理瑕疵检测效果更好。
② 调低 'gmm_em_threshold',但会降低模型准确度,训练终止的条件之一,0.001(默认)。
【重要参数】
'levels':设置具体的金字塔层参与训练,纹理越粗糙,则较低的金字塔层级越可省略。默认auto。
'sensitivity':灵敏度,影响'novelty_threshold'的计算结果。负值会导致更高的阈值,从而更少的发现缺陷。默认0。
'novelty_threshold',阈值,自动计算得到,若结果不理想,可以手动微调。
4、测试
apply_texture_inspection_model
5、模型保存与释放
保存模型,write_texture_inspection_model
若模型不再需要,则释放clear_texture_inspection_model
【重要参数调节策略】
“ novelty_region”是通过组合不同金字塔等级的新颖性区域而生成的,即不同层级金字塔组成的交集区域。如果只有单层金字塔,那么该层的新颖性区域直接就是novelty_region。
若想查看各个金字塔等级的新颖性得分图像和新颖性区域,可以把'gen_result_handle'设置为'true',之后get_texture_inspection_result_object读取'novelty_score_image'和'novelty_region'。
'novelty_score_image'通过'novelty_threshold'阈值分割出感兴趣区域(红色)
上述方式可以知道在哪些金字塔等级上检测到哪些类型的缺陷,来决定调整【重要参数】。如选择特定的金字塔层级。
注意:如果参数'gen_result_handle'设置为'true'创建了结果句柄,则最后需要释放clear_texture_inspection_result
【其他】
序列化、反序列化模型serialize_texture_inspection_model、deserialize_texture_inspection_model。
【术语解释】
Patch:相邻像素的集合。
Novelty Score:在测试过程中,将测试图像的纹理特征与纹理检查模型进行比较,并计算它们的'novelty score'。 该值越大,单个纹理特征越不适合纹理检查模型的可能性越大。
Novelty Threshold:Novelty Score高于该阈值,则纹理有缺陷。
参考网站:Texture Inspection [HALCON Operator Reference / Version 17.12] (mvtec.com)
Halcon案例:
apply_texture_inspection_model.hdev、apply_texture_inspection_model_simple.hdev