基于matlab使用深度神经网络对肿瘤图像进行分类(附源码)

news2024/11/16 11:28:59

一、前言

此示例演示如何使用 Inception-v3 深度神经网络对可能不适合内存的多分辨率全玻片图像 (WSI) 进行分类。

用于肿瘤分类的深度学习方法依赖于数字病理学,其中整个组织切片被成像和数字化。生成的 WSI 具有高分辨率,大约为 200,000 x 100,000 像素。WSI 通常以多分辨率格式存储,以促进图像的高效显示、导航和处理。

该示例概述了使用基于块的处理来训练大型 WSI 的体系结构。该示例使用迁移学习技术训练基于 Inception-v3 的网络,将各个块分类为 或 。

二、准备训练数据

按照预处理训练分类网络的多分辨率图像中的说明准备训练和验证数据。预处理示例将预处理的训练和验证数据存储保存在名为 的文件中。

将变量的值设置为文件所在的位置。将定型和验证数据存储加载到变量中。

三、设置用于迁移学习的 Inception-v3 网络层

此示例使用 Inception-v3 网络,这是一个卷积神经网络,在 ImageNet 数据库中的 3 多万张图像上进行训练 [48]。该网络有 1 层深,可以将图像分类为 000,<> 个对象类别,例如键盘、鼠标、铅笔和许多动物。

inceptionv3(深度学习工具箱)函数返回一个预先训练的 Inception-v3 网络。Inception-v3 需要 Inception-v3 Network 的深度学习工具箱模型支持包。如果未安装此支持包,则该函数将提供下载链接。

网络的卷积层提取图像特征。最后一个可学习层和最后一个分类层使用图像特征对输入图像进行分类。这两个图层包含有关如何将要素组合到类概率、损失值和预测标签中的信息。要重新训练预训练网络以对新图像进行分类,请将这两个层替换为适应新数据集的新层。

此示例的目标是在两个类和 .为两个类创建新的全连接图层。将最终的全连接层替换为新层。

为两个类创建新的分类图层。将最终分类图层替换为新图层。

三、指定训练选项

使用均方根传播 (RMSProp) 优化训练网络。使用深度学习工具箱指定 RMSProp 的超参数设置。

减少到一个小数字,因为大量的训练数据使网络能够更快地实现收敛。根据您的可用 GPU 内存指定。虽然较大的小批量大小可以使训练更快,但较大的大小会降低网络的泛化能力。设置为 以防止完全读取训练数据以计算规范化统计信息。

四、训练网络或下载预训练网络

默认情况下,此示例使用帮助程序函数下载已训练分类网络的预训练版本。预训练网络可用于运行整个示例,而无需等待训练完成。

五、下载测试数据

Camelyon16测试数据集由130个WSI组成。这些图像具有正常组织和肿瘤组织。每个文件的大小约为 2 GB。

要下载测试数据,请访问Camelyon17网站,然后单击第一个“CAMELYON16数据集”链接。打开“测试”目录,然后按照以下步骤操作。

  • 下载“lesion_annotations.zip”文件。将所有文件解压缩到变量指定的目录中。

  • 打开“图像”目录。将文件下载到变量指定的目录。

六、预处理测试数据

创建阻止的映像对象以管理测试映像

获取测试映像的文件名。然后,创建管理测试图像的阻止映像对象数组。每个对象都指向磁盘上的相应映像文件。

创建组织面膜

为了有效地处理WSI数据,请为每个测试图像创建一个组织掩模。此过程与用于预处理正常训练图像的过程相同。

组织面膜只有一个级别,并且足够小以适合记忆。使用帮助程序功能在图像浏览器应用程序中显示组织蒙版。

预处理肿瘤地面真相图像

指定肿瘤掩膜的分辨率级别。

七、预测肿瘤概率的热图

使用经过训练的分类网络预测每个测试图像的热图。热图给出了每个块属于该类的概率分数。该示例对每个测试映像执行以下操作以创建热图:

  • 使用选择块位置功能选择块。

  • 使用函数和帮助程序函数定义的处理操作处理块的批次。

  • 使用写入函数将热图数据写入 TIF 文件。处理完所有模块后的最终输出是一个热图,显示在整个WSI上发现肿瘤的概率。

可视化热图

选择要显示的测试图像。在图形的左侧,使用帮助程序函数将地面实况边界坐标显示为手绘 ROI。此帮助程序函数作为支持文件附加到示例。正常区域(用绿色边界显示)可以发生在肿瘤区域(用红色边界显示)内。

在图的右侧,显示测试图像的热图。链接轴并放大到感兴趣区域。

八、在特定阈值下对测试图像进行分类

要将块分类为 或 ,请对热图概率值应用阈值。

