发布时间:2023-04-19 文章分类:电脑基础 投稿人:樱花 字号: 默认 | | 超大 打印

文章目录:

  • 1 visdom
    • 1.1 vidsom介绍
  • 2 visdom中的一些概念
    • 2.1 窗口(Windows)
    • 2.2 回调(callbacks)
    • 2.3 环境Environments
      • 2.3.1 选择环境(Selecting Environments)
      • 2.3.2 比较环境(Comparing Environments)
      • 2.3.3 清除环境(Clearing Environments)
      • 2.3.4 管理环境(Managing Environments)
    • 2.4 状态(State)
    • 2.5 过滤(Filter
    • 2.6 视图(Views)
      • 2.6.1 保存和删除视图(Saving / Deleting Views)
      • 2.6.2 重新包装(Re-Packing)
      • 2.6.3 重新加载视图(Reloading Views)
  • 3 安装visdom
  • 4 visdom使用
    • 4.1 启动visdom的服务
    • 4.2 visdom的命令行参数选项
    • 4.3 python Visdom使用例子
      • 4.3.1 在visdom中显示文本和图片
  • 5 Visdom中的API使用
    • 5.1 Visdom arguments(Python only)
    • 5.2 基础(Basics)API
    • 5.3 绘制(Plotting)
    • 5.4 普通绘图(Generic Plots)
    • 5.5 其他(Others)
    • 5.6 visdom绘图API中的一些细节(Details)
      • 5.6.1 vis.image
      • 5.6.2 vis.images
      • 5.6.3 vis.text
      • 5.6.4 vis.properties
      • 5.6.5 vis.audio
      • 5.6.6 vis.video
      • 5.6.7 vis.svg
      • 5.6.8 vis.matplot
      • 5.6.9 vis.plotlyplot
      • 2.6.10 vis.embeddings
      • 2.6.11 vis.save
    • 2.7 绘图(Plotting)
      • 2.7.1 vis.scatter
      • 2.7.2 vis.line
      • 2.7.3 vis.stem
      • 2.7.4 vis.heatmap
      • 2.7.5 vis.bar
      • 2.7.6 vis.histogram
      • 2.7.7 vis.boxplot
      • 2.7.8 vis.surf
      • 2.7.9 vis.contour
      • 2.7.10 vis.quiver
      • 2.7.11 vis.mesh
      • 2.7.12 vis.dual_axis_lines

1 visdom

1.1 vidsom介绍

Visdom是一个灵活的工具,用于创建组织共享实时丰富数据可视化,支持:

Visdom的目标是促进(远程)数据的可视化,重点是支持科学实验。为你自己和你的合作者广播绘制:视频图像文本等的可视化。

深度学习可视化工具visdom使用

通过编程或通过UI组织可视化空间,为实时数据创建仪表板,检查实验结果,或调试实验代码。

深度学习可视化工具visdom使用

2 visdom中的一些概念

Visdom有一套简单的功能,可以组成不同的案例

2.1 窗口(Windows)

1、打开visdom的UI窗口

python -m visom.server

用上面的打开一个visdom服务,然后把返回的链接http://localhost:8097http://127.0.0.1:8097 在浏览器中打开即可看到一个空白的visdom UI面板!

2、然后你可以在这个空白的白板上:

3、同时你可以拖放调整大小销毁这些窗口。窗口存在于environments中并且environments的状态通过sessions存储。你可以下载窗口中的内容 - 包括SVG中的图。

注意:

你可以通过浏览器的缩放比例来调整UI的比例

2.2 回调(callbacks)

python Visdom支持实现窗口上的回调。Demo以可编辑文本板的形式显示。这些回调函数允许Visdom对象接收并响应前端发生的事件

你可以通过向事件处理程序代码添加一个函数来为事件订阅窗口,该函数用于通过调用viz.register_event_handler(handler, win_id)处理程序和窗口标识调用要订阅的窗口标识。多个处理程序可以注册到同一个窗口。你可以使用viz.clear_event_handlers(win_id)删除窗口中的所有事件处理程序。当在窗口发生一个事件时,你的回调将在包含以下内容字典上被调用:

-event_type:以下事件类型之一

下面定义了其他参数。现在支持以下回调事件:

2.3 环境Environments

深度学习可视化工具visdom使用

你可以使用envs划分你的可视化空间。默认情况下,每个用户将有一个env调用main。新的envs可以在用户界面或以编程方式创建。envs的状态是长期保存的

你可以通过URL访问特定的ENVhttp://localhost.com:8097/env/main。如果你的服务器托管在网上,直接分享你的网址那样其他人也可以看到你的可视化

2.3.1 选择环境(Selecting Environments)

从主页面可以使用环境选择器不同的环境之间切换。选择新环境将向服务器查询该环境中存在的图

深度学习可视化工具visdom使用

2.3.2 比较环境(Comparing Environments)

主页面上,可以使用环境选择器比较不同的环境。在复选框中选择多个环境将查询服务器在所有环境中具有相同标题的地块,并将它们绘制到单个地块中。将创建一个附加的比较图例窗格,其中包含与每个所选环境对应的数字。使用对应于“x_name”的图例更新各个plot,其中x是一个数字,对应于比较图例窗格,而name是图例中的原始名称

2.3.3 清除环境(Clearing Environments)

你可以使用橡皮擦按钮删除环境中当前的所有内容。这将关闭该环境的绘制plot窗口,并且保留空白的为新的绘制窗口。

2.3.4 管理环境(Managing Environments)

1、按下文件夹图标将打开一个对话框,允许复制强制保存当前环境,或删除当前环境的所有

深度学习可视化工具visdom使用

2、Env Files: 你的envs在服务器初始化时加载,默认情况下为$HOME/.visdom/。自定义路径可以作为cmd行参数传递。通过使用删除按钮或从环境中删除相应的.json文件来删除Envs。

2.4 状态(State)

1、当你创建了几个可视化后,状态保持不变。服务器自动缓存你的可视化 —— 如果你重新加载页面可视化就会再现
深度学习可视化工具visdom使用

2.5 过滤(Filter

1、你可以使用filter动态筛选env中的窗口 - 只要提供一个正则表达式来匹配您要显示的窗口的标题。这可以有助于涉及env与许多窗口的使用情况,例如系统地检查实验结果

深度学习可视化工具visdom使用

注意:

如果您保存了当前视图,则清除过滤器后视图将被恢复。

深度学习可视化工具visdom使用

2.6 视图(Views)

通过简单地拖动窗口的顶部来管理视图是可能的,但是还存在一些额外的功能来保持视图的组织和保存公共视图。视图管理对于保存和在多个窗口组织之间切换非常有用。

深度学习可视化工具visdom使用

2.6.1 保存和删除视图(Saving / Deleting Views)

使用文件夹图标,将打开一个对话框窗口,其中视图可以以相同的方式分叉。 保存视图将保留给定环境中所有窗口的位置和大小。 在视图将会保存到visdom的$ Home / .Visdom / View / Layouts.json路径中!

注意:

已保存的视图是静态的(static)

2.6.2 重新包装(Re-Packing)

使用重新包装图标(9个小方格的图标),visdom将尝试以一种最适合的方式打包你的窗口,同时保持行/列顺序

注意:

由于对行/列排序ReactGridLayout的依赖,最终的布局可能与预期略有不同。我们正在努力改进这种体验,或者提供更多可微调控制的替代方案。

2.6.3 重新加载视图(Reloading Views)

重新加载视图,动态图片(CSDN最大只能上传5MB,传不上去)

使用视图下拉列表可以选择先前保存的视图,将当前环境中所有窗口的所有窗口的位置和大小恢复到最后一个视图保存的地方!

3 安装visdom

visdom要求python3的环境,安装比较简单直接用pip安装即可:

pip install visdom

4 visdom使用

4.1 启动visdom的服务

1、确保你已经安装了visdom,然后需要打开一个visdom的服务,在命令行下输入:

visdom

python -m visdom.server

深度学习可视化工具visdom使用

2、然后在浏览器中打开返回的链接:http://loaclhost:8097

4.2 visdom的命令行参数选项

1、可以在命令上中使用visdom -h查看visdom命令行参数选项

(yolov5) shl@zhihui-mint:~/shl_res$ visdom -h
Checking for scripts.
usage: visdom [-h] [-port port] [--hostname hostname] [-base_url base_url] [-env_path env_path] [-logging_level logger_level] [-readonly] [-enable_login] [-force_new_cookie] [-use_frontend_client_polling]
Start the visdom server.
optional arguments:
  -h, --help            show this help message and exit
  -port port            port to run the server on.
  --hostname hostname   host to run the server on.
  -base_url base_url    base url for server (default = /).
  -env_path env_path    path to serialized session to reload.
  -logging_level logger_level
                        logging level (default = INFO). Can take logging level name or int (example: 20)
  -readonly             start in readonly mode
  -enable_login         start the server with authentication
  -force_new_cookie     start the server with the new cookie, available when -enable_login provided
  -use_frontend_client_polling
                        Have the frontend communicate via polling rather than over websockets.
(yolov5) shl@zhihui-mint:~/shl_res$ 

2、具体参数如下:

当提供-enable_login flag时,服务器要求用户使用终端提示输入凭据。或者,你可以设置VISDOM_USE_ENV_CREDENTIALS env变量,然后通过VISDOM_USERNAMEVISDOM_PASSWORD env变量提供你的用户名密码,而无需手动与终端交互。如果你想从bash脚本jupiter notebook启动visdom服务器,此设置非常有用。

VISDOM_USERNAME=username
VISDOM_PASSWORD=password
VISDOM_USE_ENV_CREDENTIALS=1 visdom -enable_login

如果没有生成cookie文件,或者设置了-force_new_cookie标志,也可以使用VISDOM_COOKIE变量来提供cookie值。

4.3 python Visdom使用例子

4.3.1 在visdom中显示文本和图片

1、创建一个test_demo.py

import visdom
import numpy as np
vis = visdom.Visdom()
vis.text('Hello, world!')
vis.image(np.ones((3, 10, 10)))

深度学习可视化工具visdom使用

5 Visdom中的API使用

有关快速入门的功能visdom,请查看example目录,或阅读下面的详细信息。

5.1 Visdom arguments(Python only)

python visdom客户端的一些选项:

5.2 基础(Basics)API

Visdom提取以下基本的可视化功能

5.3 绘制(Plotting)

我们已经封装了几种常见的绘图类型,以便轻松创建基本可视化。这些可视化由Plotly提供支持。

目前支持一下API:

5.4 普通绘图(Generic Plots)

请注意,服务器API遵守Plotly约定datalayout对象,以便你可以生成自己的任意Plotly可视化对象

import visdom
vis = visdom.Visdom()
trace = dict(x=[1, 2, 3], y=[4, 5, 6], mode="markers+lines", type='custom',
             marker={'color': 'red', 'symbol': 104, 'size': "10"},
             text=["one", "two", "three"], name='1st Trace')
layout = dict(title="First Plot", xaxis={'title': 'x1'}, yaxis={'title': 'x2'})
vis._send({'data': [trace], 'layout': layout, 'win': 'mywin'})

5.5 其他(Others)

5.6 visdom绘图API中的一些细节(Details)

下面来详细说明一下visdom中提供的绘图API的使用:

深度学习可视化工具visdom使用

5.6.1 vis.image

1、vis.image

绘制一个img。它将包含图像CxHxW的张量(tensor)作为输入

2、vis.image的参数:

5.6.2 vis.images

1、vis.images

这个函数绘制一个图像列表。它取一个输入B x C x H x W张量或者一个相同大小的list of images。它创建一个大小为(B / nrow, nrow)的图像网格

2、vis.images的参数:

5.6.3 vis.text

1、vis.text

这个函数在一个框中打印文本。你可以使用它来嵌入任意HTML。它将文本字符串作为输入。当前不支持特定的选项。

2、vis.text

当前没有特定的参数选项

5.6.4 vis.properties

1、vis.properties

这个函数在窗格中显示可编辑的属性。属性应该是一个字典列表,例如:

    properties = [
        {'type': 'text', 'name': 'Text input', 'value': 'initial'},
        {'type': 'number', 'name': 'Number input', 'value': '12'},
        {'type': 'button', 'name': 'Button', 'value': 'Start'},
        {'type': 'checkbox', 'name': 'Checkbox', 'value': True},
        {'type': 'select', 'name': 'Select', 'value': 1, 'values': ['Red', 'Green', 'Blue']},
    ]

2、支持的类型

3、在属性值更新时调用回调

4、vis.properties的参数

当前没有特定的参数选项

5.6.5 vis.audio

1、vis.audio

这个功能播放音频。它将音频文件的文件名或包含波形的N张量(立体声音频使用Nx2矩阵)作为输入。该函数不支持任何特定于绘图的选项

2、支持以=下选项:

已知问题:Visdom使用scipy将张量输入转换为波文件。一些版本的Chrome浏览器不能播放这些wave文件(Firefox和Safari可以)。

5.6.6 vis.video

1、vis.video

播放视频。它将视频视频文件的文件名或包含所有视频帧LxCxHxW大小的张量作为输入。该函数不支持任何特定于绘图的选项

2、支持以=下选项:

注意:

使用张量输入需要安装ffmpeg并工作。你播放视频的能力可能取决于你使用的浏览器:你的浏览器必须支持Theano编解码器在OGG容器(Chrome支持这个)。

5.6.7 vis.svg

1、vis.svg

这个函数绘制一个SVG对象。它接受SVG字符串svgstr或SVG文件的名称svgfile作为输入。该函数不支持任何特定的选项。

5.6.8 vis.matplot

1、vis.matplot

这个函数绘制一个Matplotlib图。该函数支持一个特定于绘图的选项:resizable

2、注意:

5.6.9 vis.plotlyplot

1、vis.plotlyplot

这个函数绘制一个Plotly Figure对象。它不会显式地接受选项,因为它假定你已经显式地配置了图形的布局。

2、注意:

要使用这个函数,必须安装plotly Python包。它通常可以通过运行pip install plotly来安装。

2.6.10 vis.embeddings

1、vis.embeddings

该函数使用Barnes-Hut t-SNE算法可视化一组特征。

2、vis.embeddings的参数

我们目前假设有不超过10个独特的标签,在未来我们希望提供一个颜色地图Colormap在选择其他情况下。

在UI中,你也可以在功能的子集周围画一个套索。这将在选定的子集上重新运行t-SNE可视化。

2.6.11 vis.save

1、vis.save

保存visdom服务器上存活的envs。它需要输入一个要保存的env id列表。

2.7 绘图(Plotting)

关于包装的绘图函数的进一步细节如下所示。

绘图函数输入各不相同,尽管它们中的大多数将包含数据的张量X和包含可选数据变量(如标签或时间戳)的张量Y作为输入。所有的绘图功能都可以作为一个可选项win,用来绘制到一个特定的窗口;每个绘图函数也返回win它绘制的窗口。还可以指定env 可视化应该添加到的窗口。

2.7.1 vis.scatter

1、vis.scatter

此功能绘制2D或3D散点图。它需要输入一个Nx2或 一个Nx3张量X来指定N散点图中点的位置。一个可选的N张量,Y其中包含离散的标签,范围介于1和K可以指定 - 标签将反映在标记的颜色

2、vis.scatter的参数

opt.markercolor是一个具有整数值的张量。张量的大小可以是NNx3``或KKx3`

2.7.2 vis.line

1、vis.line

这个函数绘制一个线形图。它将NNxM张量Y作为输入,指定连接N个点的M条线的值。它还接受一个可选的X张量,指定相应的X轴值;X可以是一个N张量(在这种情况下,所有的直线将共享相同的X轴值)或具有与Y相同的大小。

2、vis.line的参数

2.7.3 vis.stem

1、vis.stem

这个函数绘制一个干图。它需要输入一个N或NxM张量 X来指定时间序列中的N点的值M。包含时间戳的可选N或NxM张量Y也可以被指定; 如果Y是N张量,则M假定所有时间序列具有相同的时间戳。

2、vis.stem的参数

2.7.4 vis.heatmap

1、vis.heatmap

这个函数绘制一个热图。它需要输入NxM张量X来指定热图中每个位置的值。

2、vis.heatmap的参数

2.7.5 vis.bar

1、vis.bar

这个函数绘制一个规则的,堆积的或分组的条形图。它需要输入一个N或NxM张量X来指定每个条的高度。如果X包含M列,则对应于每行的值将被堆叠或分组(取决于如何opts.stacked设置)。除此之外X,还可以指定一个(可选的)N张量Y,其中包含相应的x轴值。

2、vis.bar的参数

2.7.6 vis.histogram

1、vis.histogram

该功能绘制指定数据的直方图。它需要输入一个N张量X来指定构建直方图的数据。

2、vis.histogram的参数

2.7.7 vis.boxplot

1、vis.boxplot

此函数绘制指定数据的箱形图。它需要输入一个N或一个NxM张量X来指定N构造M箱形图的数据值。

2、vis.boxplot的参数

2.7.8 vis.surf

1、vis.surf

这个函数绘制一个曲面图。它需要输入NxM张量X 来指定曲面图中每个位置的值。

2、vis.surf的参数

2.7.9 vis.contour

1、vis.contour

这个函数绘制一个等高线图。它需要输入一个NxM张量X 来指定轮廓图中每个位置的值。

2、vis.contour的参数

2.7.10 vis.quiver

1、vis.quiver

该功能绘制箭叠图,其中箭头的方向和长度由NXM张量X和Y确定。可以提供两个可选的NXM张力gridX和gridY,以指定箭头的偏移; 默认情况下,箭头将在常规网格上完成。

2、vis.quiver的参数

2.7.11 vis.mesh

1、vis.mesh

这个函数从Nx2或Nx3矩阵X中定义的一组顶点以及可选的Mx2或Mx3矩阵Y中定义的多边形绘制网格图

2、vis.mesh的参数

2.7.12 vis.dual_axis_lines

1、vis.dual_axis_lines

这个函数将使用带有不同y轴的plotly创建一个直线图。

2、vis.dual_axis_lines的参数

下面是一个输出image:

深度学习可视化工具visdom使用

##2.8 自定义绘图(Customizing plots)

1、Customizing plots

绘图函数采用可选的选项表作为输入,可用于更改图形的(特定于通用或绘图特定)属性。 所有输入参数都在单个表中指定; 输入参数基于它们在输入表中具有的键匹配。

以下选项是通用的,因为它们对所有可视化相同(plot.image,plot.text,plot.video和plot.audio):

2、Customizing plots的以下参数是通用的