一、前言
上一篇文章告訴大家如何建置 YOLOv5 的環境在 Jetson Nano 上,並在最後使用官方提供的測試模型,進行推論與測試。但畢竟官方提供的模型,未必適合大家使用在自己的專案上,所以這篇文章將帶大家從蒐集自己的資料開始。
我們會透過連接在 Jetson Nano上面的網路攝影機來拍攝照片,接著使用強大且方便的 Roboflow 輔助我們標記資料,並進一步建置自己的資料集。最後使用 Google Colab,運用 Roboflow 匯出自己的資料集來訓練 YOLOv5 模型。
二、資料蒐集
我們將透過攝影機拍攝照片來蒐集自己的資料,請先構思想要透過物件辨識來辨識的目標。比方說筆者有一個紅蘿蔔布玩具,我希望透過物件辨識來辨識「紅蘿蔔」,與蘿蔔被拔掉後留下的「坑洞」這兩個目標。待會兒將會針對這些目標拍攝相關的照片,作為訓練與驗證的資料。
首先確保網路攝影機連接在 Jetson Nano 上,接著開啟終端機並輸入下列指令並按下 Enter 鍵:
gedit capture.py
這個指令將開啟文字編輯器「gedit」,並新增一個文件名稱為「capture.py」,接著在開啟的編輯器視窗中填入下方程式碼。
從網頁複製程式碼,難免會有格式跑掉的問題,請自行調整縮排、標點符號以符合 Python 規範,避免後續執行時報錯。調整完畢後,請按下編輯視窗右上角的儲存按鈕「Save」,然後關閉視窗。
上述程式使用 OpenCV 套件幫我們從攝影機擷取影像,並讀取鍵盤指令儲存拍攝畫面。現在讓我們執行這個程式,請在終端機中輸入下方指令並按下 Enter 鍵:
python3 capture.py
輸入完指令後會跑出顯示視窗,並新增一個名為「images」的資料夾,攝影機拍攝的畫面會顯示在視窗中。請將攝影機對準您要辨識的物品,只要按下鍵盤上的「s」按鍵,就會將看到的畫面儲存成照片,畫面左上角會提示目前拍攝的數量,照片則會統一存放在 images 資料夾。
images 資料夾的路徑沒意外的話,會在「Home」目錄底下。那到底要多少照片才夠呢?對於訓練來說,當然是越多例子越好囉!如果一定要有個具體的數字,筆者之前有看過一篇文章,作者建議是至少每個類別要有 250 ~ 300 多的標註數量,才能訓練出一個相對好的模型,供大家參考。這邊為了貪圖方便,筆者只拍攝了 50 張照片做示範。
三、資料標註
有了圖像資料,接著要進行資料標註,透過框選的方式告訴 AI 哪些是我們的目標,資料標註的方法有很多,這邊介紹一個好用的網站「Roboflow」,除了標註功能、擴增資料……等,還有不少完善的功能,方便我們管理資料。
請開啟瀏覽器,搜尋「Roboflow」,並進入網站。
1. 註冊帳號
網站畫面如下,請大家自行點選畫面右上角的「Sign up」,註冊自己的帳號。
2. 設置工作空間
登入後,網站會引導大家建置 workspace,名稱與選項依自己的喜好填寫即可。
接著下個頁面會詢問,是否新增協作者的 email,沒有的話點選右下方的「Skip this step」即可。
接著可以依照自己的需求選擇公開或隱藏(需要付費),並按下創建按鈕。
3. 新建專案
設定完工作空間之後,我們就能新增專案,請點選「Create New Project」。
頁面會提示要大家選擇資料出處,因為我們使用的是自己的資料,所以選擇「Upload Your Own Data」。
接著需要大家填寫這個專案的描述,專案類型請選擇「Object Detection(Bounding Box)」,其餘請自由填寫,可參考如下圖所示。
4. 上傳圖片
接下來我們要將拍攝好的照片上傳到網站上,請點選「Select Folder」。
請找到儲存我們拍攝照片的「images」資料夾,並點選「Upload」。
網站這邊還會再次跳出確認視窗,同樣按下「Upload」上傳我們的照片。
Roboflow 會將照片全都顯示在視窗內,讓使用者可以再次查看是否要上傳這些內容。若資料正確無誤,即可點選右上角的「Finish Uploading」將所有照片匯入專案。
照片上傳過程如下圖所示:
5. 標註資料
照片上傳完畢後,頁面會提示說是否標註您的圖片,請點選「Assign Images」繼續。
接著點選一張照片,開始標註工作。
請使用滑鼠點選右側工具中的「方框」,並點選照片中要框選的目標附近,拖曳滑鼠繪製方框。繪製方框後會需要設定該方框代表的標籤,請輸入目標名稱,如下圖所示:
若是第一次使用,頁面會有一些提示教學,大家可以照著操作,但也可以忽視它,繼續標註其他目標。
如下圖,筆者標註了照片當中所有的紅蘿蔔與坑洞,並賦予他們不同的標籤名稱,可以看到在 Roboflow 中,不同的標籤會有不同的顏色區分。請大家依序標註自己所有的照片,雖然過程繁瑣且耗時間,但資料標註的正確性會大大影響模型的訓練,務必標註正確,且不要有過多的背景被框框包進去。
完成所有照片的標註之後,按下左上角的「左箭頭」,會離開標註工作。