Closed Wangchentong closed 4 months ago
Hi, are you sure there's no bug in your inference code? I wouldn't expect a noticeable difference between the two strategies. FrameDiff follows the original self-conditioning implementation while RFdiffusion trains self-condioning with one step forward (t+1) which I guess just works better. I honestly have no scientific explanation of why one would work better than the other. Keep in mind these are two very different training set-ups so what works for one will not necessarily work for the other.
I can't tell from your code snippet in which direction you're adding self-conditioning. Are you making sure you're not self-conditioning on t-dt?
i am kind of sure there is no bug(at least not found by myself after multiple check), diff_feats_t_prev is the diffused feature at time t as self_condtion input, diff_rigid_t is input of training created by a reverse step with dt from rigid_t_prev, I also did not expect this case, if you are also interested, you can try it and we can discuss later😃
Closing due to inactivity.
Hi, i notice the self-condition training strategy is FrameDiff is not same as in RFdifussion:
So i rewrite framediff code to the same logic in RFdifusion :
And i fix delta_t_range = [1] to only condition on one step
But this self-condition traning strategy gives obvious poor performance on secondary structure while training loss is almost same, which makes me rather confused:
Seems this self-condition strategy shows greater inconsistency between training and inference while from itution, it is is more consistent between training and inference and RFdifusion proves it can work.