# Matlab label to COCO and trained on roboflow [程式碼連結](https://drive.google.com/drive/folders/1Cpzx8wtnlAsRqnQbsiz52Jfix-xexood?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_twoclass`,內部會有`20240320_coco_format.json` 和刪減過圖片的 `img` 資料夾(圖片為示意) ![image](https://hackmd.io/_uploads/H1tVe2Laa.png) ![image](https://hackmd.io/_uploads/S1DTa72pT.png) 4. 上傳 `20240320_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. 上傳完畢後,進到 dataset 頁面 ![image](https://hackmd.io/_uploads/BkUZWyZlA.png) 8. 點選上方 classes,選擇 pelvic_fracture (本次以 hip fracture 為辨識目標) ![image](https://hackmd.io/_uploads/S1tNbJWe0.png) 10. 選擇全部有 pelvic_fracture 的圖片(點選 select all,再點選下一頁繼續框選) ![image](https://hackmd.io/_uploads/BJTTZ1ZlC.png) 12. 點選右上角的 selected images,選擇紅框刪除全部相關圖片 ![image](https://hackmd.io/_uploads/BkiJMkZeA.png) 13. 點選左方的 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/B1Cgm1WeC.png) 11. 翻轉部分,只要勾選 horizontal 進行水平翻轉即可,點選 apply,可再繼續 Add augmentation step ![image](https://hackmd.io/_uploads/rkG4QkZxC.png) 12. 亮度增加部分,可再針對您需求的增量程度調整,請記得將 Darken (調暗) 的部分取消勾選。 14. 擴增手段選取完畢的狀況應如下圖,點選 continue ![image](https://hackmd.io/_uploads/SyxSck-lR.png) 15. 根據需求選擇產出的資料量,應為 3x 就足夠,額外的圖片可能會利用不同亮度的狀況來製作資料集,選擇完畢後點選 create ![image](https://hackmd.io/_uploads/SJl-H3U6p.png) 16. 處理完畢後點選 Train with Roboflow ![image](https://hackmd.io/_uploads/r16DXJWxC.png) 17. 直接選擇 roboflow 3.0 模型來進行訓練,點選 continue ![image](https://hackmd.io/_uploads/r19_m1ZeC.png) 18. 選擇 fast 即可,除非有額外購買 roboflow 的贊助才可以選其他的 ![image](https://hackmd.io/_uploads/HkIh7J-gA.png) 19. 直接點選 start training 即可,此步在選擇 transfer learning 使用 MS COCO ![image](https://hackmd.io/_uploads/Bkq07JblC.png) 20. 點選完畢後就會進行訓練了,訓練完成會利用 Email 通知 21. 點選 versions 可以看到訓練結果,更詳細的評估指標需要額外花費(roboflow) ![image](https://hackmd.io/_uploads/S1B4EybgR.png) 22. 點選 more metrics 可以看到更多指標 ![image](https://hackmd.io/_uploads/BysD4kblC.png) ![image](https://hackmd.io/_uploads/rJVuNJZgR.png) ![image](https://hackmd.io/_uploads/BJeuN1-eR.png) 23. 往下滑到 training graphs 也有其他訓練圖可以參考 ![image](https://hackmd.io/_uploads/H10c4kZx0.png) 24. 點選 example web app 來取得使用模型的參數 ![image](https://hackmd.io/_uploads/H1nGSkWe0.png) 25. 紅框處的部分在測試分類期間會用到 ![image](https://hackmd.io/_uploads/BJXWByZg0.png) ## 分類測試 1. 將沒骨折資料夾與 `no_fracture_dataset_copy.py` 放在一起 ![image](https://hackmd.io/_uploads/HyoHB1ZxA.png) 2. 執行 `no_fracture_dataset_copy.py` ,會產出一個資料夾叫做 `ok` ,是去掉資料夾把圖片全部放在一起的 3. 建立一個資料夾叫做 `images`,裡面先放入 `ok` 這個資料夾, 4. 點選 Export Dataset ![image](https://hackmd.io/_uploads/Sk2KH28ap.png) 5. 點選 yolov8,勾選 download zip to computer ![image](https://hackmd.io/_uploads/HyS2B3IpT.png) 6. 在資料夾中建立一個資料夾 `datasets` (可根據自己需求修改),並且將下載下來的資料夾解壓縮到內 7. 取出 test 資料夾內的 images 放到外部的 images 資料夾,並且將 test 重新命名為 fractured ![image](https://hackmd.io/_uploads/H1vNDkZeR.png) 7. 回到外部資料夾,應要存放 `test.py`,是評估分類使用 ![image](https://hackmd.io/_uploads/SJkmty-lA.png) 7. 其中 model_id 及 roboflow_api_key 應要根據前面的 28. 的紅框處,進行填寫,model_id 為 `MODEL/VERSION`,roboflow_api_key 請填寫 API KEY ![image](https://hackmd.io/_uploads/ryJ2tybg0.png) ![image](https://hackmd.io/_uploads/HJVyty-l0.png) 8. 您可以至 `test.py` 中調整參數,如 confidence threshold 影響到的是,信心程度多少以上才判斷為是有預測出來 ![image](https://hackmd.io/_uploads/HJVyty-l0.png) 9. 回到外部資料夾,執行 `test.py`,畫面會顯示預測狀況,同時會產生一個 results 資料夾 ![image](https://hackmd.io/_uploads/Sk9wwJ-l0.png) 9. results 資料夾內部結構根據 ground truth 來擺放,可以看到 gt 為 ok (無骨折) 的哪幾張圖片被判為 ng (有骨折),反之亦然 ![image](https://hackmd.io/_uploads/ry2buybeR.png) 10. 目前是自行將畫面顯示結果放入 excel 計算,您可以自行填表到對應位置 ![image](https://hackmd.io/_uploads/S1Bq_1-lA.png)