6.7.29 基于卷积神经网络的乳腺良恶性图像分类

news2024/10/5 22:23:58

计算机化乳腺癌诊断系统在早期癌症诊断中发挥着重要作用。为此,应用深度学习,利用卷积神经网络 (CNN) 对基于小型乳房 X 线图像分析协会 (mini-MIAS) 数据库的乳房 X 线图像中的异常(良性或恶性)进行分类。观察准确度、灵敏度和特定值以评估 CNN 的性能。

为了提高性能,我们利用包含裁剪、全局对比度归一化、增强、局部直方图均衡化和平衡预处理的图像预处理方法。建立了四个 CNN 模型来研究深度和隐藏层结构对模型性能的影响。在由四个卷积层组成的四个 CNN 模型中,CNN-4d 模型表现最佳,dropout 为 0.7。CNN-4d 模型实现了高灵敏度(90.63%)和高特异性(87.67%)的平衡,准确率为 89.05%。研究的结果表明,CNN 在智能医学图像诊断领域具有广阔的潜力.

1. 引言

乳腺癌是女性死亡的第二大原因。 根据世界卫生组织 (WHO) 的报告,乳腺癌占全球确诊癌症的 22.9%,占癌症相关死亡的 13.7% [1]。在早期阶段发现乳腺癌可大大增加治疗计划成功的机会 。开发能够帮助医务人员早期发现肿瘤的计算机辅助诊断系统 (CAD) 是一种重要的替代方案。在这样的系统中,分类器准确性的高可靠性是重中之重。

卷积神经网络 (CNN) 已成为最流行的图像分类方法之一,也是深度学习背后的驱动力。许多研究人员已经研究了使用 CNN 模型进行乳房 X 光检查分类,并取得了显著的成果。Gallego-Posada 等人 [4] 展示了 CNN 在乳腺肿瘤检测和诊断中的应用。使用乳房 X 光检查图像分析协会 (MIAS) 数据库,测试准确率为 64.52%。Jadoon 等人 [5] 提出了一个模型,该模型使用 CNN-DW 和 CNN-CT 两种方法将结果分类为正常、恶性和良性。使用 IRMA 数据集,该模型的准确率为 81.83%-83.74%。

在本研究中,提出了一种乳房X光检查CAD,包括预处理方法和监督分类方法。在分类方法中,提出了一种新颖的CNN模型来对异常和良性或恶性肿瘤进行分类。高准确率和其他出色的评估指标表明,CNN作为我们乳房X光检查CAD的关键步骤表现出色。

为了提高分类器的性能,专注于图像预处理,特别适合乳房X光检查图像和CNN模型的结构。数据来源是微型乳房X光检查图像分析协会(miniMIAS)数据库[​​6]。mini-MIAS数据库包含有价值的信息,例如异常中心的位置和围绕异常的圆的半径。此信息用于裁剪原始图像并通过裁剪感兴趣区域(ROI)来准备数据。此外,我们建立了四个CNN模型来研究CNN结构对模型性能的影响。

2. 材料和方法

2.1 数据集

在本研究中,测试了 CNN 对从乳房 X 光检查中获得的确切乳房异常进行分类的性能。数据来源是 mini-MIAS 数据库,该数据库包含 323 张乳房 X 光检查图像,每张图像的大小为 1024x1024 像素。在 MIAS 数据库中,乳房 X 光检查图像分为三类:腺状致密、脂肪和脂肪腺状。每个类别又细分为正常、良性和恶性组织图像。每张异常图像(无论是良性还是恶性)都有钙化、肿块和不对称等类型。共获得 207 张正常图像和 116 张异常图像(64 张良性和 52 张恶性)。在本研究中,我们仅使用数据集中的异常图像来对良性和恶性类别进行分类。

2.2 提出的方法

下图 展示了所提方法的总体视图,包括两个主要阶段:预处理和监督训练。预处理阶段通过一组转换准备 ROI 中的数据,以便下一阶段利用 ROI 中的相关特征。第二阶段的监督学习涉及两个过程:特征学习和分类训练。两者都是通过训练 CNN 来完成的。卷积层和池化层提取特征,而反向传播 (BP) 算法更新隐藏层中的参数以实现特征学习。此外,完全连接层和最后的 softmax 层根据上面提到的提取的特征创建最终分类。这两个过程处于监督阶段, CNN 训练由标记样本引导。

2.2.1 预处理

