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进行高级封装的可视化库,其示例如下
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 函数曲线图
关于函数曲线图的绘制,可以参考文章《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.1.3 张量示意图
绘制张量形状
Visio:可以自动进行配色
操作路径:更多形状 ⇒ 常规 ⇒ 基本形状
绘制张量绘制大小示意图: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.2 模型结构可视化
3.2.1 TensorBoard
使用TensorBoard,可以参考教程《PyTorch TensorBoard Support》;
首先需要安装TensorBoard
使用conda命令安装,
conda install pytorch torchvision -c pytorch
3.2.2 TorchStudio
可以使用TorchStudio来对网络结构进行可视化;
安装过程:
- 首先需要在TorchStudio官网下载安装包,来进行安装;
- 安装完成后,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中进行可视化;
3.2.3 Netron:网络结构可视化工具(对PyTorch不够友好)
Netron对PyTorch的支持有限,
Netron has experimental support for PyTorch, TensorFlow, TorchScript…
我们在使用netron
可视化YOLOv5n时也只能看到部分网络图,
像上面这样,不过完整的网络图应该是这样:
上图是用yolov5n.onnx文件可视化的网络结构图;
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:在线的实验记录工具
可以自动绘制训练参数曲线图;