# 資料集製作 [toc] ## 簡介 本說明書將解說從您提供的 matlab 轉成 python 訓練上可用的標籤及圖片存放格式。 ## 注意事項 - 我有針對檔案名稱進行一些處理,目的是讓程式更好執行 ## Mat 轉成 COCO 格式 1. Mat 轉成 Json 這裡提供了一個 `extract.m` ,請使用 matlab 執行取出內容並以 json 格式儲存,這樣 python 才能讀取 ![](https://hackmd.io/_uploads/BkKsEp2p2.png) 2. 利用 `label.py` 將 Json 轉成 COCO 格式 Json 由於 COCO 格式相對好整理且整齊,在此基底以 COCO 格式整理,若需要 COCO 格式的詳細講解,可以參考[這裡](https://zhuanlan.zhihu.com/p/29393415),若有不足再提出。 - 將 `label.py` 內部的 28, 29 行分別指定到儲存圖片的資料夾及存放利用matlab轉成的 json 的資料夾。 ![](https://hackmd.io/_uploads/S1FaB6han.png) - 若有標籤需要增加,請參考以下幾列,針對需求去修改: ![](https://hackmd.io/_uploads/SyTNwpnp3.png) - 執行 `python label.py`,成功後產出 `coco_format.json` ## Roboflow 這裡使用 Roboflow 這個網站協助資料集製作,這個網站除了可以將自己的檔案轉成任何格式需求,更可以檢測自己的資料集有甚麼問題,如本次的資料集利用此網站有檢測到標籤數量比例問題,還有某張圖片是沒有任何標籤的。 連結:[https://roboflow.com](https://roboflow.com) 1. 點選連結後,選擇 sign up 辦理帳號 ![](https://hackmd.io/_uploads/rJRIbThT2.png) 2. 辦理帳號成功後,點選 try roboflow 或是跟隨其導引直接到主畫面 3. 點選 create new project 建立新的資料集工作區 ![](https://hackmd.io/_uploads/H1uwZp2p3.png) 4. 點擊之後會開啟以下畫面: 重要的是在此步選擇資料集要解決的任務,如本次的資料集則是 object detection,然後把底下對應的欄位也打上對應的資料,授權則可以根據自己需求選擇。 5. 接下來會導引到上傳頁面,在此步請先上傳所有圖片後,再上傳剛剛製作好的 COCO 格式的 json。 ![](https://hackmd.io/_uploads/SyRrbahan.png) 7. 上傳完成後,點選右上角 save and continue 繼續 ![](https://hackmd.io/_uploads/Hy1rW6na2.png) 8. 接下來會跳出分割訓練、驗證及測試集的畫面,調整為所想要的比例後點選下一步 ![](https://hackmd.io/_uploads/HyPEbThph.png) 9. 接下來可以指定要先做哪些前處理或擴增動作,我在這一步有稍微調整圖片大小及圖片方位,如果需要可以再針對這裡進行了解。 ![](https://hackmd.io/_uploads/B1n7Zp3p3.png) 10. 皆點選 Continue 後,便可以點選到最後的 Generate,便會來到資料集製作完成的畫面 ![](https://hackmd.io/_uploads/rk6fba263.png) 如上圖,roboflow也有提供可以直接部署的模型訓練,若有需要可以使用,在這裡我們可以點擊右上角的export進行資料集產出。 11. 點擊後我們便來到資料集格式的選擇區域,本次我們使用的是YOLO 的 txt 格式,若有其他格式的需求也可以藉此進行操作,底下選擇 download zip to computer 便可以直接下載對應格式的資料集壓縮檔。 ![](https://hackmd.io/_uploads/S1QaD626h.png) 上圖為解壓縮後的範例,已經分類好,為照您指定的格式製作的資料集。 ## YOLOv4 注意事項 1. export 資料集時,請照下圖選擇 ![](https://hackmd.io/_uploads/rkGX_Th63.png) 2. 解壓縮位置建議擺放與雲端上的 yolov4-pytorch 相同,放在 data 資料夾中。 3. 存放完畢後,請在 yolov4-pytorch 資料夾中執行 `annotation_fix.py` ,製作出 yolov4-pytorch 所使用的標籤 txt ![](https://hackmd.io/_uploads/S1EbKa3a3.png) - 紅框處的 `base_path`,請指定為您要修改的資料夾分割(範例中是 valid)路徑,若要修改 train 就修改成 train - 紅框處的 `output_file_path`,請指定為您要修改的資料夾分割(範例中是 valid),若要修改 train 就修改成 train.txt 4. 產出後確認 yolov4-pytorch 中的 train.py - 注意 `classes.txt` ,內容是否為對應資料集的所有標籤 ![](https://hackmd.io/_uploads/H13e96262.png) - 確認下圖部分,是否為剛才第 3 步產出的 .txt ![](https://hackmd.io/_uploads/HkR8q62pn.png) ## YOLOv5 注意事項 1. export 資料集時,請照下圖選擇 ![](https://hackmd.io/_uploads/Hkid8R36n.png) 2. 解壓縮位置建議擺放與雲端上的 yolov5 相同,直接將三個分割放在 yolov5 資料夾中。 ![](https://hackmd.io/_uploads/SkN2LCna3.png) ## YOLOv8 注意事項 1. export 資料集時,請照下圖選擇 ![](https://hackmd.io/_uploads/HJ9A8R2p3.png) 2. 解壓縮位置建議擺放與雲端上的 yolov8 相同,將三個分割放在 yolov8 資料夾中的 datasets 資料夾。