使用深度学习构建脑肿瘤分类器

本文介绍了如何利用深度学习,特别是卷积神经网络(CNN),构建脑肿瘤分类器。通过数据集预处理、图像增强,使用Tensorflow和Keras构建CNN模型,实现对MRI图像的准确分类,提高医疗诊断效率。
摘要由CSDN通过智能技术生成

介绍

深度学习常常出现在我们的日常生活中。在现代社会中,我们的生活方式出现了各种变化,例如自动驾驶汽车、谷歌助理、Netflix 推荐、垃圾邮件检测等等。同样,深度学习在医疗保健领域也得到了发展,我们使用深度学习模型通过核磁共振扫描检测脑肿瘤,使用肺部 X 射线检测 covid 等 。脑肿瘤是一种严重的疾病,每年记录的病例超过 100 万例。

如果一个人患有脑肿瘤,则使用核磁共振成像 (MRI) 扫描。脑瘤可以属于任何类别,对这数百万人进行核磁共振检查以确定一个人是否患有这种疾病,如果是,他的类别是什么,这可能是一项艰巨的任务。这就是深度学习模型发挥重要作用的地方,它可以通过使用神经网络提供患者大脑的 MRI 图像来判断患者是否患有脑肿瘤。

我们将使用 CNN(卷积神经网络)构建脑肿瘤分类器,该分类器因其高精度而广泛用于图像分类领域。我们将使用的编程语言是python。

数据集概述

我们正在使用一个脑肿瘤图像分类器数据集,该数据集有 7022 张人脑 MRI 图像,分为训练集和测试集,它们分为 4 类:

  1. 胶质瘤(Glioma)

  2. 脑膜瘤 (Meningioma )

  3. 无肿瘤 (No tumor)

  4. 垂体(Pituitary)

1e3aa7c9cd94c4b7ac954b7ea9decb3b.png

这些图像的像素大小为 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 库中的图像数据生成器。

它通过实时数据增强生成批量张量图像数据,例如调整所有图像的大小,并调整它们的高度和宽度,从而使输入的图像数据是统一的。

  1. Args rescale:(重新缩放因子)。默认为 None。否则,我们可以将数据乘以所提供的值。

  2. Shear_range:剪切强度(以度为单位的逆时针方向的剪切角)

  3. Zoom_range:随机缩放的范围

  4. Height_shift_range : 总高度的分数, if < 1

  5. Width_shift_range : 总宽度的分数, if < 1

  6. Fill_mode:默认为“nearest”。根据给定的模式填充输入边界之外的点。

  7. 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  
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值