Yo LLaVA Your Personalized Language and Vision Assistant

something wrong...

Yo’LLaVA: Your Personalized Language and Vision Assistant | alphaXiv

[TOC]

Intro

Personalization

用户有时候想问的不是我该给一只狗买什么生日礼物

而是我该给我的狗买什么生日礼物

模型能够识别、理解并谈论用户特定的概念或对象

但是模型一般来说学的都是通用的内容,并不知道用户自身的setting

Yo’LLaVA

  • 给定少量(几张)特定对象的照片,模型学会将该对象嵌入为一组潜在 Token(Latent Tokens)
  • 比单纯的文本提示更加到位

Contribution

  • 防止灾难性遗忘:Yo’LLaVA冻结了大部分的预训练参数,只针对一些特殊token
  • 捕捉细粒度视觉细节:引入了困难负样本挖掘(Hard Negative Mining),即使用视觉上相似但并非该对象的图片进行训练,迫使模型学习更具辨别力的特征

Abstract

  • 读入:五张个性化subject的图片
  • 构造对比学习:检索clip相似的若干图片和随机图片,进行recognition训练(带图)
  • 构造对话文本数据:使用LLaVA对图片进行描述,生成通用对话文本,进行纯文本训练
  • 输出:能够识别图片中的subject和直接描述subject的模型

Soft Prompt Tuning

Soft Prompt Tuning 并不修改预训练模型的核心权重,而是通过在输入端引入一组可学习的Tokens来进行优化

Method

Yo’LLaVA的目标是只给若干张subjec的图片,能够做到

  • 通过视觉识别subject
    • whether is in a photo or not
  • 支持关于subject的VQA任务
    • ask about <sks>’s location
  • 缺乏图片输入的情况下,在纯文本环境中回答subject的视觉特征
    • ask questions about intrinsic attributes of <sks> like its color, shape

Personalizing the Subject as a Learnable Prompt

为了识别图片中是否存在特定的subject

native的做法是:使用prompt详尽地描述subject的每一个细节,但要么很困难要么做不到

需要引入Soft Prompt Tuning,对Prompt层进行学习

1
2
<sks> is <token1><token2>...<tokenk>. 
Can you recognize <sks> in this photo?
  • 只需要增加几个新的token和对应输出权重
  • 不需要修改MLMs的预训练权重

因此,对于参数的变化总结为:

  • 输出层增加的参数:最后输出的分类头参数矩阵由$C\times N$扩展到$C\times (N+1)$
    • $C$表示上一个hidden feature的维度
    • $N$表示词表维度
  • <token1><token2>. . . <tokenk>Prompt层中的可学习token,以及<sks>

定义可训练的参数:

$$ \theta = \left\{\text{, ,...},W_{(:,N+1)}\right\} $$

构造大量对话文本$(I,X_q,X_a)$,分别表示图片、提问、标准回答,进行训练

从而让模型学习到新的concept(注意冻结其他参数)

Enhancing Recognition with Hard Negative Mining

对于识别问题,比较简单的训练方式就是询问subject是否在图片中

显然不能全是正例,不然会训崩

paper从LAION中抽样了100张图片作为负例,混合训练

同时我们需要避免模型过度泛化

subject:yellow + dog

model: any yellow animal

为了增强训练,paper采用了hard negative mining的方法

  • 若subject是一只毛绒狗,则负例应该选择其他不是狗的毛绒动物

Hard Negative

因此最后训练数据图片的组成为:

  • 100张随机抽取
  • 100张通过CLIP计算相似度得到top-m张图(m=100)
  • 正样本(5张左右)

然后paper构造了30条左右的prompt,以不同方式询问与回答:<sks>在图里吗?

Learning to Engage in Natural Conversations about the Subject

通过上述算法,模型掌握了识别的能力,但未必掌握了如何描述subject:Describe <sks> in detail.

因此需要进一步训练,使得模型能够在对话中熟悉掌握subject的本质特性

paper定义了10份通用对话模板,分为人类物体两种(方便套用任何需要进行个性化训练的subject)

避免过于细节的问题,例如:subject的尾巴是什么颜色的?

显然不是所有物体都有这个特征

对于每一张图像,使用LLaVA针对问题生成回答,完成数据集构建

为了让模型真实地记住subject的特征,避免模型通过图像泄露得到答案

这一阶段训练是纯文本的,只使用问题-答案对进行训练

Experiment

Train

对于单个subject,使用5张图像作为输入,软提示的视角token数量设定为16

使用LLaVA-1.5-13B,进行单轮对话训练,GPU选择单卡A6000

Dataset

数据集的初始构建由40个subject构成:Person (10), Pets (5), Landmarks (5), Objects (15), and Fiction Characters (5).

每个subject含有10-20张图片,切分为训练集和测试集

Baselines

  • Naive LLaVA
  • LLaVA + Prompt:通过提示词提供subject信息给LLaVA
  • GPT-4V
    • +Prompt
    • +Images(GPT-4V支持多轮图像对话,因此可以提供多个subject的图片,单张图片1k token)

图片信息显著比文本提示更加丰富,因此GPT-4V+Images应当是性能的理论上界(提供了充足的描述)

文本提示的获得方法:

  • 人工(约 16 token)
  • 模型生成

为了方便对比,准备了两组文本提示词:

  • 拼接人工+模型生成(约1.3k的token)
  • 模型再总结(约16 token)

Results

Recognition Ability

  • 40 个主体,每个主体有 5 到 10 张包含该对应主体的test图像
  • 对于每个主体,其所有的测试图像均作为正样本,而来自其余 39 个类别的测试图像则作为负样本
  • 总共有 333 个正向测试样本和 13,320 个负向测试样本

实验提供图像+问题Can you see if <sks> is in this photo? Answer with a single word or phrase.

results

Weighted是正负样本准确率的均值

  • 过长的描述会对性能产生负面影响(即使用 1.3k 个 token 仅达到 0.650),可能描述了多余内容
  • 给出的参考图像越多,性能越好

Question Answering

准备了多道A或者B的选择题

  • 171道视觉(基于图片提问)
  • 400纯文本

Comparison with MyVLM

Ablation Studies

image-20251217093115393

  • 对Prompt的可学习token长度的消融:越长越好,为了均衡性能,选择16

  • 对subject传入的图像数的消融:越多越好,选择5

  • 数据集构建消融

    • 纯LLaVA:
      • 识别能力随机
      • 描述能力完全不行
    • 构造识别数据:<sks>是否在图中?
      • 识别能力提升
      • 描述能力完全不行
    • 构造文本对话数据
      • 识别能力略微提升
      • 描述能力具备
    • 构造Hard Negative样本
      • 识别能力显著提升
      • 描述能力具备

数据集消融

使用 Hugo 构建
主题 StackJimmy 设计