攝影/撰寫 | 郭俊廷 | 材料表 |
|
時間 | 2h(看資料多寡決定時間) | ||
難度 | 4(滿分5) |
之前文章已經介紹過在Roboflow進行 YOLO V8 資料標記教學,標記完要如何訓練成模型呢?請看本篇文章介紹。
上篇文章講到都確認好所有照片的標籤就可以開始訓練了,如果網頁關閉了可以從Roboflow的主頁面重新進入:
首先會進入自己的Projects專案,選擇標記好想要訓練的專案,這裡我是選擇有JETBOT照片的TEST2。
都確認好所有照片的標籤,並且在專案旁邊點選Versions出現此畫面代表資料集收集完成,就可以準備訓練了。
第一次訓練旁邊的版本應該是v1,這裡我是訓練第二是所以版本顯示v2。
如果還沒訓練會顯示如下圖這個版本沒有型號。
說明內文:使用 Roboflow 訓練最先進的最佳化模型,或上傳自訂訓練模型,以使用標籤輔助、模型評估等功能,以及自動擴展 API 和邊緣設備支援等部署選項。
並且有以下三個紅框處可以下載Dataset或訓練資料集
Download Dataset:下載資料集
Custom Train and Upload:自訂訓練和上傳
Train with Roboflow:使用Roboflow訓練
Train with Ultralytics HUB COLAB
Download Dataset
點選Download Dataset可以進入下載資料集頁面,這裡可以下載資料集成zip檔案,或是將資料集轉換成訓練用的程式碼可以在COLAB等地方訓練。
如果要下載的時候Format我們選擇YOLOv8。
預設選擇Show download code就是直接顯示下載資料集的程式碼。
如果要在JETSON裝置上訓練要選擇左邊的Download zip to computer 下載zip檔解壓縮後再進行訓練。
或是選擇Code-FreeTraining裡面的Ultralytics Hub來進行訓練
選擇好之後按下方的Continue開啟Ultralytics Hub的網頁。
如果同時想要在Roboflow Train可以把下方選單勾起來,但一個帳號一個月訓練是有數量限制的請注意!!!
記得要登入跟Roboflow同樣的帳號才可以正確連結並訓練
正確登入後會確認是否要Import剛剛的專案
確認完圖片跟標籤都沒錯就可以按上右上方的Train Model開始訓練。
如果剛剛訓練之前有勾選也同時使用Roboflow Train,可以在圖片紅框處的Universe查看Roboflow訓練的情況。
Roboflow訓練的情況如下圖,使用Roboflow預設的訓練速度較快但可能較不精準,以我76張照片的數量訓練時間大約需要20分鐘以內。
回到我們的Ultralytics HUB裡面的Train Model,可以選擇你要訓練的模型大小預設是使用YOLOv8n,下面有顯示準確度跟速度,但最後的推論速度也是要根據你的設備來決定,這裡我們先使用預設的YOLOv8n來訓練。
按下Continue後會跳到選擇訓練裝置的頁面,我們選擇中間的Google Colab
要注意把這邊Step 1的程式碼複製起來,等等才可以在Google Colab貼上程式碼訓練。
這邊是呼叫Ultralytics HUB的api來訓練,記得不要把自己的API隨便給別人。
複製完程式碼後就可以點選下方的Step 2打開 Google Colab notebook。
並且可以看到下方的連線狀態顯示Waiting for connection
打開Colab notebook可以看到畫面長這樣,這邊我們要先連線到GPU,預設應該是連線到GPU,如果不確定的可以選擇下圖紅框處的變更執行階段類型來確認連線的設備。
我這邊的帳號預設是T4 GPU,算力算是蠻強的,但如果訓練太多張照片加很多回合數有可能會因為使用額度超過無法繼續使用Colab繼續訓練。
也可以選擇使用TPU v2-8,TPU 是Google 開發專門用於加速機器學習的處理器。TPU 特別適合需要大規模計算的任務,如神經網路訓練、自然語言處理及圖像識別等。我自己執行訓練的效果也不錯。
確認完要使用GPU還是TPU就可以開始執行這個notebook,會先跳出警告,這裡選擇仍要執行。
執行完第一個CELL的程式會顯示目前的裝置是使用甚麼顯卡且處理器、記憶體狀況。
Ultralytics YOLOv8.2.98 🚀 Python-3.10.12 torch-2.4.1+cu121 CUDA:0 (Tesla T4, 15102MiB)
Setup complete ✅ (2 CPUs, 12.7 GB RAM, 36.7/112.6 GB disk)
在第二個CELL裡面是要貼上剛剛我們在Ultralytics HUB複製的程式碼。
原本預設的程式碼如下圖紅框處。
把Ultralytics HUB複製的程式碼貼上後並執行,如果沒有錯誤就會顯示如下的訓練狀態,預設訓練100回合。
在訓練的時候可以點選右上方的查看資源檢查目前的資料量使用了多少的記憶體和GPU。
以我76張照片3個類別訓練,大約可以使用1小時,更多照片有可能只能使用更少的時間。
成功連結訓練,回到Ultralytics HUB頁面可以看到剛剛連線中的狀態改成Connected。
訓練完成拉到最下面會有訓練結果
可以看到訓練的模型檔分別放在以下路徑,如果要部屬到其他裝置上可以下載下來使用
Optimizer stripped from runs/detect/train/weights/last.pt, 6.3MB
Optimizer stripped from runs/detect/train/weights/best.pt, 6.3MB
或是可以點選最下面的網址用ultralytics HUB的頁面查看訓練的情況
如果要下載模型檔可以去以下路徑下載,點選左邊工具列的資料夾圖示進入以下資料夾,在想要下載的檔案按右鍵選擇下載。
/content/runs/detect/train/weights
best.pt 是最佳結果的模型檔
last.pt 是訓練最後一回合的模型檔
下載完模型或執行完這次的訓練Colab後記得中斷連線並刪除執行階段,否則Colab會繼續計算使用時間。
ultralytics HUB頁面的訓練結果是用圖表畫面呈現的,但無法下載模型檔,所以要記得先在COLAB上下載。
下載完模型檔,沒問題之後訓練就結束了,可以點選Done結束訓練。
這時候回到Roboflow應該可以看到訓練好了,那麼下篇文章在來介紹如何在Roboflow查看訓練結果。
Custom Train and Upload:自訂訓練和上傳
上傳自訂權重可以參考以下網頁:
https://docs.roboflow.com/deploy/upload-custom-weights
這裡的頁面點選Get Snippet其實跟Download Dataset頁面的Show download code的功能是一樣的。
Download Dataset頁面的Show download code跟Get Snippet點進去之後都會出現以下畫面,程式碼可以複製的頁面,可以使用Jupyter或是Termina或是Raw URL等選項下載或訓練。
注意這裡複製的程式碼有包含你的API KEY,不要把這段程式碼給你不信任的人,點選右上方的複製他會自動複製包含API KEY的程式碼(雖然下面的程式碼API KEY是黑色的區塊但貼上的時候是會有自己的API KEY的)。
請勿在您的團隊之外共享此程式碼片段,它包含與您的 Roboflow 帳戶綁定的私密金鑰。
Train with Roboflow
Train with Roboflow點選進去可以選擇使用Roboflow 3.0訓練或是使用YOLO-NAS來訓練,但要注意這裡有使有額度限制,根據你的使用方案會顯示目前剩餘使用次數再下圖紅框的地方。
選擇Roboflow 3.0訓練速度較快,可以直接再瀏覽器上顯示訓練的結果。
選擇YOLO-NAS是較新的功能較實驗性質的,有可能訓練速度比較慢。
選擇Roboflow 3.0就跟我們文章上面選擇的同時在Roboflow訓練的結果一樣。
選擇YOLO-NAS
無付費版本只能選擇YOLO-NAS Small
這一步驟要確認檢查點
可以使用先前檢查點訓練,例如我之前訓練成功過一次就可以使用之前的模型來檢查。
或是中間這個推薦的選項從公共檢查點訓練,使用預訓練的基準模型來當作檢查點,這裡是使用MS COCO。
或是最後一個選項從隨機初始化訓練:不建議使用;幾乎總是產生較差的結果。
確認沒問題後就點選下方的Start Training開始訓練。
這裡會顯示訓練預估的時間,以我76張照片3個類別的專案預估要花16分鐘的時間訓練。訓練完成系統也會寄送通知信到你的EMAIL。
訓練好會顯示如下畫面,可以在網頁中上傳照片測試訓練結果(點選下面的Try This Model 上傳照片),或是使用手機開啟網頁並透過手機攝影機直接測試模型辨識效果。
這是使用Train with Roboflow選擇YOLO-NAS(免費帳號的選擇)模型的辨識結果
可以看到在預設不要更改信賴閾值的時候,三角錐幾乎都有辨識到,但JETBOT三台中指有辨識到一台。
這是使用Train with Roboflow選擇Roboflow 3.0(免費帳號的模型)模型的辨識結果
可以看到在預設不要更改信賴閾值的時候,三角錐雖然辨識的比較少,但JETBOT三台中指有辨識到一台。
這是使用Train with Roboflow選擇Roboflow 3.0(付費帳號的模型)模型的辨識結果
可以看到在預設不要更改信賴閾值的時候,三角錐雖然辨識的比較少但辨識的準確機率較高,JETBOT三台中有辨識到二台且辨識的準確率較免費會員的模型高。
還有其他在Roboflow以及JETSON系列裝置上執行自己模型推論的方法會在之後的文章介紹。
參考資料:
https://blog.roboflow.com/getting-started-with-roboflow/