?点击关注ModelScope公众号获取
更多技术信息~
🧠HumanOmni是业内首个专注于以人为中心的场景理解的多模态大模型,可以同时处理视觉和音频信息,弥补了当前视觉-语言模型在处理音频输入方面的不足。
👂该模型构建了包含240万个人类中心视频片段的数据集,并生成超过1400万条指令,同时人工标注了5万条视频片段,产生了超过10万条高质量指令,显著提升了对人物场景的理解能力。
🎭HumanOmni在情绪识别、面部描述、动作理解等任务上均达到SOTA水平,实验验证了视觉+音频联合输入相比单独使用视觉或音频的优势,展示了其强大的多模态信息处理能力。
🛠️模型架构上,HumanOmni利用三个分支分别处理面部、人体和环境交互问题,并通过指令驱动的融合模块自适应融合视觉特征,最终将视觉、音频和文本token结合后送入大语言模型。
2025-02-28 21:07 浙江
HumanOmni是业内首个专注于人类中心场景的多模态大模型,能够同时处理视觉和音频信息,通过创新的模型架构和大规模数据集训练,在情绪识别、动作理解等任务上达到SOTA水平,为多模态场景理解带来全新突破。
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
效果展示
我们分别在电影片段、特写视频、实拍视频三个人物场景下测试了我们的模型的理解能力。
电影片段:
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公众号获取
更多技术信息~
AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。
鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