AI医生诊断肺炎

使用CNN通过识别患者胸部的X光片,来判断患者是否患有肺炎人工智能在现实世界中有许多应用,其中非常重要的一项是在医疗行业中的应用。在本文中,我将提供卷积神经网络如何从胸部的X光片来诊断肺炎的代码及过程。导入库让我们加载一些重要的库:

fromkeras.preprocessing.imageimportImageDataGenerator,load_imgfromkeras.modelsimportSequentialfromkeras.layersimportConv2D,MaxPooling2Dfromkeras.layersimportActivation,Dropout,Flatten,DensefromkerasimportbackendasKimportosimportnumpyasnpimportpandasasnpimportmatplotlib.pyplotasplt%matplotlibinline了解数据让我们了解数据。查看两个样本图像,一个处于正常状态的胸部X光片图像,另一个处于肺炎状态的胸部X光片图像。

importmatplotlib.pyplotaspltimg_name=NORMAL2-IM--.jpegimg_normal=load_img(../input/chest_xray/chest_xray/train/NORMAL/+img_name)plt.imshow(img_normal)plt.show()

img_name=person63_bacteria_.jpegimg_pneumonia=load_img(../input/chest_xray/chest_xray/train/PNEUMONIA/+img_name)print(PNEUMONIA)plt.imshow(img_pneumonia)plt.show()准备数据来输入模型设置一些重要的变量,例如图像尺寸,epoch等:

img_width,img_height=,nb_train_samples=nb_validation_samples=17epochs=20batch_size=16图像宽度和图像高度均为像素。训练集包含个样本,验证集包含17个样本(稍后我们将通过数据增强添加更多验证样本)。验证数据用于评估训练期间损失函数的性能(而测试数据用于评估训练后的模型性能)。训练将分为20个epoch,每组16幅图像。指定图像的目录:

train_data_dir=../input/chest_xray/chest_xray/trainvalidation_data_dir=../input/chest_xray/chest_xray/valtest_data_dir=../input/chest_xray/chest_xray/test最后,需要重塑图像:

ifK.image_data_format()==channels_first:input_shape=(3,img_width,img_height)else:input_shape=(img_width,img_height,3)因为图像是彩色的,所以每个像素有三个独立的颜色值,因此深度为3。如果图像像MNIST数据集一样是黑白的,那么深度为1。创建模型模型按照一个标准的CNN公式创建:多次重复卷积层、激活层和池化层,最后是Flatten层和标准全连接层,在最后添加一个dropout层以进一步正则化,然后是另一个全连接层(由两个激活函数包围)。

model=Sequential()model.add(Conv2D(32,(3,3),input_shape=input_shape))model.add(Activation(relu))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(32,(3,3)))model.add(Activation(relu))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(64,(3,3)))model.add(Activation(relu))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Dense(64))model.add(Activation(relu))model.add(Dropout(0.5))model.add(Dense(1))model.add(Activation(sigmoid))我们可以通过调用model.layers获取有关层的信息。我们还可以了解model.input和model.output的输入和输出分别是什么。model.input的输出:model.output的输出:接下来,我们必须使用损失函数、优化器和度量来编译模型。在这种情况下,选择的损失函数是二元交叉熵(几乎是普遍选择)。选择的优化器是rmsprop,它依赖于图像中非常小的变化,在这种变化下分类工作做的很好。编译代码如下:

model.


转载请注明:http://www.zhujiong.net/zdxfyzl/9161.html


当前时间: