Sense-X / UniFormer

[ICLR2022] official implementation of UniFormer
Apache License 2.0
828 stars 111 forks source link

Structure design for Video #90

Closed LEM0NTE closed 2 years ago

LEM0NTE commented 2 years ago

您好, 我关注到您的工作探索了local和global的结构设计, 从LLLL到GGGG. 我想基于您的这个实验测试GGGG的网络性能. 请问是把模型的四个stage都改为SABlock就可以了嘛? 同时看到你论文里说为了保证参数量和计算量的接近, 您使用了MViT的结构参数。但我用【1,2,11,2】测试的时候发现参数量和计算量高出了很多。所以想请问您对GGGG这个实验时采用的具体参数。包括网络层数,head_dim = 32等等。不知道您是否能提供训练时的train.sh以及train.yaml两个配置文件,这样会很清晰。感谢您的工作!

Andy1621 commented 2 years ago

因为我已经从之前的组里离职,当时的ablation实验没有保存对应的config,对于GGGG,在第一个和第二个stage使用肯定计算量会多很多的,所以需要使用MViT的结果,对KV的token进行下采样,MViT论文中使用的是dw conv进行下采样。 对于训练超参,都是一样的,不需要修改。

LEM0NTE commented 2 years ago

因为我已经从之前的组里离职,当时的ablation实验没有保存对应的config,对于GGGG,在第一个和第二个stage使用肯定计算量会多很多的,所以需要使用MViT的结果,对KV的token进行下采样,MViT论文中使用的是dw conv进行下采样。 对于训练超参,都是一样的,不需要修改。

首先感谢您的耐心解答。我查看了MViT的代码,他们在前三个stage都用了3*3,步长为8,4,2的卷积对KV进行下采样。但是他们的具体实现细节和SABlock略有不同。比如残差链接部分以及patch embed部分。所以您还记得在测试GGGG时,是严格按照MViT进行实现,还是只在SABlock上对KV做了一次卷积呢?此外他们的基础版本层数为【1,2,11,2】,您也是按照这个设置进行的测试嘛?希望您能对相关细节给尽可能详细的描述,再次感谢您的工作!祝您工作顺利!

Andy1621 commented 2 years ago

需要声明的是,作为ablation,并没有严格一致的设置,只能尽可能地保证相近计算量和参数量。 所以你说的,“stage”、“步长”、“层数”等,都是可以由你自己决定的变量,我当时是尽可能保持层数、计算量和参数量一致,由于层数对计算量影响较大,GGGG的层数会相对少一些,但都保证第二第三层较多,第一第四层较少。

最后的话,你可以明确一下你跑GGGG的目的,如果只是为了做ablation的话,并不需要也没有必要保持和我原论文一致的setting,但要尽可能保证计算量和参数量相似;如果是为了探究GGGG这种类型的结构,那你大可随意发挥的。

LEM0NTE commented 2 years ago

好的谢谢您~主要是因为我在尝试用四个SABlock来做训练的时候,模型收敛的速度相比LLGG明显慢很多。而且精度也差了不少,所以想尽可能还原您论文中的那种设置。 插句题外话,通过一系列的对比实验验证,Uniformer真的是非常棒的工作,再次感谢您的耐心解答~

Andy1621 commented 2 years ago

对的,GGGG的收敛和精度都会差不少。十分感谢你的尝试,有问题随时提问!