reComputer Jetson 運行 YOLOv5 教學全攻略 2 – 訓練自己的模型

一、前言

上一篇文章告訴大家如何建置 YOLOv5 的環境在 Jetson Nano 上,並在最後使用官方提供的測試模型,進行推論與測試。但畢竟官方提供的模型,未必適合大家使用在自己的專案上,所以這篇文章將帶大家從蒐集自己的資料開始。

我們會透過連接在 Jetson Nano上面的網路攝影機來拍攝照片,接著使用強大且方便的 Roboflow 輔助我們標記資料,並進一步建置自己的資料集。最後使用 Google Colab,運用 Roboflow 匯出自己的資料集來訓練 YOLOv5 模型。

二、資料蒐集

我們將透過攝影機拍攝照片來蒐集自己的資料,請先構思想要透過物件辨識來辨識的目標。比方說筆者有一個紅蘿蔔布玩具,我希望透過物件辨識來辨識「紅蘿蔔」,與蘿蔔被拔掉後留下的「坑洞」這兩個目標。待會兒將會針對這些目標拍攝相關的照片,作為訓練與驗證的資料。

首先確保網路攝影機連接在 Jetson Nano 上,接著開啟終端機並輸入下列指令並按下 Enter 鍵:

gedit capture.py
reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

這個指令將開啟文字編輯器「gedit」,並新增一個文件名稱為「capture.py」,接著在開啟的編輯器視窗中填入下方程式碼。

從網頁複製程式碼,難免會有格式跑掉的問題,請自行調整縮排、標點符號以符合 Python 規範,避免後續執行時報錯。調整完畢後,請按下編輯視窗右上角的儲存按鈕「Save」,然後關閉視窗。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

上述程式使用 OpenCV 套件幫我們從攝影機擷取影像,並讀取鍵盤指令儲存拍攝畫面。現在讓我們執行這個程式,請在終端機中輸入下方指令並按下 Enter 鍵:

python3 capture.py
reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

輸入完指令後會跑出顯示視窗,並新增一個名為「images」的資料夾,攝影機拍攝的畫面會顯示在視窗中。請將攝影機對準您要辨識的物品,只要按下鍵盤上的「s」按鍵,就會將看到的畫面儲存成照片,畫面左上角會提示目前拍攝的數量,照片則會統一存放在 images 資料夾。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

images 資料夾的路徑沒意外的話,會在「Home」目錄底下。那到底要多少照片才夠呢?對於訓練來說,當然是越多例子越好囉!如果一定要有個具體的數字,筆者之前有看過一篇文章,作者建議是至少每個類別要有 250 ~ 300 多的標註數量,才能訓練出一個相對好的模型,供大家參考。這邊為了貪圖方便,筆者只拍攝了 50 張照片做示範。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

三、資料標註

有了圖像資料,接著要進行資料標註,透過框選的方式告訴 AI 哪些是我們的目標,資料標註的方法有很多,這邊介紹一個好用的網站「Roboflow」,除了標註功能、擴增資料……等,還有不少完善的功能,方便我們管理資料。

請開啟瀏覽器,搜尋「Roboflow」,並進入網站。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

1. 註冊帳號

網站畫面如下,請大家自行點選畫面右上角的「Sign up」,註冊自己的帳號。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

2. 設置工作空間

登入後,網站會引導大家建置 workspace,名稱與選項依自己的喜好填寫即可。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

接著下個頁面會詢問,是否新增協作者的 email,沒有的話點選右下方的「Skip this step」即可。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

接著可以依照自己的需求選擇公開或隱藏(需要付費),並按下創建按鈕。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

3. 新建專案

設定完工作空間之後,我們就能新增專案,請點選「Create New Project」。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

頁面會提示要大家選擇資料出處,因為我們使用的是自己的資料,所以選擇「Upload Your Own Data」。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

接著需要大家填寫這個專案的描述,專案類型請選擇「Object Detection(Bounding Box)」,其餘請自由填寫,可參考如下圖所示。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

4. 上傳圖片

接下來我們要將拍攝好的照片上傳到網站上,請點選「Select Folder」。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

請找到儲存我們拍攝照片的「images」資料夾,並點選「Upload」。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

網站這邊還會再次跳出確認視窗,同樣按下「Upload」上傳我們的照片。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

Roboflow 會將照片全都顯示在視窗內,讓使用者可以再次查看是否要上傳這些內容。若資料正確無誤,即可點選右上角的「Finish Uploading」將所有照片匯入專案。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

照片上傳過程如下圖所示:

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

5. 標註資料

照片上傳完畢後,頁面會提示說是否標註您的圖片,請點選「Assign Images」繼續。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

接著點選一張照片,開始標註工作。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

請使用滑鼠點選右側工具中的「方框」,並點選照片中要框選的目標附近,拖曳滑鼠繪製方框。繪製方框後會需要設定該方框代表的標籤,請輸入目標名稱,如下圖所示:

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

若是第一次使用,頁面會有一些提示教學,大家可以照著操作,但也可以忽視它,繼續標註其他目標。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

如下圖,筆者標註了照片當中所有的紅蘿蔔與坑洞,並賦予他們不同的標籤名稱,可以看到在 Roboflow 中,不同的標籤會有不同的顏色區分。請大家依序標註自己所有的照片,雖然過程繁瑣且耗時間,但資料標註的正確性會大大影響模型的訓練,務必標註正確,且不要有過多的背景被框框包進去。

reComputer J1010 運行 YOLOv5 教學全攻略2 - 訓練自己的模型

完成所有照片的標註之後,按下左上角的「左箭頭」,會離開標註工作。