README.md

    English

    Build Status PyPI Downloads License

    QQ Group

    介绍

    VisualDL是飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。可帮助用户更清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型优化。

    VisualDL提供丰富的可视化功能,支持标量、图结构、数据样本可视化、直方图、PR曲线及高维数据降维呈现等诸多功能,同时VisualDL提供可视化结果保存服务,通过VDL.service生成链接,保存并分享可视化结果。具体功能使用方式,请参见 VisualDL使用指南。项目正处于高速迭代中,敬请期待新组件的加入。

    VisualDL支持浏览器种类:Chrome(81和83)、Safari 13、FireFox(77和78)、Edge(Chromium版)。

    VisualDL原生支持python的使用, 通过在模型的Python配置中添加几行代码,便可为训练过程提供丰富的可视化支持。

    目录

    [HOT]活动公告

    9月21日晚19:00, 有颜有才的百度小姐姐依依将于飞桨B 站直播间 举办深度学习可视化调优主题直播。

    将会在 B 站开启一场直播,通过实际案例,教你从数据收集、数据半自动标注、模型训练及调优到模型手机部署,实现一个目标检计数方案,并深入介绍如何应用 VisualDL 可视化分析工具对训练参数、网络结构等进行分析,从而指导开发者快速理解训练过程、进行算法优化。由此项目,可延伸泛化到「工业零件检测计数」『人流量统计』等领域应用。

    另外,还有丰富奖品等着大家噢:蓝牙键盘、飞桨充电宝、京东电子购物卡、百度网盘超级会员、飞桨鸭舌帽、飞桨帆布袋等等~

    具体抽奖规则请查看:抽奖规则

    实践项目请查看AI Studio螺丝螺母计数项目

    核心亮点

    简单易用

    API设计简洁易懂,使用简单。模型结构一键实现可视化。

    功能丰富

    功能覆盖标量、数据样本、图结构、直方图、PR曲线及数据降维可视化。

    高兼容性

    全面支持Paddle、ONNX、Caffe等市面主流模型结构可视化,广泛支持各类用户进行可视化分析。

    全面支持

    与飞桨服务平台及工具组件全面打通,为您在飞桨生态系统中提供最佳使用体验。

    安装方式

    使用pip安装

    python -m pip install visualdl -i https://mirror.baidu.com/pypi/simple

    使用代码安装

    git clone https://github.com/PaddlePaddle/VisualDL.git
    cd VisualDL
    
    python setup.py bdist_wheel
    pip install --upgrade dist/visualdl-*.whl

    需要注意,官方自2020年1月1日起不再维护Python2,为了保障代码可用性,VisualDL现仅支持Python3

    使用方式

    VisualDL将训练过程中的数据、参数等信息储存至日志文件中后,启动面板即可查看可视化结果。

    1. 记录日志

    VisualDL的后端提供了Python SDK,可通过LogWriter定制一个日志记录器,接口如下:

    class LogWriter(logdir=None,
                    comment='',
                    max_queue=10,
                    flush_secs=120,
                    filename_suffix='',
                    write_to_disk=True,
                    display_name='',
                    file_name='',
                    **kwargs)

    接口参数

    参数 格式 含义
    logdir string 日志文件所在的路径,VisualDL将在此路径下建立日志文件并进行记录,如果不填则默认为runs/${CURRENT_TIME}
    comment string 为日志文件夹名添加后缀,如果制定了logdir则此项无效
    max_queue int 日志记录消息队列的最大容量,达到此容量则立即写入到日志文件
    flush_secs int 日志记录消息队列的最大缓存时间,达到此时间则立即写入到日志文件
    filename_suffix string 为默认的日志文件名添加后缀
    write_to_disk boolean 是否写入到磁盘
    display_name string 在面板中替换实际显示的logdir,当日志所在路径过长或想隐藏日志所在路径时可指定此参数
    file_name string 指定写入的日志文件名,如果指定的文件名已经存在,则将日志续写在此文件中,文件名必须包括vdlrecords

    示例

    设置日志文件并记录标量数据:

    from visualdl import LogWriter
    
    # 在`./log/scalar_test/train`路径下建立日志文件
    with LogWriter(logdir="./log/scalar_test/train") as writer:
        # 使用scalar组件记录一个标量数据
        writer.add_scalar(tag="acc", step=1, value=0.5678)
        writer.add_scalar(tag="acc", step=2, value=0.6878)
        writer.add_scalar(tag="acc", step=3, value=0.9878)

    2. 启动面板

    在上述示例中,日志已记录三组标量数据,现可启动VisualDL面板查看日志的可视化结果,共有两种启动方式:

    在命令行启动

    使用命令行启动VisualDL面板,命令格式如下:

    visualdl --logdir <dir_1, dir_2, ... , dir_n> --host <host> --port <port> --cache-timeout <cache_timeout> --language <language> --public-path <public_path> --api-only

    参数详情:

    参数 意义
    --logdir 设定日志所在目录,可以指定多个目录,VisualDL将遍历并且迭代寻找指定目录的子目录,将所有实验结果进行可视化
    --model 设定模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化,目前可支持PaddlePaddle、ONNX、Keras、Core ML、Caffe等多种模型结构,详情可查看graph支持模型种类
    --host 设定IP,默认为127.0.0.1
    --port 设定端口,默认为8040
    --cache-timeout 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒
    --language VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言
    --public-path VisualDL面板URL路径,默认是'/app',即访问地址为'http://<host>:<port>/app'
    --api-only 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://<host>:<port>/<public_path>/api';若没有设置public_path参数,则默认为'http://<host>:<port>/api'

    针对上一步生成的日志,启动命令为:

    visualdl --logdir ./log

    在Python脚本中启动

    支持在Python脚本中启动VisualDL面板,接口如下:

    visualdl.server.app.run(logdir,
                            host="127.0.0.1",
                            port=8080,
                            cache_timeout=20,
                            language=None,
                            public_path=None,
                            api_only=False,
                            open_browser=False)

    请注意:除logdir外,其他参数均为不定参数,传递时请指明参数名。

    接口参数具体如下:

    参数 格式 含义
    logdir string或list[string_1, string_2, ... , string_n] 日志文件所在的路径,VisualDL将在此路径下递归搜索日志文件并进行可视化,可指定单个或多个路径
    model string 模型文件路径(非文件夹路径),VisualDL将在此路径指定的模型文件进行可视化
    host string 指定启动服务的ip,默认为127.0.0.1
    port int 启动服务端口,默认为8040
    cache_timeout int 后端缓存时间,在缓存时间内前端多次请求同一url,返回的数据从缓存中获取,默认为20秒
    language string VisualDL面板语言,可指定为'en'或'zh',默认为浏览器使用语言
    public_path string VisualDL面板URL路径,默认是'/app',即访问地址为'http://<host>:<port>/app'
    api_only boolean 是否只提供API,如果设置此参数,则VisualDL不提供页面展示,只提供API服务,此时API地址为'http://<host>:<port>/<public_path>/api';若没有设置public_path参数,则默认为'http://<host>:<port>/api'
    open_browser boolean 是否打开浏览器,设置为True则在启动后自动打开浏览器并访问VisualDL面板,若设置api_only,则忽略此参数

    针对上一步生成的日志,我们的启动脚本为:

    from visualdl.server import app
    
    app.run(logdir="./log")

    在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图:

    可视化功能概览

    Scalar

    以图表形式实时展示训练过程参数,如loss、accuracy。让用户通过观察单组或多组训练参数变化,了解训练过程,加速模型调优。具有两大特点:

    动态展示

    在启动VisualDL Board后,LogReader将不断增量的读取日志中数据并供前端调用展示,因此能够在训练中同步观测指标变化,如下图:

    多实验对比

    只需在启动VisualDL Board的时将每个实验日志所在路径同时传入即可,每个实验中相同tag的指标将绘制在一张图中同步呈现,如下图:

    Image

    实时展示训练过程中的图像数据,用于观察不同训练阶段的图像变化,进而深入了解训练过程及效果。

    Audio

    实时查看训练过程中的音频数据,监控语音识别与合成等任务的训练过程。

    Graph

    一键可视化模型的网络结构。可查看模型属性、节点信息、节点输入输出等,并支持节点搜索,辅助用户快速分析模型结构与了解数据流向。

    Histogram

    以直方图形式展示Tensor(weight、bias、gradient等)数据在训练过程中的变化趋势。深入了解模型各层效果,帮助开发者精准调整模型结构。

    • Offset模式

    • Overlay模式

    PR Curve

    精度-召回率曲线,帮助开发者权衡模型精度和召回率之间的平衡,设定最佳阈值。

    High Dimensional

    将高维数据进行降维展示,目前支持T-SNE、PCA两种降维方式,用于深入分析高维数据间的关系,方便用户根据数据特征进行算法优化。

    VDL.service

    VisualDL可视化结果保存服务,以链接形式将可视化结果保存下来,方便用户快速、便捷的进行托管与分享。

    开源贡献

    VisualDL 是由 PaddlePaddleECharts 合作推出的开源项目。 Graph 相关功能由 Netron 提供技术支持。 欢迎所有人使用,提意见以及贡献代码。

    更多细节

    想了解更多关于VisualDL可视化功能的使用详情介绍,请查看VisualDL使用指南

    技术交流

    欢迎您加入VisualDL官方QQ群:1045783368 与飞桨团队以及其他用户共同针对VisualDL进行讨论与交流。

    项目简介

    Deep Learning Visualization Toolkit(『飞桨』深度学习可视化工具 )

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/PaddlePaddle/VisualDL

    发行版本

    当前项目没有发行版本

    贡献者 38

    全部贡献者

    开发语言

    • HTML 57.4 %
    • TypeScript 20.1 %
    • JavaScript 12.8 %
    • Python 9.2 %
    • Rust 0.2 %