haihuangcode

Results 20 comments of haihuangcode

非常感谢您的仔细阅读,我稍后将修复这个问题。

谢谢你的提问。CPC.py里面有2个类,分别是Cross_CPC和Cross_CPC_AVT,前者是用于2个模态(比如audio-video、audio-text、video-text)等,后者是用于3个模态,pretrain.py第599行默认用的Cross_CPC_AVT,如果你需要用Cross_CPC的话可以仿照这修改下输入,把pretrain.py第599行里的text_semantic_result去掉,以及pretrain.sh里的dataset_name更改成‘vggsound_AT’等,别的地方可能也有需要调整输入输出的,因为代码默认用的3模态,对照着修改就行。如果给你造成了麻烦我很抱歉。

Thank you for your interest in our work. You can refer to this section written in the note part of my readme.md: "For the video and audio feature extraction method,...

> Your work is really great. I wnat to know the feature extraction of texts? bag-of-words or other tokenizers? In my code, I'm using the BERT model from this source:...

Hello, thank you for your interest in our work. The code only uses feature reconstruction in the loss function, classification is there but does not contribute to the loss. This...

> 您的模型在训练过程中,lld_loss是否是逐渐收敛的,还是稳定在一个范围? lld_loss是逐渐收敛的,如果我没记错的话,video的lld_loss会收敛到-256,text和audio的lld_loss会收敛到-128,这应该会随着您模型的改变而有区别,但是只要能到具体的某个值应该就是正常的。 > 在mi_loss的反向传播中,mi_net的参数是否更新? lld_loss影响mi_net,mi_loss影响其他部分的模型,2边是独立的。所以在mi_loss的反向传播中,mi_net的参数不会更新。 > mi_loss的训练过程大概如何,是否收敛? mi_loss会逐渐收敛至接近0 我在进行一些尝试时也出现过mi_loss非常大的情况,这通常意味着互信息分离失败。可能是当前的编码器不够强,也可能是互信息分离的次数不够多(即代码里的mi_iters),或者(您所尝试的)模型设计有问题。 当然!如果您有任何其他问题或需要更详细的解释,请随时回复我。我会尽量帮助您解决问题。

> 您好,关于mi_loss我有一个相反的问题。在使用自己的数据集之后,从训练开始mi_loss的值就一直在0附近,在整个训练过程中变化很小,最后做跨模态匹配的效果不太理想。不知道您在前期实验过程中是否遇到过这样的问题,非常感谢您能为我答疑解惑! 只要lld_loss和mi_loss都正常的话,说明模态自身的分离应该是成功的,但跨模态匹配的效果还取决于对齐部分的情况,你的模型和这边是类似的吗?如果是的话,会不会是模态对齐部分没有训练好?你可以提供更多细节,以方便我们进一步讨论。

> 您好,在我的训练过程中mi_loss和lld_loss会变成负值,这正常吗?按理说CLUB的loss应该都是正值?具体来说,我有两个模态,一个模态的mi_loss会越来越大(正值),一个模态的mi_loss会越来越小(负值) lld_loss是负值是正常的,mi_loss的话如果是非常接近0应该也算正常?如果是绝对值很大的负数那肯定是不正常的。主要看loss是不是收敛至某个值,mi_loss最好能接近0,lld_loss的话接近某个值(这个和模型有关)就行。 mi_loss如果是绝对值很大的负数,那它和很大的正数应该是类似的问题,这通常意味着互信息分离失败。可能是当前的编码器不够强,也可能是互信息分离的次数不够多(即代码里的mi_iters),或者(您所尝试的)模型设计有问题。

音频和视频一般都是对齐的吧?文本的话我在代码里是用lstm强行给他序列化到与其他模态一致的长度。 如果你想要利用长度不同的模态进行模型的预训练,有2种选择:1、将所有模态长度对齐,不过这样可能导致语义不一致的内容强制对齐从而效果不好,具体看怎么做了。2、将所有模态的序列长度都压缩为1,平均或者卷积之类的都行,然后对比学习用InfoNCE或者其他方式,不使用需要序列的CPC。 如果你不是需要重新预训练,而是想直接通过feat得到vq,直接调用AVT_VQVAE_Encoder类中的Audio_VQ_Encoder、Video_VQ_Encoder、Text_VQ_Encoder这几个函数就行。 如果回答对你有帮助,可以帮忙点个star。

> 因为音频特征是用VGGISH提取的,视频特征是用I3D提取的,所以导致相同的视频提取的音频特征和视频特征的序列长度不一致。那将所有模态的序列长度都压缩为1,平均或者卷积之类的都行,然后对比学习用InfoNCE或者其他方式,不使用需要序列的CPC,语义对齐效果是不是差不多 我之前有试过直接把模态序列平均后的结果用InfoNCE对齐,印象里是有接近CPC的水平的,不过你这边换了提取特征的方式我就没法保证了。