介绍
深度学习常常出现在我们的日常生活中。在现代社会中,我们的生活方式出现了各种变化,例如自动驾驶汽车、谷歌助理、Netflix 推荐、垃圾邮件检测等等。同样,深度学习在医疗保健领域也得到了发展,我们使用深度学习模型通过核磁共振扫描检测脑肿瘤,使用肺部 X 射线检测 covid 等 。脑肿瘤是一种严重的疾病,每年记录的病例超过 100 万例。
如果一个人患有脑肿瘤,则使用核磁共振成像 (MRI) 扫描。脑瘤可以属于任何类别,对这数百万人进行核磁共振检查以确定一个人是否患有这种疾病,如果是,他的类别是什么,这可能是一项艰巨的任务。这就是深度学习模型发挥重要作用的地方,它可以通过使用神经网络提供患者大脑的 MRI 图像来判断患者是否患有脑肿瘤。
我们将使用 CNN(卷积神经网络)构建脑肿瘤分类器,该分类器因其高精度而广泛用于图像分类领域。我们将使用的编程语言是python。
数据集概述
我们正在使用一个脑肿瘤图像分类器数据集,该数据集有 7022 张人脑 MRI 图像,分为训练集和测试集,它们分为 4 类:
胶质瘤(Glioma)
脑膜瘤 (Meningioma )
无肿瘤 (No tumor)
垂体(Pituitary)
这些图像的像素大小为 512 x 512,并且每个图像都有固定的标签。
让我们导入有助于我们对这些图像进行分类的基本库。
导入库
我们将首先探索数据集并使用图像数据生成器 ImageDataGenerator 对其进行预处理,我们将导入 Tensorflow。在 TensorFlow 中,我们将使用 Keras 库。
import pandas as pd
import numpy as np
import tensorflow
from tensorflow import keras
import matplotlib.pyplot as plt
from keras.preprocessing.image import ImageDataGenerator as Imgen
图像增强
当我们使用任何图像数据集来训练我们的模型时,有时它可能无法为我们提供准确的结果,因为其中的图像可能需要一些预处理,例如缩放、增加亮度、更改灰度值等。
就像二进制数据需要一些数据清理和预处理一样,图像数据集也需要数据预处理。为此,本文使用了 Keras 库中的图像数据生成器。
它通过实时数据增强生成批量张量图像数据,例如调整所有图像的大小,并调整它们的高度和宽度,从而使输入的图像数据是统一的。
Args rescale:(重新缩放因子)。默认为 None。否则,我们可以将数据乘以所提供的值。
Shear_range:剪切强度(以度为单位的逆时针方向的剪切角)
Zoom_range:随机缩放的范围
Height_shift_range : 总高度的分数, if < 1
Width_shift_range : 总宽度的分数, if < 1
Fill_mode:默认为“nearest”。根据给定的模式填充输入边界之外的点。
Validation_split: 保留用于验证的图像的一部分(在 0 和 1 之间)。
#Augmenting the training dataset
traingen = Imgen(
rescale=1./255,
shear_range= 0.2,
zoom_range = 0.3,
width_shift_range = 0.2,
height_shift_range =0.2,
fill_mode = "nearest",
validation_split=0.15)
#Augmenting the testing dataset
testgen = Imgen(# rescale the images to 1./255
rescale = 1./255
)
现在,我们将获取目录的路径并生成批量增强数据。
trainds = traingen.flow_from_directory("Training/",
target_size = (130,130),
seed=123,
batch_size = 16,
subset="training"
)
valds = traingen.flow_from_directory("Training",
target_size = (130,130),
seed=123,
batch_size = 16,
subset="validation"
)
testds = testgen.flow_from_directory("Validation",
target_size = (130,130),
seed=123,
batch_size