1 預處理
1.1 讀取預訓練網絡
用read_dl_classifier方法讀取一個預訓練網絡,其中Halcon提供的預訓練網絡有:
"pretrained_dl_classifier_compact.hdl"和"pretrained_dl_classifier_enhanced.hdl"。
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 設置訓練超參數
設置參數:類名、批量大小、運行環境、學習率、學習率在幾個周期后減少多少、周期數、動量、正則化參數。
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方法保存訓練好了的分類器。
3 評估
3.1 計算Top-1 error
Top-1 error即對一個圖片,如果概率最大的是正確答案,才認為正確。
調用apply_dl_classifier_batchwise和evaluate_dl_classifier方法計算訓練集、驗證集和測試集的Top-1 error,它表示預測類別與相應地面實況標簽不匹配的圖像部分。
3.2 計算驗證集的混淆矩陣(confusion matrix)
在人工智能中,混淆矩陣是可視化工具,特別用於監督學習,在無監督學習一般叫做匹配矩陣。矩陣的每一列代表一個類的實例預測,而每一行表示一個實際的類的實例。基於實際的名稱可以更容易判斷機器是否將兩個不同的類混淆了。在機器學習領域,混淆矩陣通常被稱為列聯表或誤差矩陣。
為了可視化和分析分類器的質量,將分類結果可視化,混淆矩陣是一個有用的工具。
混淆矩陣的作用:
1) 用於觀察模型在各個類別上的表現,可以計算模型對應各個類別的准確率,召回率;
2) 通過混淆矩陣可以觀察到類別直接哪些不容易區分,比如A類別中有多少被分到了B類別,這樣可以有針對性的設計特征等,使得類別更有區分性。
先用apply_dl_classifier_batchwise方法得到DLClassifierResultIDsTest,再用一個for循環和get_dl_classifier_result方法得到Top1ClassValidation,再調用gen_confusion_matrix函數得到ConfusionMatrix。
3.3 將分類器應用到測試集
在測試集上測試分類器,到目前為止,我們使用訓練集來訓練分類器和驗證集來監視和分析它。最后,您可以檢查分類器如何在理想情況下獨立於您已使用的兩個數據集的數據上執行操作。正如我們以前所做的訓練和驗證集一樣,我們在測試集上計算Top-1 error。
首先用read_dl_classifier方法讀取已經訓練好的分類器,然后調用apply_dl_classifier_batchwise方法將已經訓練的分類器應用到測試集中,再調用evaluate_dl_classifier方法對測試集中的分類結果進行評估,同時將之前評估的訓練集、驗證集和測試集上的錯誤率顯示出來。
4 預測
版權聲明:
本文首發於onefish51的博客(http://www.cnblogs.com/onefish51和https://blog.csdn.net/weixin_31075593),未經允許不得轉載,版權所有,侵權必究。