VLMs and TagCLIP

Making VLMs More Robot-Friendly: Self-Critical Distillation of Low-Level Procedural Reasoning

核心问题:
大语言模型(LLM,比如ChatGPT)在帮机器人做计划(比如“去厨房拿杯水”)时,有个大毛病:它们写出来的计划步骤,对人来说看着很合理、很连贯,但对机器人来说太模糊、缺细节。这是因为LLM是在网上看人类语言训练出来的,习惯像人一样思考,会省略很多“显而易见”的低层次操作细节(比如“伸手”、“抓握”的具体角度和力度感知)。直接让机器人执行这些“高大上”的计划,很容易出错。

现有方法的不足:
有人想到用能“看图”的视觉语言模型(VLM)来帮忙,让计划更贴近看到的场景。但现有的VLM方法要么只能在特定仿真环境里用(不实用),要么需要超大模型(太贵、难部署)。现实世界(比如教育、普通机器人)需要轻量、省钱、好用的方案。

论文的解决方案:SelfReVision(自我修订)
这篇论文提出了一个聪明的方法叫 SelfReVision。它的核心思想是:让小VLM自己教自己进步,不需要请“外援”(更强的模型或人工标注数据)。

怎么教自己?分三步走(一个循环):

  1. 先写个草稿 (Criticize - 批判起点): 小VLM根据看到的图片和任务指令(如“收拾桌子上的书”),先写一个初步的计划步骤列表。
  2. 自己挑毛病 (Criticize - 自我批判): 然后,让小VLM自己批判这个初步计划。提示它:“看看你这个计划有啥问题?是不是没说清楚东西在哪?步骤跳得太快?忽略了图片里的某个关键东西?” 模型就会找出自己计划中的模糊、遗漏或不准确之处。
  3. 动手修改 (Revise - 自我修订): 利用上一步自己找出的毛病,让小VLM修订计划。让它一步一步、踏踏实实地把缺失的细节补上,让计划更具体、更贴合图片里看到的实际情况(比如“先向右转90度看到桌子,然后向前走1米到桌子前,看到桌角有本书,伸出机械臂到书的上方10厘米处…”)。
  4. 比比哪个好 (Verify - 自我验证): 最后,让小VLM自己判断:是原来的计划好,还是修改后的计划好?如果修改后的更好,就保留它(循环结束)。如果没更好或者差不多,就再走一遍这个循环(批判->修订->验证),直到改出一个满意的计划。

这个循环的好处:

  • 省钱省力: 完全靠模型自己“琢磨”,不需要额外标注数据或请更强的模型当老师。
  • 小模型也能变强: 实验证明,即使是参数规模较小的VLM(3B, 7B, 12B, 27B),经过这个自我修订过程后,生成的计划质量大幅提升,甚至能超过像GPT-4o这样强大的通用大模型生成的计划!
  • 计划质量提升明显: 提升主要体现在:
    • 计划更完整 (Completeness): 遗漏的步骤更少了。
    • 覆盖面更广 (Coverage): 计划能处理任务中更多的方面。
    • 更接地气 (Image Groundedness): 计划里的步骤和图片内容结合得更紧密了(机器人知道具体该看哪里、动哪里)。

怎么用?两种方式:

  1. 推理时直接用: 需要执行任务时,让模型现场走这个自我修订循环,生成最终计划给机器人执行。好处是灵活,不用重新训练模型;坏处是现场计算可能慢点。
  2. 训练时自我提升: 用模型自己修订出来的高质量计划作为新的训练数据,去微调模型本身。这样训练后,模型“写计划”的能力就内化了,以后生成计划又快又好。坏处是需要花点时间训练模型。

实际效果如何?

  • 在仿真环境和真实图片数据集上测试,经过SelfReVision修订的计划,在多个质量指标上显著优于模型最初生成的计划、以及一些其他流行方法(如“生成一堆计划选最好的”或专用规划模型PaliGemma)。
  • 对于实体机器人任务(如仿真环境搭积木、真实机器人路径规划),使用SelfReVision修订过的计划,机器人的任务成功率也明显更高(Gemma 12B 模型成功率提升了26%,27B 提升了17%)。

