
在多模态大模型领域,视觉与语言的深度融合一直是研究的热点。然而,传统模型往往只能进行整体图像推理,在像素级细节理解上存在局限。为突破这一瓶颈,香港理工大学与腾讯ARC Lab联合推出了UniPixel模型,它首次实现了像素级推理,为视觉语言理解带来了新的突破。
一、项目概述
UniPixel是一个由香港理工大学和腾讯ARC Lab团队开发的统一像素级多模态大模型,专注于图像/视频的精细理解与交互。它能够在单个模型中完成对象指代、像素级分割和区域推理三大任务,通过创新设计的“对象记忆机制”和统一视觉编码方式,实现了对视频中目标的精准追踪与语义理解。基于Qwen2.5-VL框架构建的UniPixel,支持点、框、掩码三种交互方式,在9项视觉任务基准测试中超越了72B参数的传统模型,并且开源了代码和在线Demo。
二、核心功能
(一)像素级视觉语言理解
UniPixel能够实现视觉信号与语言语义之间的像素级对齐,支持多种细粒度任务,包括图像/视频分割、区域理解以及PixelQA任务。例如,它可以精确地根据语言描述生成图像或视频中特定对象的像素级掩码。
(二)统一对象指代与分割
该模型将对象指代和分割能力无缝集成,能根据视觉提示输入生成相关的掩码,并在推理过程中基于这些中间指针进行后续推理,实现细粒度的像素级推理。
(三)多任务支持
UniPixel在多个基准测试中表现出色,包括ReVOS推理分割基准、MeViS、Ref-YouTube-VOS、RefCOCO/+/g等数据集,并设计了新的PixelQA任务,要求模型联合进行对象指代、分割和问答。
(四)灵活的视觉提示处理
它能灵活处理视觉提示输入,生成掩码并进行推理,支持单帧和多帧的视频区域理解,以及基于掩码的问答任务,适应不同场景需求。
三、技术揭秘
(一)统一框架设计
UniPixel采用统一框架,将对象指代和分割能力整合到一个模型中,实现从粗粒度场景理解到细粒度像素推理的跨越,为复杂视觉推理提供基础。
(二)对象记忆库
模型包含对象记忆库,存储从指代任务中提取的对象特征,为后续的分割和推理任务提供上下文信息,增强模型在像素级任务上的性能。
(三)多阶段训练策略
采用预训练、指代任务微调和分割任务微调的多阶段训练策略,逐步提升模型在像素级任务上的性能,适应不同任务需求。
(四)端到端掩码生成
模型能根据语言描述直接生成像素级掩码,实现语言与视觉的深度融合,支持多种细粒度任务,如图像/视频分割和区域理解。
(五)灵活的视觉提示处理
能灵活处理视觉提示输入,生成掩码并进行推理,支持单帧和多帧的视频区域理解,以及基于掩码的问答任务,适应不同场景需求。
(六)强大的推理能力
在VideoRefer-Bench-Q问答任务中,UniPixel-7B模型取得了74.1%的准确率,超越了包括GPT-4o在内的多个强大基准模型,显示出其在复杂视觉推理任务中的强大能力。
四、基准评测
UniPixel在多个基准测试中取得了优异的成绩。在ReVOS推理分割基准测试中,UniPixel-3B模型的J&F指标达到了62.1,UniPixel-7B模型达到了63.7;在MeViS基准测试中,UniPixel-3B模型的J&F指标为53.1,UniPixel-7B模型为55.8;在Ref-YouTube-VOS基准测试中,UniPixel-3B模型的J&F指标为70.5,UniPixel-7B模型为71.0。这些结果表明,UniPixel在像素级视觉语言理解任务上具有强大的性能和竞争力。
五、应用场景
(一)图像分割
UniPixel能够根据语言描述生成图像中特定对象的像素级掩码,适用于需要精确图像分割的场景,如医学图像分析、自动驾驶中的目标分割等。
(二)视频分割
在视频处理领域,UniPixel可以对视频中的对象进行实时分割,支持视频编辑、视频监控和增强现实等应用。
(三)区域理解
通过理解语言描述来识别和分割视频中的特定区域,可用于视频内容分析、智能监控系统和视频会议中的背景分割等。
(四)问答任务
UniPixel支持PixelQA任务,能够根据语言描述和视觉信息回答问题,适用于教育、智能客服和信息检索等场景。
(五)多模态交互
在需要结合视觉和语言信息进行交互的场景中,如智能助手、虚拟现实和游戏开发等,UniPixel能够提供更自然和准确的交互体验。
(六)智能监控
在安防监控领域,UniPixel可以实时识别和分割监控视频中的特定对象或区域,提高监控系统的智能化水平。
六、快速使用
(一)环境准备
确保已安装Python和必要的依赖库。
1、克隆仓库
git clone https://github.com/PolyU-ChenLab/UniPixel.gitcd UniPixel
2、设置虚拟环境。
conda create -n unipixel python=3.12 -yconda activate unipixel# you may modify 'cu128' to your own CUDA versionpip install torch==2.7.1 torchvision==.22.1 --index-url https://download.pytorch.org/whl/cu128# other versions have no been verifiedpip install flash_attn==2.8.2 --no-build-isolation
3、安装依赖。
pip install -r requirements.txt
(二)推理示例
推理脚本代码示例:
import imageio.v3 as iioimport nncorefrom unipixel.dataset.utils import process_vision_infofrom unipixel.model.builder import build_modelfrom unipixel.utils.io import load_image, load_videofrom unipixel.utils.transforms import get_sam2_transformfrom unipixel.utils.visualizer import draw_maskmedia_path = '<path-to-jpg-or-mp4-file>'prompt = 'Please segment the...'output_dir = 'outputs'model, processor = build_model('PolyU-ChenLab/UniPixel-3B')device = next(model.parameters()).devicesam2_transform = get_sam2_transform(model.config.sam2_image_size)ifany(media_path.endswith(k) for k in ('jpg', 'png')): frames, images = load_image(media_path), [media_path]else: frames, images = load_video(media_path, sample_frames=16)messages = [{'role':'user','content': [{'type': 'video','video': images,'min_pixels': 128 * 28 * 28,'max_pixels': 256 * 28 * 28 * int(16 / len(images)) }, {'type': 'text','text': prompt }]}]text = processor.apply_chat_template(messages, add_generation_prompt=True)images, videos, kwargs = process_vision_info(messages, return_video_kwargs=True)data = processor(text=[text], images=images, videos=videos, return_tensors='pt', **kwargs)data['frames'] = [sam2_transform(frames).to(model.sam2.dtype)]data['frame_size'] = [frames.shape[1:3]]output_ids = model.generate( **data.to(device), do_sample=False, temperature=None, top_k=None, top_p=None, repetition_penalty=None, max_new_tokens=512)assert data.input_ids.size() == output_ids.size() == 1output_ids = output_ids[, data.input_ids.size(1):]if output_ids[-1] == processor.tokenizer.eos_token_id: output_ids = output_ids[:-1]response = processor.decode(output_ids, clean_up_tokenization_spaces=False)print(f'Response: {response}')iflen(model.seg) >= 1: imgs = draw_mask(frames, model.seg) nncore.mkdir(output_dir) path = nncore.join(output_dir, f"{nncore.pure_name(media_path)}.{'gif'iflen(imgs) > 1else'png'}")print(f'Output Path: {path}') iio.imwrite(path, imgs, duration=100, loop=)
七、结语
UniPixel作为首个统一的像素级多模态大模型,通过其创新的技术架构和强大的性能,为视觉语言理解领域带来了新的突破。它不仅在多个基准测试中取得了优异的成绩,还为实际应用提供了丰富的支持。相信在未来,UniPixel将在更多领域发挥重要作用,推动多模态大模型的发展。
项目地址
项目官网:https://polyu-chenlab.github.io/unipixel/
Github仓库:https://github.com/PolyU-ChenLab/UniPixel
HuggingFace数据:https://huggingface.co/datasets/PolyU-ChenLab/UniPixel-SFT-1M
arXiv技术论文:https://arxiv.org/pdf/2509.18094
在线体验Demo:https://huggingface.co/spaces/PolyU-ChenLab/UniPixel
点亮“关注”,设为“星标”,精彩不迷路!与你携手探索AI的无限可能,精彩内容持续更新!🚀
双悦网配资-长线配资炒股-武汉配资网-股票十大平台提示:文章来自网络,不代表本站观点。