Closed qq1332427275 closed 2 months ago
感谢你对我们工作的关注!
我们在构造数据集时,都是根据各个帧的AU求和,进而找到最大值对应的帧,作为峰值帧。根据AU从所有帧中找出最具有代表性的帧,以及对应的表情描述。
抱歉给你带来的困惑,我们将在后续的版本中阐述清楚。
你好~还有一个小疑惑,目前检测AU为什么都使用Openface呢?很多在AU任务上准确率高的模型为什么不被使用呢?是因为Openface泛化能力更高一些吗?
首先,OpenFace 因其较高的知名度,通常成为在 AU 检测任务中的首选工具。其次,它的功能非常完善,可以直接从视频中检测并裁剪人脸,大大简化了 AU 检测的流程。最后,OpenFace 的操作相对简单,易于上手。
当然,也有一些在 AU 任务上表现更为优异的模型,只是它们的知名度可能不如 OpenFace 高。可以考虑探索一下这些最新的研究成果,看是否能够帮助提升模型性能。
了解了!还有个小问题:我在文章中并未找到您构建 MERR 数据集相关的 prompt,即您输入 llama3 用于生成多模态描述内容的上下文 prompt,可能是我没注意到,您可以提供给我吗?非常感谢您的阅读!
我们在文章中的table 9中展示了用于生成多模态描述内容的上下文 prompt例子,包括System,Question。
看到了此方面的内容,但我还想进一步学习,您能提供关于对audio提取和视觉部分使用的minigpt的prompt吗?十分感谢您的回复!
QWen-Audio prompt:
'Does this person in audio speak with a [angry, cheerful, crying, laughter, heartbroken, whispery, trembling, skeptical, astonished, repulsed, sorrowful]?'
The prompts of MiniGPT-v2:
"What do you see in the image? Please describe it using words only.",
"Please describe the content of the image.", ....
以上是我们工作之前使用到的prompt。最近我们也在继续探索不同的prompt,合适的prompt可以让模型的标注内容更加准确。
了解了!请问您是否尝试过直接对音频使用详细描述的prompt呢?类似于”Please concisely analyze the emotions in this audio and summarize it ”?之类的方式?效果会更差吗
还有个小问题就是您在提取视频峰值帧的AU时,是先将视频中的人脸提取,得到人脸图片后再得到图片的AU的吗,那部分数据集中有多个人脸时该如何处理呢?还有就是您对unlabel数据集的过滤是根据什么呢?除了均衡样本类别外,还有什么其他条件吗?十分感谢您!
1.是的,使用OpenFace可以直接输入视频得到不同帧提取好的人脸和AU信息。 2.我们使用的数据集的样本几乎全是单个人物,所以没有考虑过多个人脸时该如何处理。 3.先给无标签样本的一个伪标签,判断伪标签与对应AU信息是否匹配(happy => [“AU06”, “AU12”, “AU14”]); 然后使用大模型llama-3或者ChatGPT组合视觉,音频和文本线索,如果大模型输出线索直接有冲突,就把对应的样本筛选掉。
了解了解!十分感谢您百忙之中的回复,但我还有以下疑惑,您的回复对我的帮助很大,祝您中秋佳节快乐!一切顺利!
了解了!请问您是否尝试过直接对音频使用详细描述的prompt呢?类似于”Please concisely analyze the emotions in this audio and summarize it ”?之类的方式?效果会更差吗
中秋节快乐!
qq1332427275 @.***> 于2024年9月16日周一 12:01写道:
了解了解!十分感谢您百忙之中的回复,但我还有以下疑惑,您的回复对我的帮助很大,祝您中秋佳节快乐!一切顺利!
了解了!请问您是否尝试过直接对音频使用详细描述的prompt呢?类似于”Please concisely analyze the emotions in this audio and summarize it ”?之类的方式?效果会更差吗
— Reply to this email directly, view it on GitHub https://github.com/ZebangCheng/Emotion-LLaMA/issues/12#issuecomment-2351981730, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHY5NXZC55MHLMG2PFQFPH3ZWZJYJAVCNFSM6AAAAABNNZQA52VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJRHE4DCNZTGA . You are receiving this because you modified the open/close state.Message ID: @.***>
我还有一个疑问您好像没有看见, 您是否尝试过直接对音频使用详细描述的prompt呢?类似于”Please concisely analyze the emotions in this audio and summarize it ”?之类的方式?效果会更差吗? 除此之外,该unlabel数据集貌似没有提供官方的字幕文本,您是使用qwen还是其他大模型提取的吗?如果是中文也直接让大模型输出英文吗?这是我目前想到的方式。我最近在进行这部分工作,所以很期待您的答案!
一开始尝试的就是类似”Please concisely analyze the emotions in this audio and summarize it ”的prompt,个人感觉输出的音频描述效果较差。
我使用的是ASR提取的中文字幕,具体的代码可以参考MER2023 baseline中的generate_transcription_files_asr()和refinement_transcription_files_asr()函数。
https://github.com/CASIA-Affective-Computing-Group/MER2023-Baseline/blob/master/main-baseline.py
在后面的工作中也尝试使用QWen-Audio模型提取中文字幕,个人感觉效果差不多,准确的提高了一点点。提取中文字幕后,使用百度翻译API翻译为英语。
请问您在文章中对encoder的消融实验是如何实现的呢?每个encoder的消融均是单独预训练再微调得到的结果吗,比如只有audio encoder时,也是只有audio encoder进行预训练,再进而微调得到的结果吗?
嗯嗯,是的,每个encoder的消融都是单独训练的。比如在audio encoder,就只加载了audio encoder的特征,而其他encoder的特征就设置为0向量。
您好,请问您有公开pretrain的yaml文件吗,我目前只看见了finetune的yaml文件,如果公开了请告诉我,十分感谢您!
还有一个疑惑想向您请教,您使用encoder的倒数第二层得到的feature作为输入,而使用encoder的最后一层得到的token作为llm的输入,这两种方式有什么区别吗?您是否尝试过将token作为输入呢?因为我对此没有细致的研究,期待您的解答,十分感谢!
还有一个疑惑想向您请教,您使用encoder的倒数第二层得到的feature作为输入,而使用encoder的最后一层得到的token作为llm的输入,这两种方式有什么区别吗?您是否尝试过将token作为输入呢?因为我对此没有细致的研究,期待您的解答,十分感谢!
抱歉。我没有理解这个问题的含义,能重新解释一下你的问题吗?这个工作的所有encoder都是使用使用encoder的最后一层得到的feature作为llm的输入。你能告诉我你说的倒数第二层得到的feature或者token指的是什么?
ok,我可能描述的不是很准确,十分抱歉!我的意思是您现在的video、audio特征是来自于vision encoder的输出层前一层,也是它的最后一层,每个视频样本对应的维度可能是(3,1024)(三个encoder拼接后),而比如llava使用的是vision encoder最后一层后的token输出,比如是(576,1024),代表有576个token进入了llm。 请问您有尝试过使用上述类似token输入给llm的结果吗?这两种方式有何区别呢?期待您的回复~
我们提取的所有特征都是来自于Encoder的最后一层,我们对不同的特征进行处理,所以有些特征的维度变成了[1, 1024].
我们一共包含4个Encoder: Audio, Temporal, Local, Global.
以上所有的特征的都会经过映射层,转化为统一的维度4096,最终输入到llm的token数量如下: Audio Encoder[1, 4096] +Temporal Encoder[1, 4096] + Local Encoder[1, 4096] + Global Encoder[1, 4096]-[256, 4096] + Instruction Token[x, 4096]
具体的实现可以参考我们的项目代码。
您好,我使用openface提取特征的时候,发现有一些AU是有值的,有一些AU是会用0和1判断存不存在,我想知道您在选择峰值帧的时候是使用前者的和还是所有的AU的和呢,谢谢您
每个AU有两个值(例如 AU01_r和 AU01_c),我的理解是‘_r’是AU微表情动作的值,'_c'是AU微表情是否促发(0或1)。对于每个面部肌肉来说都可能有轻微的动作,对应‘_r’的值较小,没有超过OpenFace设定的阈值,那么'_c'的值就是0。
在这个项目中,如果某个AU的'_c'的值是0,我们就认为人脸没有这个AU动作。如果某个AU的'_c'的值是1,我们才考虑将这个AU的‘_r’的值和其它AU的值相加。
了解了,谢谢您。在论文中我还有一个疑问,就是在构建数据集的时候,一个AU对应了多个不同的文本描述,我想询问一下如果我的峰值帧存在这个AU,AU映射的时候是对于不同的文本描述随机选择一个吗
了解了,谢谢您。在论文中我还有一个疑问,就是在构建数据集的时候,一个AU对应了多个不同的文本描述,我想询问一下如果我的峰值帧存在这个AU,AU映射的时候是对于不同的文本描述随机选择一个吗
是的。AU映射是随机选取一个对应的面部表情描述。
作者您好,我在代码中看到您输入给llm时的token包括EVA的cls token、pool后的全局token、还有各个encoder得到的cls token,而源码中貌似只有EVA pool厚的全局token,为什么还需要加一个cls token呢?是尝试过对有提升吗?十分感谢您!
作者您好,我在代码中看到您输入给llm时的token包括EVA的cls token、pool后的全局token、还有各个encoder得到的cls token,而源码中貌似只有EVA pool厚的全局token,为什么还需要加一个cls token呢?是尝试过对有提升吗?十分感谢您!
1.刚开始我们的模型设计是不同的Encoder都提取一个一维的特征。cls token代表综合的特征,所以在项目初期,使用的是EVA的cls token作为全局特征输入到LLM中。
2.在实验中,加入EVA的cls token是有效的,能够提升多模态融合的分数。
3.但是早期的实验中,整体的分数都较低,不符合预期。经过我们团队的尝试,发现保留保留EVA的全部patch token,模型可以收敛的更快,效果更好。我们认为这样做,保留原有大模型的世界知识,然后在训练大模型情绪推理时就效果提升显著。
4.所以,我们是觉得两部分都是有效的,就自然的将两部分代码结合起来。最终我们同时输入了EVA的patch token和cls token作为情绪理解的全局特征。
5.源码中,因为要节约开销,将EVA的patch token每4个做一个合并,所以就余了一个cls token不用。
作者你好!关于MERR数据集部分有个问题就是我查看您的coarse_grained.json,有部分文件我在MER2023的数据集里找不到,比如这个文件,只有samplenew开头的,但是打开视频后与label描述不符,应该不是这个文件,您的视频名应该都是准确对应的吧: 这个文件是在哪里呢?十分感谢~
你MER2023的数据全部下载了吗?MER2023-SEMI对应的数量是7万多个视频。
sample_00000003对应的标注和视频截图如下:
"sample_00000003": {
"AU_list": [
"AU12",
"AU14"
],
"visual_prior_list": [
"Toothy smile",
"Indentation when smiling"
],
"audio_prior_list": "speaks in a normal tone.",
"pseu_emotion": "happy",
"caption": "Toothy smile, Indentation when smiling, speaks in a normal tone."
},
我发现其他的视频我都找到了,但是这一个视频我没有找到,您方便把这一个视频发给我吗QAQ,十分感谢,我的邮箱:huazeyu666@nenu.edu.cn
我发现其他的视频我都找到了,但是这一个视频我没有找到,您方便把这一个视频发给我吗QAQ,十分感谢,我的邮箱:huazeyu666@nenu.edu.cn
已经发送sample_00000003.avi。为了后续方便,还是检查一下你们下载的数据集与官方paper上的数量是否对应。
好的!十分感谢!!!
你好,不好意思又来打扰您,关于各个模态的encoder预训练时,您是如何操作的呢?比如视频的mae模型,您将其在哪个数据集进行预训练呢? 比如在mllm的第一阶段也就是预训练阶段,使用MERR数据集的粗粒度数据,此时对于视频数据的特征已经通过预训练的mae和其他模型进行提取,这时的mae模型是在哪里训练过了呢?MERR数据集上吗?(然后根据分类效果最优的checkpoints进行得到各个视频的特征输入mllm进行预训练吗?) 在微调时呢?根据细粒度数据重新预训练了各个encoder吗?还有问题就是对下游的DFEW等数据集是在与细粒度的MERR一同微调训练的吗?因为DFEW等数据集没有细粒度描述,仅情感标签 因为我也在研究相关内容,希望得到您的细致实验细节,十分感谢您!
我们使用的所有的Encoder都是冻结参数没有训练的。MAE和VideoMAE模型都是在MER2023-SEMI上无标注的数据进行训练的。DFEW是在一阶段后,单独训练的。
了解,也就是encoder经过在MER2023-SEMI预训练后,在后续提取任何一个数据集时都没有重新训练过。 除此之外,在对每个下游数据集测试时,都是先对对应训练集微调,再进行测试,比如对DFEW做测试时,仅拿DFEW训练集进行微调,以此类推是吗
作者您好!您的论文中提到在构建数据集时,对峰值帧选择上,使用对各个帧的AU求和,进而找到最大值对应的帧,作为峰值帧,而在附录的A.3 Instruction Collection and Multimodal Annotation中,又提到使用最频繁出现的AU,然后对其幅度值求和,找到幅度最高的作为峰值帧,这两种方式是分别使用在不同时期吗?感谢您的阅读,期待您的回复!祝您一切顺利!