经过漫长的调整,目前对opensora i2v任务的目标就两个,一个i2v_adapter,一个ip_adapter。
不改架构微调,是基本不可能了。
一方面,模型本身,质量不过硬,i2v任务中缺少的不是画面质量什么的,而是本身对首帧低级信息保存的不得行。大规模优质的数据集微调下来,应该是能改善的,但……
一方面,数据集,好的视频数据集难找,竖屏的更难,快手的大多剪辑痕迹还是太重,速切镜头,对场景分割挑战较大,包括字幕或三段式等因素,爬出来能用的十不存一,还得看国外的pexels,但里面关于亚洲人的视频又少得可怜,只能尽量互补。同时找到了数据集还要先预处理,硬盘先遭受不住,难上加难。
现在唯一的出路就只剩下,对模型架构本身做些改动,争取用小的代价实现i2v效果改善。
目前可取的i2v_adapter,算是能改到dit架构上最符合当前艰苦条件的方法。
反正没人和我唠这块,先在这里写写字,理理清之前做了什么,之后能做什么。
之前做了什么:
- 数据处理管线算是大致完工了,包括对爬取的生视频进行筛选,打分,再筛选,还有训练前的预先提取特征,反正t5在,只能先预先提取完特征再训练了。
- 训练架构大概也改完了,i2v_adapter就是在原msa旁边再复制了一个,q用一样的,但kv只取视频第一帧的信息,下面还有一个content_adapter,本质上就是ip_adapter,在原来的cross_attn旁边,复制一个,但里面传进去的,是与文本embedding对齐的图像embedding。
之后要做什么:
- 数据处理管线里面有些地方还要斟酌,比如视频打标的底膜,要不要加clip文本相似性判断速切,场景切割后要不要再根据时间去切……看着比较多,实际确实多,但个人感觉这些有提升,但没那么多,优先级可以再向后稍稍。
- 训ip_adapter之前还需要训练个帮着让image_embedding与t5 embed后对齐的img_embedder,大致任务时让(1,257,1280)- 》(1,16,1152)后面的16是我们想提取的特征channel数,后面也可以再改,这里模型选取传统的iamge_projection的linear+ln,还是resampler的查询变化器,个人更偏向resampler,但可能还是要做做实验。
- 训完img_embedder,再训ip_adapter,数据集大小根据论文和之后flux ip-adapter训练的情况,最少是512*512 50k,1024*1024 25k,可惜flux的ip_adapter效果不是很好,训练代码也没给,估摸着还是得0.1M往上走估计才有较好的效果。 x
- We firstly train P and the newly injected image cross-attention layers based on SD, with 1000K steps on the learning rate 1 × 10−4 and valid mini-batch size 64. Then we replace SD with VideoCrafter and further fine-tune P and spatial layers with 30K steps for adaptation, and additional 100K steps with image concatenation on the learning rate 5 × 10−5 and valid minibatch size 64.参考Dynamic Crafter的做法直接img_embedder和ip_adapter就完事了,大致训练过程如上,但这loss该怎么改,难道直接用吗?
- 现在是在小数据集,没有ip_adapter的情况下去训练i2v_adapter看看能不能收敛。已经9k步了,有一点点收敛的迹象,实在不行再跑一天,16个样本的数据集都要拟合这么久,再大一点我都不想,不过如果真能拟合,后面就该把学习率往上提一提了。
- i2v_adapter的帧类似先验,试着去加了,但一片模糊,应该是哪里写错了或者应用早了,或者是和现在的rf不对付,理论上是挺好的,但毕竟只加快速率和不确定地提高些质量,这个也先等到训练完再试试吧。
- 数据集上确实是kling和vidu商业平台上生成出的结果最合适了,可惜可用次数有限,别的用户的又不能爬,日积月累,不知道要到何时。至于其他平台像cogvideo甚至不支持多分辨率,对竖屏的支持聊胜于无,以及国外的一些,虽然效果是好的,但对中国人的特征会在视频中消失,而外国的这种现象会小很多,所以说数据集还是很重要的。
大概如此,总之当务之急实现验证能否收敛,能收敛了上面说的一个一个做下去,不能收敛,又得去看看架构有没有改错。训练的时候,多手写下基础框架啊,看看新论文,学习新思想啊,急是急不来了。
9.3 18:34 ,现在1个样本的数据集在600步中保持下降趋势,不存在明显的来回震荡了。
简单分析一下:一个能进行拟合,而16个拟合不了。要么是模型的能力不行;要么是数据集里有怪东西。
后面的,经检验至少数据层面上没有坏值,不过也确实有可能是有几个样本运动幅度太大了。
前者,现在想想也有可能,毕竟还没ip_adapter训练出来,70M左右的参数去调整1B多的模型还是有难度的。检验它有没有效还要看一个样本的训练能不能直接过拟合,最好直接出训练集的内容。
这周要做的,还是要放慢,从最基础一步一步检验消融坐上来:
- 一个样本的训到跟训练集里的基本一致。不能的话,就说明现在改的模型的极限就到这了,还得看看其他论文或新的项目。
- 一个样本加到4、8个,如果结果和上面差不多,把动作过大的去掉,再扩大数据集大小训练。
- 给现在的训练代码增加validation loss部分,一定epoch检测一下可视化结果
本文地址: OpenSora I2V调优(2)
您必须 登录 才能发表评论