深度學習in Halcon流程


1 預處理

1.1 讀取預訓練網絡

用read_dl_classifier方法讀取一個預訓練網絡,其中Halcon提供的預訓練網絡有:網絡

"pretrained_dl_classifier_compact.hdl"和"pretrained_dl_classifier_enhanced.hdl"。app

1.2 讀取數據集

指定數據集路徑,用read_dl_classifier_data_set方法獲取帶有標籤的原始數據集。機器學習

1.3 數據集預處理

預處理是一個成功分類器的重要組成部分。 一個好的預處理程序將強調相關細節並去除沒必要要的部分,用於深度學習分類器的輸入圖像須要採用特定格式(大小、通道數量、類型和數值範圍)。 preprocess_dl_classifier_images方法相應地預處理一個圖像元組。預處理整個數據集並將數據保存到磁盤中,這樣在訓練過程當中不須要浪費時間進行預處理。函數

對數據集進行預處理,通常都是去除背景,取待檢測對象的最小外接矩形,而後經過調用preprocess_dl_classifier_images方法進行處理。工具

1.4 分割數據

用split_dl_classifier_data_set方法將讀取的數據集進行分割,通常來講訓練集70%,驗證集15%,測試集15%。學習

訓練集被直接用於訓練並被賦予train_dl_classifier_batch方法,驗證集在訓練期間間接使用,以評估分類器看不見數據的成功,嘗試改進您基於驗證集的結果(例如,經過調整超參數或改變預處理,測試集用於泛化的最終檢查在嘗試優化驗證錯誤後不多進行評估。測試

1.5 設置訓練超參數

設置參數:類名、批量大小、運行環境、學習率、學習率在幾個週期後減小多少、週期數、動量、正則化參數。優化

image

2 訓練

以週期數和迭代次數分別設置雙重for循環,對訓練集用train_dl_classifier_batch方法進行小批量訓練,同時用get_dl_classifier_train_result方法得到當前的損失,同時存入元組中,再調用clear_dl_classifier_train_result方法清除結果句柄。人工智能

與此同時,調用apply_dl_classifier_batchwise和evaluate_dl_classifier方法對分類器在當前訓練集和驗證集的表現進行評估,並在迭代過程當中調用plot_dl_classifier_training_progress方法繪製驗證和錯誤率以觀察訓練的進度,最後調用write_dl_classifier方法保存訓練好了的分類器。lua

3 評估

3.1 計算Top-1 error

Top-1 error即對一個圖片,若是機率最大的是正確答案,才認爲正確。

調用apply_dl_classifier_batchwise和evaluate_dl_classifier方法計算訓練集、驗證集和測試集的Top-1 error,它表示預測類別與相應地面實況標籤不匹配的圖像部分。

clip_image004

3.2 計算驗證集的混淆矩陣(confusion matrix)

在人工智能中,混淆矩陣是可視化工具,特別用於監督學習,在無監督學習通常叫作匹配矩陣。矩陣的每一列表明一個類的實例預測,而每一行表示一個實際的類的實例。基於實際的名稱能夠更容易判斷機器是否將兩個不一樣的類混淆了。在機器學習領域,混淆矩陣一般被稱爲列聯表或偏差矩陣。

爲了可視化和分析分類器的質量,將分類結果可視化,混淆矩陣是一個有用的工具。

混淆矩陣的做用:

1) 用於觀察模型在各個類別上的表現,能夠計算模型對應各個類別的準確率,召回率;

2) 經過混淆矩陣能夠觀察到類別直接哪些不容易區分,好比A類別中有多少被分到了B類別,這樣能夠有針對性的設計特徵等,使得類別更有區分性。

先用apply_dl_classifier_batchwise方法獲得DLClassifierResultIDsTest,再用一個for循環和get_dl_classifier_result方法獲得Top1ClassValidation,再調用gen_confusion_matrix函數獲得ConfusionMatrix。

clip_image006

clip_image007

3.3 將分類器應用到測試集

在測試集上測試分類器,到目前爲止,咱們使用訓練集來訓練分類器驗證集來監視和分析它。最後,您能夠檢查分類器如何在理想狀況下獨立於您已使用的兩個數據集的數據上執行操做。正如咱們之前所作的訓練和驗證集同樣,咱們在測試集上計算Top-1 error。

首先用read_dl_classifier方法讀取已經訓練好的分類器,而後調用apply_dl_classifier_batchwise方法將已經訓練的分類器應用到測試集中,再調用evaluate_dl_classifier方法對測試集中的分類結果進行評估,同時將以前評估的訓練集、驗證集和測試集上的錯誤率顯示出來。

4 預測

clip_image009

版權聲明:

本文首發於onefish51的博客(http://www.cnblogs.com/onefish51https://blog.csdn.net/weixin_31075593),未經容許不得轉載,版權全部,侵權必究。

相關文章
相關標籤/搜索