【Google Colab系列】用免費的GPU+Pytorch訓練自己的分類模型-以智能車位分析為例
標記資料上傳、預訓練模型、遷移學習、匯出模型與驗證
完整的範例在這裡↓↓↓,直接打開就可以一步一步運行囉~
老闆說:「我們來做一個智慧停車場應用吧!來個智能找車位怎麼樣?」
恩….好像很有趣,但我算力不夠手邊沒資源怎麼辦……好在有貼心的google colab 免費提供GPU 有限時的使用,馬上用用看。
我需要停車場資料集
可以參考線上開源停車場標記資料,裡面包含分類(busy / free)兩類,分別代表有車與空位,也有不同天氣與視野的車輛停車狀態。
Step0 提前部屬-掛載google drive、載入lib
點選連結進入取得google drive授權存取,mount雲端硬碟
Step1 確認資料目錄路徑
到指定目錄下可以看到final_mode、parking_data 兩個資料夾
Step2 載入訓練/驗證/測試資料集
當載入的路徑正確就會看見訓練、驗證、測試資料集的數量與類別,這裡的分類標記是利用資料夾類別數量來決定,所以在標記的類別會顯示busy與free兩類代表有車和沒車狀況。
進一步可以顯示看資料集的影像是否正確,處理方式就是將原本轉tensor的值(0~1)還原回原本RGB(0~255)區間並顯示
Step3 設定訓練模型function
Step4 顯示模型預測結果function
Step5 設定模型訓練架構策略與輸出類別數量
在這邊我們使用resnet18並使用pretrained model來做遷移學習,在模型的最後一層改接上輸出類別為兩類,表示有有無停車,接著設定使用CrossEntropyLoss的loss function、優化參數策略使用SGD與使用Leaning rate decay 方式在優化收斂。
現在就可以馬上來訓練第一個模型囉~先給他跑個20 epochs看看效果吧!
看來收斂的表現還算尚可,在驗證資料集上最好的表現有86%,看來心中可以有個底了。
顯示個圖片看看分類結果看起來~比較有感,這個預測表現好像可以喔
Step5 凍結特徵提取模型參數
凍結設定方式 requires_grad == False
所有特徵提取參數皆不會做gradients 的計算backward()
再做一次訓練看看只訓練最後一層的表現吧
視乎表現變差了,Loss降低過程遭受到了阻礙,只有最後一層的參數可以被更新,限制了整體模型fit這資料集的表現。
Step6 匯出訓練模型
確認好匯出的位置後,就可以將剛剛訓練好的兩個模型都存起來
這樣在雲端硬碟上就可以看到著兩個pkl模型檔囉~
Step7 載入模型
再來就是嘗試載入剛剛匯出的模型,進行推論測試。
Step8 推論測試
最後一步就是來看看在測試資料集上的表現囉
最後可以看見在測試資料集中,使用此模型推論的表現,最後顯示出Total testing Acc: 0.85000,85%的正確率看來免免強強但這麼快速的訓練驗證後可以達到此表現,基本上就可以當作參考指標囉。
結論
透過上述的教學作法我們就可以快速使用免費的算力資源,訓練出第一個深度學習影像分類模型囉,再藉由此當作baseline持續優化自己的模型,來一步步提升模型準確度。
Grady Huang