Yuxuan Zhang
Yuxuan Zhang
+ 1 是因为第一帧要么是图(来自视频第一帧复制得来) 或者空白的噪声(T2V)
是concat在latent,而且处理的是 8*N的部分在拼上前面的latent。我们在encode的时候,微调实现的逻辑是这样的。 latent初始化的时候是 21的形状。 如果是I2V,你准备8N长度的视频。代码复制视频第一帧变成 8N + 1。接着,vae encode。8N +1。 此时latent形状就是21。 如果是T2V,你准备8N长度的视频。vae encode 8N,latent[0]还是初始化的噪声。还是21。
在此进行确认: 首先,我们在训练的时候(post train)视频长度就是81。(8N + 1),有两种情况 1. 你的帧数超过了81,会直接裁剪前面的81帧。 2. 如果你的帧没有到81,会pad最后一帧都视频到81。 3. latent的第一个块要进行一次复制,不是对图像进行一次复制。 这一版代码我们在dev分支会进行更新,预计今天完成,
推理和训练并不相同。 用户想看到的其实是8N的视频,但是模型在postrain的时候,是使用8N + 1 训练的。 对于训练,则应该正常的使用8N + 1的视频长度座位数据集。正确的做法不应该是复制第一帧,而是把8N(假设N是6)的视频复制最后一帧(如果你的数据集都不足49, 比如你是43 的视频,则是pad最后一帧6次。 由于8N 和 8N + 1 只差距1帧率,导致之前在微调I2V的时候我们在测试迪士尼数据集的时候差距不大。忽略了这个问题。 正确的做法是,你可以准备任意长度的数据集,假设你的数据集是47帧,43帧,35帧,60帧(总帧)混合的数据集。他们在训练的时候都会变成49. 其中 47 pad 2个最后一帧,43pad6个,35 pad 14个,60的仅取前49帧。这样就行了。我们dev已经更新了最新的一个PR。 https://github.com/THUDM/CogVideo/pull/654
1. 这点操作是这样的 latent的形状是21,但是为了整除t patch,所以实际上推理中是22,所以要丢弃第一个latent来做vae,此时 4N + 1 被还原成了8N + 1.得到了81。这个确实是81(1.0 是49 且不存在pad 的问题,1.0版本没有tpatch,latent 应该就是13)。 2. 包含,images是你的首帧, 但是这一帧经过VAE重建,可能与原始图像完全相同。 3 如果你现在就要用,建议还是用dev,或者我们周末弄完确定合并PR后用main的版本。
Has this issue been resolved?
remove all of these two code and then pipe.to("cuda")
I would like to know what specific issue you encountered. Can you provide the error log?
It seems the issue lies in the frame rate settings. Have you tried fine-tuning with the unmodified config? It already requires 72GB, which means that any increase in length will...
No, we are currently fine-tuning the diffuser version, but this may take some time. Full fine-tuning with SAT requires multiple A100 machines to reduce it to 80G per card using...