您的位置:

医学图像数据集“盘点”

一、数据集介绍

医学图像数据集是一组医学图像的集合。这些图像通常用于研究医学领域中的各种问题,如诊断、治疗和疾病预防。这些数据集可以包含各种类型的图像,如X射线、CT扫描、MRI和超声波图像。随着医学成像技术的进步,医学图像数据集变得越来越丰富,使用这些数据集进行机器学习和深度学习研究也变得越来越重要。

下面介绍几个常见的医学图像数据集。

二、数据集一:ChestX-ray8

ChestX-ray8是一种广泛使用的医学图像数据集,用于胸部X射线图像中的疾病检测。该数据集中包含约10万张图像,共8种可能的疾病:心脏扩大、肺充血、间质性疾病、结节、浸润性、肺气肿、肺实质增厚和肺纤维化。该数据集是在国立卫生研究院标注数据集基础上扩展而来。

ChestX-ray8数据集可以用于机器学习和深度学习研究,以帮助医疗工作者更准确地诊断疾病。

代码示例:

import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.keras.models import Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True,
                                   validation_split = 0.2)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory('Data_Entry_2017',
                                                 target_size = (224, 224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical',
                                                 subset = 'training')

validation_set = train_datagen.flow_from_directory('Data_Entry_2017',
                                                 target_size = (224,224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical',
                                                 subset='validation')

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), activation = 'relu', input_shape = (224, 224, 3)))
classifier.add(BatchNormalization())
classifier.add(MaxPooling2D(pool_size = (2, 2)))

# add other layers

classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])

classifier.fit_generator(training_set,
                         steps_per_epoch = len(training_set),
                         epochs = 30,
                         validation_data = validation_set,
                         validation_steps = len(validation_set))

三、数据集二:MURA

MURA是一种用于机器学习和深度学习研究的医学图像数据集,主要用于手臂、手肘、手腕等部位的正常和异常图像分类。该数据集包含了14,863张X射线图像,包括正常和异常的图像。

MURA数据集可以用于研究如何使用机器学习和深度学习来帮助医生进行图像识别和疾病诊断。

代码示例:

import tensorflow as tf
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from tensorflow.keras.models import load_model
import numpy as np

img = load_img('MURA-v1.0/valid/XR_WRIST/patient11185/study1_positive/image1.png', target_size=(224, 224))
img = img_to_array(img)
img = np.expand_dims(img, axis=0)
img = img/255

model = load_model('my_model.h5')

prediction = model.predict(img)

if prediction < 0.5:
    print('This is a normal image.')
else:
    print('This image is abnormal.')

四、数据集三:LIDC-IDRI

LIDC-IDRI是一种开源的医疗图像数据集,收集了肺部计算机断层扫描(CT)图像和医生的肺癌诊断注释。该数据集包含1018个病例的数据,每个病例包含一个或多个CT图像和人工标注的肺癌标记。

LIDC-IDRI数据集可以用于机器学习和深度学习研究,以帮助医生在肺癌诊断和治疗方面做出更准确的决策。

代码示例:

import pydicom
import numpy as np
import os

path = 'LIDC-IDRI/LIDC-IDRI-0001/01-01-2000-30178/3000566-03192/'
slices = [pydicom.dcmread(os.path.join(path, s)) for s in os.listdir(path)] 

slices.sort(key=lambda x: int(x.InstanceNumber))

image = np.stack([s.pixel_array for s in slices])
image = image.astype(np.float32)
image = np.asarray(np.clip(image, 0, 4096) / 4096 * 255, np.uint8)

print(image.shape)

五、小结

医学图像数据集是医学研究和诊断中非常重要的资源。随着医学成像技术的不断进步,医学图像数据集越来越丰富,也给机器学习和深度学习在医学领域的应用带来了更多机会。