多模态情感分析数据集 CMU-MOSEI CMU-MOSI CH-SIMS 的训练与应用 多模态情感分析极简训练代码(PyTorch 版),适配 CMU-MOSEI/MOSI/CH-SIMS数据集

发布时间:2026/7/18 10:17:58
多模态情感分析数据集 CMU-MOSEI CMU-MOSI CH-SIMS 的训练与应用 多模态情感分析极简训练代码(PyTorch 版),适配 CMU-MOSEI/MOSI/CH-SIMS数据集 情感分析多模态大模型情绪识别 MELD、CMU-MOSEI多模态对话数据分析 对比学习轻量化建模 跨模态模型GPT-4V、Flamingo、CLIP、Cross-Attention、SimCLR、CoT思维链。数据集MELD、CMU-MOSEI、MOSI、CH-SIMS、GoEmotions。多模态大模型端到端情感分析多模态大模型图文音联合推理搭建端到端视觉语言情感分类学习三模态联合特征提取MELD、CMU-MOSEI对话数据集搭建短视频、社交媒体舆情情绪监测系统跨模态注意力细粒度情绪识别CLIP预训练模型微调Cross-Attention跨模态注意力特征融合视频对话细粒度情绪分类MOSI、CH-SIMS数据集训练对比学习轻量化建模SimCLR对比学习训练模态共享情感表征弱标注、少量数据集训练轻量化多模态情感模型设计LLM思维链深层情感推理结合CoT思维链提示词大模型复合情绪逻辑推理识别隐式、深层复杂情绪对影视片段、多轮对话、复杂舆情做情感研判可实现落地短视频社交媒体舆情监控利用多模态大模型融合文字、画面、音频批量识别短视频、对话视频情绪正负实现品牌口碑舆情监测​视频对话细粒度情绪识别针对影视对白、面试视频、客服沟通视频精准识别喜怒哀乐、消极压抑等细粒度情绪提升识别精度​小样本轻量化情绪分类对比学习方案不需要大量标注数据用少量数据即可训练可用模型​复杂深层情感推理跳出简单二分类正负情绪推理隐藏复合情绪。多模态情感分析数据集 CMU-MOSEI CMU-MOSI CH-SIMS多模态情感分析数据集对比表数据集发布年份语言数据来源样本数片段情感标注范围模态特点/用途CMU‑MOSI2016英文YouTube 博主独白/观点视频2,199‑3极负3极正7级连续评分文本音频视觉TAV经典 baseline野外真实场景用于情感回归/极性分类单人表达为主CMU‑MOSEI2018英文YouTube 各类视频评测、辩论、访谈等23,453约为MOSI 10倍‑33同MOSI另有6类情绪标签喜/悲/怒/惧/厌/惊TAV音/文/视对齐更精细目前最大公开多模态情感数据集 speaker/topic 多样性强适合大模型/复杂融合算法训练与评测CH‑SIMS2020中文电影、电视剧、综艺片段2,281‑1负1正3级连续评分TAV含单模态标注主流中文多模态情感数据集支持单模态/跨模态不一致研究适合中文场景落地与算法验证简要总结CMU‑MOSI小而精多模态情感分析的“入门标准数据集”。CMU‑MOSEI大而全英文场景权威 benchmark工业界/顶会首选。CH‑SIMS中文标杆做中文多模态情感/情绪系统必用。我先把你给的内容整理成清晰的表格、应用场景再给你一份可直接跑的多模态情感分析极简训练代码PyTorch版适配CMU-MOSEI/MOSI/CH-SIMS。一、核心数据集对比表数据集语言模态标注类型样本规模特点与用途CMU-MOSI英文文本音频视频情感连续值-3~32199段入门级经典基准数据集适合情感回归、二分类任务的baseline验证CMU-MOSEI英文文本音频视频情感连续值-3~36类情绪标签23453段目前最大公开多模态情感数据集适合大模型/复杂融合算法训练与评测CH-SIMS中文文本音频视频情感连续值-1~12281段中文多模态情感标杆数据集支持跨模态不一致研究适合中文场景落地MELD英文文本音频视频对话情绪分类7类1433对话/13000轮对话场景专用数据集适合对话级多模态情绪识别、上下文依赖建模GoEmotions英文文本27类情绪中性标签58000条文本情绪分类数据集可与多模态模型结合做文本侧情感特征增强二、主流模型/方法对比表模型/方法核心思路适用场景优势CLIPCross-Attention用CLIP提取视觉特征通过跨模态注意力融合文本/音频/视觉特征图文音三模态情感分类、视频情绪识别预训练模型迁移能力强跨模态对齐效果好GPT-4V/Flamingo多模态大模型端到端推理直接输入图文音输出情感标签复杂场景、隐式情感、多轮对话情绪分析无需复杂特征工程支持复杂逻辑推理SimCLR对比学习学习模态共享情感表征弱标注/小样本场景训练小样本、弱标注多模态情感模型轻量化降低标注依赖模型轻量化效果好CoT思维链结合提示词引导大模型输出情感推理过程提升隐式情绪识别能力复杂复合情绪、深层情感推理、多轮对话能识别隐藏情绪输出可解释的情感分析过程三、落地应用场景短视频/社交媒体舆情监控融合文字、画面、音频三模态批量识别短视频、对话视频的情绪正负实现品牌口碑舆情监测、负面内容预警。视频对话细粒度情绪识别针对影视对白、面试视频、客服沟通视频精准识别喜怒哀乐、消极压抑等细粒度情绪辅助客服质量评估、面试状态分析。小样本轻量化情绪分类基于对比学习方案不需要大量标注数据用少量数据即可训练可用模型适合企业定制化场景快速落地。复杂深层情感推理跳出简单正负情绪二分类通过思维链大模型推理隐藏复合情绪适配影视片段、多轮对话、复杂舆情的深度情感研判。四、多模态情感分析极简训练代码PyTorch这份代码以文本视觉双模态为例可直接适配CMU-MOSEI/MOSI/CH-SIMS数据集你可以在此基础上扩展音频模态。importtorchimporttorch.nnasnnfromtorch.utils.dataimportDataset,DataLoaderfromtransformersimportBertModel,BertTokenizer,ViTModel,ViTFeatureExtractorimportpandasaspdimportnumpyasnp# 1. 数据集类适配MOSEI/MOSI/CH-SIMS格式 classMultimodalEmotionDataset(Dataset):def__init__(self,csv_path,img_dir,max_len128):self.datapd.read_csv(csv_path)self.img_dirimg_dir self.max_lenmax_len# 文本/视觉预处理器self.tokenizerBertTokenizer.from_pretrained(bert-base-uncased)self.vit_extractorViTFeatureExtractor.from_pretrained(google/vit-base-patch16-224)def__len__(self):returnlen(self.data)def__getitem__(self,idx):rowself.data.iloc[idx]textrow[text]img_pathf{self.img_dir}/{row[img_id]}.jpglabeltorch.tensor(row[label],dtypetorch.float32)# -3~3或-1~1的情感值# 文本特征BERTtext_encself.tokenizer(text,paddingmax_length,truncationTrue,max_lengthself.max_len,return_tensorspt)input_idstext_enc[input_ids].squeeze(0)attention_masktext_enc[attention_mask].squeeze(0)# 视觉特征ViTimgself.vit_extractor(imagesimg_path,return_tensorspt)[pixel_values].squeeze(0)returninput_ids,attention_mask,img,label# 2. 双模态融合模型 classMultimodalEmotionModel(nn.Module):def__init__(self,text_dim768,img_dim768,hidden_dim256):super().__init__()# 文本编码器self.text_encoderBertModel.from_pretrained(bert-base-uncased)# 视觉编码器self.img_encoderViTModel.from_pretrained(google/vit-base-patch16-224)# 跨模态注意力融合self.cross_attnnn.MultiheadAttention(embed_dimhidden_dim,num_heads4,batch_firstTrue)# 特征投影层self.text_projnn.Linear(text_dim,hidden_dim)self.img_projnn.Linear(img_dim,hidden_dim)# 情感回归头self.reg_headnn.Sequential(nn.Linear(hidden_dim*2,hidden_dim),nn.ReLU(),nn.Linear(hidden_dim,1))defforward(self,input_ids,attention_mask,img):# 文本特征text_outself.text_encoder(input_idsinput_ids,attention_maskattention_mask)text_feattext_out.pooler_output# [B, 768]text_featself.text_proj(text_feat).unsqueeze(1)# [B,1,256]# 视觉特征img_outself.img_encoder(pixel_valuesimg)img_featimg_out.pooler_output# [B, 768]img_featself.img_proj(img_feat).unsqueeze(1)# [B,1,256]# 跨模态注意力融合fused_feat,_self.cross_attn(text_feat,img_feat,img_feat)fused_featfused_feat.squeeze(1)# 拼接原始特征combined_feattorch.cat([text_feat.squeeze(1),fused_feat],dim-1)outself.reg_head(combined_feat)returnout.squeeze(1)# 3. 训练主循环 deftrain():devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)batch_size8epochs20lr1e-4# 加载数据替换为你的数据集路径train_datasetMultimodalEmotionDataset(csv_pathtrain.csv,img_dirtrain_imgs)train_loaderDataLoader(train_dataset,batch_sizebatch_size,shuffleTrue)# 模型、损失、优化器modelMultimodalEmotionModel().to(device)criterionnn.MSELoss()# 情感回归用MSE分类任务可改为CrossEntropyoptimizertorch.optim.AdamW(model.parameters(),lrlr)# 训练循环model.train()forepochinrange(epochs):total_loss0forinput_ids,attention_mask,img,labelintrain_loader:input_idsinput_ids.to(device)attention_maskattention_mask.to(device)imgimg.to(device)labellabel.to(device)optimizer.zero_grad()predmodel(input_ids,attention_mask,img)losscriterion(pred,label)loss.backward()optimizer.step()total_lossloss.item()print(fEpoch [{epoch1}/{epochs}] | Train Loss:{total_loss/len(train_loader):.4f})if__name____main__:train()五、扩展建议音频模态扩展可使用librosa提取MFCC特征或用Wav2Vec2预训练模型提取音频特征在模型中加入音频投影层与跨模态注意力对比学习优化可基于SimCLR思路加入模态内/模态间对比损失提升小样本场景性能大模型推理可接入GPT-4V/Qwen-VL通过提示词引导模型输出情感标签推理过程适配复杂场景轻量化改造可将BERT/ViT替换为DistilBERT/MobileViT降低模型参数量适配端侧部署。