【可视化】可视化&绘图的学习笔记

1 显示图像

1.1 Matplotlib

在PyCharm中显示图像

import matplotlib
matplotlib.use('TkAgg')  # Set backend in Matplotlib;
# A backend is a program for producing the image object, and generally showing image

2 绘制图像

2.1 数据统计示意图:seaborn

Seaborn是基于matplotlib进行高级封装的可视化库,其示例如下
【可视化】可视化&绘图的学习笔记_第1张图片

2.2 Matplotlib绘制图像

2.2.1 使用列表值绘制曲线图

import numpy as np
import matplotlib.pyplot as plt 

x=np.array([1,2,3,4,5,6,7])
y=np.array([100,50,25,12.5,6.25,3.125,1.5625])

plt.plot(x, y)
plt.title("Curve plotted using the given points")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

2.2.2 使用ndarray绘制曲线图

import matplotlib.pyplot as plt
import numpy as np

train_loss = np.arange(100)
train_epochs_loss = train_loss *2
valid_epochs_loss = train_loss *3

plt.figure(figsize=(12,4)) # (12,4): 6inches × 12inches
plt.subplot(121)
plt.plot(train_loss[:])
plt.title("train_loss")
plt.subplot(122)
plt.plot(train_epochs_loss[1:],'-o',label="train_loss")
plt.plot(valid_epochs_loss[1:],'-o',label="valid_loss")
plt.title("epochs_loss")
plt.legend()
plt.show()

【可视化】可视化&绘图的学习笔记_第2张图片

2.2.2 函数曲线图

关于函数曲线图的绘制,可以参考文章《Matplotlib 绘制平滑曲线》

给定函数值绘制折线图

import numpy as np
import matplotlib.pyplot as plt 

x=np.array([1,2,3,4,5,6,7])
y=np.array([100,50,25,12.5,6.25,3.125,1.5625])

plt.plot(x, y)
plt.title("Curve plotted using the given points")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

3 模型可视化

3.1 模型结构图绘制

3.1.1 网络整体结构示意图

参考图模板:MMYOLO: OpenMMLab YOLO series toolbox and benchmark.

3.1.2 模块细节参数示意图

参考图模板:《YOLOv5网络详解_太阳花的小绿豆的博客-CSDN博客》
【可视化】可视化&绘图的学习笔记_第3张图片

3.2 TensorBoard

使用TensorBoard,可以参考教程《PyTorch TensorBoard Support》;
首先需要安装TensorBoard
使用conda命令安装,

conda install pytorch torchvision -c pytorch

3.1 TorchStudio

可以使用TorchStudio来对网络结构进行可视化;
安装过程:

  1. 首先需要在TorchStudio官网下载安装包,来进行安装;
  2. 安装完成后,TorchStudio会提示安装python环境,这里我们需要选择本机已经设置好的conda环境,而不使用TorchStudio推荐方式(在IDE内构建环境);TorchStudio对选择(select)的环境有下列package的要求:
    • tqdm
    • graphviz (注意最后一个字母是z,不是s)
    • python-graphviz

关于TorchStudio的基本使用方法,请参考《TorchStudio | Get Started》

网络结构可视化

我们可以使用TorchStudio的Build功能来对网络进行可视化:
Step1:首先要Load数据集才能可视化网络结构图,所以首先点击Load (Ctrl+L)
Step2:在右上角选择** Custom Model **表示选择自定义的模型,然后在其右侧列表中选中准备进行可视化的模型,这里“MyModel”就是选中模型的类名;
在这里插入图片描述
在构建网络计算图时,测试张量的输入通道数为1;
TorchStudio也支持.py文件的导入,也可以编写好MyModelAdapter类之后再导入到TorchStudio中进行可视化;

2.2 Netron:网络结构可视化工具(对PyTorch不够友好)

Netron对PyTorch的支持有限,

Netron has experimental support for PyTorch, TensorFlow, TorchScript…

我们在使用netron可视化YOLOv5n时也只能看到部分网络图,
【可视化】可视化&绘图的学习笔记_第4张图片
像上面这样,不过完整的网络图应该是这样:
【可视化】可视化&绘图的学习笔记_第5张图片
上图是用yolov5n.onnx文件可视化的网络结构图;

2.3 绘制张量大小示意图:ConvNetDraw

可以使用ConvNetDraw来绘制网络运算过程中张量大小变化的示意图;
支持六种组件:

input(28, 28, 1)
conv(24, 24, 8)
relu(24, 24, 8)
pool(12, 12, 8)
fullyconn(1, 1, 10)
softmax(1, 1, 10)

3 热力图可视化

plt.imshow(heat_map)
plt.show()

4 降维分析

PCA
UMAP(请参见《Python—UMAP流形数据降维工具简介》)

5 训练指标

5.1 Tensorboard

from torch.utils.tensorboard import SummaryWriter

# 新建SummaryWriter实例,可以设置日志路径
writer = SummaryWriter()
# Writer will output to ./runs/ directory by default
# 启动Tensorboard
tensorboard --logdir=<directory_name>

数据表格:add_hparams() [doc]

add_hparams()本来是用来显示超参数的方法,这里我们也可以用它来显示训练指标;

5.2 VisualDL:类似于Tensorboard的可视化面板

安装VisualDL:[Install by PiP]

5.3 ClearML:在线的实验记录工具

可以自动绘制训练参数曲线图;

你可能感兴趣的:(《南溪的目标检测学习笔记》,PyTorch学习,可视化)