下面是MSA任务的基础-数据集。在本篇文章,我们首先介绍mmsdk中包含的例如CMU-MOSI等数据集的获取和解析。
CMU-MOSI
数据集获取
data_folder = data_folder
dataset_repository = "http://immortal.multicomp.cs.cmu.edu/raw_datasets/processed_data/"
mosi_highlevel = md.cmu_mosi.highlevel # 高层特征
mosi_raw = md.cmu_mosi.raw # 原始数据
mosi_labels = md.cmu_mosi.labels # 标签
这里是保存数据的位置和获得高层特征、原始数据和标签的一些定义
md.mmdataset(mosi_highlevel, data_folder)
md.mmdataset(mosi_raw, data_folder)
md.mmdataset(mosi_labels, data_folder)
上面的三条是从网站上下载数据,保存到自己定义的位置。
数据文件介绍
首先我们先看文件夹下面的文件:
CMU_MOSI_COVAREP.csd 是音频文件组
CMU_MOSI_TimestampedWords.csd 是文本文件组
CMU_MOSI_TimestampedWordVectors.csd 是文本的向量的文件组
CMU_MOSI_Visual_Facet_41.csd 和CMU_MOSI_Visual_Facet_42.csd 是视频文件组
CMU_MOSI_Visual_OpenFace_1.csd和CMU_MOSI_Visual_OpenFace_2.csd 是使用 OpenFace 工具从 CMU_MOSI_Visual_Facet_41.csd 和CMU_MOSI_Visual_Facet_42.csd中提取的面部表情和行为数据的文件组。
CMU_MOSI_Opinion_Labels.csd 是标签文件组
CMU_MOSI_openSMILE_IS09.csd 是openSMILE工具从CMU_MOSI_COVAREP.csd提取的INTERSPEECH 2009 Emotion Challenge 特征集的文件组
CMU_MOSI_OpenSmile_EB10.csd 是openSMILE工具从CMU_MOSI_COVAREP.csd提取的EB10特征集的文件组
我们主要使用下面四个文件:
visual_field = 'CMU_MOSI_Visual_Facet_42'
audio_field = 'CMU_MOSI_COVAREP'
text_field = 'CMU_MOSI_TimestampedWordVectors'
label_field = 'CMU_MOSI_Opinion_Labels'
模态对齐
features = [
text_field,
visual_field,
audio_field
]
recipe = {feat: os.path.join(self.data_folder, feat) + '.csd' for feat in features}
self.dataset = md.mmdataset(recipe)
def avg(intervals: np.array, features: np.array) -> np.array:
try:
return np.average(features, axis=0)
except:
return features
dataset.align(text_field, collapse_functions=[avg])
label_recipe = {label_field: os.path.join(data_folder, label_field)}
dataset.add_computational_sequences(label_recipe, destination=None)
dataset.align(self.label_field)
上面的代码是将文本,视频,音频和标签进行对齐。