[Pytorch]图像在卷积神经网络里都经历了什么?卷积神经网络特征图可视化(以yolov3为例)


前言

图像卷积神经网络(Convolution Neural Network ,CNN)是通过Kernel对图像Tensor进行卷积(废话 )从而提取出高维向量,对图像进行分类,目标识别,语义分割。写网络的过程中,不由得好奇每个层中图像被提取出了什么特征,所以简单编写了一个以Yolov3为例的特征层可视化函数。


一、Yolov3

Yolov3是一个目标识别卷积神经网络,该网络均由Convolutional layer组成,一个Convolutional layer包括一个Conv2d层,一个BN层和一个LeakyReLU层组成。

在这里插入图片描述

1.Darknet53

Yolov3的主干网络被称为Darknet53,是在Darknet基础上的魔改网络,其结构为
在这里插入图片描述
其中两个Convolutional又组成了一个Residual块,一共有23个残差块。

这里根据输出Tensor的shape不同将网络特征层分为5个部分进行依次输出,对backbone的每层残差块进行特征层可视化。

二、特征图像可视化

1.可视化函数

对特征层的可视化实际上就是对卷积层输出结果的分层输出
只需要将每一个块的输出压缩batch维度后进行逐层转换为array并保存即可。

import os

import cv2
import numpy as np
import torch
import torch.nn as nn

def to_image(input_tensor, channel, layer_name):
    print("input_tensor_size===>",input_tensor.shape)
    img_out = input_tensor[:1,channel,:,:]
    img_out = img_out.squeeze()
    img_out = img_out.unsqueeze(dim = 0)
    print(img_out.shape)
    with torch.no_grad():
        img_out = np.array(img_out.permute(1,2,0
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值