torchshow

GitHub
707 16 非常简单 1 次阅读 1周前MIT图像开发框架
AI 解读 由 AI 自动生成,仅供参考

torchshow 是一款专为 PyTorch 开发者设计的可视化工具,旨在通过一行代码即可直观展示张量数据。在计算机视觉项目的调试过程中,研究人员往往需要花费大量精力将张量转换为 NumPy 数组、调整维度形状,并手动处理数据的归一化与反归一化,才能正确显示图像。torchshow 完美解决了这一痛点,它能够自动推断张量类型(如 RGB 图像、灰度图、二值掩膜、语义分割标签及光流等),并智能执行必要的反归一化操作,让数据即刻以正确的形态呈现。

该工具特别适合从事深度学习、尤其是计算机视觉领域的算法工程师和科研人员使用。无论是检查模型输入输出、验证数据增强效果,还是分析特征图激活情况,torchshow 都能显著提升调试效率。其核心技术亮点在于强大的自动感知能力:无需用户预先指定数据类型或编写繁琐的预处理代码,它不仅能处理单张图片,还支持批量图像、视频序列以及复杂的光流场可视化。此外,针对无图形界面的服务器环境,torchshow 还提供了直接保存结果的功能。只需简单导入并调用,即可让原本枯燥的张量数据变得清晰易懂,是 PyTorch 工作流中不可或缺的得力助手。

使用场景

某计算机视觉算法工程师正在调试一个语义分割模型,需要频繁检查 DataLoader 输出的归一化图像张量与对应的整数标签掩码(Mask)是否正确对齐。

没有 torchshow 时

  • 手动反归一化繁琐:每次查看图像前,必须手写代码将张量从 [-1, 1] 或 [0, 1] 还原到 [0, 255] 范围,否则 Matplotlib 显示的图像是一片黑或颜色失真。
  • 掩码可视化困难:整数类型的类别掩码直接显示为灰度图,难以区分不同类别,需额外编写代码映射颜色查找表(Color Palette)。
  • 维度转换易出错:需反复在 (C, H, W) 和 (H, W, C) 之间转换张量维度,并处理 numpy 类型转换,极易因形状不匹配报错。
  • 调试效率低下:为了看一眼中间结果,往往需要编写十几行样板代码,严重打断建模思路。

使用 torchshow 后

  • 智能自动还原:只需调用 ts.show(image_tensor),torchshow 自动识别归一化参数并还原色彩,立即呈现真实图像效果。
  • 掩码自动着色:针对整数标签掩码,torchshow 自动应用分类调色板,将不同语义区域渲染为鲜明颜色,无需任何额外配置。
  • 零维度顾虑:直接支持 PyTorch 原生的 (C, H, W) 格式输入,自动处理通道顺序与数据类型转换,彻底告别维度错误。
  • 单行即时反馈:无论检查单张图像、批量数据还是视频流,仅需一行代码即可弹出可视化窗口,让调试过程如流水般顺畅。

torchshow 通过将复杂的张量预处理逻辑封装为一行代码,让开发者能专注于模型逻辑本身,极大提升了计算机视觉项目的调试效率。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具主要用于调试计算机视觉项目,自动推断张量类型(如 RGB 图像、掩码等)并执行必要的反归一化。在无显示器的服务器(headless server)上运行时,需使用 ts.save() 将结果保存为图片而非直接显示。可视化光流功能依赖 flow_vis 库。若在 Jupyter Notebook 中播放视频动画,需配合 IPython.display.HTML 使用。
python未说明
torch
matplotlib
numpy
flow_vis
torchshow hero image

快速开始

TorchShow Logo

PyPI version Downloads License


Torchshow 只需一行代码即可可视化你的数据。它专为帮助调试计算机视觉项目而设计。

Torchshow 会自动推断张量的类型,例如 RGB 图像、灰度图像、二值掩码、分类掩码(自动应用调色板)等,并在必要时执行去归一化操作。

支持的类型:

  • RGB 图像
  • 灰度图像
  • 二值掩码
  • 分类掩码(整数标签)
  • 多张图像
  • 视频
  • 多段视频
  • 光流(由 flow_vis 提供支持)

