本專題透過CNN (convolutional neural network)卷積神經網路,對於香蕉葉部的各種疾病進行監督式學習,選擇六種常見的香蕉疾病作為辨識目標進行訓練,並將訓練結果放入Android APP中,並結合CameraX功能以及相簿選取,讓使用者能夠透過拍照及相簿圖片立即取得辨識的結果。
專題老師 : 葉道明 教授 專題學生 : 黃博軒、傅晟嘉、史佳鎧
系統架構
模型架構
模型本身以CNN架構為基礎,透過三層卷積層提取圖像特徵,並將結果分為六類( 包含五種香蕉葉部疾病,以及健康的香蕉葉 )。 1. 使用卷積層提取特徵,通過 ReLU 函數進行非線性映射。 2. 透過批量標準化層加速收斂和減少過擬合問題 3. 通過最大池化層降低特徵圖的尺寸。 4. 使用全連接層進行分類。 此外為求更佳的學習效果和收斂速度,將資料進行適量批次處理。用以提升整體模型的泛化效果,降低過擬合的情況發生,同時提高模型整體判讀的正確率。 為減少訓練過程中的迭代次數所耗費的時間,透過正規化流程將轉成張量的數據標準化,縮小其數據範圍,加強模型的收斂速度、穩定性和泛化能力。
訓練方法
考量香蕉葉部在自然情況下會受環境影響,從而導致圖片中有不同的痕跡或紋路。
為了讓模型能有更好的泛化效果應對。我們採取的作法是使用k-fold 交叉驗證(k-fold cross-validation)的方式來進行相關的訓練及測試驗證。
將整體數據集劃分成K個等量的子集,留其中一個子集作為驗證,其餘K-1個子集則用於訓練。並將逐輪訓練的各項指標的數值平均起來,以評估模型整體的性能及泛化效果。
學習率及權重衰退函數則依據一開始的預想,將學習率以較低的數值進行訓練,並同時拉高權重衰退函數。藉由權重衰退函數,提高對於模型權重的抑制來促進其學 習更簡單且泛化程度更高的特徵,以求取更完備高效的方案。
將批次大小跟權重衰退函數和模型正確率呈正相關,反之學習率過高會降低辨識準確度。
該訓練模型測試正確率最高為 87.2%
系統介紹
開發工具
未來展望
1.開發iOS版本
目前的APP是在Android系統上運行的,為了擴展應用平台,後續會開發iOS的版本。
2.增加辨別部位
現在的辨識模型只能用於病徵出現在葉片疾病,之後希望能夠先辨識出拍攝部位,再針對不同的部位進行疾病辨識。
3.增加邊緣偵測處理
增加辨識前邊緣偵測的功能,降低使用者的使用難度。
4.提升成功率至90%
更改模型架構或算法參數,將辨識成功率提升至90%或以上。