SwanLab系列教程:用swanlab.Image记录图像

SwanLab是一个由国内团队开源的机器学习实验跟踪工具,相比于Tensorboard有更丰富的功能、更友好的UI界面,以及更重要的云端同步、多人协作功能。

安装:pip install swanlab

本教程主要介绍如何用swanlab.Image记录图像,支持numpy、pytorch tensor、PIL、文件路径、matplotlib等多种输入方式。

Image效果示例:
在这里插入图片描述
在这里插入图片描述

1. 从numpy array创建

记录单张图像:

import numpy as np
import swanlab

run = swanlab.init()

# 1. 创建一个numpy array
random_image = np.random.randint(low=0, high=256, size=(100, 100, 3), dtype=np.uint8)
# 2. 传入swanlab.Image
image = swanlab.Image(random_image, caption="random image")

run.log({"examples": image})

记录多张图像:

import numpy as np
import swanlab

run = swanlab.init()

# 创建一个列表
examples = []
for i in range(3):
    random_image = np.random.randint(low=0, high=256, size=(100, 100, 3), dtype=np.uint8)
    image = swanlab.Image(random_image, caption="random image")
    # 列表中添加swanlab.Image类型对象
    examples.append(image)

# 记录图列
run.log({"examples": examples})

2. 从PyTorch Tensor创建

swanlab.Image支持传入尺寸为[B, C, H, W]与[C, H, W]的Tensor。

import torch
import swanlab

run = swanlab.init()
···
for batch, ground_truth in train_dataloader():
    # 假设batch是尺寸为[16, 3, 256, 256]的tensor
    tensors = swanlab.Image(batch)
    run.log({"examples": tensors})

3. 从PIL Image创建

import numpy as np
from PIL import Image
import swanlab

run = swanlab.init()

# 创建一个列表
examples = []
for i in range(3):
    random_image = np.random.randint(low=0, high=256, size=(100, 100, 3), dtype=np.uint8)
    pil_image = Image.fromarray(random_image)
    image = swanlab.Image(pil_image, caption="random image")
    examples.append(image)

run.log({"examples": examples})

4. 从文件路径创建

import swanlab

run = swanlab.init()
image = swanlab.Image("path/to/file", caption="random image")

run.log({"examples": image})

swanlab.Image在默认情况下,是以png的格式做图像转换与存储。

如果想要用jpg格式:

image = swanlab.Image("path/to/file",
                      caption="random image",
                      file_type="jpg")

5. 对传入图像做Resize

在默认情况,swanlab.Image不对图像做任何尺寸缩放。

如果需要放缩图像,我们可以通过设置size参数,来调节图像尺寸。

放缩规则为:

  1. 默认: 不对图像做任何缩放

  2. size为int类型: 如果最长边超过size, 则将最长边设为size, 另一边等比例缩放; 否则不缩放

  3. size为list/tuple类型:

    • (int, int): 将图像缩放到宽为size[0], 高为size[1]
    • (int, None): 将图像缩放到宽为size[0], 高等比例缩放
    • (None, int): 将缩放缩放到高为size[1], 宽等比例缩放
print(im_array.shape)
# [1024, 512, 3]

im1 = swanlab.Image(im_array, size=512)
# [512, 256, 3]

im2 = swanlab.Image(im_array, size=(512, 512))
# [512, 512, 3]

im3 = swanlab.Image(im_array, size=(None, 1024))
# [2048, 1024, 3]

im4 = swanlab.Image(im_array, size=(256, None))
# [256, 128, 3]

6. 记录Matplotlib图表

import swanlab
import matplotlib.pyplot as plt

# 定义横纵坐标的数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# plt创建折线图
plt.plot(x, y)

# 添加标题和标签
plt.title("Examples")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

swanlab.init()

# 记录plt
swanlab.log({"example": swanlab.Image(plt)})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值