StoryTeller:字节、上海交大、北大共同推出的全自动长视频描述生成一致系统

简介: StoryTeller是由字节跳动、上海交通大学和北京大学共同推出的全自动长视频描述生成系统。该系统通过音频视觉角色识别技术,结合低级视觉概念和高级剧情信息,生成详细且连贯的视频描述。StoryTeller在MovieQA任务中展现出比现有模型更高的准确率,适用于电影制作、视频内容分析、辅助视障人士等多个应用场景。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

系统功能:基于音频视觉角色识别技术,生成详细且连贯的长视频描述。
技术优势:在MovieQA任务中准确率比最强基线Gemini-1.5-pro高9.5%。
应用场景:适用于电影制作、视频内容分析、辅助视障人士等多个领域。

正文(附运行示例)

StoryTeller 是什么

公众号: 蚝油菜花 - StoryTeller

StoryTeller是由字节跳动、上海交通大学和北京大学共同推出的系统,旨在基于音频视觉角色识别技术改善长视频描述的质量和一致性。该系统结合低级视觉概念和高级剧情信息,生成详细且连贯的视频描述。

StoryTeller由视频分割、音频视觉角色识别和描述生成三个主要模块组成。这些模块能够有效处理数分钟长的视频,并在MovieQA任务中展现出比现有模型更高的准确率,比最强基线Gemini-1.5-pro高9.5%的准确率。

StoryTeller 的主要功能

  • 视频分割:将长视频切割成多个短片段,保持每个片段的独立性和完整性。
  • 音频视觉角色识别:结合音频和视觉信息,识别视频中对话对应的角色。
  • 描述生成:为每个视频片段生成详细的描述,整合成整个长视频的连贯叙述。
  • 数据集构建:创建并使用MovieStory101数据集,提供长视频描述的训练和测试数据。
  • 自动评估:基于MovieQA,用GPT-4自动评估视频描述的准确性和质量。
  • 模型训练与微调:训练多模态大型语言模型,提高角色识别和视频描述的准确性。
  • 全局解码:确保同一角色在不同视频片段中保持一致的识别结果。

StoryTeller 的技术原理

  • 多模态融合:整合视觉(视频帧)、音频(对话)和文本(字幕和描述)信息,全面理解视频内容。
  • 音频分离和角色ID分配:用音频嵌入模型对每个对话进行嵌入,基于聚类算法分配全局ID,将相似的音频嵌入分配相同的ID,表示同一角色。
  • 音频视觉角色识别模型:用大型语言模型(如Tarsier-7B)结合OpenAI的Whisper-large-v2音频编码器,将每个音频ID映射到特定的角色。
  • 全局解码算法:在推理时,确保不同片段中相同角色的全局ID映射到一致的角色名称,提高角色识别的准确性。
  • 视频描述生成:用识别结果作为输入,基于大型语言模型生成每个片段的详细描述,并整合成完整的视频描述。

如何运行 StoryTeller

1. 生成视频帧和音频文件

python script/preprocess/preprocess.py
  • 输入视频路径:data/video
  • 输出帧路径:data/frame
  • 输出音频路径:data/audio

2. 将3分钟视频片段分割成小段

pip install scenedetect
scenedetect -i movie.mp4 -o data/raw_data/scene_detect -q detect-adaptive -t 2.0 list-scenes
python script/scene_split/scene_split.py
python script/scene_split/update_scene_split.py

3. 生成每个角色的参考照片

对于MovieQA数据集,已提供每个片段的演员列表。对于其他电影,可以从IMDb获取演员列表并使用面部识别算法。

4. 进行全局音频分离

python script/global_diarization/eval_embedding.py --input_file data/global_diarization/embeddings.jsonl
python script/global_diarization/update_diarization.py --input_file data/global_diarization/embeddings.jsonl --output_file data/global_diarization/diarization_id.jsonl

5. 音频视觉角色识别

