前言

這篇是在研究所的時候教專題生怎麼訓練和測試 TrafficVLM 的教學,以下正文開始。

TrafficVLM 的主要任務是輸入一個交通影片,然後他會把影片中出現的交通事件用文字描述出來,就很像是記者在對車禍影片寫旁白的那種感覺。

環境準備

以下是需要準備先做好的前置作業,這個模型其實在哪一種作業系統上照理來說都能執行,流程都是相同的。

  • 建立一個 python 3.10 虛擬環境 (建議用 anaconda 或 virtualenv 建立環境,否則電腦環境一下就爛了喔:))
  • 安裝 pytorch 套件
  • 電腦最少要留有 17G 的儲存空間 (因為訓練資料集較大)

下載需要的程式碼和模型權重

  1. 首先把這個專案 clone 下來

    git clone https://github.com/quangminhdinh/TrafficVLM.git
    
  2. 再來進入 config.py 更改下面內容 (路徑的分隔符號是 / 不是 \,寫反會報錯喔):

    • 第 8 行: _C.GLOB.EXP_PARENT_DIR 是儲存 log 的路徑,等模型訓練完會把所有資料放在這個目錄,設定什麼路徑都可以。

    • 第 75 行: _C.MODEL.VID2SEQ_PATH 是儲存預訓練模型權重的路徑,也就是模型裡的 backbone 權重,可以到這個連結 看作者提供了哪些,根據需求決定要載哪一個權重。

      下面以 vid2seq_htmchaptersvitt.pth 為例: 點選黃色框內的按鈕下載檔案,他是一個 .pth 檔,找個地方存這個檔案然後把路徑改到 _C.MODEL.VID2SEQ_PATH

      title

  3. 最後到這裡 下載訓練資料集,再來看 TrafficVLM/dataset/config.py,他要設定的是跟資料集有關的。到第四行 ROOT_PATH 更改資料集的路徑,就是上一步的資料集路徑貼到這裡 (路徑的分隔符號是 / 不是 )。

    如果專題生在實際訓練時,用的會是自己的資料集,要把資料集架構改的跟原資料集相同,要把上面連結的檔案載下來看長怎樣。

訓練模型

進入上面開好的 python 虛擬環境,跑這個指令,然後 EXP_NAME 是從 /experiments 挑一個檔名複製貼上,不同的檔案放的是不同的模型參數 (但我不知道差在哪,可能看論文會比較清楚)。

title

然後在中間會有一個選項問你要不要使用 wandb,他會把訓練過程的各種參數用視覺化方式呈現出來,我沒有帳號就不示範了。這個就看你需求,如果只是想訓練看看可以選 (3)。

title

然後會呈現像這樣的輸出,1/30 代表在跑 30 個 epoch 裡的第 1 個 epoch。

title

訓練完之後,在你的 _C.GLOB.EXP_PARENT_DIR 路徑就會看到輸出結果。

title

模型測試

再來改 TrafficVLM/config.py,把第 80 行 SOLVER.LOAD_FROM_EPOCH 改成你剛剛訓練的模型的 epoch 數。然後指令上有三個參數,EXP_NAME 就照著你訓練時候選的寫一樣的就好,DEVICE 寫 cuda,BATCH 設 1。

title

這樣以上就是全部的訓練流程了!

資料來源