魔搭ModelScope社区 03月02日
HumanOmni:首个专注人类中心场景的多模态大模型,视觉与听觉融合的突破!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

HumanOmni是业内首个专注于人类中心场景的多模态大模型,它能够同时处理视觉和音频信息,为多模态场景理解带来全新突破。该模型通过创新的模型架构和大规模数据集训练,在情绪识别、动作理解等任务上达到了SOTA水平。HumanOmni在视觉理解方面,利用三个分支处理面部、人体和环境交互问题,并通过指令驱动的融合模块自适应融合视觉特征。模型训练分为视觉能力构建、听觉能力发展和跨模态交互集成三个阶段,最终实现了在人物理解相关任务上的卓越表现。

🧠HumanOmni是业内首个专注于以人为中心的场景理解的多模态大模型,可以同时处理视觉和音频信息,弥补了当前视觉-语言模型在处理音频输入方面的不足。

👂该模型构建了包含240万个人类中心视频片段的数据集,并生成超过1400万条指令,同时人工标注了5万条视频片段,产生了超过10万条高质量指令,显著提升了对人物场景的理解能力。

🎭HumanOmni在情绪识别、面部描述、动作理解等任务上均达到SOTA水平,实验验证了视觉+音频联合输入相比单独使用视觉或音频的优势,展示了其强大的多模态信息处理能力。

🛠️模型架构上,HumanOmni利用三个分支分别处理面部、人体和环境交互问题,并通过指令驱动的融合模块自适应融合视觉特征,最终将视觉、音频和文本token结合后送入大语言模型。

2025-02-28 21:07 浙江

HumanOmni是业内首个专注于人类中心场景的多模态大模型,能够同时处理视觉和音频信息,通过创新的模型架构和大规模数据集训练,在情绪识别、动作理解等任务上达到SOTA水平,为多模态场景理解带来全新突破。

01


模型介绍



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


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


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


论文主要创新:


模型架构


模型下载链接:

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 osimport argparsefrom humanomni import model_init, mm_inferfrom humanomni.utils import disable_torch_initfrom 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


效果展示



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


电影片段:

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!"


特写视频

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."


实拍视频

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


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


点击阅读原文,即可跳转模型链接~




?点击关注ModelScope公众号获取

更多技术信息~



阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

HumanOmni 多模态大模型 人物场景理解 AI 情绪识别
相关文章