python网络图可视化_可视化特征图:python读取pth模型,并可视化特征图。亲测有效。...

一、前言

我们有时候需要可视化特征图,尤其是发paper,或者对比算法等情况。而且通过可视化特征图,也可以让我们对这个整个cnn模型更加熟悉,废话不多说了。

二、效果图

下面我会给出代码,效果图分为单channel绘图和1:1通道特征图融合图。

我生成了很多特征图,我就简单的放两张吧,意思意思。

b_0_202007071259173165.png

单通道特征图

b_0_202007071259181065.jpg

叠加后的特征图

三、代码

我再次描述清楚我的需求以及我现有的东西,我有网络的结构和网络的预训练权重,我想通过输入图片,得到图片在网络特定层的特征图。

从main()开始看代码,我会说得详细一点,尽量让大家看懂, 这样你修改起来会方便很多。

图片保存和读取的路径相关的问题,我就不说了,这里大家应该懂。

1.首先我们看导入的包,DepthCompletionFrontNet 这是我的网络结构,首先你要搭建起的你的网络(这个得有)。

2.看main()函数,定位到get_feature()函数

3.get_feature做了下面得几个事儿,第一,读取图片,也就是要输入网络得图片(我得网络是双分支,所以是读取两个图,这里你读取一个图就行,就 img_rgb 就行,把 img_pc 相关内容注释);第二,定义网络,实例化,载入预训练权重模型;第三,定义我们要提取出得特定层,这里必须和你网络结构定义得层一模一样,一模一样,一模一样。

4.已经定义的网络结构需要进行修改,假设你网络定义的代码如下:

# 仅仅举例子,我懒得补全了,直接csdn手打的

class Net(nn.Module):

super(Net,self).__init__()

self.conv1 = nn.conv1

self.conv2 = nn.conv2

self.conv3 = nn.conv3

forward(self,x):

x = conv1(x)

x = conv2(x)

x = conv3(x)

return x

网络的定义不需要修改,我们需要修改下网络的 forward,加入字典 all_dict去存储每层的tensor,forward修改如下:

forward(self,x):

all_dict =

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值