预处理是 CAD 中的一个常见阶段,通过应用一组变换来增强图像的特征以提高性能。对数据集应用裁剪、全局对比度归一化、增强、局部直方图均衡化和平衡预处理,并展示它们对最终分类准确性的影响。

2.2.1.1 双重裁剪和全局对比度标准化

每张图像的第一次裁剪会消除乳房 X 光检查图像中的黑色空间和无用噪声,例如患者信息和图标。第一次裁剪后,进行全局对比度归一化 (GCN)。

由于数字化过程,不同胶片图像之间的光照条件会有所不同,这会影响图像的所有像素值。GCN 通过从每个像素中减去图像中强度的平均值来消除这种影响。由于平均值是图像的平均值而不是每个像素的平均值,因此可以将其减去,而无需确定当前图像是属于训练集、验证集还是测试集。

 X\in\mathbb{R}^{r^*r} 是这张图片,而其中的元素变换则为:X_{i,j}^{'}=X_{i,j}-x

 其中x\in Rx=\frac{1}{r^{2}}\sum_{i,j}X_{i,j} 是 X 图像强度的平均值,X_{i,j}\in R 是像素i,j 处的强度值。


第二次裁剪图在 GCN 之后对整个胶片图像中先前识别的 ROI 进行分类。使用较小尺寸的图像,ROI 可以减少训练时间。在 mini-MIAS 数据集中,每张图像都提供了有关异常类型、异常坐标以及异常周围圆的近似半径的宝贵信息。使用异常图像中心的 x 和 y 坐标以及半径 r 提取每个异常图像的异常 ROI

将输入大小固定为 (2r, 2r) 像素的 ROI。这样,可以使用分割区域的边界框轻松提取 ROI。具体而言,ROI 被裁剪为病变的方形边界框并重新整形为 (2r, 2r) 像素。ROI 面积大于半径为 r 的圆的面积,病变以缩放为中心,周围区域得以保留。预处理示意图如图 2 所示。

2.2.1.2 数据增强

数据增强通常用于深度学习,指的是从现有数据生成新样本的过程,用于改善数据稀缺性并防止过度拟合。变换包括旋转、平移、水平和垂直反射、裁剪、缩放和抖动。对于光学字符识别等任务,Simard 等人表明弹性变形可以大大提高性能。乳房 X 线摄影在病变层面上的主要变化来源是旋转、缩放、平移和遮挡组织的数量。

提出了一种适合每个结果乳房X光片的论证算法,具有以下特点:单通道、低对比度、小感兴趣区域和纹理梯度变化缓慢。用尺度和平移变换增强了所有正例。全尺度或平移不变性既不是期望也不是必需的,因为候选检测器应该找到一个以病变实际焦点为中心的斑块。关键是要进行适当量的平移和缩放,以生成真实的病变候选。

该算法为数据论证提供了三种选择。首先,翻转和旋转角度(包括水平和垂直翻转)被广泛使用。可以使用0、90、180、270的旋转变换,避免边界外的点的存在。 其次,通过以ROI范围为中心,Δx和Δy是MIAS标签中提供的ROI中心和病变中心之间的差异 变化Δx和Δy识别ROI中病变的平移。 最后,通过对ROI内病变区域的缩放比例、放大和缩小来调整周围区域的面积,从而保留更多的纹理和对比度信息。通过结合不同的论证方法,每个病变都可以以任意特定的方向显示,最多可显示32次,并可以获得论证逼真的病变候选,以消除过度拟合问题。图3给出了平移增强后的图像示例。

2.2.1.3 局部直方图均衡化

直方图均衡化过程用于为学习算法准备数据。众所周知,当输入数据具有去相关和归一化等属性时,特征学习和深度学习方法通​​常会表现得更好,主要是因为这些属性有助于基于梯度的优化技术收敛 [10]。直方图均衡化前后的概率密度函数 (PDF) 分别为 p_r(r)p_s(s),其中 s 是变换函数。

p_s(s)=p_r(r)\biggl|\frac{dr}{ds}\biggr| 

s=T(r)=(L-1)\int\limits_{0}^{r}p_{r}(w)dw 

2.2.1.4 平衡数据

在 mini-MIAS 中的 116 张异常乳房 X 光片中,只有 51 张是恶性的。因此,数据集中良性图像的数量大于恶性图像的数量。这些数据集被称为不平衡数据集,这可能会对少数类(即异常图像)的分类产生负面影响。为了解决这个问题,对良性和恶性乳房 X 光片使用了不同的时间论证。保证恶性乳房 X 光片的数量与良性乳房 X 光片的数量相同。

2.2.2 基于 CNN 的训练和分类细节

CNN 模型包含三个主要组件:卷积层、池化层和全连接层。每层都有不同的任务。卷积层由几个小矩阵或“核”组成,它们作为过滤器在整个输入图像中进行卷积,实现特征提取。 池化层最小化卷积层生成的特征图的尺寸,全连接层使用特征图对输入图像所属的类别进行分类。

由于 mini-MIAS 不是一个很大的数据集,因此没有构建非常新的深度 CNN 模型以避免过度拟合。创建的模型最多有 10 层。相比之下,一些在许多分类领域达到最佳水平的非常深的 CNN 模型(如 ALEXNET 和 VGG16)也经过了训练。

为了衡量网络结构(如深度和 dropout 方法)如何影响模型的性能,首先评估具有两个卷积层和两个最大池化层以及一个全连接层的架构。在实验中,这种架构被称为 CNN-2。同时,我们在 CNN-2 中 的全连接层中添加了p = 0.7 的dropout 策略[12],称为 CNN-2d。利用 Ciresan 等人的工作 [13],采用更小的卷积尺寸和更深的网络策略,在 CNN-2 中增加了两个额外的卷积层,并将卷积核尺寸从 25x25 减小到 3x3。这被称为CNN-4。同时,我们在全连接层中采用了p = 0.7的dropout策略,称为CNN-4d,结构如图4所示。

图4: CNN-4d 网络在第一和第二个卷积层中具有 3x3 局部核和 RELU 作为激活函数,然后是 2x2 池化层(无重叠)。然后堆叠一个具有 RELU 激活的 1024 个单元的全连接层和一个具有 64 个单元的全连接层,最后添加一个 softmax 分类器。

这四个CNN模型参数在表1中描述。在表2中报告了每种配置的参数数量。尽管深度很大,但网络中权重的数量并不比卷积层宽度较大的浅网络中权重的数量多。 

使用 Tensorflow 框架实现了网络,该框架利用 GPU 技术获得了比 GPU 实现高达 140 倍的加速。此属性使其可用于训练具有数百万个参数的架构。所有实验均在配备两个 NVIDIA Titan X GPU 的工作站上实现,每个 GPU 具有 24 GB 内存。基于我们的实现和配置,CNN-4d 模型在测试期间需要 0.4 毫秒来处理每张图像。采用了随机梯度下降 (SGD) 和 RMSProp [14],这是 R-Prop 的改编版,适用于具有 Nesterov 动量的 SGD。使用了均匀权重填充器,学习率为 0.001。为了解决严重的类别不平衡问题,在增强数据集中随机选择样本,其中每个小批量中的良性实例与恶性实例的大小相同。


为了评估 CNN 模型的性能和判别能力,总体分类准确度、灵敏度和特异性的测量值计算如下:

 Accuracy=\frac{TP+TN}{TP+TN+FP+FN}\\\\ Sensitivity=\frac{TP}{TP+FN}\\\\ Specificity=\frac{TN}{TN+FP}

3. 结果和讨论

3.1 学习到的特征

卷积层和最大池化层中的 CNN 权重充当了图像上的过滤器。因此,精确输出特征图并对其进行可视化。图 5 显示了 CNN-4d 中卷积层的输出。该图像显示了一组不同方向的边缘以及一些纹理图案。 发现显著区域与医生评估以做出诊断决策的关节炎病变相匹配,因此从视觉上证明了 CNN-4d 模型的诊断有效性。它还反映了 CNN-4d 从图像中提取与我们的问题相关的信息,使用医生用来做出诊断决策的相同信息。

3.2 分类结果

训练组包括547幅图像,包括275幅良性乳腺钼靶X线图像和272幅恶性乳腺钼靶X线图像。测试组包括137幅图像,包括73幅良性乳腺钼靶X线图像和64幅恶性乳腺钼靶X线图像。表3显示了使用CNN-4d作为特征提取器得到的混淆矩阵。接下来,可以按如下方式计算病例的灵敏度和特异性。

CNN-4d 的灵敏度为 90.63%,特异性为 87.67%。为了研究 d​​ropout 策略的效果,我们将 CNN-4 和 CNN-4d 的结果进行了比较,发现 CNN-4 的训练准确率为 98.90%,但其测试准确率仅为 86.13%。而 CNN-4d 的训练准确率为 93.43%,测试准确率为 89.05%。这分别对应于 128 和 122 个分类良好的示例,总数为 137 个。因此,如果不使用 dropout,训练准确率远高于测试准确率,表明分类器可能对训练数据进行了过度拟合。CNN-4d 比 CNN-4 具有更强的泛化能力。结果表明,这种在全连接层中使用 dropout 策略的方法降低了过度拟合的程度,并在对乳房 X 光照片进行分类时获得了更好的性能。


卷积核尺寸越小,但CNN越深,对乳腺钼靶X线照片的分类性能越好,这是因为,在参数大小相同的情况下,与具有较大卷积核但网络结构较浅的CNN相比,具有较小卷积核的深层CNN可以在参数规模相同的情况下表达更复杂的非线性关系。


测试了经典的非常深的 CNN 模型,这些模型在图像分类和目标检测方面取得了最先进的成就,例如 ALEXNET、VGG16。这两个模型的结果如表 4 所示。结果表明,非常深的 CNN 模型获得了较差的性能,例如,VGG16 仅获得了 0.6977 的准确率,0.7437 的灵敏度。 MIAS 数据集太小,无法训练非常深的 CNN 模型,例如 VGG16 和 ALEXNET,因此在非常深的模型中无法完全训练参数。还进行了一系列实验来验证 CNN-4d 模型是最好的模型,因为比 CNN4d 更深的模型具有比 CNN4-d 更差的性能,这是因为 MIAS 数据集不够大,不适合训练深度高于 4 的 CNN 模型。

4. 总结

本研究提出了一种基于 mini-MIAS 训练的 CNN 形式的新型深度学习模型,用于对良性和恶性异常进行分类。为了增强图像特征并提高分类性能,提出了一种预处理算法,该算法使用一系列预处理方法,例如裁剪、GCN、局部直方图均衡化和平衡预处理。

CNN 模型以原始图像的 ROI 作为输入,实现异常的特征学习和分类。为了满足乳腺图像的要求,提出了一种数据增强方法来改善数据稀缺性并防止过度拟合。进行了特定的实验以探索 CNN 层结构和内核或激活函数对分类性能的影响。CNN-4d 的性能最好,训练准确率为 93.43%,测试准确率为 89.05%。

实验还表明,全连接层中的 dropout 策略降低了过度拟合的程度并在分类时获得更好的性能。相同的模型复杂度,卷积核尺寸较小但更深的 CNN 具有更好的性能。

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

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

相关文章

java之基础2笔记

1 类型转换 1.1 自动类型转换(隐式类型转换) 从小的数据类型到大的数据类型的转换(如 int 到 long)。 从低精度的数据类型到高精度的数据类型的转换(如 float 到 double)。 1.2 强制类型转换&#xff0…

逆序队专题

逆序对的定义是&#xff0c;在一个数组中&#xff0c;对于下标 ( i ) 和 ( j )&#xff08;其中 ( i < j )&#xff09;&#xff0c;如果 ( a[i] > a[j] )&#xff0c;则称 ((a[i], a[j])) 为数组的一个逆序对。 换句话说&#xff0c;逆序对就是在数组中前面的元素大于后…

每日十题---三

1. Vue中$nextTick原理 1. 简单的理解就是它就是一个setTimeout函数&#xff0c;将函数放到异步后去处理。 2. Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化&#xff0c;Vue 将开启一个队列&#xff0c;并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被…

【计算机毕业设计】273基于微信小程序的刷题系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

AI日报0610 -- Prompt这样改,AI成本瞬降20%!

全球首届人工智能选美大赛 世界 AI 创作者大赛和创作者平台 FanVue 正在举办首届“Miss AI”大赛 超过 1,500 名 AI 生成的模特竞逐。这些模型不仅形象逼真 还展示了不同的个性和原因。 评委将评估技术和吸引观众的能力。 奖金池高达 20,000 美元&#xff0c;并有机会参加公关…

讨论C++类与对象

讨论C类与对象 C语言结构体和C类的对比类的实例化类对象的大小猜想一猜想二针对上述猜想的实践 this指针不同对象调用成员函数 类的6个默认成员函数构造函数析构函数拷贝构造函数浅拷贝和深拷贝 赋值运算符重载 初始化列表初始化顺序 C语言结构体和C类的对比 在C语言中&#x…

require.context()函数介绍

业务需求&#xff1a; 前端Vue项目怎样读取src/assets目录下所有jpg文件 require.context()方法来读取src/assets目录下的所有.jpg文件 <template><div><img v-for"image in images" :src"image" :key"image" /></div> …

Vision-LSTM: xLSTM 作为通用视觉主干

摘要 尽管Transformer最初是为自然语言处理引入的&#xff0c;但它现在已经被广泛用作计算机视觉中的通用主干结构。最近&#xff0c;长短期记忆&#xff08;LSTM&#xff09;已被扩展为一种可扩展且性能优越的架构——xLSTM&#xff0c;它通过指数门控和可并行化的矩阵内存结…

用函数指针求a和b中的大者

指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数&#xff0c;然后通过该指针变量调用此函数。 先按一般方法编写程序&#xff1a; 可以用一个指针变量指向max函数&#xff0c;然后通过该指…

不能访问huggingface、与GPU配置

不能访问huggingface解决方法 如果是从 huggingface.co 下载模型&#xff0c;由于国内不能访问&#xff0c;所以建议先配置一下环境变量&#xff0c; 通过访问国内镜像站点 https://hf-mirror.com来下载模型。 &#xff08;1&#xff09;Linux系统设置环境变量&#xff1a; e…

STM32引脚外部中断和外部事件模式的区别

STM32引脚外部中断和外部事件模式的区别 STM32引脚模式外部中断和外部事件模式的区别&#xff1a; (以 GPIO_MODE_IT_FALLING 和 GPIO_MODE_EVT_FALLING 为例) GPIO_MODE_IT_FALLING 能够触发中断&#xff0c;用在中断方式编程。GPIO_MODE_EVT_FALLING 只设置中断标志位&…

vue3 基于el-tree增加、删除节点(非TypeScript 写法)

话不多说&#xff0c;直接贴代码 <template><div class"custom-tree-container"><!-- <p>Using render-content</p><el-tree style"max-width: 600px" :data"dataSource" show-checkbox node-key"id" …

【C语言初阶】分支语句

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;C语言 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、什么是语句 二、if语句 悬空else 三、switch语句 default 四、switch语句与if-else语句性能对比如何&#xff1f…

boot整合solr

换了新项目组&#xff0c;技术相对老些&#xff0c;于是用boot框架简单记录下&#xff01; 安装 下载路径&#xff1a;https://solr.apache.org/downloads.html Windows环境 下载solr-8.2.0.zip包并解压缩&#xff0c;以管理员身份打开cmd&#xff0c;执行 solr cmd 命令启…

WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程

说起来有关 WordPress 缓存插件明月已经发表过不少文章了,但有关 W3 Total Cache Pro 这个 WordPress 高级缓存插件除了早期【网站缓存插件 W3 Total Cache,适合自己的才是最好的!】一文后就很少再提及了,最近因为明月另一个网站【玉满斋】因为某些性能上的需要准备更换缓存…

微服务中调用common模块中的工具类

首先查看common类中的pom文件中的信息 然后再在所需要使用的微服务模块中进行注入 就可以使用其中的工具类了

pyqt opengl 小黑块

目录 OpenGLWidget_g初始化函数&#xff1a; 解决方法&#xff1a;把初始化函数的parent去掉 pyqt opengl 小黑块 原因&#xff1a; 创建OpenGLWidget_g的时候把main_window作为父类&#xff08;self&#xff09;传进去了&#xff0c; self.opengl_widget OpenGLWidget_g(…

前端nvm的安装和使用nodejs多版本管理2024

nvm的安装和使用 1、简介 nvm是一个管理nodejs版本的工具。在实际的开发中&#xff0c;项目的开发依赖需要的nodejs版本运行环境不同&#xff0c;此时我们就需要使用nvm来进行不同nodejs版本的切换。其实就是一个方便的node版本管理工具。 注意&#xff1a;如果有安装过node&a…

PySpark教程(001):基础准备与数据输入

PySpark 学习目标 了解什么是Spark、PySpark了解为什么学习PySpark了解如何和大数据开发方向进行衔接 Spark是什么&#xff1f; Apache Spark是用于大规模数据处理的统一分析引擎。 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器…

算法设计与分析(5题Python版)

1、阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有N堆金币&#xff0c;第i堆金币的总重量和总价值分别是m,v。阿里巴巴有一个承重量为T的背包&#xff0c;但并不一定有办法将全部的金币都装进去。 他想装走尽可能多价值的金币&#xff0c;所有金币都可以随意分割&#xff0c;分…