1 of 15

Detection of COVID-19

組員:李侑諭 涂崇仁

黃子軒 吳尚明

2 of 15

目錄

  • 主題介紹
  • 動機 & 目標
  • 第一週 – 資料集下載 & 觀察
  • 第二週 – 資料前處理
  • 第三週 – 模型訓練 & 調整
  • 第四週 – 模型優化 & 統整結果
  • 最終成品展示
  • 未來展望

3 of 15

主題介紹

Kaggle AI 競賽:Covid-19 Detection

4 of 15

動機 & 目標

多做一些肺炎方面的相關研究,雖然說已目前的能力無法到在社會、醫療院所上有所作為,但多少能夠盡一份心力做貢獻 同時也能開拓視野、關心時事、投入在社會之中

目標是以我們四人的能力 完成一份創新的專題出來

出發點:完全不去參考其他競賽者在這競賽方面的研究、心得 純然靠蒐集網路AI相關資料 & 隊友相互討論 做出屬於我們自己的獨特作品。

從我們的角度開始出發,不會被拘束在別人成功的方法上

5 of 15

第一週

資料集下載 & 觀察

共 128.51 GB 的資料集下載,3次失敗 平均 7~10 小時

最後成功靠 IDM 軟體 + 桌機

觀察 發現競賽中除了提供分類的 csv 檔之外

還有另外提供資料細節的 csv 檔,如:左肺 右肺的 x y 座標(很精準) & X光肺部的透明度

方便我們對圖片做切割 做多種的研究變化

6 of 15

第二週

資料前處理

肺部切割:

分兩組分工,其中一組做肺部切割 & 合併

並非所有圖片都有提供 x y 座標,像是陰性不提供,沒有異物(透明),肺部有異物的才會給座標(有異物所以肺部不透明)

7 of 15

第二週

資料前處理

資料前處理:

轉檔 dcm to jpg (dcmtojpg.py)

將 dcm 檔的資訊取出並將裡面的圖片轉成 jpg 檔

code運作花了4 ~ 5小時 成功萃取訓練資料(3GB)

嘗試失敗

嘗試失敗

嘗試成功

8 of 15

第二週

資料前處理

資料前處理:

檢查損壞檔比例 (check_jpg.py)

轉檔成功:5545 份

轉檔失敗:532 份 損毀率:8.754%

資料分類 & 整合圖檔 (classify.py)

成功將類別區分於4個資料夾之中

Negative for Pneumonia/

Typical Appearance/

Indeterminate Appearance/

Atypical Appearance/

9 of 15

第二週

資料前處理

資料前處理:

計算 驗證資料量是否正確 (calculate.py)

將損會毀的資料移除 (remove_damage_file.py)

Negative for Pneumonia/

  • 轉檔成功:1538 份
  • 轉檔失敗:72 份

Typical Appearance/

  • 轉檔成功:2436 份
  • 轉檔失敗:307 份

Indeterminate Appearance/

  • 轉檔成功:897 份
  • 轉檔失敗:106 份

Atypical Appearance/

  • 轉檔成功:428 份
  • 轉檔失敗:32 份

10 of 15

第二週

資料前處理

資料前處理:

對訓練集(dataset)做處理:

  • Resize()
  • RandomHorizontalFlip()
  • RandomVerticalFlip()
  • RandomRotation()
  • RandomEqualize()
  • Cutout()
  • ToTensor()
  • Normalize()
  • GaussianBlur()

許多的方法對訓練集做前處理,也都有相互結合使用,

至於我們成品最終會用到哪些處理方法 後面會展示出來。

11 of 15

第三週

模型訓練 & 調整

用 kaggle 提供的編輯環境 有免費的 GPU 30hr/1week

我們的程式碼需用 gpu 才跑得動

batch size,透過batch從訓練目標中取樣,來加快ML模型訓練的速度

設定 epochs 總共要用全部的訓練樣本重複跑幾回合

設定 learning rate 決定一次走多遠,由此數值決定

從網路上中找到幾組對於影像辨識高評價的模型

Models: (5~6hr)

  • resNet
  • convnext small
  • convnext large
  • convnext base
  • efficientNet
  • mobileNet

12 of 15

第四週

模型優化 & 統整結果

準確率:0.25% (失敗)

Convnext_small

尋找問題,想辦法改進

13 of 15

最終成品展示

資料集:

  • 選擇切出肺部

資料前處理:

  • Resize():調整大小
  • RandomVerticalFlip()
  • Cutout():數據增強
  • ToTensor():歸一化
  • Normalize():歸一化

模型調整:

  • model:efficientNet
  • batch size:16
  • epochs:10

14 of 15

最終成品展示

準確率:0.5887% (完成品)

Rank = 627 / 1305

15 of 15

未來展望

開始去看看其他競賽者的研究方式,了解到雙方差異性

集成學習(Ensemble learning)

使用多種學習算法來獲得比單獨使用任何單獨的學習算法更好的預測性能。