Torchshow只需一行代码即可可视化您的数据。它旨在帮助调试计算机视觉项目。
Torchshow自动推断张量的类型,如RGB图像、灰度图像、二值掩码、分类掩码(自动应用调色板)等,并在需要时执行必要的反归一化。
支持的类型:
- RGB图像
- 灰度图像
- 二值掩码
- 分类掩码(整数标签)
- 多张图像
- 视频
- 多个视频
- 光流(由flow_vis提供支持)
v0.5.1新特性
- 修复
np.int
弃用问题。 - 可在可视化张量列表时指定
nrows
和ncols
。 - 修复保存图像时出现的意外空白。
查看完整的更新日志。
安装
从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参考。
示例
目录
- 可视化图像张量
- 可视化掩码张量
- 可视化批量张量
- 可视化特征图中的通道
- 使用自定义布局可视化多个张量
- 检查像素的丰富信息
- 将张量可视化为视频剪辑
- 在Jupyter Notebook中显示视频动画
- 可视化光流
- 更改通道顺序(RGB/BGR)
- 更改反归一化预设
- 叠加可视化
1. 可视化图像张量
可视化类图像张量并不困难,但可能会很繁琐。您通常需要将张量转换为具有适当形状的NumPy数组。在许多情况下,图像在数据加载器中被归一化,这意味着您必须对其进行反归一化才能正确显示。
如果您需要经常验证张量的外观,TorchShow是一个非常有用的工具。
使用Matplotlib | 使用TorchShow |
---|---|
图像张量已被归一化,所以Matplotlib无法正确显示它。 | TorchShow自动进行转换。 |
2. 可视化掩码张量
对于与语义分割或实例分割相关的项目,我们经常需要可视化掩码张量——无论是真实标注还是模型预测。使用TorchShow可以轻松完成这一任务。
使用Matplotlib | 使用TorchShow |
---|---|
不同实例具有相同的颜色。某些类别缺失。 | TorchShow在可视化过程中自动应用调色板。 |
3. 可视化批量张量
当张量是一批图像时,TorchShow会自动创建网格布局来可视化它们。也可以手动控制行数和列数。
4. 可视化特征图
如果输入张量有超过3个通道,TorchShow将会像批次可视化一样可视化每个通道。这对于可视化特征图很有用。
5. 使用自定义布局可视化多个张量
TorchShow提供了更灵活的方式来使用自定义布局可视化多个张量。
要控制布局,将张量放入列表的列表中作为二维数组。以下示例将创建一个2 x 3的网格布局。
ts.show([[tensor1, tensor2, tensor3],
[tensor4, tensor5, tensor6]])
值得一提的是,不需要填满网格中的所有位置。以下示例在2 x 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
对象,默认情况下可能无法在notebook中显示。以下示例展示了一个简单的技巧来显示它。
import torchshow as ts
from IPython.display import HTML
ani = ts.show_video(video_tensor)
HTML(ani.to_jshtml())
9. 可视化光流
TorchShow支持可视化光流(由flow_vis提供支持)。以下是使用VSCode调试器远程连接到SSH服务器(配置了X-server)的演示。在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])