在紋理中找瑕疵。基於高斯混合模型(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