haihuangcode

Results 20 comments of haihuangcode

self.ema_weight / self.ema_count.unsqueeze(-1) 因为每次ema_weight和ema_count都被更新了,最后的embedding相当于这几个模态影响后的结果。除了最后一次赋值embedding,其他的确实没影响,这里是为了保持格式一样,不写也行。

> 感谢您的回答!请问在预训练过程中的acc大概能达到多少呢?改了一下CPC的架构,acc很低 audio-video两模态预训练,v2v和a2a接近100%,v2a和a2v>40%。 audio-video-text三模态预训练,这里英文文本是我们自己生成的,不是特别和原音视频匹配的,而且对齐时很随意,所以t2t低一点,我记得是v2v和a2a接近100%,t2t>70%,然后其他的比如t2a、a2v这种跨模态的一般是50%左右吧。

Thank you for your message. However, this project is not related to "Learning Probabilistic Existence-Nonexistence Evidence for Weakly Supervised Audiovisual Event Perception". It seems you may have reached out to...

1. NCE的初始值是很大的 2. 如果你的数据没有时间维度,我建议你换成InfoNCE来做对比学习,它相当于没有时间维度的CPC,CPC和InfoNCE的最大区别主要就在于时间维度上的预测。

你可以试试直接用别人实现的库:https://github.com/RElbers/info-nce-pytorch 下面是我举的一个例子,不一定正确,你可以参考一下,或者去看上面那个库里面的例子: pip install info-nce-pytorch from info_nce import InfoNCE infonce = InfoNCE() infonce_loss = infonce(x, y) 其中x, y的shape是[B, D]

> 你好!请教如下几个问题: 1)请问使用cross-CPC实现从模态A预测模态B,是在VQ之前还是之后?从论文的Fig.2中看,是先Cross-CPC,然后才是Multi-Modal VQ;但是从代码来看,Encoder的输出好像是已经对fetures进行了VQ 你好,论文里的Fig.2是一个思路图,不是对代码的完整复述。从代码的实现上,我们是先进行了VQ再进行Cross-CPC,参与Cross-CPC的并不是vq,而且semantic_result,所以vq并不会影响Cross-CPC,具体的代码你可以参考https://github.com/haihuangcode/CMG/blob/master/code/src/pretrain.py 的597-613行。

> > > 你好!请教如下几个问题: 1)请问使用cross-CPC实现从模态A预测模态B,是在VQ之前还是之后?从论文的Fig.2中看,是先Cross-CPC,然后才是Multi-Modal VQ;但是从代码来看,Encoder的输出好像是已经对fetures进行了VQ > > > > > > 你好,论文里的Fig.2是一个思路图,不是对代码的完整复述。从代码的实现上,我们是先进行了VQ再进行Cross-CPC,参与Cross-CPC的并不是vq,而且semantic_result,所以vq并不会影响Cross-CPC,具体的代码你可以参考https://github.com/haihuangcode/CMG/blob/master/code/src/pretrain.py 的597-613行。 > > 1)你好!意思是Encoder编码后既输出了semantic_result,也输出了vq。semantic_result输入到Cross-CPC进行基于时序的跨模态预测,vq用于更新每个模态对应的codebook,这样理解对吗? 2)最终的unified codebook是所有模态融合后的codebook,还是每种模态都有自己对应的codebook? 3)论文framework中的Multi-modal Vector Quantization模块是否对应着Multi-modal Exponential Moving Average (MM-EMA),实现两个模态的vq的对齐?MM-EMA的输出是一个vq feature还是两个或三个vq features?从论文的“Given a code...

