
统一视觉表示学习的新方法 增强跨模态交互能力
Video-LLaVA项目提出了一种新的对齐方法,实现图像和视频统一视觉表示的学习。该模型在无图像-视频配对数据的情况下,展现出色的跨模态交互能力,同时提升图像和视频理解性能。研究显示多模态学习的互补性明显改善了模型在各类视觉任务上的表现,为视觉-语言模型开发提供新思路。
开放索拉计划 <br>
![]()
<br>
MoE-LLaVA:大型视觉语言模型的专家混合 <br> 林斌、唐振宇、叶阳、崔嘉熙、朱斌、金鹏、张俊武、宁慕南、袁黎 <br>
![]()
![]()
<br>
<!-- > [**Video-Bench:评估基于视频的大型语言模型的综合基准和工具包**](https://arxiv.org/abs/2311.08046) <br> > 宁慕南、朱斌、谢宇佳、林斌、崔嘉熙、袁路、陈东东、袁黎 <br> [](https://github.com/PKU-YuanGroup/Video-Bench) [](https://github.com/PKU-YuanGroup/Video-Bench) [](https://arxiv.org/abs/2311.16103) <br> --> </p></details> ## 📰 新闻 * **[2024.07.27]** 🔥🔥🔥 一个经过微调的[Video-LLaVA](https://github.com/mfarre/Video-LLaVA-7B-hf-CinePile)专注于主题探索、叙事分析和角色动态。感谢[@micuelll](https://x.com/micuelll/status/1816851392134586540)。CinePile通过在其基准测试中微调Video-LLaVA来解决这些被忽视的领域。LanguageBind:通过基于语言的语义对齐将视频-语言预训练扩展到N模态 <br> 朱斌、林斌、宁慕南、闫洋、崔嘉熙、王鸿发、庞亚天、姜文浩、张俊武、李宗伟、张万财、李志锋、刘伟、袁黎 <br>
![]()
![]()
<br>
[2024.05.15] 🤝🤝🤝 感谢@zucchini-nlp的慷慨贡献,Video-LLaVa现已在Transformers库中可用!更多详情请参见此处。
[2024.01.27] 👀👀👀 我们的MoE-LLaVA已发布!一个拥有3B参数的稀疏模型表现优于拥有7B参数的密集模型。
[2024.01.17] 🔥🔥🔥 我们的LanguageBind已被ICLR 2024接收!
[2024.01.16] 🔥🔥🔥 我们重新组织了代码并支持LoRA微调,请查看finetune_lora.sh。
[2023.11.30] 🤝 感谢社区的慷慨贡献,OpenXLab的演示现已可访问。
[2023.11.23] 我们正在训练一个新的强大模型。
[2023.11.21] 🤝 查看由@nateraw创建的replicate演示,他慷慨地支持了我们的研究!
[2023.11.20] 🤗 Hugging Face演示和所有代码和数据集现已可用!欢迎关注 👀 此仓库以获取最新更新。
尽管数据集中没有图像-视频对,Video-LLaVA仍展示了图像和视频之间的出色交互能力。
强烈建议通过以下命令试用我们的网页演示,它包含了Video-LLaVA目前支持的所有功能。我们还在Huggingface Spaces提供了在线演示。
python -m videollava.serve.gradio_web_server
https://github.com/PKU-YuanGroup/Video-LLaVA/assets/62638829/71ab15ac-105e-4b18-b0b5-e1b35d70607b
<img src="https://yellow-cdn.veclightyear.com/835a84d5/c49b32b1-2724-48bc-afd9-b9eada2d6871.gif" width="500" />CUDA_VISIBLE_DEVICES=0 python -m videollava.serve.cli --model-path "LanguageBind/Video-LLaVA-7B" --file "path/to/your/video.mp4" --load-4bit
<img src="https://yellow-cdn.veclightyear.com/835a84d5/46ad834b-4fdb-473c-84bb-ea47833acda6.gif" width="500" />CUDA_VISIBLE_DEVICES=0 python -m videollava.serve.cli --model-path "LanguageBind/Video-LLaVA-7B" --file "path/to/your/image.jpg" --load-4bit
git clone https://github.com/PKU-YuanGroup/Video-LLaVA cd Video-LLaVA conda create -n videollava python=3.10 -y conda activate videollava pip install --upgrade pip # 启用PEP 660支持 pip install -e . pip install -e ".[train]" pip install flash-attn --no-build-isolation pip install decord opencv-python git+https://github.com/facebookresearch/pytorchvideo.git@28fe037d212663c6a24f373b94cc5d478c8c1a1d
[!警告]
<div align="left"> <b> 🚨 升级transformers以快速访问。 </b> </div>
pip install -U transformers
如果需要安装av,请执行
python -m pip install av
import av
import numpy as np
from transformers import VideoLlavaProcessor, VideoLlavaForConditionalGeneration
def read_video_pyav(container, indices):
frames = []
container.seek(0)
start_index = indices[0]
end_index = indices[-1]
for i, frame in enumerate(container.decode(video=0)):
if i > end_index:
break
if i >= start_index and i in indices:
frames.append(frame)
return np.stack([x.to_ndarray(format="rgb24") for x in frames])
model = VideoLlavaForConditionalGeneration.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")
processor = VideoLlavaProcessor.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")
prompt = "USER: <video>为什么这个视频很有趣? ASSISTANT:"
video_path = "你的本地视频路径"
container = av.open(video_path)
# 从视频中均匀采样8帧
total_frames = container.streams.video[0].frames
indices = np.arange(0, total_frames, total_frames / 8).astype(int)
clip = read_video_pyav(container, indices)
inputs = processor(text=prompt, videos=clip, return_tensors="pt")
# 生成
generate_ids = model.generate(**inputs, max_length=80)
print(processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0])
>>> 'USER: 为什么这个视频很有趣? ASSISTANT: 这个视频很有趣是因为婴儿坐在床上看书,这是一个不寻常且有趣的景象。'
<details>
<summary>已过时</summary>
我们开源了所有代码。 如果你想在本地加载模型(例如 LanguageBind/Video-LLaVA-7B),可以使用以下代码片段。
import torch from videollava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN from videollava.conversation import conv_templates, SeparatorStyle from videollava.model.builder import load_pretrained_model from videollava.utils import disable_torch_init from videollava.mm_utils import tokenizer_image_token, get_model_name_from_path, KeywordsStoppingCriteria def main(): disable_torch_init() image = 'videollava/serve/examples/extreme_ironing.jpg' inp = '这张图片有什么不寻常之处?' model_path = 'LanguageBind/Video-LLaVA-7B' cache_dir = 'cache_dir' device = 'cuda' load_4bit, load_8bit = True, False model_name = get_model_name_from_path(model_path) tokenizer, model, processor, _ = load_pretrained_model(model_path, None, model_name, load_8bit, load_4bit, device=device, cache_dir=cache_dir) image_processor = processor['image'] conv_mode = "llava_v1" conv = conv_templates[conv_mode].copy() roles = conv.roles image_tensor = image_processor.preprocess(image, return_tensors='pt')['pixel_values'] if type(image_tensor) is list: tensor = [image.to(model.device, dtype=torch.float16) for image in image_tensor] else: tensor = image_tensor.to(model.device, dtype=torch.float16) print(f"{roles[1]}: {inp}") inp = DEFAULT_IMAGE_TOKEN + '\n' + inp conv.append_message(conv.roles[0], inp) conv.append_message(conv.roles[1], None) prompt = conv.get_prompt() input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).cuda() stop_str = conv.sep if conv.sep_style != SeparatorStyle.TWO else conv.sep2 keywords = [stop_str] stopping_criteria = KeywordsStoppingCriteria(keywords, tokenizer, input_ids) with torch.inference_mode(): output_ids = model.generate( input_ids, images=tensor, do_sample=True, temperature=0.2, max_new_tokens=1024, use_cache=True, stopping_criteria=[stopping_criteria]) outputs = tokenizer.decode(output_ids[0, input_ids.shape[1]:]).strip() print(outputs) if __name__ == '__main__': main()
import torch from videollava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN from videollava.conversation import conv_templates, SeparatorStyle from videollava.model.builder import load_pretrained_model from videollava.utils import disable_torch_init from videollava.mm_utils import tokenizer_image_token, get_model_name_from_path, KeywordsStoppingCriteria def main(): 禁用torch初始化() 视频 = 'videollava/serve/examples/sample_demo_1.mp4' 输入 = '为什么这个视频很有趣?' 模型路径 = 'LanguageBind/Video-LLaVA-7B' 缓存目录 = 'cache_dir' 设备 = 'cuda' 加载_4位, 加载_8位 = True, False 模型名称 = 从路径获取模型名称(模型路径) 分词器, 模型, 处理器, _ = 加载预训练模型(模型路径, None, 模型名称, 加载_8位, 加载_4位, 设备=设备, 缓存目录=缓存目录) 视频处理器 = 处理器['video'] 对话模式 = "llava_v1" 对话 = 对话模板[对话模式].copy() 角色 = 对话.角色 视频张量 = 视频处理器(视频, return_tensors='pt')['pixel_values'] if type(视频张量) is list: 张量 = [视频.to(模型.device, dtype=torch.float16) for 视频 in 视频张量] else: 张量 = 视频张量.to(模型.device, dtype=torch.float16) print(f"{角色[1]}: {输入}") 输入 = ' '.join([默认图像令牌] * 模型.get_video_tower().config.num_frames) + '\n' + 输入 对话.添加消息(对话.角色[0], 输入) 对话.添加消息(对话.角色[1], None) 提示 = 对话.获取提示() 输入ID = 分词器_图像令牌(提示, 分词器, 图像令牌索引, return_tensors='pt').unsqueeze(0).cuda() 停止字符串 = 对话.分隔符 if 对话.分隔符样式 != 分隔符样式.两个 else 对话.分隔符2 关键词 = [停止字符串] 停止条件 = 关键词停止条件(关键词, 分词器, 输入ID) with torch.inference_mode(): 输出ID = 模型.generate( 输入ID, images=张量, do_sample=True, temperature=0.1, max_new_tokens=1024, use_cache=True, stopping_criteria=[停止条件]) 输出 = 分词器.decode(输出ID[0, 输入ID.shape[1]:]).strip() print(输出) if __name__ == '__main__': main()


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


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


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号