2020年12月1日 星期二

[DL]Static Gestures Recognition(5): Time is worth more than money

從構想、規劃、試錯到完成深度學習的手勢辨識模型。




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



以上各種踩坑經驗談,

Hope you remember, Time is worth more than money!










沒有留言:

張貼留言