探究肺癌患者的CT图像的图像特征并构建一个诊断模型

这篇具有很好参考价值的文章主要介绍了探究肺癌患者的CT图像的图像特征并构建一个诊断模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标

探究肺癌患者的CT图像的图像特征并构建一个诊断模型

效果图

探究肺癌患者的CT图像的图像特征并构建一个诊断模型
探究肺癌患者的CT图像的图像特征并构建一个诊断模型

操作说明

代码中我以建立10张图为例,多少你自己定

准备工作:
1.准备肺癌或非肺癌每个各10张图,在本地创建一个名为“data”的文件夹,用于存放数据集。在“data”文件夹下创建两个子文件夹,分别命名为“cancer”和“non_cancer”,用于存放肺癌和非肺癌图像。将10张肺癌图像命名为“cancer_1.jpg”到“cancer_10.jpg”,并将它们放入“cancer”文件夹中。将10张非肺癌图像命名为“non_cancer_1.jpg”到“non_cancer_10.jpg”,并将它们放入“non_cancer”文件夹中。

  1. 在开始编写和执行代码之前,请确保已经安装完成以下库:

TensorFlow:用于构建和训练深度学习模型
Keras:用于快速构建和训练模型
scikit-learn:用于评估模型和数据预处理
numpy:用于数组和矩阵操作
OpenCV:用于处理和操作图像数据
matplotlib:用于可视化结果

安装命令

pip install tensorflow 
pip install keras 
pip install scikit-learn 
pip install numpy 
pip install opencv-python 
pip install matplotlib

确保在本地创建了一个名为“data”的文件夹,并在其中创建了名为“cancer”和“non_cancer”的子文件夹。
将肺癌和非肺癌图像分别放入对应的子文件夹,并确保它们的命名正确

3.然后就可以复制上txt里面的代码进行执行了(记得改代码里面路径)
探究肺癌患者的CT图像的图像特征并构建一个诊断模型

注意事情:
4. 图像大小:在load_images()函数中,已将图像调整为150x150大小。您可以根据实际情况更改此尺寸,但请注意,较大的图像可能会增加计算成本和训练时间。
例如,将图像大小调整为224x224:。

探究肺癌患者的CT图像的图像特征并构建一个诊断模型

5.灰度图像:如果您的图像是灰度图像,可以将图像从单通道灰度转换为3通道灰度,以适应模型。在load_images()函数中添加如下代码

探究肺癌患者的CT图像的图像特征并构建一个诊断模型

代码

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from tensorflow.keras.preprocessing.image import ImageDataGenerator


from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import to_categorical

# 加载图像并调整大小
def load_images(data_dir, img_size): #从指定目录加载图像文件,并将它们转换成统一大小
    images = []
    labels = []
    for folder in os.listdir(data_dir): #遍历指定路径下的文件夹,其中 os.listdir(data_dir) 返回指定目录中所有文件和文件夹的名称列表
        for file in os.listdir(os.path.join(data_dir, folder)):
            img_path = os.path.join(data_dir, folder, file)
            img = cv2.imread(img_path)
            img = cv2.resize(img, img_size)
            images.append(img)
            labels.append(folder)
    return np.array(images), np.array(labels)

# 构建模型
def create_model(input_shape, num_classes): #创建神经网络模型。函数接受输入数据的形状 input_shape 和分类数量 num_classes 作为参数
    model = Sequential() #将各个神经网络层按照顺序逐层叠加起来,构成一个“线性”模型
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=input_shape)) #添加了一个卷积层 Conv2D 到模型中 (3,3是滤波器大小)
    #接受输入张量(特征图),尺寸为 input_shape;
    #将每个滤波器应用于输入张量;
    #对每个输出结果应用 ReLU 非线性激活;
    #输出包括32张空间特征图通道
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(num_classes, activation='softmax'))
    model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])
    #optimizer=Adam() 指定使用 Adam 优化算法;
    #loss='categorical_crossentropy' 表示采用交叉熵作为损失函数,适合多分类问题;
    #metrics=['accuracy'] 说明度量模型性能时以准确率作为衡量标准
    return model

# 主程序
def main():
    data_dir = r'F:\code_test\data'
    img_size = (150, 150)#这是图片的大小根据自己图片修改
    num_classes = 2
    batch_size = 4
    epochs = 50

    # 加载图像数据
    images, labels = load_images(data_dir, img_size)

    # 数据预处理
    images = images.astype('float32') / 255.0
    labels = (labels == 'cancer').astype(int)
    labels = to_categorical(labels, num_classes)

    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42)

    # 数据增强
    datagen = ImageDataGenerator(horizontal_flip=True, vertical_flip=True)
    datagen.fit(X_train)

    # 创建模型
    model = create_model((img_size[0], img_size[1], 3), num_classes)

    # 训练模型
    history = model.fit(datagen.flow(X_train, y_train, batch_size=batch_size),
                        validation_data=(X_test, y_test),
                        steps_per_epoch=len(X_train) // batch_size,
                        epochs=epochs)

    # 评估模型
    y_pred = model.predict(X_test)
    y_pred_classes = np.argmax(y_pred, axis=1)
    y_test_classes = np.argmax(y_test, axis=1)

    print("Classification Report:")
    print(classification_report(y_test_classes, y_pred_classes))

    print("Confusion Matrix:")
    print(confusion_matrix(y_test_classes, y_pred_classes))

    # 绘制训练过程的准确率和损失曲线
    def plot_training_history(history):
        plt.figure(figsize=(12, 4))

        plt.subplot(1, 2, 1)
        plt.plot(history.history['accuracy'], label='Training Accuracy')
        plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
        plt.xlabel('Epoch')
        plt.ylabel('Accuracy')
        plt.legend()

        plt.subplot(1, 2, 2)
        plt.plot(history.history['loss'], label='Training Loss')
        plt.plot(history.history['val_loss'], label='Validation Loss')
        plt.xlabel('Epoch')
        plt.ylabel('Loss')
        plt.legend()

        plt.show()

    plot_training_history(history)