这篇论文提出了一个叫 SelfReVision 的妙招,让小型的视觉语言模型能通过“自我批判 -> 自我修订 -> 自我验证”的循环,不断改进自己为机器人生成的任务计划。这种方法不依赖外部资源,让小模型生成的计划变得更详细、完整、贴合实际看到的环境,从而让机器人执行起来更靠谱、成功率更高。它解决了LLM生成机器人计划“眼高手低”的关键问题,为实现更实用的具身智能提供了高效、轻量的解决方案。

TagCLIP:一种局部到全局的框架,用于增强CLIP的开放词汇多标签分类,无需训练

核心问题:CLIP模型在多标签分类中的短板

CLIP模型在单标签分类(判断图中最主要物体)中表现出色,但在多标签分类(识别图中所有相关物体)时效果不佳。原因有二:

  1. 全局特征主导:CLIP训练时用整个图像与文本匹配,导致特征被最显眼的物体主导,忽略小物体或不显眼类别。
  2. 对比损失副作用:CLIP的损失函数让不同类别竞争,导致模型倾向于只预测最突出的一个类别,而非多个共存类别。

如图1所示,原始CLIP常漏检小物体(如键盘上的“键盘”标签),而局部特征(如鼠标的滚轮)才是多标签分类的关键线索。

在这里插入图片描述

关键发现:CLIP的空间信息被浪费了

作者发现CLIP的最后一层破坏了空间细节,但倒数第二层保留了丰富的局部特征(如图3)。这一层能精确定位物体局部(如狗耳朵、车轮),为多标签分类提供关键信息。

在这里插入图片描述

解决方案:TagCLIP框架

TagCLIP利用上述发现,设计了一个无需训练的三步流水线,直接从冻结的CLIP模型中提取多标签:

在这里插入图片描述

  1. 局部粗分类
    用倒数第二层特征对每个图像小块(Patch)分类,生成初步标签(但含噪声)。
  2. 双掩码注意力去噪(DMAR)
    • 掩码1:用多层注意力权重投票,过滤不可靠的关联(如把云误判为“羊”)。
    • 掩码2:剔除各类别中低响应区域(如“车”标签下响应弱的像素)。
  3. 类别重识别(CWR)
    对每个候选类别裁剪出高响应区域,用CLIP全局特征二次验证,合并局部与全局结果(如确认局部检测到的“杯子”是否真实存在)。

核心优势

  • 零训练开销:直接优化CLIP输出,无需微调或新数据。
  • 多标签性能提升
    • VOC数据集:mAP从85.8%→92.8%(表2)
    • COCO数据集:mAP从63.3%→68.8%
  • 下游任务突破:将生成的标签用于弱监督语义分割(WSSS),在PASCAL VOC上达到64.8% mIoU(表3),比之前最优方法高12%,证明标签质量优越。

在这里插入图片描述

为什么重要?

  1. 解决CLIP痛点:释放CLIP在多标签场景的潜力,使其更实用。
  2. 推动无标注学习:结合“先分类后分割”范式(CLS-SEG),实现无人工标注的语义分割,大幅降低标注成本。
  3. 轻量部署:完全基于冻结模型,适合资源受限场景(如边缘设备)。

开源地址:https://github.com/linyq2117/TagCLIP

TagCLIP通过挖掘CLIP隐藏的局部特征,以“局部→精修→全局”三步实现高精度多标签分类,无需额外训练即可提升CLIP性能,并为无标注分割等任务开辟新路径。

一、核心决策框架:5大维度定位问题

离散值
连续值
分组
压缩特征
问题类型
是否有标签
监督学习
无监督学习
目标类型
分类
回归
目标
聚类
降维

关键决策点解析:

  1. 标签存在性:决定模型是否需要学习映射关系(监督)还是发现模式(无监督)
  2. 目标变量性质:离散值→分类,连续值→回归
  3. 数据规模:小样本(<1k)需防过拟合,大样本(>100k)需考虑计算效率

二、分类任务:从数据特性到模型选择

1. 小样本场景(<50条)
# 实战代码示例:小样本文本分类
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer()
X_train = tfidf.fit_transform(texts)
model = MultinomialNB(alpha=0.01)  # 拉普拉斯平滑