python script/audio_visual_diarization/gen_infer.py
python tasks/inference_quick_start.py --model_name_or_path checkpoints/Whisper-large-v2-Tarsier-7B-character-identification --input_path data/audio_visual_diarization/data.jsonl --output_path data/audio_visual_diarization/0.jsonl
python script/audio_visual_diarization/alignment.py
python tasks/inference_quick_start.py --model_name_or_path checkpoints/Whisper-large-v2-Tarsier-7B-character-identification --input_path data/audio_visual_diarization/align_data/data.jsonl --output_path data/audio_visual_diarization/correct/0.jsonl

6. 长视频描述生成

python script/long_video_description/gen_infer.py
python tasks/inference_quick_start.py --model_name_or_path checkpoints/Tarsier-7B-description-generation --input_path data/long_video_description/data.jsonl --output_path data/long_video_description/0.jsonl
python dense_description.py
python script/long_video_description/eval_qa_accuracy.py --pred_caption_path result/tarsier/dense_caption_name.json --out_path result/tarsier/qa_name.jsonl

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
机器学习/深度学习 人工智能 数据管理
文生图的基石CLIP模型的发展综述
CLIP(Contrastive Language-Image Pre-training)是OpenAI在2021年发布的多模态模型,用于学习文本-图像对的匹配。模型由文本和图像编码器组成,通过对比学习使匹配的输入对在向量空间中靠近,非匹配对远离。预训练后,CLIP被广泛应用于各种任务,如零样本分类和语义搜索。后续研究包括ALIGN、K-LITE、OpenCLIP、MetaCLIP和DFN,它们分别在数据规模、知识增强、性能缩放和数据过滤等方面进行了改进和扩展,促进了多模态AI的发展。
3214 0
|
安全 Linux Android开发
AVB源码学习(七):AVB2.0-Super动态分区介绍
AVB源码学习(七):AVB2.0-Super动态分区介绍
1959 0
|
NoSQL Java Redis
redis: jedis连接超时(需要手动注入连接超时检测的配置)
redis: jedis连接超时(需要手动注入连接超时检测的配置)
1540 0
|
9月前
|
机器学习/深度学习 存储 人工智能
构建AI智能体:六十三、基于信息论的智能医疗诊断系统:算法原理与临床验证
摘要:本文提出了一种基于信息论的智能医疗诊断系统,通过互信息、信息熵和信息增益等核心概念,构建了症状分析、疾病推理和检查推荐的综合诊断平台。系统采用模块化设计,利用概率模型生成模拟医疗数据,量化症状与疾病的关联强度,并通过热力图直观展示诊断依据。该系统能有效提升诊断准确性,优化检查资源配置,推动医疗诊断从经验依赖向数据驱动转变,为解决基层医疗资源不足等问题提供了技术支撑。
452 12
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
1725 0
|
11月前
|
JavaScript 前端开发 Java
基于springboot的养老院管理系统
随着人口老龄化加剧,传统养老院管理效率低下,亟需信息化升级。本文基于Java、Spring Boot、Vue等技术构建智慧养老系统,结合MySQL与MyBatis实现数据高效管理,提升服务精准性与运营效率,推动养老服务向智能化、现代化发展。
|
10月前
|
存储 缓存 安全
探索快手平台:如何通过官方API接口获取作品详细数据
本文介绍如何通过快手开放平台API获取短视频的播放、点赞、评论等详细数据,涵盖账号注册、应用创建、权限申请、接口调用及签名生成方法,并提供Python示例代码与注意事项,助力开发者合规高效地进行内容分析与运营优化。
2162 0
|
人工智能 数据可视化 测试技术
突发任务不慌乱!高优先级任务自动置顶的3款工具推荐
在快节奏的工作中,你是否常因任务优先级不清而手忙脚乱?本文为你详解优先级管理的三大误区与核心原则,并推荐适配个人、小团队及大型项目的三大实用工具:板栗看板、Todoist 与 Jira。通过“价值-成本”模型、“依赖链”分析与任务“保质期”设定,帮你高效抓重点、避拖延。掌握这些方法,告别无效忙碌,把时间真正用在“对的事”上,越忙越轻松。
突发任务不慌乱!高优先级任务自动置顶的3款工具推荐
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
1836 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
935 22

热门文章

最新文章