wangyuchi369 / LaDiC

[NAACL 2024] LaDiC: Are Diffusion Models Really Inferior to Autoregressive Counterparts for Image-to-text Generation?
https://arxiv.org/pdf/2404.10763.pdf
37 stars 2 forks source link

code #2

Open songbohui opened 6 months ago

songbohui commented 6 months ago

我现在想复现您在论文中基于COCO2014数据集的图像描述任务,我发现您提供的config.py文件,epoch与seqlen分别是10和80,这好像是拓展任务段落描述的参数,请问,我想实现基于COCO2014数据集的图像描述任务,都需要修改那些地方?

实验过程:我直接将config.py文件中的epoch和seqlen分别修改为论文中提到的的60和24,最后B-4结果只有24.9%。可能还需要修改其他地方,我并不知道,希望你看到能回复一下,谢谢!

wangyuchi369 commented 6 months ago

@songbohui 你好,感谢关注LaDiC! 或许可以关注一下结果的具体表现,比如生成的caption是句子不通顺还是和图片匹配度不高,loss是否收敛,是否下降正常?

关于对于超参数的调整,我们有以下建议:

  1. batch size: 现在config.py里bsz是为了debug方便,其实是过小的,您应该根据显存大小适当增大,例如,我们最少设置的为64,此外,我们是在8张V100上并行训练的,因此实际batch size应该为64*8。如果您的计算资源不足,建议调小一点学习率,可以参考这个tutorial
  2. var_dilate:这一参数主要是对噪声放缩,可以加快收敛速度,增强效果,参考自difformer,建议您开启(设为4或9)。
  3. 当前的inference步数是5,建议您增加这一步数,即调整coco_eval.py里的STEP
  4. 其他:可以尝试调整classifier free的weight,back$refine的back步数等

感谢您的建议!我们后续也会更新一版config.py

songbohui commented 6 months ago

我已经尝试修改了,我输出了每个batch后的loss。发现在15轮之后,loss基本就固定10左右,不变化了,分数也稳定在20+左右,请问您遇到过吗?或者怎么解决它?感谢!

wangyuchi369 commented 6 months ago

你好!

loss为10是相对正常的,我们的模型大概为8-9左右。尽管loss相对平稳了,也建议您继续训练下去,可以参考diffusion model的loss下降趋势是什么样的? - 小胖的AI图像复原的回答 - 知乎。建议至少训练60个epoch,考虑到不同batch size以及learning rate的影响可以尝试增多训练epoch数如120。

此外,我们也更新了一些代码中的训练和测试超参默认值,你可以check一下。

songbohui commented 6 months ago

感谢您的回答!我看您更新了config.py和coco_eval.py文件,我再次尝试一下。