选择一个阈值概率,高于该阈值的块被分类为 .理想情况下,您将使用验证数据集上的受试者工作特征 (ROC) 或精度-召回率曲线来计算此阈值。

对每个测试图像中的块进行分类,并使用应用函数和帮助程序函数定义的处理操作计算混淆矩阵。

  • 调整和优化地面实况掩码以匹配热点图的大小。

  • 在热图上应用阈值。

  • 以最精细的分辨率级别计算所有块的混淆矩阵。混淆矩阵给出了真阳性 (TP)、假阳性 (FP)、真阴性 (TN) 和假阴性 (FN) 分类预测的数量。

  • 将 TP、FP、TN 和 FN 块的总数保存为块图像中的结构。被阻止的图像作为被阻止图像数组中的一个元素返回。

  • 将分类预测的数字标记图像保存在被阻止的图像中。值 0、1、2 和 3 分别对应于 TN、FP、FN 和 TP 结果。被阻止的图像作为被阻止图像数组中的一个元素返回。

计算所有测试图像的全局混淆矩阵。显示归一化全局混淆矩阵的混淆图。WSI图像中的大多数块都是正常组织的,导致高比例的真阴性预测。

可视化分类结果

将真实 ROI 边界坐标与分类结果进行比较。在图形的左侧,将地面实况边界坐标显示为手绘 ROI。在图的右侧,显示测试图像,并根据混淆矩阵在每个块上叠加颜色。将真阳性显示为红色,将误报显示为青色,将漏报显示为黄色,将真阴性显示为无色。

假阴性和假阳性出现在肿瘤区域的边缘,这表明网络难以对具有部分类的块进行分类。

注意:为了减少肿瘤周边的分类误差,您可以使用较少的同质块重新训练网络。预处理训练数据集的块时,请减小名称-值参数的值。

九、使用 AUC-ROC 曲线量化网络预测

使用帮助程序函数计算不同阈值下的 ROC 曲线值。计算曲线下面积 (AUC) 指标。该指标返回 [0, 1] 范围内的值,其中 1 表示完美的模型性能。此数据集的 AUC 接近 1。您可以使用 AUC 微调训练过程。

十、程序(文末附程序链接)

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Openlayers实战:平移、弹性平移、飞行动画

Openlayers地图上经常会遇到这样的一种 场景,获取到某数据后,会重新定位中心点到某个位置,这里可以用setCenter([lon,lat]), 更可以用动画的形式展现。 在本实战中,展示出平移、弹性平移、飞行的动画。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑…

【图像处理OpenCV(C++版)】——5.5 图像平滑之双边滤波

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

第三十六天 Java基础学习(三十)

一、Spring MVC 组件是将处理某类问题的代码进行封装的整体模块。一个大的问题可以拆分为不同的小问题&#xff0c;解决每个小问题的代码封装可以称之为组件&#xff0c;但是组件又是无法独立运行的&#xff0c;必须结合其他组件一起才能最终解决问题。就好比汽车&#xff0c;…

同步任务和异步任务的执行过程

同步任务和异步任务的执行过程 1、执行过程描述2、EventLoop的概念 1、执行过程描述 同步任务 是由JS主线程按次序执行异步任务委托给宿主环境执行已完成的异步任务对应的回调函数&#xff0c;会被加入到任务队列中等待执行JS的主线程的执行栈被清空后&#xff0c;会读取任务队…

Java026——System 类和Scanner 类

一、System 类 1.1、System 类提供的常用方法 方法 功能描述 ----------------------------------------------------------------------------------------------------------------------- currentTimeMillis() 返回当前计算机时间 和 格林威治时间&#xff…

mysql查询练习

1.创建表 CREATE TABLE worker( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10) NOT NULL DEFAULT 群众 , 姓名 varchar(20) NOT NULL,出生日期 date NOT NULL,PRIMARY KEY (职工号))ENGINE…

4.3Java EE——一对多查询

用户与订单关联关系图​​​​​​​ 与一对一的关联关系相比&#xff0c;接触更多的关联关系是一对多&#xff08;或多对一&#xff09;。例如一个用户可以有多个订单&#xff0c;多个订单也可以归一个用户所有。用户和订单的关联关系如图。 一、<collection>元素 在MyB…

前端技术学习第九讲:VUE基础语法---VUE常用指令

VUE常用指令 在VUE学习中&#xff0c;通常使用相关指令使VUE对象中的内容与网页进行挂载绑定&#xff0c;是我们的数据与视图之间产生关联&#xff0c;完成渐进式动态效果。VUE指令都会以“v-”开头。 指令名描述v-text将文本内容挂载到页面元素中v-html将html代码展示到页面…

