Atten4Vis / MS-DETR

[CVPR 2024] The official implementation for "MS-DETR: Efficient DETR Training with Mixed Supervision"
Apache License 2.0
64 stars 3 forks source link

关于和DINO共用 #8

Open Peterande opened 2 months ago

Peterande commented 2 months ago

请问文中和DINO的对比,最好的结果是同时使用DINO和O2M吗?虽然加入O2M前几个epoch收敛加快了,但后期似乎不如直接使用DINO效果好?

Peterande commented 2 months ago

还有就是请问一下o2o matching的结果为什么还需要merge到o2m上,o2o一般代表candidate里最好的,不是应该必然出现在o2m里嘛

ZhaoChuyang commented 2 months ago

请问文中和DINO的对比,最好的结果是同时使用DINO和O2M吗?虽然加入O2M前几个epoch收敛加快了,但后期似乎不如直接使用DINO效果好?

你好~请问您说的是与DINO结合的实验吗,我们是在 Deformable-DETR++ 的基础上加入了 O2M (-> MS-DETR) 和 DINO 的 CDN 模块训练的。

还有就是请问一下o2o matching的结果为什么还需要merge到o2m上,o2o一般代表candidate里最好的,不是应该必然出现在o2m里嘛

是的大部分的情况下 o2o 的结果都是包含在 o2m 当中的。但是也存在一些情况,由于 o2o 是使用匈牙利算法匹配得到的全局最优的结果,所以对于某一个特定的 GT,其匹配上的 query 并不一定是得分最高的(该 query 可能被其他的 GT 抢占)。另外由于 o2m 匹配会去除得分低于阈值的匹配结果,这会导致某些 GT 没有匹配上任何的 query。所以 o2o 和 o2m 的匹配结果之间可能会存在不一致的情况,由于最终预测是使用 o2o 的结果,所以这里把 o2o 的结果 merge 到 o2m 的结果中,避免两个分支训练时可能产生的不一致情况。但是这对最终性能的影响很小。

Peterande commented 2 months ago

你好~请问您说的是与DINO结合的实验吗,我们是在 Deformable-DETR++ 的基础上加入了 O2M (-> MS-DETR) 和 DINO 的 CDN 模块训练的。

我在DINO的基础上额外引入O2M,将CA和SA调换(impl.c) ,共用同一组Heads将CA和FFN的输出分别编码成Preds。并保证了只对原始的300个query(不对denoising queries) 进行O2M监督,在前几个epoch确实有显著收益(这可能与额外的监督有关)。但在中后期开始性能不如原始的DINO。是因为超参或者其他什么地方没注意导致的嘛?

Peterande commented 2 months ago

你好~请问您说的是与DINO结合的实验吗,我们是在 Deformable-DETR++ 的基础上加入了 O2M (-> MS-DETR) 和 DINO 的 CDN 模块训练的。

我在DINO的基础上额外引入O2M,将CA和SA调换(impl.c) ,共用同一组Heads将CA和FFN的输出分别编码成Preds。并保证了只对原始的300个query(不对denoising queries) 进行O2M监督,在前几个epoch确实有显著收益(这可能与额外的监督有关)。但在中后期开始性能不如原始的DINO。是因为超参或者其他什么地方没注意导致的嘛?

我好像找到一个可能的原因,我再继续跑几组实验试试,谢谢您

xianjiez commented 3 days ago

您好,DINO+O2M的试验后来有效果吗?我在DINO上加上O2M,性能下降挺多,不知道是不是哪里有问题