本篇主要介绍基于类激活映射(Class Activation Mapping, CAM)的热度图绘制
算法原理出自论文: Learning Deep Features for Discriminative Localization
框架结构如下图所示:
作者在文中指出当前网络中普遍使用的GAP层,能够有效的反映目标物体周围的
特征;故作者采用了全连接层的特征来与CNN 网络的最后一个卷积层进行点乘运
算,用以增加feature map中目标物体的权重。
具体代码如下:
# simple implementation of CAM in PyTorch for the networks such as ResNet, DenseNet, SqueezeNet, Inception
import io
import requests
from PIL import Image
from torchvision import models, transforms
from torch.autograd import Variable
from torch.nn import functional as F
import numpy as np
import cv2
import pdb
# input image
LABELS_URL = 'https://s3.amazonaws.com/outcome-blog/imagenet/labels.json'
IMG_URL = 'http://media.mlive.com/news_impact/photo/9933031-l