HumanOmni:首个专注人类中心场景的多模态大模型,视觉与听觉融合的突破!

简介: HumanOmni是业内首个理解以人为中心的场景,可以同时处理视觉信息、音频信息的多模态大模型。

01.模型介绍

HumanOmni是业内首个理解以人为中心的场景,可以同时处理视觉信息、音频信息的多模态大模型。

在人类中心场景中,理解和处理视觉与听觉信息至关重要。文章指出,当前方法大多关注于视觉-语言模型,但缺乏对音频输入的处理能力,导致对场景的理解不完整。

近期一些可以同时处理视频+音频的模型被提出,但是由于缺乏大规模专门的人类中心数据集以及缺乏针对人物场景的针对性网络架构,导致其对于人物中心场景的理解能力还有较大的提升空间。

论文主要创新:

  • 提出了HumanOmni,首个专注于人物中心场景理解的可以同时处理视觉+声音的多模态大语言模型。
  • 构建了包含240万个人类中心视频片段的数据集,使用多个先进的模型进行联合校验,生成超过1400万条指令,以促进对多样化人类中心场景的理解。
  • 人工对5w条视频片段进行标注,产生了超过10w条高质量指令,这些数据进一步提升了我们对于人物场景的理解能力。在情绪识别、面部描述、动作理解等多个人物相关的任务下,我们的HumanOmni均达到了sota的水平,同时我们实验验证了视觉+音频的联合输入相比单独使用视觉和单独使用音频的优势。

模型架构

  • 在视觉理解部分,利用三个不同的分支来分别处理面部相关问题、人体相关问题、环境交互相关问题。设计一个指令驱动的融合模块来利用用户的输入指令生成不同的权重,从而将这三个分支的视觉特征进行自适应融合。
  • 将视觉token、音频token、文本token结合后送入大语言模型,实现对于多模态信息的同步处理。

模型下载链接:

https://modelscope.cn/collections/HumanOmni-shipinrenwulijie-234cdc0e5fe247

https://huggingface.co/StarJiaxing/HumanOmni-7B

代码地址:

https://github.com/HumanMLLM/HumanOmni

模型训练

模型训练分为三个阶段

第一阶段是视觉能力构建,在这一阶段,我们利用生成的指令数据以及人工标注的指令数据构建了模型的视觉能力,其中我们更新了三个分支的视觉映射器的参数、指令驱动的融合模块的参数以及大语言模型的参数。

第二阶段是听觉能力发展,在这一阶段,我们基于第一阶段的大语言模型的参数,利用大规模音频数据进行训练,只更新音频映射器的参数,使得模型具备对语音的理解和解释能力。

第三阶段是跨模态交互集成阶段。这一阶段基于前两阶段的模型参数,利用结合视觉和音频数据,提升模型处理和关联不同模态信息的能力。

02.模型效果

情绪识别:

面部表情描述:

动作理解:

在这三个人物理解相关的任务上,我们的HumanOmni均达到了SOTA的水平。

ASR:

在ASR任务上,在Omni模型中,达到了先进的水平。

我们也对模型中不同模态的作用进行了分析:

该表格说明了HumanOmni理解了不同模态的信息,模型可以通过不同模态的信息来完成不同类型的任务。

03.模型推理

我们开源了推理代码,只需执行inference.py即可:

import os
import argparse
from humanomni import model_init, mm_infer
from humanomni.utils import disable_torch_init
from transformers import BertTokenizer
os.environ['TRANSFORMERS_OFFLINE'] = '1'
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
def main():
    parser = argparse.ArgumentParser(description="HumanOmni Inference Script")
    parser.add_argument('--modal', type=str, default='video_audio', help='Modal type (video or video_audio)')
    parser.add_argument('--model_path', type=str, required=True, help='Path to the model')
    parser.add_argument('--video_path', type=str, required=True, help='Path to the video file')
    parser.add_argument('--instruct', type=str, required=True, help='Instruction for the model')
    args = parser.parse_args()
    # 初始化BERT分词器
    bert_model = "bert-base-uncased"
    bert_tokenizer = BertTokenizer.from_pretrained(bert_model)
    # 禁用Torch初始化
    disable_torch_init()
    # 初始化模型、处理器和分词器
    model, processor, tokenizer = model_init(args.model_path)
    # 处理视频输入
    video_tensor = processor['video'](args.video_path)
    # 根据modal类型决定是否处理音频
    if args.modal == 'video_audio' or args.modal == 'audio':
        audio = processor['audio'](args.video_path)[0]
    else:
        audio = None
    # 执行推理
    output = mm_infer(video_tensor, args.instruct, model=model, tokenizer=tokenizer, modal=args.modal, question=args.instruct, bert_tokeni=bert_tokenizer, do_sample=False, audio=audio)
    print(output)
if __name__ == "__main__":
    main()

输入参数分别为

modal,控制使用的模态,这里可以选择video_audio(使用视觉+声音),video(仅使用视觉),audio(仅使用声音)。我们推荐同时使用视觉+声音。

model_path,模型的路径。

video_path,视频的路径。

instruct,用户的指令。

我们的模型可以通过modelscope和huggingface进行获取。

