1、概述
pytorch的可视化工具Visdom,是一个用于创建,组织和共享实时丰富数据的可视化工具。深度学习模型训练过程钟常使用数据visdom进行整个过程的loss记录,acc记录,训练中间热力图记录等,主要支持Torch和Numpy两种类型。
2、安装
- 脚本安装
# 安装visdom
conda activate based_env
pip install visdom
-
测试是否安装成功
直接使用默认参数启动visdom,如果显示It’s Alive!,则说明安装成功。
-
trouble-shooting
如果没有安装成功,则可以参考如下文章进行解决visdom安装问题解决 -
启动visdom的server端
启动server端有以下参数:
port:server端运行的端口
hostname:server端的主机名称
base_url:server的url(default=/)
env_path:序列化会话的路径,主要为了用于重新加载
logging_level:日志级别(默认为INFO,可使用标准文本和数字记录值
readonly:只读模式启动服务器标志
enable_login:服务器设置身份验证,需要用户名和密码才能登录
通常是直接启动就行,使用默认设定的参数进入你的虚拟环境后 >> python -m visdom.server 或者 visdom >> visdom -h
3、使用
-
visdom.image
该函数主要用于画图,图像需要是CHW的格式,如果图片没有转化成相同形式,则会报错
函数支持的opts有以下三种:
jpgquality:图像品质参数,参数为0-100
caption:图像描述
store_history:保存所有的图片在一个窗口,可以通过点击窗体下方的滑动条上线翻看滑动,参数值:True/Falseimg_path = r'D:\Users\User\Desktop\H4A062HDF01\1.png' img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).transpose(2, 0, 1) vis = visdom.Visdom(env='my_test') vis.image(img=img, win='img_demo', opts={ 'jpgquality': 100, 'caption': 'one ', 'store_history': True})
-
visdom.images
该函数类似于visdom.image,主要用于绘制多张图片,要求输入数据是BCHW的tensor或者具有相同大小的图片list,图片网格大小为(B/行数, 行数)
可选的参数如下所示
nrow:每一行图片的数量
padding:图片四周的padding
opts有如下可以设定
jpgquality:图像品质参数,参数为0-100
caption:图像描述vis = visdom.Visdom(env='my_test') vis.images(np.random.randn(20,3,60,60), nrow=4, win='imgs_demo', opts=dict(jpgquality=50,caption='hahahh'))
- visdom.text
该函数主要是在一个box中打印文本
vis = visdom.Visdom(env='my_test')
vis.text('{}.{}.{}'.format('hello','world','你好'),win='imgs_demo')
- visdom.line
该函数主要用于绘制线条。输入参数Y是N或者NM大小的tensor,指定了M条线的N个点进行绘制;同时,可以使用X来设定x轴方向的值,X可以是N或者NM的(与Y的大小相一致)大小
update 可以用于更新已经绘制的图像上的线条,可选参数有:1、append 新数据, 2、replace用新数据代替旧数据,3、remove:使用name进行数据的移除
opt参数:
opts.fillarea : fill area below line (boolean)
opts.markers : show markers (boolean; default = false)
opts.markersymbol: marker symbol (string; default = ‘dot’)
opts.markersize : marker size (number; default = ‘10’)
opts.linecolor : line colors (np.array; default = None)
opts.dash : line dash type for each line (np.array; default = ‘solid’), one of solid, dash, dashdot or dash, size should match number of lines being drawn
opts.legend : table containing legend names
opts.layoutopts : dict of any additional options that the graph backend accepts for a layout. For example layoutopts = {‘plotly’: {‘legend’: {‘x’:0, ‘y’:0}}}.
opts.traceopts : dict mapping trace names or indices to dicts of additional options that plot.ly accepts for a trace.
opts.webgl : use WebGL for plotting (boolean; default = false). It is faster if a plot contains too many points. Use sparingly as browsers won’t allow more than a couple of WebGL contexts on a single page.
vis = visdom.Visdom(env='my_test')
my_win = vis.line(
Y=np.array([10, 9, 8, 7, 6]),
X=np.array([15, 16, 17, 18, 19]),
opts={
'showlegend': True, 'legend': ['sinx']},
)
for i in range(10):
x = np.random.randint(1, 10, 1)
y = np.random.randint(100, 200, 1)
vis.line(X=x, Y=y, win=my_win, update='append')
- visdom.bar
–未完待续–