灵感:利用CNN网络从医学图像中检测和分类人类疾病的自动化方法。
1、首先我们先对图片进行相应的分析,胸部X线影像(前 - 后)选自广州市广州妇女儿童医学中心一至五岁儿科患者的胸透图片。总共有5840张图片,用其中的5216张用于训练模型,614用于测试,训练集中有3875张是患有肺炎的图片,1341张是正常的。所有胸部X射线成像均作为患者常规临床护理的一部分判定之一。
如下图为随机的两张正常的X射线图片
下面的是患有肺炎的X射线图
对于非专业的人来说,完全无法分辨是否患有肺炎。如果使用机器学习中的CNN网络实现对肺炎图片的分类,将会在很大程度上减少医生的工作量。
本次数据集分为3个文件夹(train,test,val(本次程序验证集直接使用的测试集)),并包含每个图像类别(Pneumonia / Normal)的子文件夹。有5,863个X射线图像(JPEG)和2个类别(肺炎/正常)。
相应的代码实现如下:
import numpy as np
from tensorflow.python import keras
from keras import layers
from keras.models import Model, Sequential
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator
from sklearn.metrics import classification_report, confusion_matrix
from mlxtend.plotting import plot_confusion_matrix
import matplotlib.pyplot as plt
导入需要用到的模块,用到的核心模块为keras模块,主要提供了卷积神经网络(CNN)的模型搭建函数,优化器,损失函数,图片预处理等实用的函数(keras官网:https://keras-cn.readthedocs.io/en/latest/)
创建训练集和测试集目录,如果要加入验证集,可以同时创建验证集目录,本次的验证集我直接调用的是测试集。
train_dir = "D:\\