使用深度学习集成模型进行乳腺癌组织病理学图像分类

基于预训练的VGG16和VGG19架构训练了四种不同的模型(即完全训练的 VGG16、微调的 VGG16、完全训练的 VGG19 和微调的 VGG19 模型)。最初,我们对所有单独的模型进行了5倍交叉验证操作。然后,我们采用集成策略,取预测概率的平均值,发现微调的 VGG16 和微调的 VGG19 的集成表现出有竞争力的分类性能,尤其是在癌症类别上。

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

乳房X线摄影、超声成像和磁共振成像(MRI),这些非侵入性成像方法可能无法有效地确定癌变区域。为此,通常采用活检技术来更全面地分析乳腺癌组织的恶性程度。活检过程包括收集组织样本,将其安装在显微镜载玻片上,并对这些载玻片进行染色,以便更好地观察细胞核和细胞质。然后病理学家对这些载玻片进行显微镜分析,以最终确定乳腺癌的诊断。

传统的计算机诊断方法,从基于规则的系统到机器学习技术,可能无法有效地挑战乳腺癌组织病理学图像中的类内变异和类间一致性。此外,这些方法主要依赖于尺度不变特征变换、速度鲁棒特征和局部二值模式等特征提取方法,这些方法都基于监督信息,并且在分类过程中容易出现有偏差的结果乳腺癌组织病理学图像。

局部二值模式是一种用于描述图像中纹理特征的方法。它可以通过比较像素点与其邻域像素点的灰度值,来判断该像素点所属的纹理类型。通过对图像中所有像素点进行局部二值模式计算,可以生成用于分类和检索的特征向量。


首先,我们创建了乳腺癌患者的整个幻灯片图像(WSI)的私有数据集。从WSI图像中提取由非癌和癌类别组成的图像块。值得注意的是,我们的主要目标是优先对癌症类别进行正确分类,微调的VGG16和VGG19方法的集合在非癌症和癌症组织病理学图像的分类中提供了卓越的性能。

相关工作

许多研究利用基于手工特征的方法对与乳腺癌相关的组织病理学图像进行分类。Kowal等人专注于细胞核分割,从500张乳腺癌细针活检图像的分割细胞核中提取了42个形态、拓扑和纹理特征。然后,利用这些特征来训练三个不同的分类器,以便将这些图像分类为良性和恶性类别。

Filipczuk 等人也对细胞核分割表现出兴趣,并从 737 个乳腺癌细胞学图像的分割细胞核中提取了 25 个基于形状和基于纹理的特征。基于这些特征,训练四种不同的机器学习分类器,即KNN(K近邻)、NB(朴素贝叶斯)、DT(决策树)和SVM(支持向量机)来对这些细胞学图像进行分类分为良性和恶性病例。

传统的机器学习方法在分析乳腺癌组织学图像方面取得了令人满意的性能,但其性能主要依赖于训练特征的选择

材料和方法

预处理

本文使用的数据集包含 H & E 染色的乳腺癌组织病理学图像,该图像广泛用于协助病理学家对组织切片进行显微评估。然而,很难在所有载玻片上保持相同的染色浓度,这导致所获取的图像之间存在颜色差异。这些对比度差异可能会对 CNN 模型的训练过程产生不利影响,因此通常应用颜色归一化。

  1. 颜色归一化是一种常见的图像预处理技术,其目的是将图像中的颜色值映射到统一的范围,以减少不同图像之间的颜色差异,从而提高计算机视觉算法的性能。
  2. 图像的直方图指的是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数

 原始和标准化癌症图像的示例:

训练标准

对于个体模型和整体模型,我们选择 80% 的图像进行训练,其余 20% 用于测试目的,其中癌症和非癌症图像的比例相同。675 张图像用于训练,其余 170 张图像保留用于测试模型。我们对训练图像使用了 5 倍交叉验证,这意味着使用 540 个图像用于训练,135 个图像用于验证目的。同样,我们在训练和验证中拥有相同比例的非癌症和癌症图像。

数据增强

图像数据增强是一种通过在训练过程中生成修改图像来扩展数据集的技术。通过使用 Keras 深度学习库提供的 ImageDataGenerator,生成具有实时数据增强的批量张量图像数据

首先,将一批输入图像提供给ImageDataGenerator,然后通过一系列随机平移、旋转等来转换该批次中的每个图像。

