【Google Colab系列】用免費的GPU+Pytorch訓練自己的分類模型-以智能車位分析為例

標記資料上傳、預訓練模型、遷移學習、匯出模型與驗證

Grady Huang
5 min readApr 12, 2020

完整的範例在這裡↓↓↓,直接打開就可以一步一步運行囉~

老闆說:「我們來做一個智慧停車場應用吧!來個智能找車位怎麼樣?」

恩….好像很有趣,但我算力不夠手邊沒資源怎麼辦……好在有貼心的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

--

--

Grady Huang
Grady Huang

Written by Grady Huang

平凡的工程從業人員,投入在電腦視覺研究和應用開發的深淵中,寫寫筆記避免隔天忘記~ 喜歡拍手👏就好,不分享‧留一手🤫

Responses (1)