为了关注得到的feature map中是否在ROI有比较大的值,常需要将attention map可视化,将其与输入图片叠加,可以非常直观的看到空间中的权重分布。为达到题图效果,可以使用opencv实现。

代码如下

import matplotlib as mpl

# we cannot use remote server's GUI, so set this

mpl.use('Agg')

import matplotlib.pyplot as plt

from matplotlib import cm as CM

from PIL import Image

import h5py

import numpy as np

import cv2

img_path = "/home/datamining/Datasets/CrowdCounting/shanghai/part_A_final/test_data/images/IMG_54.jpg"

img = cv2.imread(img_path)

# adaptive gaussian filter

adaptive = h5py.File(img_path.replace('.jpg','.h5').replace('images','ground_truth'),'r')

adaptive = np.asarray(adaptive['density'])

heatmap = adaptive/np.max(adaptive)

# must convert to type unit8

heatmap = np.uint8(255 * heatmap)

heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)

superimposed_img1 = heatmap*0.9+img

# fixed gaussian filter

fixed = h5py.File(img_path.replace('shanghai','shanghaitech_fixed').replace('.jpg','.h5').replace('images','ground_truth'),'r')

fixed = np.asarray(fixed['density'])

heatmap = fixed/np.max(fixed)

heatmap = np.uint8(255 * heatmap)

heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)

superimposed_img2 = heatmap*0.9+img

imgs = np.hstack([img, superimposed_img1,superimposed_img2])

cv2.imwrite('figs/superimposed_img.jpg', imgs)

使用opencv得到图片img,从h5文件中得到对该图中人头的标注热力图,此处可将其视为attention map,距离人头中心越近,值越大。

使用np.asarray将其转换为ndarray,除以最大值将其归一化,归一化不可缺少,否则可能图片中像素值过小,几乎全是蓝色的区域。再将归一化之后取值为[0,1]的ndarray乘255转化为np.unit8格式,因为下一步的输入必须是这个格式。

最重要的是cv2.applyColorMap(heatmap, cv2.COLORMAP_JET),将np.unit8格式的矩阵转化为colormap,第二个参数有很多种配色方案,上面这个是最常用的蓝红配色,值越小越接近蓝色,越大越接近红色。

此处也可以直接将读取的图片转为colormap,例如

img = cv2.imread(img_path)

heatmap = cv2.applyColorMap(img, cv2.COLORMAP_JET)

cv2.imwrite('figs/heatmap.jpg', heatmap)

将img和heatmap加权,权重取0.9感觉比较合适(如果取1会变成奇怪的黄色)。

将原图和叠加了attention map的图像使用np.hstack()并列显示,此处由于我有两个不同的attention map所以共有3张图片。吐槽一下cv2同时显示多张图片不如plt方便。

最后得到的并列图像如下图

如果只显示最右侧的那一张就是题图:

python画热力分布图 pil_Python画attention map与原图叠加的热力图相关推荐

  1. 利用python画空间分布图

    最近在用matlab跑数据,时间比较充足,所以想学一下python来画空间分布图,之前没有接触过python,感觉画图会比matlab更好看更流畅一些.画下来确实有耳目一新的感觉. 还是利用第一篇笔记 ...

  2. 基于Python实现图画转换字符画

    微信改版,加星标不迷路! 基于Python实现图画转换字符画 作者:阿广 概述 前言 准备工作 识别原理 静态图像处理 动态图像处理 结果 阿广说 群聊交流 福利一刻 推荐阅读 前言 前几天写了基于P ...

  3. 用python画猫咪怎么画-使用Python的turtle画小猫咪

    这个是用Python库画的小猫咪,前面一步步的画整个猫的整个身体,具体步骤都写在了注释之中.身体部分画的比较快,后面画了5个心,由于画心的时候要改变好多度数,而且每次只前进一点点,所以画心的时候会比较 ...

  4. 如何用python画组合图形_python_matplotlib画组合图

    下图是要画的组合图的样式,用到的核心方法是plt.axes方法.方法内的参数是一个list,由左下角坐标,宽,高组成:[x,y,w,h](图中打勾处),注意在构建list的时候考虑进去图与图的间隙,图 ...

  5. python动态图片转字符画_GIF动态图,视频?都能用Python转换成字符画图像

    字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图片 首先,我们来演示将静态图片转为字符画,功能实现主要用到 ...

  6. Python中星号、下画线、斜线含义汇总

    封面图片:<Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 图书详情: 配套资源:用书教师可以免费获取教学大纲.教案.课件.源码.习题答 ...

  7. python 获取股市数据 baostock + 画K线图 mpl_finance

    python 获取股市数据 baostock + 画K线图 mpl_finance 获取股票数据 安装baostock库 baostock库的特性 获取A股K线数据 核心代码如下 完整代码如下 画K线 ...

  8. python用turtle画字母n、h_详解python使用turtle库来画一朵花

    看了群主最后成像的图片,应该是循环了36次画方框,每次有10度的偏移. 当然不能提前看答案,自己试着写代码. 之前有用过海龟画图来画过五角星.奥运五环.围棋盘等,所以感觉不难. # !/usr/bin ...

  9. python画樱花树教程_Python画樱花树❀

    这篇文章参考了别人的博客<Python:绘制樱花树> 原文作者:Ambitioner_c.他又参考了作者:沙漏在下雨 哈哈-- 一.代码详解 (一)绘制画幕 首先绘制画幕,命令说明如下: ...

最新文章

  1. python内存管理机制_[转] Python内存管理机制
  2. csvtk:表格处理神器-美化、统计、头表、合并、转置、筛选、取样、去冗余 、分列、分类汇总和简单绘图...
  3. UNIX高手应该保持的习惯
  4. 求生之路怎么显示服务器,求生之路怎么搭建云服务器
  5. 诡异!MyBatis的Insert方法一直返回-2147482646?
  6. 小米手机微信指纹支付上传服务器吗,为什么小米手机不支持微信指纹支付,客服这样回答...
  7. myeclipse自带tomcat
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_5-06 高级篇幅之深入源码
  9. Flume自定义文件命名格式(RollFileSink)
  10. FileUtils工具类
  11. 什么软件可以让头发变黑_吃什么可以让头发变黑?
  12. 多媒体视频技术:视频基础、视频格式、视频应用
  13. ie8不支持transform: translateY,ie9支持不友好
  14. 【USRPx310系列(NI USRP2940-2955)+ srsRAN】环境搭建与应用
  15. 64位处理器_64位系统真的比32位系统快吗?
  16. everedit选择_EverEdit
  17. applet 打印的属性和配置
  18. java graphics2d旋转_JAVA用Graphics2D实现图片旋转,缩放,合成
  19. 好用的vue组件插件及框架
  20. 如何进行用户行为分析

热门文章

  1. php 生成excel透视表,是否可以使用PhpExcel库生成或克隆数据透视表?
  2. 和陆琪一起侃一侃在这个看脸的世界,容貌改变命运
  3. 解释SQL和NoSQL
  4. 花开不败——复旦中文系女生的高三笔记
  5. 程序员只能吃青春饭?3条晋升之路帮你摆脱程序员中年魔咒!
  6. 【C#Windows 窗体应用】实现简单学生查询成绩,管理员管理学生成绩
  7. 4K超高清电视全面支持HDMI技术
  8. 二分查找(存在重复找到第一个的位置)
  9. 利用python处理Excel表格中的销售数据
  10. 母亲节html页面,css3母亲节主题文字动画特效