問題定義與研究方法
3.2 訓練與辨識流程
本研究主要目的為使用 YOLO V2 實作交通標誌辨識系統,使用該架構我們 必須先訓練自己的模型,透過此模型將辨識的結果以及座標位置取出再針對我們 要的辨識結果加以處理這些資訊。目前台灣已知的交通標誌種類超過一百種,為 了降低辨識目標的複雜度,本研究將交通標誌依外觀特徵分為四大類,並將目標 影像分成 3 層來做辨識,因此,在整個系統中我們將訓練 3 層的交通標誌的模型,
以下分別為訓練與辨識兩個流程的介紹。
圖 3.6: 標誌分類外觀
3.2.1
訓練流程
以下對 YOLO V2 模型的訓練流程進行介紹,其流程如圖3.7
STEP-1: 準備資料集,資料集的組成為訓練影像與標籤 (Label),在上述中我們 說明了如何取得影像資料。
Na tio
na
l U
niversity of Kao hsiung
STEP-2: 準 備 Label, 本 研 究 使 用 自 行 開 發 的 Label 軟 體 來 製 作 標 註 資 料,
YOLO V2 所需要的標註格式不同於 ImageNet 使用的 PASCAL VOC xml,而是採用 text 文字檔,第一欄為 Class 的 ID,其它皆以物件框相
Na tio
na
l U
niversity of Kao hsiung
• saturation & exposure: 輸入影像飽和度與曝光變化。
• learning rate : 學習率,控制基於損失梯度調整神經網絡權值的速 度。學習率越小,我們沿著損失梯度下降的速度越慢。
• max batches : 訓練的最大迭代次數,到此數即終止訓練。
STEP-4: 開始訓練。
圖 3.7: 交通標誌辨識模型訓練流程圖
交通標誌辨識通常分為偵測與辨識兩個部分,本研究以 YOLO V2 作為交通 標誌辨識的主要方法,但針對 YOLO V2 無法偵測或辨識錯誤的影像我們將透過 Haar like 進行進行偵測。以下為 Haar 模型的訓練流程說明,其流程如圖3.8。
STEP-1: 收集交通標誌的正面樣本 (含目標的” 局部” 圖)。
STEP-2: 收集交通標誌的負面樣本 (不含目標的任何圖)。
STEP-3: 將要訓練的影像灰階化。
STEP-4: 設定 AdaBoost 分類器的參數,並計算模型。以下說明在 OpenCV 中 使用該分類器訓練模型的常用參數。
Na tio
na
l U
niversity of Kao hsiung
• PrecalcValBufSize(Mb): 暫存記憶體大小,用來存放預先计算的特 徵值 (feature values),單位為 Mb。
• PrecalcIdxBufSize(Mb): 暫存記憶體大小,用來存放預先计算的特 徵索引 (feature indices),單位為 Mb。
• Sample width : 輸入影像的寬。
• Sample height : 輸入影像的高。
• FeatureType : 使用的特徵類型。
• MinHitRate : 每一層分類器的最小檢測率。
• MaxFalseAlarmRate : 每一層分類器的最大誤檢率。
STEP-5: 輸出交通標誌偵測模型。
圖 3.8: 交通標誌偵測模型訓練流程圖
3.2.2
辨識流程
交通標誌辨識模型訓練好之後即可餵入影像進行辨識工作,在辨識流程部分 依各層的特徵,如: 形狀、文字、數字等特徵進行辨識,只要其中一層辨識失敗該 影像就算無法辨識之影像,藉此提升辨識正確率以及減少不必要的運算。以下說
Na tio
na
l U
niversity of Kao hsiung
STEP-1: 透過行車紀錄器或道路拍攝擷取交通標誌影像。
STEP-2: 將影像像素大小縮放至 544× 544。
STEP-3: YOLO V2 辨識模型計算,第一層模型依據交通標誌的外觀分類進行 分類,若辨識失敗立即終止後續流程。
STEP-4: YOLO V2 辨識模型計算,第二層模型辨識出標誌的項目,若辨識失 敗立即終止後續流程。
STEP-5: YOLO V2 辨識模型計算,第三層模型辨識有數字的標誌,例如限速、
限高等,若辨識失敗即跳過此張影像。
圖 3.9: 交通標誌辨識流程圖
Na tio
na
l U
niversity of Kao hsiung