7.2 辨識效果討論
7.2.1 辨識成果
此研究利用 FCN 概念中的 U-net 架構,並將 200 張鏽蝕影像以及遮罩作為訓 練資料輸入模型中進行訓練,並將 13 張標註較為精細的資料做為測試。在探討 模型表現之前,我們需先了解分類任務中,常需要被拿出來討論的混淆矩陣:
表 7.1 混淆矩陣
TN: True Negative 答案為否,預測也為否。 常偵測,大部分都為正常只有少數為異常的任務,就可以利用 precision 來進行評 估。其中,準確度(Accuracy)的計算方式為 (TN+TP)/總像素量,適用於比例相差 不懸殊的分類任務,此研究中,由於鏽蝕以及正常塗裝的像素比例並沒有相差的 十分懸殊,故我們選用 Accuracy 作為我們評估模型表現的其中一項指標。
另外,這裡的像素預測值由於都會經過模型中的激勵函數運作,出來的值都 會介於 0~1 之間,越靠近 1 代表模型認為是鏽蝕。Tensorflow 套件中的 Accuracy 中的操作閾值設為 0.5,所以當像素被預測出來的值大於 0.5 時,在計算 accuracy 時便會被認定「是」,值小於 0.5 的像素部分便會被認定為「否」。
Accuracy =
(TP+TN)(TP+FP+FN+TN)
除了準確度(Accuracy),也利用了另外一個名為二元交叉熵(Binary Cross Entropy)的指標作為誤差(Loss)評估。二元交叉熵用以衡量預測結果與正確答案的
表 7.2 二元交叉熵算例表(一)
表 7.3 二元交叉熵算例表(二)
上述為兩個模型對於資料進行男、女、其他類別進行預測之結果,可從表中 看出,從預測的錯誤率來看皆為 0.25,顯然無法用此指標判斷模型的表現,模型 二的預測能力顯然比模型一來的優秀,為此,我們利用計算兩個模型的 Cross-Entropy,來判斷兩個模型的表現:
Model 1 Cross-Entropy
= 類別(男) Cross-Entropy + 類別(女) Cross-Entropy + 類別(其他) Cross-Entropy
= -(1 × log(0.4)+ 0 × log(0.3)+ 1 × log(0.5)+ 0 × log(0.8)) + -(0 × log(0.3)+ 1 × log(0.4)+ 0 × log(0.2)+ 0 × log(0.1)) + -(0 × log(0.4)+ 0 × log(0.3)+ 0 × log(0.3)+ 1 × log(0.1)) = 6.966
Model 2 Cross-Entropy 如上計算後得出結果為 2.310
很明顯能夠看出,若模型預測的越準確,對於對的預測機率數字越高,那計算出 來的 Cross-Entropy 數字則越低,由此可得知,預測結果越接近真實答案者,
Cross-Entropy 的值則越低,故可利用此特性進行模型的表現評估。
了解了模型評估的指標,即可藉由觀察指標數字的變化來檢視模型的訓練成 效,下圖為訓練集影像在模型訓練過程中,準確度(Accuracy)以及誤差(Loss)經過 了數個 epoch 後,所呈現的變化曲線。
(epoch : 一個 epoch 代表過了一遍訓練集中的所有樣本)
圖 7.4 準確率曲線(上)及誤差曲線(下)
在訓練集中,最後的準確度可以達到 0.95 ,而誤差可以降至 0.167,但這些數 字僅供參考用以監視模型的訓練過程,真正用以檢驗模型準確度的為額外獨立出 來沒有加入訓練的測試用 13 張鏽蝕影像及遮罩。
利用 evaluate_generator 的手法批次將測試資料丟入模型後進行評分,得出的 準確率為 0.956,誤差為 0.264。
以下為 13 張測試資料原圖以及辨識成果的展示,白色部份為機器辨識之鏽 蝕區域 (左側為原始圖,右側為模型辨識結果):
Accuracy: 0.975 Loss: 0.13
Accuracy: 0.952 Loss: 0.083
Accuracy: 0.91 Loss: 0.58
Accuracy: 0.92 Loss: 0.47
Accuracy: 0.991 Loss: 0.125
Accuracy: 0.984 Loss: 0.106
Accuracy: 0.93 Loss: 0.67
Accuracy: 0.94 Loss:0.75
Accuracy: 0.93 Loss: 0.12
Accuracy: 0.95 Loss: 0.13
Accuracy: 0.981 Loss: 0.08
Accuracy: 0.979 Loss: 0.103
圖 7.5 研究辨識成果展示
Accuracy: 0.989 Loss: 0.09