# Matlab label to YOLOv8 txt and train/val [程式碼連結](https://drive.google.com/drive/folders/1D7zpDdfVEPMcGkpZbHOP6I93_37LN7CC?usp=sharing) ## 資料夾結構: 1. 建立資料夾 `data` 存放 matlab 標好的 .mat ![image](https://hackmd.io/_uploads/B1Bgy3LT6.png) 2. 需要先建立一個資料夾叫 `json` ## 使用流程 1. 使用`extract.m` (matlab) 取得 json ![image](https://hackmd.io/_uploads/ryRPk2LTa.png) 2. 建立一個資料夾叫 `img` ,存放全部的圖片 ![image](https://hackmd.io/_uploads/r1L-enU66.png) 3. 使用 `json_to_coco.py`,將 json 轉成 coco 格式,會產出一個資料夾 `output`,內部會有`20240311_coco_format.json` 和刪減過圖片的 `img` 資料夾 ![image](https://hackmd.io/_uploads/H1tVe2Laa.png) ![image](https://hackmd.io/_uploads/S1DTa72pT.png) 4. 上傳 `20240311_coco_format.json` 和 `img` 資料夾到 roboflow ![image](https://hackmd.io/_uploads/HJUGa7hp6.png) 5. 點選 save and continue ![image](https://hackmd.io/_uploads/r1RKg3866.png) 6. 調整分割比例後,點選 continue ![image](https://hackmd.io/_uploads/Sy1penUaa.png) 7. 上傳完畢後,點選左方的 generate,再點選 create new version ![image](https://hackmd.io/_uploads/SkgUMhIaa.png) 8. 前處理的部分建議選擇這兩個,第一個避免轉向問題,第二個統一圖片尺寸,可再調整成自己想要的尺寸,完畢後點選 continue ![image](https://hackmd.io/_uploads/rJnwzhUa6.png) 9. 選擇資料擴增手段,點選 Add augmentation step ![image](https://hackmd.io/_uploads/SJYazn8a6.png) 10. 紅框的這三項分別為黑白影像、亮度調整、增加雜訊 ![image](https://hackmd.io/_uploads/SyCYX2LTa.png) 11. 黑白影像部分,請拉到全滿,讓全部影像都有一張黑白的擴增,點選 apply,可再繼續 Add augmentation step ![image](https://hackmd.io/_uploads/BySnXhLpp.png) 12. 亮度增加部分,可再針對您需求的增量程度調整,請記得將 Darken (調暗) 的部分取消勾選。 ![image](https://hackmd.io/_uploads/ryBfE3LTp.png) 13. 增加雜訊部分,可再針對您需求的雜訊程度調整 ![image](https://hackmd.io/_uploads/HJPKEh8Ta.png) 14. 擴增手段選取完畢的狀況應如下圖,點選 continue ![image](https://hackmd.io/_uploads/HJ_jEnUaa.png) 15. 根據需求選擇產出的資料量,應為 3x 就足夠,額外的圖片可能會利用不同亮度及不同雜訊程度的狀況來製作資料集,選擇完畢後點選 create ![image](https://hackmd.io/_uploads/SJl-H3U6p.png) 16. 處理完畢後點選 Export Dataset ![image](https://hackmd.io/_uploads/Sk2KH28ap.png) 17. 點選 yolov8,勾選 download zip to computer ![image](https://hackmd.io/_uploads/HyS2B3IpT.png) 18. 在 yolov8 程式碼資料夾中建立一個資料夾 `datasets` (可根據自己需求修改),並且將下載下來的資料夾解壓縮到內 ![image](https://hackmd.io/_uploads/SkTzunIT6.png) 19. 複製資料集內的 `data.yaml` 到訓練用資料夾 ![image](https://hackmd.io/_uploads/rkEKd386p.png) 20. 根據資料夾命名,修改 `data.yaml` ![image](https://hackmd.io/_uploads/HJwJF38pa.png) 21. 修改 `yolov8_model_train.py`,根據需求修改模型大小,並且若 `data.yaml` 有改為其他名字也要修改 ![image](https://hackmd.io/_uploads/B1YbK2LpT.png) 22. 執行 `yolov8_model_train.py`,開始訓練 ![image](https://hackmd.io/_uploads/BkNDFhUp6.png) 23. 訓練結果及對應圖示會自動產生到 runs 資料夾,至於詳細路徑可以參考下圖下方紅框處,上方紅框則為模型資訊 ![image](https://hackmd.io/_uploads/BJ-Ecn86a.png) 24. 結果存放資料夾應有這些,Precision、Recall、mAP50, mAP50-95 詳細結果可於 `results.csv` 看到,PR Curve、Precision _curve 有對應 `png`。 ![image](https://hackmd.io/_uploads/Byg5qh8aa.png) 25. 執行 `yolov8_model_val.py`,進行測試 ![image](https://hackmd.io/_uploads/HywLj2Ia6.png) 26. 畫面顯示資訊如下,Precision、Recall、mAP50, mAP50-95如畫面顯示,也可以看到對應儲存結果資料夾: ![image](https://hackmd.io/_uploads/S1eSjnITa.png) 27. 結果應有如下,Precision、Recall、mAP50, mAP50-95 詳細結果可於 `results.csv` 看到,PR Curve、Precision _curve 有對應 `png`。 ![image](https://hackmd.io/_uploads/SkCzih8ap.png) ## 製作無骨折資料集 1. 建立資料夾命名為 `no_fracture_images`,將沒骨折圖片放入該資料夾 ![image](https://hackmd.io/_uploads/SyVdSQpT6.png) 2. 執行 `no_fracture_dataset_creator.py` ![image](https://hackmd.io/_uploads/SJCtS7pTT.png) ![image](https://hackmd.io/_uploads/SJMsBQa66.png) 3. 會產出 `no_fracture_datasets` 資料夾,內部結構如下,`labels` 內對應的 txt 檔案為空值 ![image](https://hackmd.io/_uploads/ByaeD76pp.png) 4. 要綜合無骨折資料與骨折資料訓練的話,直接將 `no_fracture_datasets` 資料夾複製到您需要整合的訓練內容中 ![image](https://hackmd.io/_uploads/H13-cXT6p.png)