首页 > 其他分享 >注意力机制打印cam

注意力机制打印cam

时间:2023-12-21 22:36:44浏览次数:43  
标签:cam image 打印 feature transforms CAM numpy 注意力

import cv2
import numpy as np
from PIL import Image

# 加载示例图像
image_path = 'path/to/your/image.jpg'
image = Image.open(image_path).convert('RGB')

# 预处理图像,以符合模型的输入要求
preprocess = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

input_data = preprocess(image).unsqueeze(0)  # 添加 batch 维度
def get_cam(feature_map, spatial_att):
    # 获取权重
    weights = spatial_att.view(spatial_att.size(0), -1).unsqueeze(-1).unsqueeze(-1)
    
    # 将权重乘以特征图
    cam = (weights * feature_map).sum(dim=1, keepdim=True)
    
    # 使用ReLU函数保留正值部分
    cam = F.relu(cam)
    
    # 将CAM调整到0到1之间
    cam = cam - cam.min()
    cam = cam / cam.max()
    
    # 将CAM调整到图像原始尺寸
    cam = F.interpolate(cam, (224, 224), mode='bilinear', align_corners=False)
    
    # 转换为numpy数组
    cam = cam.detach().cpu().numpy()[0, 0]
    
    return cam

# 获取模型输出和对应的中间特征图
output, feature_maps = model(input_data)

# 获取CAM
cam = get_cam(feature_maps[0], feature_maps[1])

# 将CAM叠加在原始图像上
original_image = input_data.detach().cpu().numpy()[0].transpose((1, 2, 0))
cam_heatmap = cv2.applyColorMap(np.uint8(255 * cam), cv2.COLORMAP_JET)
cam_on_image = np.float32(cam_heatmap) / 255 + original_image
cam_on_image = cam_on_image / np.max(cam_on_image)

# 显示CAM叠加的图像
plt.imshow(cam_on_image)
plt.axis('off')
plt.show()

标签:cam,image,打印,feature,transforms,CAM,numpy,注意力
From: https://www.cnblogs.com/ZarkY/p/17920265.html

相关文章

  • C# fastreport 实现各个报表指定各自的默认打印机
    1、业务需求工作室有多个报表需要打印,如果在报表模板里设置默认打印机的话,每个人电脑上安装的打印机是不相同的,所以就需要设定各自的默认打印机实现打印功能。2、xml模板设计(PrinterSetting.xml)1<?xmlversion="1.0"encoding="utf-8"?>2<root>3<!--打印设置-->......
  • Camstar表格的列和列的联动-----一个列填完后,加载另一个列的值或者下拉选
    列子(我是建模加的表格): mdb部分修改: VP部分修改:     其他:我看到mdb有个方法,List的Field,转成下拉的格式Resultset。按需求使用。 ......
  • 易绘创云打印和网络打印有什么区别?
    很多小伙伴对云打印和网络打印的概念不太了解,不知道这两者有何区别,那么今天小易就带大家来了解一下,易绘创云打印和网络打印有什么区别。 易绘创云打印和网络打印有什么区别?作为打印行业比较火的两个概念,很多不了解的朋友初看之下可能会觉得易绘创云打印和网络打印没什么区别......
  • OpenHarmony南向之Camera简述
    OpenHarmony南向之Camera简述Camera驱动框架该驱动框架模型内部分为三层,依次为HDI实现层、框架层和设备适配层:HDI实现层:实现OHOS(OpenHarmonyOperationSystem)相机标准南向接口。框架层:对接HDI实现层的控制、流的转发,实现数据通路的搭建,管理相机各个硬件设备等功能。设备适配层......
  • 面试常考:C#用两个线程交替打印1-100的五种方法
    面试常考:C#用两个线程交替打印1-100的五种方法翔星有10年+工作经验,高级软件工程师,可以解决各种问题​关注 你经常看TA的内容"C#用两个线程交替打印1-100的五种方法"是.NET工程师面试多线程常考的试题之一,主要考察对C#语法和对多线程的熟悉程......
  • Squeeze-and-Excitation Networks:SENet,早期cv中粗糙的注意力
    Squeeze-and-ExcitationNetworks*Authors:[[JieHu]],[[LiShen]],[[SamuelAlbanie]],[[GangSun]],[[EnhuaWu]]Locallibrary初读印象comment::(SENet)以前的工作都是在提高CNN的空间编码能力。这篇论文提出了“Squeeze-and-Excitation”块,研究通道之间的关系。......
  • Dual Attention Network for Scene Segmentation:双线并行的注意力
    DualAttentionNetworkforSceneSegmentation*Authors:[[JunFu]],[[JingLiu]],[[HaijieTian]],[[YongLi]],[[YongjunBao]],[[ZhiweiFang]],[[HanqingLu]]DOI:10.1109/CVPR.2019.00326初读印象comment::(DANet)提出了一个双注意力网络(空间+通道)来自适应......
  • Non-local Neural Networks 第一次将自注意力用于cv
    Non-localNeuralNetworks*Authors:[[XiaolongWang]],[[RossGirshick]],[[AbhinavGupta]],[[KaimingHe]]Locallibrary初读印象comment::(NonLocal)过去的网络注重处理局部关系,本篇网络研究了长程依赖。Why过去的网络,长程依赖都是依靠大量堆叠卷积得到的大感......
  • Expectation-Maximization Attention Networks for Semantic Segmentation 使用了EM算
    Expectation-MaximizationAttentionNetworksforSemanticSegmentation*Authors:[[XiaLi]],[[ZhishengZhong]],[[JianlongWu]],[[YiboYang]],[[ZhouchenLin]],[[HongLiu]]DOI:10.1109/ICCV.2019.00926Locallibrary初读印象comment::(EMANet)用期望......
  • A Deformable Attention Network for High-Resolution Remote Sensing Images Semanti
    ADeformableAttentionNetworkforHigh-ResolutionRemoteSensingImagesSemanticSegmentation*Authors:[[RenxiangZuo]],[[GuangyunZhang]],[[RongtingZhang]],[[XiupingJia]]DOI:10.1109/TGRS.2021.3119537初读印象comment::(MDANet)提出了可变形注意力,结......