Project Icon

OmAgent

多模态智能代理系统实现复杂视频理解

OmAgent是一个多模态智能代理系统,结合多模态大语言模型和算法来完成复杂任务。系统包含轻量级智能代理框架omagent_core和三个核心组件:Video2RAG、DnCLoop和Rewinder Tool。OmAgent突破视频长度限制,实现长视频理解、任务分解和信息检索。这一开源项目为研究和开发多模态应用提供了有力工具。

OmAgent

英文 | 中文

🗓️ 更新

📖 介绍

OmAgent是一个复杂的多模态智能代理系统,致力于利用多模态大语言模型和其他多模态算法来完成有趣的任务。OmAgent项目包含了一个轻量级的智能代理框架omagent_core,专门设计用于解决多模态挑战。利用这个框架,我们构建了一个复杂的长视频理解系统——OmAgent。当然,你也可以自由地使用它来实现任何创新想法。

OmAgent包括三个核心组件:

  • Video2RAG:这个组件的理念是将长视频的理解转化为多模态RAG任务。这种方法的优势在于它突破了视频长度的限制;然而,缺点是这种预处理可能会导致大量视频细节的丢失。
  • DnCLoop:受经典的分治算法范式启发,我们设计了一个递归的通用任务处理逻辑。这种方法通过迭代将复杂问题细化为任务树,最终将复杂任务转化为一系列可解决的简单任务。
  • Rewinder工具:为了解决Video2RAG过程中信息丢失的问题,我们设计了一个名为Rewinder的"进度条"工具,代理可以自主使用。这使得代理能够重新查看任何视频细节,从而获取必要的信息。

更多详情,请查看我们的论文**OmAgent: 一个用于复杂视频理解的多模态代理框架,采用任务分治方法**

🛠️ 如何安装

  • python >= 3.10
  • 安装omagent_core
    cd omagent-core
    pip install -e .
    
  • 其他依赖
    cd ..
    pip install -r requirements.txt
    

🚀 快速开始

通用任务处理

  1. 创建配置文件并设置一些必要的变量

    cd workflows/general && vim config.yaml
    
    配置名称用途
    custom_openai_endpoint调用OpenAI GPT或其他MLLM的API地址,格式:{custom_openai_endpoint}/chat/completions
    custom_openai_keyMLLM提供商提供的api_key
    bing_api_keyBing的api key,用于网络搜索
  2. 设置run.py

    def run_agent(task):
        logging.init_logger("omagent", "omagent", level="INFO")
        registry.import_module(project_root=Path(__file__).parent, custom=["./engine"])
        bot_builder = Builder.from_file("workflows/general") # 通用任务处理工作流配置目录
        input = DnCInterface(bot_id="1", task=AgentTask(id=0, task=task))
    
        bot_builder.run_bot(input)
        return input.last_output
    
    
    if __name__ == "__main__":
        run_agent("你的查询") # 输入你的查询
    
  3. 通过运行python run.py启动OmAgent。

视频理解任务

环境准备

  • 使用docker部署milvus向量数据库。该向量数据库用于存储视频特征向量,并根据查询检索相关向量以减少MLLM计算。尚未安装docker?请参考docker安装指南

       # 下载milvus启动脚本
       curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
       # 以单机模式启动milvus
       bash standalone_embed.sh start
    
  • 可选 配置人脸识别算法。人脸识别算法可以作为工具被代理调用,但这是可选的。你可以通过修改workflows/video_understanding/tools/video_tools.json配置文件并移除FaceRecognition部分来禁用此功能。默认的人脸识别数据库存储在data/face_db目录中,不同的文件夹对应不同的个人。

  • 可选 开放词汇检测(ovd)服务,用于增强OmAgent识别各种物体的能力。ovd工具依赖于此服务,但它是可选的。你可以通过以下步骤禁用ovd工具。从workflows/video_understanding/tools/video_tools.json中移除以下内容:

       {
            "name": "ObjectDetection",
            "ovd_endpoint": "$<ovd_endpoint::http://host_ip:8000/inf_predict>",
            "model_id": "$<ovd_model_id::OmDet-Turbo_tiny_SWIN_T>"
       }
    

    如果使用ovd工具,我们以OmDet为例进行演示。

    1. 按照OmDet安装指南安装OmDet及其环境。
    2. 安装将OmDet推理转换为API调用的依赖项
       pip install pydantic fastapi uvicorn
      
    3. 创建wsgi.py文件以将OmDet推理暴露为API
       cd OmDet && vim wsgi.py
      
      OmDet推理API代码复制到wsgi.py
    4. 启动OmDet推理API,默认端口为8000
      python wsgi.py
      
  • 下载一些有趣的视频

运行准备

  1. 创建配置文件并设置一些必要的环境变量

    cd workflows/video_understanding && vim config.yaml
    
  2. 配置MLLM和工具的API地址和API密钥。

    配置名称用途
    custom_openai_endpoint调用OpenAI GPT或其他MLLM的API地址,格式:{custom_openai_endpoint}/chat/completions
    custom_openai_key相应API提供商提供的api_key
    bing_api_keyBing的api密钥,用于网络搜索
    ovd_endpointovd工具API地址。如果使用OmDet,地址应为http://host:8000/inf_predict
    ovd_model_idovd工具使用的模型ID。如果使用OmDet,模型ID应为OmDet-Turbo_tiny_SWIN_T
  3. 设置run.py

    def run_agent(task):
        logging.init_logger("omagent", "omagent", level="INFO")
        registry.import_module(project_root=Path(__file__).parent, custom=["./engine"])
        bot_builder = Builder.from_file("workflows/video_understanding") # 视频理解任务工作流配置目录
        input = DnCInterface(bot_id="1", task=AgentTask(id=0, task=task))
    
        bot_builder.run_bot(input)
        return input.last_output
    
    
    if __name__ == "__main__":
        run_agent("") # 你将在控制台中被提示输入查询
    
  4. 通过运行python run.py启动OmAgent。输入你想处理的视频路径,稍等片刻,然后输入你的查询,OmAgent将根据查询进行回答。

🔗 相关工作

如果你对多模态算法、大型语言模型和代理技术感兴趣,我们邀请你深入了解我们的研究工作:
🔆 如何评估检测的泛化性?一个用于全面开放词汇检测的基准(AAAI24)
🏠 Github仓库

🔆 OmDet:具有多模态检测网络的大规模视觉-语言多数据集预训练(IET计算机视觉)
🏠 Github仓库

⭐️ 引用

如果你觉得我们的仓库有用,请引用我们的论文:

@article{zhang2024omagent,
  title={OmAgent: A Multi-modal Agent Framework for Complex Video Understanding with Task Divide-and-Conquer},
  author={Zhang, Lu and Zhao, Tiancheng and Ying, Heting and Ma, Yibo and Lee, Kyusong},
  journal={arXiv preprint arXiv:2406.16620},
  year={2024}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号