我们指定的“旋转范围 = 40”的旋转对应于之间的随机旋转角度[−40, 40] 度。我们还设置“宽度和高度移动范围 = 0.2”,它指定图像随机移动的总宽度分数的上限,宽度向左或向右移动,高度向上或向下移动。

值得注意的是,旋转操作可能会将某些像素旋转出图像帧,并在帧内留下必须填充的空白像素。我们使用“反射模式”来填充这些空像素。反射填充会从图像的边缘开始,按照边缘像素的模式,将像素复制到空白区域。例如,如果图像边缘是垂直的,那么反射填充将复制边缘像素的垂直模式来填充空白区域。这种填充方式可以在一定程度上保持图像的连续性和一致性,避免因为空像素的存在而影响图像的视觉效果。

VGG架构

当数据集与自然图像数据集相比相对较小时,预训练模型通常有助于更好的初始化和收敛。

VGG强化的观念:CNN必须具有深层网络才能使视觉数据的分层表示发挥作用。

VGG16模型的完整框架:五个卷积块组成,每个块都有多个卷积层(带有relu激活)以及一个最大池化层。使用的是步幅和填充都为1的3*3卷积核,以及步幅为2的2*2最大池化层。

VGG19模型的基本框架:基本架构与 VGG16 相同,除了三个额外的卷积层。

 VGG16和VGG19分别使用256个节点和128个节点的密集层(每个神经元都会接收来自上一层所有神经元的输入,并根据这些输入和自身的权重计算出输出。这些输出然后会被传递到下一层);最后一层则由二元交叉熵损失函数组成:

Binary cross entropy = -\frac{1}{m}\sum_{i}^{m}(y_i*log(p(y_i))+(1-y_i)*log(1-p(y_i)))

集成方法

由微调 VGG16 和微调 VGG19 模型的集成组成,训练图像占全部图像的80%,其中再进行5倍交叉验证,其中的四份用于训练,一份用于模型验证或评估。这些图像都是相互排斥的,而且非癌和癌症的图像百分比相同。

在每个数据子集中,根据损失函数的最小值保存最佳模型的权重。同时为两个模型保存5倍交叉验证的权重。最后,利用测试图像(20%)以概率的形式作出最终预测。两个类别的平均概率是通过取5倍交叉验证的VGG16模型和5倍交叉验证的VGG16模型获得的10个概率值的平均值得出的。考虑两个模型的平均概率,然后将图像分类为非癌或癌。

实验装置

超参数调优

神经网络具有自动学习输入和输出之间复杂连接的强大特性。然而,其中的一些连接可能是采样噪声的结果,它们可以是在训练过程中占主导地位,但不可能存在于真实的测试数据集中。这个问题会导致过拟合问题,从而降低深度学习模型的预测性能。

选择最佳超参数的方法:首先,我们选择二元交叉熵作为二元分类问题的损失函数。然后,在训练过程中使用Adam(自适应矩阵估计)算法,以执行200个epoch的优化。在模型训练期间,我们的主要目标是最小化训练损失和验证损失之间的泛化差距,并发现 32 的批量大小与 0.0001 的学习率配合良好。此外,我们使用 0.3 的 dropout 来防止模型在训练过程中过度拟合。通过使用 5 倍交叉验证方法,根据最小验证损失保存了五个最佳模型的权重。最后,我们使用这些权重对测试数据集进行类别预测。

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

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

相关文章

说说你对链表的理解?常见的操作有哪些?

一、是什么 链表(Linked List)是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,由一系列结点(链表中每一个元素称为结点)组成 每个结点包括两个部分&…

如何编写易于访问的技术文档 - 最佳实践与示例

当你为项目或工具编写技术文档时,你会希望它易于访问。这意味着它将为全球网络上的多样化受众提供服务并可用。 网络无障碍旨在使任何人都能访问网络内容。设计师、开发人员和撰写人员有共同的无障碍最佳实践。本文将涵盖一些创建技术内容的最佳实践。 &#xff0…

JS-30-async函数

上一节说,JavaScript异步操作需要通过Promise实现,一个Promise对象在操作网络时是异步的,等到返回后再调用回调函数,执行正确就调用then(),执行错误就调用catch()。 虽然异步实现了,不会让用户感觉到页面“…

07 SQL进阶 -- 集合运算 -- 表的加减法

1. 表的加减法 1.1 什么是集合运算 集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。 在标准 SQL 中, 分别对检索结果使用 UNION, INTERSECT, EXCEPT 来…

【企业场景】设计模式重点解析