更开放、更高性能、更具规模,闪马智能布局AGI时代

7月6日&#xff0c;2023世界人工智能大会&#xff08;WAIC 2023&#xff09;在上海盛大开幕。本届大会以“智联世界 生成未来”为主题&#xff0c;聚焦通用人工智能发展&#xff0c;共话产业新未来。 8日上午&#xff0c;由上海闪马智能科技有限公司&#xff08;下称“闪马智能…

ZGC垃圾收集器(-XX:+UseZGC)

ZGC在jdk11只支持Linux版本&#xff0c;4TB的内存&#xff0c;STW时间控制在10ms内&#xff1b;jdk16已经支持16TB的内存&#xff0c;STW时间不超过1ms&#xff0c;下面主要针对jdk11版本的详解 一、堆内存结构 ZGC堆内存分为三种类型的页面即小页面&#xff08;空间大小2M&a…

CYCLO (L-ALA-L-ALA),5845-61-4,环(丙氨酰-丙氨酰),氨基酸中间体

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 【产品描述】 cyclo(Ala-Ala)氨基酸中间体&#xff0c;主要由丙氨酰组成 【中文名称】环(丙氨酰-丙氨酰) 【英文名称】 cyclo(Ala-Ala)&#xff0c;CYCLO (L-ALA-L-ALA) 【结 构 式】 【CAS】5845-61-4 【分子式】C6H10N2O…

C#制作打包安装程序,安装程序类使用

这里写目录标题 安装Microsoft Visual Studio Installer Projects创建安装项目设置安装程序文件设置程序桌面图标给程序设置安装程序名称安装程序类怎么使用Installer1.cs自定义安装步骤自定义设置安装程序路径&#xff0c;让用户安装时不能选择安装路径生成安装包 安装Microso…

实例011 在状态栏中显示检查框

实例说明 在设计程序界面时&#xff0c;为了规范界面&#xff0c;可以将一些控件放置在状态栏中&#xff0c;这样既能起到控制程序的作用&#xff0c;又能使界面和谐、美观。运行程序&#xff0c;在窗体的状态栏中加入了显示时间检查框。效果如图1.11所示。 技术要点 在状态…

对Linux系统对Spark开发环境配置

单机版本 上传对应文件&#xff0c;解压文件&#xff0c;并查看 unzip scala-2.12.12.zip tar -xzf spark-3.2.0-bin-hadoop2.7.tgz 移动scala及spark安装包到指定目录下 在opt目录下移动该文件到/usr目录下 mv scala-2.12.12 /usr/scala/ mv spark-3.2.0-bin-hadoop2.7 /…

Django_使用redis缓存数据

目录 一、配置redis 二、缓存Django的默认session 三、使用django的缓存机制缓存数据 四、自定义缓存数据 源码等资料获取方法 一、配置redis 在settings中添加配置参数 # Django的缓存配置 CACHES {"default": {"BACKEND": "django_redis.ca…

【企业微信多选的星期数据生成如“周一、周三至周六“】

目标效果如下图 实现这个过程首先是要找到逻辑&#xff0c;这个看似简单的操作却属实让我想了很久。 首先要了解需求 根据拿到的数据得到生成符合要求的字符串。中间有连续的星期大于三天的&#xff0c;开始和结束星期中间要有"至"。 分析逻辑 一、判断开始日期和…

RabbitMQ系列(19)--实现在RabbitMQ宕机的情况下对消息进行处理

前言&#xff1a;在生产环境中由于一些不明原因&#xff0c;导致RabbitMQ重启的情况下&#xff0c;在RabbitMQ重启期间生产者投递消息失败&#xff0c;生产者发送的消息会丢失&#xff0c;那这时候就需要去想在极端的情况下&#xff0c;RabbitMQ集群不可用的时候&#xff0c;如…

创造一款安卓自定义控件_裁剪原理介绍

1、新增功能&#xff0c;旋转&#xff1a; 效果如图&#xff0c;点击旋转&#xff0c;可以将控件画面本身进行90度倍数的旋转&#xff0c;并进行宽高比例适配&#xff0c;旋转之后裁剪依然正常。 功能实现原理&#xff1a; 1、通过调用view的setRotation功能进行以View为中心…

Stable Diffusion - 超分辨率插件 StableSR v2 (768x768) 配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131582734 论文&#xff1a;Exploiting Diffusion Prior for Real-World Image Super-Resolution StableSR 算法提出了一种新颖的方法&#xff0…

【JAVA】JAVA与C++的区别与联系

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言两方介绍CJAVA 不同|Java不支持指针、模板、指针重载、联合等||支持析构函数||条件编译和包含||螺纹支架||默认参数||转到语句||多重继承||异常处理||方法重载和操作符重载|…