论文:Abnormality detection in mammography using deep convolutional Neural Networks

数据集:CBIS-DDSM (CC+MLO)*(right +left) one person ==》 (753钙化)+(891肿块)  数据增扩rotation

任务:二分类:calcification钙化+mass肿块

定位:CAM

网络结构:AlexNet / VGGNET/GOOGLENET/RESNET+two classification

训练流程:

中心思想:patch 训练分类器,再用whole image 去(训练+测试)

  • 1、用掩码获取patch,将两种patch送入网络训练(resize224*224) train ,input mammorgram full-size test
  • 2、经过CAM->heatmap

名词解释

1、CAM(Class Activation Mapping)

参考:CAM:https://blog.csdn.net/weixin_40955254/article/details/81191896

参考:凭什么相信你的模型CAM:https://www.jianshu.com/p/1d7b5c4ecb93

在Learning Deep Features for Discriminative Localization这篇文章中,作者提出了CNN网络除了具有很强的图片处理,分类能力;同时还能够针对图片中的关键部分进行定位,这个过程被称为Class Activation Mapping,简称CAM。

那么什么叫做CAM呢,如下图所示,第一组输入图片,训练的标签式刷牙,那么通过based model+CAM之后,我们可以得到如下图第二行所示的热度图,在对最后结果影响比较大的地方生成的热度就比较高,我们可以看到在这两张图片中对于嘴以及牙刷的热度都比较高,我们可以得出这两个部分对于最后刷牙的结果有着比较大的影响。对于第三列和第四列的结果,我就不多描述了,很好懂。

下面就来讲讲CAM的网络架构,如下图所示。输入一张图片,然后进过CNN网络提取出许多feature map,每个fearure map都能够表示出整个网络的部分特征。这里的CNN网络可以使用VGG啊,或者google net系列的例如inception等等,但是有这样一个问题,我们认为feature map还保留着图片的空间信息,这也是为什么最后通过ifeature map的叠加可以得到class activation map的原因。而通常的网络中会选择全连接层进行图片特征图向特征向量的转换在这个转换过程中就会丢失空间信息

所以文中采用global average pooling(GAP)(可以把GAP视为一个特殊的average pool层,只不过其pool size和整个特征图一样大,其实说白了就是求每张特征图所有像素的均值。)来代替fully connected。然后将生成的这个值,最后通过一个全连接层实现相应的分类结果,相应的全连接层的权重称为相应的权重w1,w2.。。。。。

我们这样想最后生成的结果分类结果,其实就是pool之后的值与相应权重的乘积,相应的这个pool值是由GAP生成的,所以最后分类的结果可以看为是特征图与权重的乘积,这时候权重就代表了每个特征图对于最后结果的贡献程度,那么假如我们将特征图乘以权重直接相加,那么对于最后结果影响大的地方因该有相对较大的值,小的地方有相对较小的值,这个过程也就是CAM的原理讲解。具体的过程可以看图二的下面部分,了解具体操作。

在卷积层之后,使用了一个叫GAP的池,全称是global average pooling。全局平均池的优点就是大量减少参数量,以及保持图像的空间结构。尾端使用全连接层full connected layer进行分类输出。该层能够针对每一个分类有一套权重。

当然这里有几个地方需要说明,首先就是应用之前需要对模型进行预训练,才能够进行CAM接下来的操作。其次过于最后生成特征图的大小对于不同的基模型有不同的方案,比如Alexnet的13*13,vgg的14*14,Googlenet的14*14.所以对于我们所希望获得的原图,最后是需要进行resize的。

PS也许有同学要问,全局池化为什么要使用average这种方法呢,max不行嘛?

答案是有一种CAM就是基于max pooling(GMP)的,但是他存在一些问题,就是基于average的CAM可以标出重要影响的所有区域,而基于max的CAM却只能标注出ROI区域的右下方的一个关键点。这个使得基于GMP的CAM在分类效果上与基于GAM的差不多,但是在定位问题上就要显得逊色一点。

使用 Inception V3 举例:
该网络经过卷积层后,大小为(8x8x2048),经过GAP层后(1x1x2048),全连接层权重为(2048x10)。10个类别分别对应着10个全连接层权重,每个类别对应2048个权重。
生成热力图时,将图片卷积后的(8x8x2048)和某一类别全连接层权重(1x2048)的乘积后得到热力图(8x8)。将该热力图暴力展开成所需要的大小即可。

