iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
AI & Data

PyTorch 生態鏈實戰運用系列 第 3

[Day03] MedMNIST 資料集

  • 分享至 

  • xImage
  •  

前言

本日會開始進入最主體的Classification的部份,首先就從資料集開始介紹吧!這次會使用的是MedMNIST這個資料集,差不多就是Medical版的MNIST的意思。

MedMNIST v2

MedMNIST基本上是個包含了各種不同類型的醫療影像的資料集,分別由12個不同的2D醫療影像集與6個不同的3D醫療影像集所組成。所對應的Task基本上也都是Classification問題,其中的RetinaMNIST雖說是Ordinal Regression,但其實本質上也是一種Classification。影像的解析度部份則都壓縮到了28x28(x28),都非常小,所以非常適合新手作為練習使用。目前已經出到第二版,所以才會加個v2,主要差異是新增3D的6個資料集。
簡單看這張來自官網的Overview其實應該就可以理解整個資料集的概況:

MedMNIST v2 Overview

其餘詳細的部份,有興趣建議直接參考官網,本日的文章則會著重講解實際抓取下來使用的部份。

MedMNIST套件安裝

廢話不多說,先上GithubPyPI
安裝很簡單就一行

pip install medmnist

或是先前透過我提供的docker-compose.yml安裝環境的朋友們應該也都已經有了(請參考requirements.txt)。

MedMNIST套件使用

MedMNIST的函式庫內提供不少東西可以使用,尤其是還可以直接使用PyTorch的DataLoader,基本上直接套用再加上常見的訓練框架就可以開始做模型,可說是十分方便。

但實務上其實真正耗費大量時間的,往往是資料的準備及處理,撇除不太可能在這裡進行的標注,本系列文希望盡量模擬實際資料獲得的情形。

現在讓我們模擬較接近真實的情況,因此我們後續會採用一大筆影像檔再加上一個對照的csv檔案,這樣的形式開始。

所幸只要利用靈活的MedMNIST,以取得chestmnist為例,輸入以下的程式碼

import medmnist
from medmnist.info import INFO, DEFAULT_ROOT

DATASET = 'chestmnist'
TEMP = '/tmp'
FOLDER = 'data'
POSTFIX = 'png'

def make_dataset() -> None:
    for split in ["train", "val", "test"]:
        print(f"Saving {DATASET} {split}...")
        dataset = getattr(medmnist, INFO[DATASET]['python_class'])(
            split=split, root=TEMP, download=True)
        dataset.save(FOLDER, POSTFIX)  

也可以直接在workspace底下執行檔案

python src/make_dataset.py

等待片刻,執行好以後,就可以獲得像這樣的結構

如此一來,就準備好資料了!

結論

  • 本日介紹友善的練習用資料集MedMNIST及其使用的方法
  • 實作取得圖檔的方法
  • 為接下來的資料處理做準備

上一篇
[Day02] Containerized Development for Deep Learning
下一篇
[Day04] Data Preparation for MedMNIST
系列文
PyTorch 生態鏈實戰運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言