v0.5.2 新特性

  • 修复了 set_window_title 函数中的版本比较错误(#24)。
  • 支持更多 PyTorch 张量的数据类型。

完整变更日志请参见 changelogs.md

安装

PyPI 安装:

pip install torchshow

或者,你也可以直接从本仓库安装以体验最新功能:

pip install git+https://github.com/xwying/torchshow.git@master

基本用法

TorchShow 的使用非常简单。只需导入该包,然后用一行代码即可可视化你的数据:

import torchshow as ts
ts.show(tensor)

如果你在没有显示设备的无头服务器上工作,可以使用 ts.save(tensor) 命令(自 0.3.2 版起)。

import torchshow as ts
ts.save(tensor) # 图像将保存到 ./_torchshow/***.png
ts.save(tensor, './vis/test.jpg') # 你可以指定保存路径。

API 参考

详细的 API 参考请查看 API.md 页面。

示例

目录

1. 可视化图像张量

可视化类似图像的张量并不难,但可能会非常繁琐。通常你需要将张量转换为具有正确形状的 NumPy 数组。在许多情况下,图像在数据加载器中已经被归一化,这意味着你需要先将其去归一化才能正确显示。

如果你需要频繁检查张量的样子,TorchShow 是一个非常有用的工具。

使用 Matplotlib 使用 TorchShow
图像张量已被归一化,因此 Matplotlib 无法正确显示。 TorchShow 会自动完成转换。

2. 可视化掩码张量

对于语义分割或实例分割相关的项目,我们经常需要可视化掩码张量——无论是真实标注还是模型预测结果。这可以轻松地通过 TorchShow 实现。

使用 Matplotlib 使用 TorchShow
不同实例的颜色相同,部分类别缺失。 TorchShow 在可视化过程中会自动应用调色板。

3. 可视化张量批次

当张量是一批图像时,TorchShow 会自动创建网格布局来可视化它们。你也可以手动控制行数和列数。

4. 可视化特征图

如果输入张量的通道数超过 3 个,TorchShow 会像处理张量批次一样分别可视化每个通道。这对于可视化特征图非常有用。

5. 使用自定义布局可视化多个张量

TorchShow 在使用自定义布局可视化多个张量方面更加灵活。

要控制布局,只需将张量放入二维列表中。以下示例将创建一个 2×3 的网格布局:

ts.show([[tensor1, tensor2, tensor3],
         [tensor4, tensor5, tensor6]])

值得注意的是,网格中不需要填满所有位置。以下示例在一个 2×3 的网格布局中可视化了 5 个张量:

ts.show([[tensor1, tensor2],
         [tensor3, tensor4, tensor5]])

6. 查看包含丰富信息的像素

v0.4.1 起,TorchShow 允许你通过将鼠标悬停在感兴趣的像素上来获取更丰富的信息。这对于某些类型的张量,如分类掩码和光流,非常有帮助。

目前,Torchshow 会显示以下信息:

  • Mode: 可视化模式。
  • Shape: 张量的形状。
  • X, Y: 鼠标光标的像素位置。
  • Raw: (X, Y) 处的原始张量值。
  • Disp: (X, Y) 处的显示值。

注意:如果状态栏未显示相关信息,请尝试调整窗口大小,使其更宽一些。

可以通过 ts.show_rich_info(False) 关闭此功能。

7. 将张量可视化为视频片段

张量可以被可视化为视频片段,这对于序列帧张量非常有用。这可以通过 show_video 函数实现。

ts.show_video(video_tensor)

你还可以使用自定义网格布局来可视化多段视频。

8. 在 Jupyter Notebook 中显示视频动画

TorchShow 将视频片段可视化为 matplotlib.func_animation 对象,默认情况下可能无法在笔记本中显示。以下示例展示了一个简单的技巧来显示它。

import torchshow as ts
from IPython.display import HTML

ani = ts.show_video(video_tensor)
HTML(ani.to_jshtml())

9. 可视化光流

TorchShow 支持可视化光流(由 flow_vis 提供支持)。以下是使用远程连接到 SSH 服务器(已配置 X-server)的 VSCode 调试器进行演示的示例。同时,也支持在 Jupyter Notebook 中运行。

10. 更改通道顺序(RGB/BGR)

默认情况下,TensorFlow 会以 RGB 模式可视化图像张量。如果您使用 OpenCV 加载图像,可以将设置切换为 BGR。

ts.set_color_mode('bgr')

11. 更改反归一化预设

图像张量可能已经过归一化处理。如果未指定,torchshow 会自动将其重新缩放到 0-1 的范围。

要将预设更改为 ImageNet 归一化,可以使用以下代码:

ts.show(tensor, unnormalize='imagenet')

如果需要使用自定义的均值和标准差,可以使用以下命令:

ts.set_image_mean([0., 0., 0.])
ts.set_image_std([1., 1., 1.])

请注意,一旦设置完成,torchshow 将在后续的可视化中使用这些值。这非常有用,因为通常整个项目只会使用一种归一化预设。

12. 叠加可视化

在计算机视觉项目中,我们经常会处理场景的不同表示形式,包括但不限于 RGB 图像、深度图、红外图像、语义分割掩码、实例分割掩码等。有时,为了更好地理解数据,将这些不同的数据叠加在一起进行可视化会非常有帮助。自 v0.5.0 版本起,TorchShow 提供了一个非常实用的 API ts.overlay() 来实现这一功能。

在下面的例子中,我们有一张 RGB 图像及其对应的语义分割掩码。首先让我们使用 TorchShow 分别查看它们的外观。

import torchshow as ts
ts.show(["example_rgb.jpg", "example_category_mask.png"])

现在,我想将掩码叠加到 RGB 图像之上,以便获得更深入的洞察。使用 TorchShow,只需一行代码即可轻松完成。

import torchshow as ts
ts.overlay(["example_rgb.jpg", "example_category_mask.png"], alpha=[1, 0.6])

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架