设计模式 在平时的开发中,涉及到设计模式的有两块内容: 我们平时使用的框架(比如spring、mybatis等)我们自己开发业务使用的设计模式。 在平时的业务开发中,其实真正使用设计模式的场景并不多,虽然设计号…

OpenHarmony实战开发-MpChart图表实现案例。

介绍 MpChart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI。本示例主要介绍如何使用三方库MpChart实现柱状图UI效果。如堆叠数据类型显示&#xf…

C#基础|数据类型、变量

哈喽,你好啊,我是雷工! 01 数据类型 数据类型是为了方便存储数据的,为了将数据按照不同的分类存储,所以引入数据类型。这个在PLC中已经很熟悉了。 数据类型的作用:就是为了更好地管理内存,为…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析

原文链接:基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601336&idx4&sn143be5669da8ad336a455a4cca3d4b6a&chksmfa820d5fcdf584491…

【机器学习】机器学习创建算法第6篇:线性回归,学习目标【附代码文档】

机器学习(算法篇)完整教程(附代码资料)主要内容讲述:机器学习算法课程定位、目标,K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法,1.4 …

【七 (1)指标体系建设-构建高效的故障管理指标体系】

目录 文章导航一、故障概述1、故障:2、故障管理: 二、指标体系概述1、指标2、指标体系 三、指标体系构建难点1、管理视角2、业务视角3、技术视角 四、指标体系构建原则1、与战略目标对齐2、综合和平衡3、数据可获得性4、可操作性5、具体和可衡量6、参与和…

lua学习笔记20(lua中一些自带库的学习)

print("*****************************lua中一些自带库的学习*******************************") print("*************时间***************") --系统时间 print(os.time()) --自己传入参数得到时间 print(os.time({year2011,month4,day5})) --os.data(&qu…

00 【哈工大_操作系统】Bochs 汇编级调试方法及指令

本文将介绍一下哈工大李治军老师《操作系统》课程在完成Lab时所使用到的 Bochs 调试工具的使用方法。这是一款汇编级调试工具,打开调试模式非常简单,只需在终端下输入如下指令: 1、bochs 调试基本指令大全 功能指令举例在某物理地址设置断点…

Xxl-job执行器自动注册不上的问题

今天新建的项目要部署xxl-job,之前部署过好多次,最近没怎么部署,生疏了。部署完之后,服务一直没有注册到执行器管理里面,找了半天也没找到原因,看数据库里的xxl_job_registry表也是一直有数据进来。 后来看…

小白也能看懂的BEV感知(一)

1. 引言 随着人工智能技术的不断发展,自动驾驶越来越多地出现在我们的视野中,智能化和电动化已经成为汽车行业的主旋律。无论是从研究的角度还是从工程的角度来看,它都像是一个巨大的宝藏,等待着我们去探索。本文将介绍这一技术的…

从51到ARM裸机开发实验(009)LPC2138 中断实验

一、场景设计 中断的概念在《从51到ARM裸机开发实验(007) AT89C51 中断实验》中已经介绍过,LPC2138的Keil工程创建在《从51到ARM裸机开发实验(005)LPC2138 GPIO实验》中已经介绍过。本次使用LPC2138来实现一个这样的场景:四个LED依次亮灭,时间…

测试人必看,小程序常见问题

小程序是一种轻盈的存在,用户无需为了使用它而下载和安装。它依附于微信这个强大的平台,只需轻轻一扫或一搜,它便跃然屏上,随时服务。小程序为我们带来更多前所未有的惊喜和便利,以下分享关于小程序相关的热门问题。 …

链表基础3——单链表的逆置

链表的定义 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createNode(int data) { Node* newNode (Node*)malloc(sizeof(Node)); if (!newNode) { return NULL; } newNode->data …

逆向IDA中Dword,数据提取

我们可以看见数据是这样的&#xff0c;第一个是1cc 但是我们shifte就是 这个因为他的数据太大了&#xff0c;导致高位跑后面去了 这个时候&#xff0c;我们右键——convert——dword 这样就可以提取到争取的数据了 比如第一个数据 0x1cc a0xcc b0x1 print(hex((b<<8…

HarmonyOS开发实例:【事件的订阅和发布】

介绍 本示例主要展示了公共事件相关的功能&#xff0c;实现了一个检测用户部分行为的应用。具体而言实现了如下几点功能&#xff1a; 1.通过订阅系统公共事件&#xff0c;实现对用户操作行为&#xff08;亮灭屏、锁屏和解锁屏幕、断联网&#xff09;的监测&#xff1b; 2.通…