04.模型微调

我们开放了模型微调的代码,供开发者使用我们的模型在数据集上进行微调。我们提供的方式是基于HumanOmni-Video(一阶段)和HumanOmni-Audio(二阶段)的参数,进行跨视觉和音频模态的微调。

torchrun --nnodes $WORLD_SIZE \
    --nproc_per_node $NPROC_PER_NODE \
    --master_addr=$MASTER_ADDR \
    --master_port=$MASTER_PORT \
    --node_rank $RANK \
    humanomni/train_flash_attn.py \
    --deepspeed scripts/zero3.json \
    --model_type HumanOmni_qwen2 \
    --model_path /mnt/data/jiaxing.zjx/code/HumanOmni/HumanOmni_7B_Video/ \
    --vision_tower google/siglip-so400m-patch14-384 \
    --audio_tower openai/whisper-large-v3 \
    --mm_projector_type  all_in_one \
    --mm_tunable_parts "mm_mlp_adapter,audio_projector,mm_language_model" \
    --pretrain_audio_mlp_adapter /mnt/data/jiaxing.zjx/code/HumanOmni/HumanOmni_7B_Audio/audio_projector.bin \
    --data_path   ./yamls/oryx_audio.yaml \
    --data_folder / \
    --mm_vision_select_layer -2 \
    --image_aspect_ratio pad \
    --num_frames 32 \
    --bf16 True \
    --tf32 True \
    --fp16 False \
    --output_dir ${OUTP_DIR}/${WANDB_PROJECT}/finetune_${RUN_NAME} \
    --num_train_epochs 1 \
    --per_device_train_batch_size $LOCAL_BATCH_SIZE \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps $GRADIENT_ACCUMULATION_STEPS \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 500 \
    --save_total_limit 99 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --mm_use_x_start_end True \
    --dataloader_num_workers 4 \
    --report_to tensorboard \
    --run_name $RUN_NAME \

当然用户也可以基于我们最终的HumanOmni模型进行微调。取决于用户的数据量以及数据的相关程度。

05.效果展示

我们分别在电影片段、特写视频、实拍视频三个人物场景下测试了我们的模型的理解能力。

电影片段:

https://live.csdn.net/v/466486

User:What's the major emotion?
HumanOmni:angry.
User:What's the major facial expression?
HumanOmni:frown.
User:Desribe the woman.
HumanOmni:The woman has long brown hair and is wearing a pink top with a dark cardigan.
  
User:Please describe the major action in detail.
HumanOmni:The woman is frowning and shaking her head, indicating that she is angry. She is also gesturing with her hands as if she is explaining something or emphasizing a point.
User:What did the woman say?
HumanOmni:The woman said "Of course we object! I object, Steve!"



特写视频

https://live.csdn.net/v/466487

User:What's the major emotion?
HumanOmni:happy.
User:What's the major facial expression?
HumanOmni:smile.
User:Desribe the woman in detail.
HumanOmni:The woman in the video has blonde hair, is wearing a black top, and is smiling.
User:What did the woman say?
HumanOmni:The woman said "Dogs are sitting by the door."

实拍视频

https://live.csdn.net/v/466488

User:描述一下视频中男子的外貌穿着.
HumanOmni:视频中的男性有短的黑发,配戴圆框眼镜。他穿了一件棕色的毛大衣,内里是白色的.
User:视频中男子说了什么内容?
HumanOmni:男子说他穿什么颜色的衣服,现在处于什么环境,今天的天气怎么样.
User:视频中男子有什么情绪吗?
HumanOmni:没有情绪。

我们在三类视频下,分别测试了模型对于主要依靠视觉内容进行回答的问题(外貌描述),主要依靠音频内容进行回答的问题(说话内容),依靠音视频共同回答的问题(情绪理解)的效果。我们的HumanOmni均有非常稳定且准确的输出。

点击链接即可跳转模型链接~

HumanOmni 人物音视频理解


目录
相关文章
|
2月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
3月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1640 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
2月前
|
机器学习/深度学习 人工智能 人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
383 121
|
2月前
|
数据采集 人工智能 搜索推荐
智能新纪元:多模态大模型如何重塑人机交互
智能新纪元:多模态大模型如何重塑人机交互
241 113
|
2月前
|
人工智能 人机交互 知识图谱
当AI学会“融会贯通”:多模态大模型如何重塑未来
当AI学会“融会贯通”:多模态大模型如何重塑未来
301 114
|
2月前
|
人工智能 安全 搜索推荐
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
275 117
|
人工智能 运维 数据处理
创新场景丨大模型初创公司出海,云计算护航
开启全球化征程的企业需要的不仅是优秀的技术产品,还有成熟的服务体系,让企业更专注业务突围,无后顾之忧。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
679 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
2月前
|
存储 监控 算法
1688 图片搜索逆向实战:CLIP 多模态融合与特征向量落地方案
本文分享基于CLIP模型与逆向工程实现1688图片搜同款的实战方案。通过抓包分析破解接口签名,结合CLIP多模态特征提取与Faiss向量检索,提升搜索准确率至91%,单次响应低于80ms,日均选品效率提升4倍,全程合规可复现。