用于视频,音频和语言的多模态多功能网络模型
文件列表(压缩包大小 216.64M)
免费
概述
用于视频,音频和语言的多模态多功能网络
该模型为TSMResNet50-Audio-Text预训练模型,可以用作视频特征提取器,音频特征提取器,或用于计算简短视频片段和句子之间、视频片段和音频流之间、音频流和句子之间的相似度。该模型是使用未经整理的视频(仅包含音轨和口述)进行训练的。
import numpy as np
import tensorflow.compat.v2 as tf
import tensorflow_hub as hub
#input_frames必须标准化为[0,1],并且形状为Batch x T x H x W x 3
B, T, H, W = 1, 32, 200, 200
input_frames = np.zeros([B, T, H, W, 3], np.float32)
#inputs_audio值的必须在[-1,1]中,并且形状为Batch x T'
T = 153600
input_audio = np.zeros([B, T], np.float32)
# inputs_words是一个句子list (如 ['the sky is blue', 'someone cutting an apple'])
input_words = np.array(['the sky is blue', 'someone cutting an apple'])
注意:
视频网络是完全卷积的(最后是时间和空间的全局平均池),但是建议使用T = 32帧(与训练时相同)。对于H和W,我们一直使用200到256之间的值。注意训练期间使用的帧频为10,建议也将其用于输入剪辑(3.2秒)。
音频网络也是完全卷积的(最后在时间和频率上具有全球平均池),但是建议以48kHz(3.2秒)的频率使用T'= 153600。频谱图的计算将直接在图中进行,因此只提供原始音频信号作为输入。
module = hub.load("https://tfhub.dev/deepmind/mmv/tsm-resnet50/1")
module = hub.load("https://tfhub.dev/deepmind/mmv/tsm-resnet50/1", tags={"train"})
vision_output = module.signatures['video'](tf.constant(tf.cast(input_frames, dtype=tf.float32)))
audio_output = module.signatures['audio'](tf.constant(tf.cast(input_audio, dtype=tf.float32)))
text_output = module.signat- ures['text'](tf.constant(input_words))
注意:
vision_output
是包含三个键的字典:before_head
:这是TSM ResNet50维度2048的全局平均合并特征,应将其用于下游任务的分类。
va
:这是来自联合视频音频空间的视频嵌入(大小为512),它应该用于使用音频嵌入来计算与音频输入的相似性分数。
vat
:这是来自联合视听文本空间的视频嵌入(大小256),它应该用于使用文本或音频嵌入来计算与文本或音频输入的相似性分数。
audio_output
是包含三个键的字典:last_conv
:这是ResNet50音频网络的输出特征(在平均池化之前),特征尺寸为2048,时空频率尺寸取决于输入的大小。这应该用于下游任务的分类。
va
:这是来自联合视频音频空间的音频嵌入(大小512)。应该使用视频嵌入,将其用于计算与视频输入的相似度得分。
vat
:这是来自联合视听文本空间的音频嵌入(大小256)。它应用于使用文本或视频嵌入来计算与文本或视频输入的相似性分数。
text_output
是包含单个键的字典:vat
:这是来自联合视音频文本空间的文本嵌入(大小256)。要计算文本和视频之间的相似性得分,您需要计算video_output
的增值税输出和text_output
的增值税输出之间的点积。
#文字与视频
video_embedding = vision_output['vat']
text_embedding = text_output['vat']
#计算视频和文本之间的所有成对相似度。
sim_matrix = tf.matmul(text_embedding, video_embedding, transpose_b=True)
#音频与视频
video_embedding = vision_output['va']
audio_embedding = audio_output['va']
#计算视频和音频之间的所有成对相似度。
sim_matrix = tf.matmul(audio_embedding, video_embedding, transpose_b=True)
#音频与文本
text_embedding = text_output['vat']
audio_embedding = audio_output['vat']
#计算音频和文本之间的所有成对相似度。
sim_matrix = tf.matmul(audio_embedding, text_embedding, transpose_b=True)
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)