【发布时间】:2020-05-10 01:54:49
【问题描述】:
我有一个脚本,它生成一系列 matplotlib 图形并使用 TensorBoard SummaryWriter() 将它们写入磁盘。 TensorBoard 提供了移动一个小滑块以在图像序列中前后移动的能力,但我想将图像序列转换为视频或动画。有没有办法做到这一点?
编辑 1:这是我的代码当前所做的简化示例。我想把.add_figure写入日志文件的图片转换成gif。
import matplotlib.pyplot as plt
import numpy as np
from torch.utils.tensorboard import SummaryWriter
n = 200
nframes = 25
x = np.linspace(-np.pi*4, np.pi*4, n)
tensorboard_writer = SummaryWriter()
for i, t in enumerate(np.linspace(0, np.pi, nframes)):
plt.plot(x, np.cos(x + t))
plt.plot(x, np.sin(2*x - t))
plt.plot(x, np.cos(x + t) + np.sin(2*x - t))
plt.ylim(-2.5,2.5)
fig = plt.gcf()
tensorboard_writer.add_figure(
tag='temp',
figure=fig,
global_step=i,
close=True)
【问题讨论】:
-
你可以使用 imageio 或 matplotlib 的
FuncAnimation虽然我建议你不要在创建它们并将它们传递给动画师之间将图形写入磁盘,除非你想保存单个帧 -
FuncAnimation要求我同时将图像存储在内存中,对吧? -
从一组帧到单个视频文件的任何转换都需要在过程中的某个时间点将所有帧同时存储在内存中。在两者之间写入磁盘会产生冗余读取,除非您希望保留单个帧以及动画文件
-
是的,我知道写和读回内存需要冗余的写和读,但这就是我要找的。span>
-
好的,在这种情况下,您仍然可以使用 imageio 或 matplotlib 的
FuncAnimation。我将创建一个示例来演示
标签: image matplotlib animation video tensorboard