算法选择逻辑:

  • 优先选择高偏差模型:防止过拟合
  • 文本数据:朴素贝叶斯 + TF-IDF(条件独立假设契合词袋特征)
  • 数值数据:LDA/QDA(高斯分布假设)+ 特征标准化
  • 边界清晰数据:线性SVM(最大化间隔)
2. 中等样本(1k-100k)

决策树:

文本
非文本
清晰
模糊
数据类型
线性SVM+TruncatedSVD
类别边界
随机森林
KNN

关键考量:

  • KNN陷阱:维数灾难(高维时需搭配PCA)
  • 随机森林优势
    # 特征重要性分析
    rf = RandomForestClassifier()
    rf.fit(X, y)
    pd.Series(rf.feature_importances_, index=X.columns).plot.bar()
    
3. 大样本(>100k)

解决方案:

# 增量学习示例
from sklearn.linear_model import SGDClassifier
model = SGDClassifier(loss='log_loss', max_iter=1000, tol=1e-3)
for batch in data_generator:  # 分批加载
    model.partial_fit(batch_X, batch_y, classes=class_list)

三、回归问题:超越线性关系

1. 基础模型选择
数据类型推荐模型数学原理
线性关系Ridge回归L2正则化:min∥w∥²
特征选择Lasso回归L1正则化:min∥w∥¹
高相关特征ElasticNetL1+L2混合正则化
2. 非线性场景实战
# 多项式特征扩展示例
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, interaction_only=True)
X_poly = poly.fit_transform(X)
model = RandomForestRegressor(n_estimators=100)

四、聚类算法:无监督学习的核心

1. 算法选择矩阵
样本量已知簇数未知簇数
<10kKMeansMeanShift
>10kMiniBatchKMeansDBSCAN(eps优化)
2. 簇数确定技巧
# 肘部法则实现
from sklearn.cluster import KMeans
inertia = []
for k in range(1,10):
    kmeans = KMeans(n_clusters=k).fit(X)
    inertia.append(kmeans.inertia_)
plt.plot(range(1,10), inertia, 'bx-')  # 拐点即最佳K

五、降维技术:从可视化到加速

1. 算法对比表
目标推荐方法注意事项
特征压缩PCA需先中心化数据
非线性结构t-SNE仅适合<10k样本
文本特征降维TruncatedSVD等价于LSA
2. t-SNE实战陷阱
# 正确使用t-SNE
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, perplexity=30, early_exaggeration=12)
X_tsne = tsne.fit_transform(X)  # 仅用于可视化,不可逆!

六、超越scikit-learn的工程实践

  1. 特征工程优先
    # 自动化特征生成
    from featuretools import dfs
    features = dfs(entityset=es, target_entity='users')
    
  2. 模型融合策略
    # Stacking集成示例
    from sklearn.ensemble import StackingClassifier
    estimators = [('svm', SVC()), ('rf', RandomForestClassifier())]
    stack = StackingClassifier(estimators, final_estimator=LogisticRegression())
    
  3. 超参优化框架
    # Optuna自动化调参
    import optuna
    study = optuna.create_study(direction='maximize')
    study.optimize(objective, n_trials=100)
    

七、决策逻辑的本质

  1. 计算效率三角
    模型复杂度
    样本量
    简单模型
    分布式/增量
    特征维度
    降维预处理
  2. 可解释性权衡
    • 业务汇报场景:逻辑回归 > 随机森林 > 神经网络
    • 黑盒模型必须配合SHAP解释:
      import shap
      explainer = shap.TreeExplainer(model)
      shap_values = explainer.shap_values(X)
      

建立算法验证清单

  1. 数据性质检测表
    • 缺失值比例 ______
    • 类别不平衡度 ______
    • 特征相关性热图 ______
  2. 模型验证流程
    基线模型
    特征工程
    尝试3类算法
    超参调优
    融合策略
  3. 失败回退策略
    • 复杂模型失败 → 返回逻辑回归/KNN
    • 降维后效果下降 → 改用特征选择
    • 聚类效果差 → 尝试谱聚类或DBSCAN

理解:模型选择是数据特性、计算资源、业务目标的动态平衡过程

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

frostmelody

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

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

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

打赏作者

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

抵扣说明:

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

余额充值