從構想、規劃、試錯到完成深度學習的手勢辨識模型。
第5關 進入訓練模型前的準備
資料準備好了,剩下是如何訓練一個真正可用的模型,訓練環境與某些必備條件很重要。
剛接觸入門的朋友們,沒有必要再多踩地雷,請參考以下建議。
<1> GPU
如果沒有GPU可用,請使用Google Colab+GPU訓練模型,或是其他有GPU的線上環境也可以 (just like AWS?)。
關於Google Drive + Google Colab 可參考這裡
因為訓練模型是一個非常消耗硬體資源的行為,
光在本機靠CPU訓練所耗費測試的時間,就足夠好好睡上一覺+追劇+吃飯還綽綽有餘了,
而且同時還能隱約聽得到CPU正在發出100%全力運轉的悲鳴(?)
所以,請務必想方設法找到擁有GPU的環境進行才有效率。
<2> Data Augmentation
這是我兒子,已當小天使 |
由於考慮到訓練資料的可能不足,我採用了資料擴增法(Data Augmentation)來進行處理,
在Keras之中可以藉由設定ImageDataGenerator()來達到資料擴增,
而資料擴增此例又會需要使用到flow_from_dircectory()方式來讀取圖片
這裡有關於 Keras generators 講解用法:
訓練圖片的資料夾命名分類非常重要,請務必依照如下圖方式對應的標籤命名,
Class_id_name
id 是你要替這個分類的編號
name
是你替此分類的命名(不寫似乎也沒關係, 但有寫其實總是比較好辨識,btw 圖檔檔名沒有特別限制。)
例如,我在定義手勢類別的資料夾之中的命名方式是:
class_0_none
class_1_fist
class_2_iloveyou….
也請記住務必遵循規則,不要大小寫混雜,強烈建議 直接全部小寫!!
當初我沒有弄清楚也沒發現關鍵在這裡,
導致在測試後一直發現模型return 預測結果永遠都跟當初設定的不同。
光是這點又是N個小時的燒腦除錯...…(往事不堪回首)
<3> Create "zip" file, then upload
承上,要訓練的圖片資訊也一樣請先”全部壓縮為zip檔”後再上傳至Google Drive
因為訓練圖片可能是成千上萬的數量。
若不壓縮而是一張張上傳,Google Drive 處理的速度會讓你刻骨銘心......(?)
<4> Framework compatibility
務必要留意版本相容性,
Google
Colab預設會採用最新版本的Keras
& tensorflow,
可是問題就出在不是最新的東西就最好,當初訓練過程時老是出現看不懂的錯誤訊息,
最後姑且一試,嘗試調整版本後才終於順利進行。
我採用的版本是Keras 2.3.1 & TensorFlow 2.2.0
在除錯過程中,不論是書或網路資源,我鮮少發現有特別提醒版本相容性,這坑實在……
關於環境相容性可參考這個清單 List of Available Environments
Series link:
[DL]Static Gestures Recognition(1): Conception
[DL]Static Gestures Recognition(2): Solution finding
[DL]Static Gestures Recognition(3): Define workflow
[DL]Static Gestures Recognition(4): Preparing appropriate dataset
[DL]Static Gestures Recognition(5): Time is worth more than money
[DL]Static Gestures Recognition(6): Training Model & Next Step
沒有留言:
張貼留言