Python 中使用 CNN 进行肺炎检测2024 年 8 月 29 日 | 阅读 6 分钟 肺炎是一种可能危及生命的肺部感染,由细菌、病毒或真菌引起。肺炎的早期检测和诊断至关重要。 对于有效的治疗和更好的患者预后。近年来,深度学习技术,如卷积神经网络 (CNN),在医学图像中早期诊断肺炎方面显示出有希望的结果。 本文将讨论如何使用 Python 中的 CNN 构建肺炎检测系统。我们将首先解释 CNN 的基础知识及其架构,然后是用于训练我们模型的数据集,最后,我们将逐步介绍构建和训练模型所涉及的步骤。 卷积神经网络卷积神经网络 (CNN) 是常用于图像识别和计算机视觉任务的深度神经网络。CNN 旨在自动和自适应地从图像中学习特征的空间层次结构。它们由多个层组成,包括卷积层、池化层和全连接层。 卷积层对输入图像执行称为卷积的数学运算以提取特征图。 这些特征图表示图片中的特定模式和结构。池化层通过执行最大池化或平均池化等操作来减少特征图的空间维度。最后,全连接层使用提取的特征将图像分类为不同的类别。 数据集我们将使用来自 Kaggle 的胸部 X 射线图像数据集来训练和测试我们的肺炎检测模型。该数据集包含 5,863 张 JPEG 格式的胸部 X 射线图像,分为正常和肺炎。肺炎类别包括细菌性和病毒性肺炎病例。 我们将使用 80% 的数据集进行训练,20% 进行模型测试。在训练之前, 我们将通过将图像大小调整为 224x224 像素并对像素值进行归一化。 在 0 和 1 之间。 构建和训练模型我们将使用 Keras(一个流行的深度学习框架)来构建和训练我们的 CNN 模型。我们将首先导入所需的库并定义我们的模型架构。 我们的模型由四个卷积层组成,每个卷积层之后是一个最大池化层,以减少特征图的空间维度。然后我们扁平化输出并将其通过两个全连接层。最后一层有一个 sigmoid 激活函数,用于将输入图像分类为正常或肺炎。 我们将使用二元交叉熵损失函数和 Adam 优化器编译我们的模型。我们还将在训练期间监控准确性指标。 接下来,如前所述,我们将加载数据集并对图像进行预处理。 我们使用 `flow_from_directory()` 函数从各自的目录加载训练和测试图像。该过程还对训练图像执行数据增强,例如随机旋转和翻转,以提高模型的泛化能力。 最后,我们使用 `fit()` 函数训练我们的模型,并将训练好的模型保存到文件中以备将来使用。 我们将模型训练 10 个 epoch,并在每个周期后评估其在验证集上的性能。我们将训练好的模型保存到名为 pneumonia_detection_model.h5 的文件中。 评估模型训练模型后,我们可以使用 evaluate() 函数评估其在测试数据集上的性能。 我们在测试数据集上的准确率约为 85%。我们还可以使用 matplotlib 库可视化训练和验证期间的准确率和损失。 上面的代码绘制了训练和验证准确率和损失随 epoch 数量的变化。我们可以看到我们的模型在训练集和验证集上都取得了很高的准确率。 现在,让我们定义我们的 CNN 模型。我们将定义一个包含四个卷积层和随后的最大池化层的序贯模型。我们还将使用批量归一化来归一化每个批次中前一层的激活。 我们将使用二元交叉熵损失作为我们的损失函数,因为我们有一个二元分类问题(肺炎或非肺炎)。我们还将使用学习率为 0.0001 的 Adam 优化器。 接下来,我们将使用 fit 生成器函数训练我们的模型。我们将使用 0.0001 的初始学习率,并在每五个 epoch 后将其降低 0.1,以帮助模型更快地收敛。我们还将使用早期停止来防止过拟合。 训练模型后,我们可以在测试集上评估它并打印分类报告和混淆矩阵,以查看其表现如何。 定义 CNN 模型架构在此步骤中,我们定义了 CNN 模型的架构。我们首先使用 Keras 库中的 Sequential() 函数初始化模型。然后,我们使用 Conv2D() 过程向模型添加卷积层,然后使用 MaxPooling2D() 函数添加最大池化层。最后,我们使用 Flatten() 部分展平卷积层的输出,并使用 Dense() 函数添加全连接层。 我们首先使用 Sequential() 函数初始化 CNN 模型。然后我们添加三个卷积层,每个卷积层后面都跟着一个最大池化层。第一个卷积层有 32 个过滤器,而第二个和第三个卷积层分别有 64 和 128 个过滤器。所有卷积层都具有 (3,3) 的核大小并使用 ReLU 激活函数。 在卷积层之后,我们使用 Flatten() 函数展平输出并添加两个全连接层。第一个全连接层有 128 个单元并使用 ReLU 激活函数,而第二层有一个单元并使用 sigmoid 激活函数,因为这是一个二元分类问题。 最后,我们使用 Adam 优化器、二元交叉熵损失函数和准确率作为评估指标编译模型。 数据增强是一种通过对现有模型应用随机变换来生成新训练样本的技术。这在我们拥有小型数据集时非常有用,因为它有助于增加数据集的大小并减少过拟合。 结论本教程讨论了如何使用 Python 中的 CNN 构建肺炎检测系统。我们使用胸部 X 射线图像数据集来训练和测试我们的模型,并在测试数据集上实现了约 85% 的准确率。CNN 在医学图像分析中显示出有希望的结果,可用于各种医疗保健应用,例如疾病诊断和药物发现。 下一个主题Python 程序:将给定数字转换为单词 |
全世界数百万用户使用消息应用程序 Telegram。此外,Telegram 还提供 API,允许我们构建机器人并自动化消息传输。因此,在本文中,我们将使用 Python 将消息发送给 Telegram 用户。您可能知道...
阅读 3 分钟
在接下来的教程中,我们将了解如何使用 Python 编程语言中的 PyGame 库构建贪吃蛇游戏。但在开始之前,让我们简要了解一下贪吃蛇游戏是什么。贪吃蛇游戏简介 贪吃蛇是一款电子游戏,发明于...
18 分钟阅读
Python 具有特定的内置函数,因此它支持在多个顺序容器中使用多种循环技术。这些循环函数和方法对于竞争性编程非常有用。它可以在用户必须使用一些特定循环技术的不同项目中使用...
阅读 3 分钟
作为一名计算机科学工程师,作为加密世界的一部分,必须了解黑客的基础知识。黑客行为是未经授权访问系统的过程。例如,未经授权登录电子邮件帐户是...
7 分钟阅读
Python 是一种广泛使用的编程语言,在 Web 开发、数据分析、人工智能和科学计算等各个领域得到广泛应用。它具有许多优点,使其成为各种类型项目的合适选择。出于各种原因,...
阅读 4 分钟
该活动有超过20万次印象。许多读者表达了对如何制作它的兴趣,并积极接受。本文旨在帮助那些读者以及任何有兴趣制作类似插图的人。本文的目标是提供一个...
阅读 3 分钟
严肃的软件开发需要性能优化。在优化应用程序性能时,我们无法回避性能分析器。性能分析器通过监控生产服务器或跟踪方法调用的频率和持续时间来进行全方位的分析。以下教程将介绍使用Python的基础知识...
阅读 17 分钟
在本教程中,我们将讨论敏感性分析的概念。我们将探讨在 Python 中进行敏感性分析和优化过程质量的各种方法。让我们首先简要理解敏感性分析的概念。敏感性分析是一种强大的技术,用于了解如何...
阅读 4 分钟
在本教程中,我们将学习 TOML,即 Tom 的显式最小语言。它是一种相对较新的配置文件格式,被 Python 社区广泛使用。我们将讨论 TOML 的语法,使用 tomli 和 tomllib 来解析 TOML 文档以及……
7 分钟阅读
机器学习用于解决回归问题,使用两种不同的算法执行回归分析:逻辑回归和线性回归。这些是最广泛使用的回归方法。机器学习中的回归分析方法有许多算法,它们的使用取决于...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India