OMG-LLaVA: Bridging Image-level, Object-level, Pixel-level Reasoning and Understanding

发表时间:27 Jun 2024

论文链接:https://arxiv.org/pdf/2406.19389

作者单位:Wuhan University

Motivation目前的通用分割方法在像素级图像和视频理解方面表现出强大的能力。然而,它们缺乏推理能力,不能通过文本指令控制.相比之下,大型视觉语言多模态模型表现出强大的基于视觉的对话和推理能力,但缺乏像素级的理解,难以接受视觉提示进行灵活的用户交互。

解决方法

本文提出了OMG-LLAVA,这是一个新颖而优雅的框架,结合了强大的像素级视觉理解与推理能力。它可以接受各种视觉和文本提示进行灵活的用户交互。具体来说,我们使用通用分割方法作为视觉编码器,将图像信息、感知先验和视觉提示集成到LLM提供的视觉标记中。LLM负责理解用户的文本指令,并根据视觉信息提供文本响应和像素级分割结果。我们提出了感知先验嵌入,以更好地将感知先验与图像特征集成。

实现方式:整体模型架构:

Image Encoder(包含在OMG-Seg中):将基于ConxNeXt-L的CLIP模型作为Image Encoder,将分辨率为 1024×1024 的图片作为输入,通过32倍下采样和pixel shuffle得到256个视觉token。

Perception Prior Embedding(包含在OMG-Seg中)。文中发现直接把权重固定的感知模块和LLM结合并不能取得好的结果,因此提出了一个perception prior embedding提升效果。

OMG Decoder.文中用到了OMG Decoder生成以物体为中心的视觉token。

Visual Projector 和 Text Projector:

和LLaVA一样,文中也是用了MLP作为Visual Projector,同时也是用了MLP作为Text Projector将LLM输出的[SEG]token对应的特征映射到视觉空间。

实验image-level understanding and reasoning tasks, object-level understanding and reasoning, pixel-level understanding and reasoning, semantic segmentation datasets.

结论与以前的组合工作相比,我们的方法可以竞争结果,可训练参数和计算成本要少得多。

Future:我们希望我们的工作能够启发社区重新思考 MLLM 元架构的设计,以最小化模型组件并最大化 MLLM 的功能。

### Tiny-Llava 技术概述 Tiny-Llava 是一种轻量级的大规模语言和视觉辅助模型,继承了 Power-LLaVA 和 DeepSeek-VL 架构的优点。该模型旨在通过减少参数数量来优化性能,同时保持强大的多模态理解和生成能力[^1]。 #### 主要特点 - **紧凑设计**:相比完整的大型模型,Tiny-Llava 减少了计算资源需求,更适合边缘设备部署。 - **高效训练**:采用先进的压缩技术和迁移学习方法,在不影响效果的前提下缩短训练时间。 - **灵活应用**:支持多种输入形式(文本、图像),适用于广泛的任务场景如问答系统、聊天机器人等。 #### 安装指南 为了安装并运行 Tiny-Llava,需遵循以下步骤: 1. 创建虚拟环境并激活它; 2. 使用 pip 工具安装依赖库; 3. 下载预训练权重文件; 4. 加载模型实例准备推理。 ```bash # 创建 Python 虚拟环境 python -m venv tiny_llava_env source ./tiny_llava_env/bin/activate # Windows 用户应使用 `.\tiny_llava_env\Scripts\activate` # 更新 pip 并安装必要的包 pip install --upgrade pip pip install torch torchvision transformers datasets # 获取官方发布的最新版本权重 wget https://example.com/path/to/tiny_llava_weights.pth ``` #### 推理示例 下面是一个简单的 Python 代码片段展示如何加载已保存的 Tiny-Llava 模型来进行预测操作: ```python from transformers import AutoModelForVision2Seq, AutoProcessor processor = AutoProcessor.from_pretrained("path_to_processor_config") model = AutoModelForVision2Seq.from_pretrained("path_to_model") def predict(image_path, text_query): inputs = processor(images=image_path, text=text_query, return_tensors="pt") outputs = model.generate(**inputs) result = processor.decode(outputs[0], skip_special_tokens=True) return result ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ming_Chens

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值