tensorflow 实现 Class Activation Map 用于 分类目标定位


对《Learning Deep Features for Discriminative Localization》的剖析

一个最近的使用例子是吴恩达公司做的肺炎诊断准确率超过人类医生

在这篇论文中,认为图片在经过卷积层的特征提取后,通过CAM,除了不弱的分类精度外,还能对分类的依据进行定位,相当于诠释网络是如何做出分类判断的。
CAM的核心部分如下图:
tensorflow 实现 Class Activation Map 用于 分类目标定位_第1张图片

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

使用 Inception V3 举例:

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


该例所使用的代码已全部上传至我的github中,可自行下载查看,欢迎交流,欢迎star。
(https://github.com/wpydcr/tf-slim-Class-Activation-Map)

你可能感兴趣的:(机器学习)