You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TensorBoard中如何让图片网格自适应屏幕尺寸而非仅支持最大化/极小化显示

TensorBoard中如何让图片网格自适应屏幕尺寸而非仅支持最大化/极小化显示

我完全懂这种 frustration!每次切epoch都要调缩放确实烦,尤其是还要兼顾大图查看细节和日常浏览的需求。这里有几个不用降级TensorBoard、也不用每次手动调整的方法可以试试:

  • 用浏览器用户脚本自动适配(一劳永逸)
    既然你没法降级TB,那可以借助浏览器的用户脚本工具(比如Tampermonkey)来自动修改TensorBoard的图片展示样式,让网格每次加载都自适应屏幕,切换epoch也不会变回极小。

    你可以写一个简单的用户脚本,针对TensorBoard的图片网格容器自动调整CSS:

    // ==UserScript==
    // @name         TensorBoard Image Grid Auto-Resize
    // @match        *://localhost:6006/*  // 替换成你的TensorBoard访问地址
    // @match        *://your-tb-server-domain/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
        // 监听页面元素变化,确保切换epoch时也生效
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                if (mutation.addedNodes.length) {
                    // 调整图片网格容器的样式
                    const imageGrids = document.querySelectorAll('.image-grid-container');
                    imageGrids.forEach(grid => {
                        grid.style.maxWidth = '95vw';
                        grid.style.height = 'auto';
                        grid.style.objectFit = 'contain';
                    });
                    // 确保单张图片加载时也自适应
                    const images = document.querySelectorAll('.tensor-image img');
                    images.forEach(img => {
                        img.style.maxWidth = '100%';
                        img.style.height = 'auto';
                    });
                }
            });
        });
    
        observer.observe(document.body, { childList: true, subtree: true });
    })();
    

    把这个脚本导入Tampermonkey后,每次打开TensorBoard或者切换epoch,图片网格都会自动适配屏幕宽度,同时你依然可以点击「toggle actual size」查看原始尺寸的细节。

  • 生成双版本图片网格(从数据层面解决)
    你已经在使用torchvision.utils.make_grid(),可以生成两个版本的网格图:一个用于日常浏览的缩小版,一个用于细节查看的原始尺寸版。这样既不用每次调缩放,也能随时查看高清图。

    示例代码如下:

    import torch
    import torchvision.utils as vutils
    from torch.utils.tensorboard import SummaryWriter
    
    writer = SummaryWriter()
    
    # 假设你的输入图片张量是imgs(8张,2行4列,尺寸640x480)
    imgs = ...  # 替换为你的图片数据
    
    # 1. 生成适配浏览的缩小版网格
    # 先把单张图缩到合适的预览尺寸,比如120x160
    small_imgs = torch.nn.functional.interpolate(
        imgs, size=(120, 160), mode='bilinear', align_corners=False
    )
    small_grid = vutils.make_grid(small_imgs, nrow=4, scale_each=True, normalize=True)
    writer.add_image('Prediction Grid (Preview)', small_grid, global_step=epoch)
    
    # 2. 生成原始尺寸的网格,用于查看细节
    full_grid = vutils.make_grid(imgs, nrow=4, scale_each=True, normalize=True)
    writer.add_image('Prediction Grid (Full Size)', full_grid, global_step=epoch)
    

    日常切换epoch时用「Preview」版的网格,它会自动适配TensorBoard界面;需要看细节时,切换到「Full Size」标签,点击「toggle actual size」查看高清图即可。

  • 浏览器站点级固定缩放(零代码方案)
    如果你用Chrome或Edge,可以给TensorBoard站点设置固定的缩放比例,浏览器会自动记住这个设置,不用每次手动调整:

    1. 打开TensorBoard页面,用Ctrl+/Cmd+加号调整到你觉得舒服的缩放比例
    2. 浏览器会自动保存这个站点的缩放偏好,下次打开或切换epoch时都会保持这个比例

这些方法里,用户脚本是最省心的一劳永逸方案;双网格的方法则从数据生成层面拆分了浏览和细节需求,你可以根据自己的使用习惯选择~

备注:内容来源于stack exchange,提问作者Diego Alejandro Gómez Pardo

火山引擎 最新活动