if __name__ == '__main__':
    main()

相关图片获取:
github链接
CSDN资源文件也有文章来源地址https://www.toymoban.com/news/detail-441587.html

到了这里,关于探究肺癌患者的CT图像的图像特征并构建一个诊断模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——③整理、验证数据,建立Dataset对象

    本文进一步对数据集进行探索,对数据进行清洗、整理、验证。 最后建立Dataset对象,以便进行后续的训练工作。 本文所用代码: 我的Github 我们最终的目的是建立Dataset对象,所以我们的目标应该是整理出 数据+标签 的组合。 在目标检测任务中,数据即我们的CT图片(读取自

    2023年04月20日
    浏览(37)
  • 用 MATLAB 实现的计算机CT断层扫描图像重建项目源码

    计算机断层扫描图像重建 介绍 计算机断层扫描是堆叠在一起的 X 射线图像的集合,以获得作为诊断图像第三维的深度信息。这些 “ 堆叠的 ” X 射线图像作为正弦图从 CT 机架接收,代表对象单层的 X 射线吸收剖面。该项目的目标是重建该单层的原始 2D 图像,并使用光衰减信

    2024年02月04日
    浏览(44)
  • 2022国际数维杯C题题解:利用大脑结构特征和认知行为特征诊断阿尔茨海默病

    原创:CSDN/知乎:川川菜鸟 阿尔茨海默病的临床前阶段,也称为轻度认知障碍(MCI),是正常和严重之间的过渡状态。由于患者及家属对疾病的认知有限,67%的患者被诊断为中重度,已错过最佳干预阶段。因此,早期准确诊断阿尔茨海默病和轻度认知障碍具有重要意义 所附数据

    2024年02月14日
    浏览(34)
  • 三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

    此系统实现了常见的VTK四视图,实现了很好的CT图像分割,可以用于骨骼,头部,肺部,脂肪等分割,,并且通过三维重建实现可视化。使用了第三方库 VTK,ITK 实现分割和生不重建。 窗口分为 (横断面)、冠状面、矢状面,和3D窗口;包含了体绘制和面绘制; 效果: CT分割

    2024年02月08日
    浏览(57)
  • 计算机视觉:通过边缘检测探究卷积的特征提取功能

    在前面的课程中,我们学习了卷积核的运算,同时我们也学习了卷积核的含义,我们可以将卷积核理解为特征提取器,也就是说一个卷积核就是一个特征提取器,很多人对这种说法不了解,下面我们就通过一个边缘检测的例子来看一下卷积核是如何进行边缘特征的提取的。

    2024年02月13日
    浏览(45)
  • 视频图像质量诊断

    视频图像质量诊断有哪些原理,视频图像质量诊断有哪些算法? 视频图像质量诊断技术支持对视频黑屏、视频干扰、视频卡顿、视频遮挡、亮度异常、图像偏色、视频模糊、视频冻结、视频抖动、场景变更、无字符叠加等20种视频图像质量异常进行诊断,保障监控系统持续正

    2023年04月27日
    浏览(58)
  • 【数学建模】2022数维杯国际赛C题 如何利用脑结构特征和认知行为特征诊断阿尔茨海默病(How to Diagnose Alzheimer‘s Disease)

    竞赛题目:如何利用脑结构特征和认知行为特征诊断阿尔茨海默病 How to Diagnose Alzheimer’s Disease Using Brain Structural Features and Cognitive Behavioral Features 本文档主要包括了2022年数维杯C题的求解过程,包含了代码以及运行成果的讲解,下图为本文的中文摘要 问题1: 对附件数据的特

    2024年02月09日
    浏览(49)
  • 基于深度学习的图像分割技术探究

    导言: 图像分割是计算机视觉领域的重要任务,旨在将图像划分为不同的语义区域,实现对图像中感兴趣物体的定位和提取。深度学习作为图像分割的新兴技术,通过卷积神经网络(CNN)等模型,取得了显著的分割效果。本文将探究基于深度学习的图像分割技术的原理、应用

    2024年02月15日
    浏览(38)
  • 图像识别技术在医疗领域的革命:探索医学影像诊断的未来

    导言: 随着人工智能和计算机视觉的快速发展,图像识别技术在医疗领域正掀起一场革命。医学影像诊断是医疗工作中的重要环节,而图像识别技术的引入为医生提供了更准确、高效的辅助手段。本文将深入探讨图像识别技术在医疗领域的应用,以及它对医学影像诊断的革命

    2024年02月11日
    浏览(47)
  • 基于doipclient设置一个简易的诊断服务工具

    python-doipclient: doipclient is a pure Python 3 Diagnostic over IP (DoIP) client which can be used for communicating with modern ECU\\\'s over automotive ethernet. It implements the majority of ISO-13400 (2019) from the perspective of a short-lived synchronous client. The primary use case is to serve as a transport layer implementation for the udsoncan library

    2023年04月22日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包