SunnyHaze / IML-ViT

Official repository of paper “IML-ViT: Benchmarking Image manipulation localization by Vision Transformer”
MIT License
184 stars 23 forks source link

about implementation of CAT-Net Protocol #14

Closed linohzz closed 5 months ago

linohzz commented 5 months ago

作者您好: 请问您最新公布的关于CAT-NET的checkpiont,是指在CAT-NET的数据集上(约80多万张图片)重新训练的吗? 如果是的话,请问预训练权重还是MAE的VIT-base吗? 期待您的回答.

SunnyHaze commented 5 months ago

您好,感谢您对于我们工作的关注!

请问您最新公布的关于CAT-NET的checkpiont,是指在CAT-NET的数据集上(约80多万张图片)重新训练的吗?

是的,但是特别需要注意CAT-Net和TruFor都用了一个很特殊的方式训练,用于平衡数据集的不均匀并减少训练开销。即每个epoch只从每个数据集数据集采样1800多张图片,总共的一个epoch实际上只有1万多张图参与训练。可以参考这里https://github.com/mjkwon2021/CAT-Net/blob/main/Splicing/data/data_core.py#L26 ,在CAT-Net的论文中也提及了这一点。

如果是的话,请问预训练权重还是MAE的VIT-base吗?

是的,MAE在我们的消融实验里被证明非常有效,这里依然使用了MAE pre-train初始化。

希望能解答你的问题!

linohzz commented 5 months ago

“每个epoch只从每个数据集数据集各采样1800多张图片,总共的一个epoch实际上只有1万多张图参与训练“ 是指: (1)第1个epoch和第2个epoch都是训练的同样的一万张图片 还是指 (2)每一个epoch都随机的在总数约80w张图片中随机采样,也就是说每个epoch训练的图片是不一样的。 我对此有疑问,您能帮我解答吗?感谢!

SunnyHaze commented 5 months ago

两点说的都不完全正确。

是总共有9个大的数据集用于训练,每个epoch由如下方式构成:

这个随机是动态的,每一个不同的Epoch涉及到的图片是不同的。但是又不是完全随机,每一个不同的数据集之间采样的图片数量是“均匀的”(balance)

如果还是不好理解,请详细阅读下列代码,并关注这里索引的这个self.smallest变量的行为。

论文原文: image

代码方面重点关注这个变量: https://github.com/mjkwon2021/CAT-Net/blob/7f7c19146e6d43e4af808edae3e6cc0bb6159590/Splicing/data/data_core.py#L64C1-L64C65

linohzz commented 5 months ago

我理解了,谢谢。

linohzz commented 5 months ago

作者您好,我尝试为我自己的方法,修改为CAT-NET的训练策略(即:每个epoch更新不同的样本),但未实现。 请问,您在训练80w张图片时,也是用的这个策略吗?您方便提供IML-VIT针对cat-net的数据加载代码吗?

SunnyHaze commented 5 months ago

您好! 我最近有点忙,你给我个邮箱我发你一个我用的,或者你发一个邮件到我邮箱xiaochen.ma.cs@gmail.com说明是你即可。但是可能需要你自己适配一下。后续可能这个月底会考虑整理后添加到仓库里。

linohzz commented 5 months ago

已经发送邮件到您的邮箱,非常感谢