代码:github中,可自行下载查看,欢迎交流,欢迎star。(https://github.com/wpydcr/tf-slim-Class-Activation-Map)

我们重点看下经过GAP之后与输出层的连接关系(暂不考虑softmax层),实质上也是就是个全连接层,只不过没有了偏置项,如图所示:

从图中可以看到,经过GAP之后,我们得到了最后一个卷积层每个特征图的均值,通过加权和得到输出(实际中是softmax层的输入)。需要注意的是,对每一个类别C,每个特征图k的均值都有一个对应的w,记为w_k^c。CAM的基本结构就是这样了,下面就是和普通的CNN模型一样训练就可以了。训练完成后才是重头戏:我们如何得到一个用于解释分类结果的热力图呢?其实非常简单,比如说我们要解释为什么分类的结果是羊驼,我们把羊驼这个类别对应的所有w_k^c取出来,求出它们与自己对应的特征图的加权和即可。由于这个结果的大小和特征图是一致的,我们需要对它进行上采样,叠加到原图上去,如下所示。

这样,CAM以热力图的形式告诉了我们,模型是重点通过哪些像素确定这个图片是羊驼了。

深度学习:乳腺检测abnormality detection in mammography +CAM相关推荐

  1. 深度学习目标检测(object detection)系列(一) R-CNN

    原文链接 R-CNN简介 R-CNN提出于2014年,应当算是卷积神经网络在目标检测任务中的开山之作了,当然同年间还有一个overfeat算法,在这里暂不讨论. 在之后的几年中,目标检测任务的CNN模 ...

  2. 深度学习射频干扰检测网络:Deep residual detection of Radio Frequency Interferencefor FAST

    Deep residual detection of Radio Frequency Interference for FAST [MNRAS 2020] [PDF] MNRAS: Monthly N ...

  3. 深度学习目标检测详细解析以及Mask R-CNN示例

    深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...

  4. 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

    作者 | 黄浴 来源 | 转载自知乎专栏自动驾驶的挑战和发展 [导读]在近日发布的<值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)>一文中,作者介绍了一部分各大公司和机构基于 ...

  5. 【每周CV论文】深度学习文本检测与识别入门必读文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 文本检测和识别是计算机视觉的一个非常重要的应 ...

  6. 【每周CV论文推荐】 深度学习人脸检测入门必读文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 人脸图像是整个图像处理领域里面研究时间最长, ...

  7. fasterrcnn论文_【每周CV论文推荐】 深度学习人脸检测入门必读文章

    我的新书<深度学习之人脸图像算法>市了,欢迎大家关注! 言有三新书来袭,业界首次深入全面讲解深度学习人脸图像算法​mp.weixin.qq.com 欢迎来到<每周CV论文推荐> ...

  8. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)

    太多的公众号每天的文章是否让你眼花缭乱?刷了好多文章,发现大都是转来转去?今天我在全网公众号里为大家精选主题为深度学习目标检测算法的文章12篇,其中包括综述,R-CNN,SPP-Net,Fast R- ...

  9. 动手学深度学习——目标检测 SSD R-CNN Fast R-CNN Faster R-CNN Mask R-CNN

    来源:13.4. 锚框 - 动手学深度学习 2.0.0-beta1 documentation 目标检测:锚框算法原理与实现.SSD.R-CNN_神洛华的博客 目录 目标检测简介 目标检测模型 ​编辑 ...

最新文章

  1. c++引用的自我见解
  2. CVPR2020 Oral | 华为开源只有加法的神经网络,实习生领衔,效果不输传统CNN
  3. 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
  4. IO流文件的相对路径及获取系统路径方法
  5. Qt 编码问题QTextCodec
  6. android 高度百分比,如何在Android中进行百分比高度和宽度?
  7. C++设计模式-继承与多态影响耦合性(最基础的简单工厂模式小实例)
  8. java 课后习题 判断两个圆是否相交 圆和直线的位置关系
  9. python运维处理序列_Python运维开发:02 序列
  10. matlab神经网络(二)-bp神经网络,MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合...
  11. 解决matplotlib中文显示问题
  12. 抖音数据统计_抖音大数据,抖音最全数据分析工具,全知道算你厉害!
  13. Django搭建后台管理系统
  14. excel建立层级_Power Pivot财务科目(层级深度amp;筛选深度)
  15. android自定义加载旋转框
  16. QuickTime Component实例
  17. [NLP]OpenNLP介绍
  18. 360抢票 网站维护中 你的登录被踢了!
  19. 在word中在方框里打钩
  20. 统信uos 没有通过系统安全验证,无法运行

热门文章

  1. Windows 11 首次开机OOBE阶段跳过连接网络及登录微软账户,使用本地账号登录的方法
  2. 血与泪的教训: JavaWeb中文乱码问题整合
  3. 在office2010的ppt中加入音乐
  4. 联想小新V1000外接R9-380显卡
  5. Android-事件分发机制(源码层面)
  6. linux下安装nvm
  7. 基于android的教育机构家校通系统app
  8. javaFX实现登录界面并跳转
  9. 医学院交换去计算机学院,2017年北京协和医学院阜外心血管病医院823计算机原理考研强化模拟题...
  10. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