Skip to content

Commit

Permalink
update log-media
Browse files Browse the repository at this point in the history
  • Loading branch information
Zeyi-Lin committed Jun 21, 2024
1 parent 964abdc commit fe7f70b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 21 deletions.
Binary file added assets/log-media-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/log-media-text.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 43 additions & 21 deletions zh/guide_cloud/experiment_track/log-media.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
# 记录多媒体数据
# 记录媒体数据

SwanLab 支持记录多媒体数据(图像、音频、文本等)以直观地探索你的实验结果,实现模型的主观评估。
SwanLab 支持记录媒体数据(图像、音频、文本等)以直观地探索你的实验结果,实现模型的主观评估。

## 图片
## 1.图像

`swanlab.Image` 支持记录多种图片类型,包括 numpy、PIL、Tensor、读取文件等。[API文档](/zh/api/py-Image)
`swanlab.Image` 支持记录多种图像类型,包括 numpy、PIL、Tensor、读取文件等。[API文档](/zh/api/py-Image)

![](/assets/media-image-1.jpg)

::: warning
建议每个 step 记录少于 50 个图像,以防止日志记录成为训练期间的耗时瓶颈,以及图像加载成为查看结果时的耗时瓶颈。
:::

### 记录 Array 型图片
### 1.1 记录 Array 型图像

Array型包括numpy和tensor。直接将 Array 传入 `swanlab.Image`,它将根据类型自动做相应处理:

Expand All @@ -26,7 +22,7 @@ image = swanlab.Image(image_array, caption="左图: 输入, 右图: 输出")
swanlab.log({"examples": image})
```

### 记录 PIL 型图片
### 1.2 记录 PIL 型图像

直接传入 `swanlab.Image`

Expand All @@ -35,7 +31,7 @@ image = PIL.Image.fromarray(image_array)
swanlab.log({"examples": image})
```

### 记录文件图片
### 1.3 记录文件图像

提供文件路径给 `swanlab.Image`

Expand All @@ -44,7 +40,7 @@ image = swanlab.Image("myimage.jpg")
swanlab.log({"example": image})
```

### 记录 Matplotlib
### 1.4 记录 Matplotlib

`matplotlib.pyplot``plt` 对象传入 `swanlab.Image`

Expand All @@ -64,7 +60,7 @@ plt.ylabel("Y-axis")
swanlab.log({"example": swanlab.Image(plt)})
```

### 单步记录多个图像
### 1.5 单步记录多个图像

单步记录多个图像即在一次 `swanlab.log` 中,传递一个由 `swanlab.Image` 类型对象组成的列表。

Expand All @@ -82,26 +78,26 @@ swanlab.log({"examples": image_list})

关于图像的更多细节,可参考[API文档](/zh/api/py-Image)

## 音频
## 2. 音频

[API文档](/zh/api/py-Audio)

![](/assets/media-audio-1.jpg)

### 记录 Array 型音频
### 2.1 记录 Array 型音频

```python
audio = swanlab.Audio(np_array, sample_rate=44100, caption="white_noise")
swanlab.log({"white_noise": audio})
```

### 记录音频文件
### 2.2 记录音频文件

```python
swanlab.log({"white_noise": swanlab.Audio("white_noise.wav")})
```

### 单步记录多个音频
### 2.3 单步记录多个音频

```python
examples = []
Expand All @@ -114,24 +110,50 @@ for i in range(3):
run.log({"examples": examples})
```

## 文本
## 3. 文本

[API文档](/zh/api/py-Text)

### 记录字符串
### 3.1 记录字符串

```python
swanlab.log({"text": swanlab.Text("A example text.")})
```

### 单步记录多个文本
### 3.2 单步记录多个文本

```python
# 创建一个空列表
image_list = []
text_list = []
for i in range(3):
text = swanlab.Text("A example text.", caption=f"{i}")
text_list.append(text)

swanlab.log({"examples": text_list})
```

![alt text](/assets/log-media-text.png)


## Q&A

### 1. caption参数有什么作用?

每一个媒体类型都会有1个`caption`参数,它的作用是对该媒体数据的文字描述,比如对于图像:

```python
apple_image = swanlab.Image(data, caption="苹果")
swanlab.log({"im": apple_image})
```
<img src="/assets/log-media-image.png" width=400, height=400>


### 2. 想要媒体数据和epoch数同步,怎么办?

在用swanlab.log记录媒体数据时,指定`step`参数为epoch数即可。

```python
for epoch in epochs:
···
swanlab.log({"im": sw_image}, step=epoch)
```

0 comments on commit fe7f70b

Please sign in to comment.