wenet-e2e / wespeaker

Research and Production Oriented Speaker Verification, Recognition and Diarization Toolkit
Apache License 2.0
664 stars 112 forks source link

resnet #207

Closed JINzezhong7 closed 10 months ago

JINzezhong7 commented 10 months ago

非常感谢您的代码,我想问一下resnet model中,为什么会有一个two_emb_layer的参数,为什么会返回两个值。我印象中resnet返回embedding就OK了 这样做的意义是什么。期待您的回答

JiJiJiang commented 10 months ago

历史遗留问题哈,最开始在基于tdnn的xvec paper中,也是两层的embedding层,embed a和embed b,所以我们最开始在resnet中也支持了两层的结构,后面实验结果发现其实差别不是很大

JINzezhong7 commented 10 months ago

谢谢回答,请问你在dino训练的过程中resnet和ecapa的时间接近吗。我发现我使用resnet34明明模型比ecapa小但是显存确占很多且训练比ecapa慢很多

JiJiJiang commented 10 months ago

只看模型大小意义不大哈,resnet是二维卷积结构,ecapa是一维卷积,所以参数差不多前提下,resnet计算量可能更大

wsstriving commented 10 months ago

关于第一个问题除了JiJiJiang 提到的历史原因外,还有一个是我们其实发现如果用margin-based softmax 的时候只保留一层直接对embedding 优化比较好,也适合后续的打分;softmax 的话两层取 embed_a 可能更适合plda 打分一些。

第二个原因也正如 JiJiJiang 所述,根据我们之前测过的情况来看,大概的占用对比如下: Architecture Params (M) Memory (G) MACs (G)
ECAPA-TDNN(C1024) 14.85 0.354 21.27
ResNet34 6.700 1.054 36.75