> 感谢您的回复!仍有如下问题,请您帮忙分析: 1)通过CLUB-based MI Minization进行feature disentanglement时,在mi_first_forward()中,使用的是semantic results的VQ后的特征与encoder_results,为什么不是semantic_results与encoder_results?此外,为什么将输入的results均detach(),这样岂不是不更新所有对应的encoders?那计算loss有什么用处呢?如何实现disentanglement?mi_first_forward()的作用是什么?同时,mi_second_forward()中的audio_class, video_class, text_class为什么没有加在总loss中进行backward? 2) 下游任务只输入一个模态的流程:若推理仅输入video,则此video首先进入Encoder,从unified codebook中找到最近邻的表征;之后冻结Encoder,并使用此表征微调下游任务的线性层,即可。请问以上流程有问题吗?此外,若对,如何保证仅输入video至Encoder得到的unified codebook表征是正确的呢?CMG预训练时,并没有对仅输入单一模态时获取的unified codebook表征进行约束?举一个不太贴切的例子,赌王和他的四房太太有多个儿子,当输入赌王和x房太太时,能够确定其儿子是哪个;但当把x房太太遮挡住、仅输入赌王时,就无法确切的知道对应的准确儿子是哪个。不知道此例子和仅输入单个模态时,从unified cokebook中找索引是否贴切,是否会出现同样的问题? > > 再次感谢您的分析! 1) vq是经过Straight-through estimator的结果,带有semantic result的梯度,直接用semantic result也行,与Cross-CPC不一样,那边是考虑到早期vq还没法较高程度的代表semantic result,所有Cross-CPC是用semantic result而不是vq,这里的mi_first_forward互信息分离在每个大的整体forward里会执行多次(mi_iter)所有用vq也能收敛;detach()是以为mi_first_forward不是为了更新encoders,而是更新互信息分离部分的参数,这里使用的optimizer都是单独设置的,你仔细看看代码就知道了,更新encoders是mi_second_forward()的事;audio_class, video_class, text_class这些是有监督才需要的,我这里对比学习是无监督,所以没用。 2)上述流程没问题;你举得的这个例子属于模态缺失领域的问题,我在设计本工作时只是为了讨论更高程度的统一表征,对标的是类似CLIP的操作,所以如果你想解决模态缺失的问题,需要关注那个领域的工作。

Hi, the environment conflicts are mainly caused by the version inconsistency between the numpy library required by bert_embedding and other libraries. As far as I remember, I tried installing bert-embedding...

1. 一开始是用了CA的,后面发现不用也没影响(不过可能是模型的尺寸比较小,所以不需要),代码开源为了简单起见丢掉了CA。 2. perplexity我个人训练时没有很参考他,主要是看equal_num,而equal_num主要是用来可视化表征空间的,越高越好看,但不一定代表不同模态的分布对齐程度变高了;因为我在实验时发现equal_num变高下游效果不一定变好,因为如果不同模态量化到相近的code,没有完全相同,其实下游结果不会有明显区别,但是equal_num会明显变低;如果你想提升equal_num,可以调整MM-EMA这部分,对codebook的更新策略其实会更高程度影响equal_num。codebook中n的设置更多是与训练数据集的大小和语义丰富程度有关,数据量越多n相对需要越大。 3. quantized特征与直接使用semnatic差不多说明codebook能比较好地代表semantic了,理论上最好状态我可能没法给出答案,这与你任务的需求有关,可能直接看下游任务的表现可以作为一个指标。 下面是2篇其他工作的讨论: [Enhancing Multimodal Unified Representations for Cross Modal Generalization](https://scholar.google.com/citations?view_op=view_citation&hl=zh-CN&user=FKvBzQwAAAAJ&citation_for_view=FKvBzQwAAAAJ:0EnyYjriUFMC)这篇工作讨论了音频,视频,文本三模态统一表征时怎么根据模态本身的差异调整训练对齐的策略。 [Semantic Residual for Multimodal Unified Discrete Representation](https://scholar.google.com/citations?view_op=view_citation&hl=zh-CN&user=FKvBzQwAAAAJ&citation_for_view=FKvBzQwAAAAJ:hqOjcs7Dif8C)这篇工作讨论了表征空间的不同形式对于统一表征对齐程度的影响。