跨模态的知识蒸馏
基于深度学习的检测模型在预训练完成后无法高效更新知识,并且微调通常计算成本极高。
比如模型上线后,新增需求:机器人需要视觉系统能区分电视遥控器与空调遥控器,这时候你该怎么办?
我们希望模型部署于资源受限的机器人设备时,应能够通过用户提供的极少量参考样本,实现实例级个性化理解。
那如何让轻量级检测模型具备开放词汇和个性化实例识别的能力?
传统方法要么靠昂贵的微调,要么依赖云端大模型做 Prompt 推理。但在资源受限的边缘设备上,这些方案都走不通。
总的来讲,上述包含了两方面的需求:模型轻量化 + 少样本学习。

为了让模型可以在边缘设备上部署,同时具备低延迟、高准确率的性能。常见的三种模型压缩方法:模型量化、模型剪枝、知识蒸馏。
其中模型剪枝是从训练好的模型中去除不重要的权重,模型量化是将模型参数从高精度浮点数转换为低精度表示。两者都是为了降低模型大小和计算复杂度,从而提升模型在边缘设备上的推理速度。
而知识蒸馏则是通过将教师模型的知识迁移到学生模型中,从而提升学生模型在特定任务上的理解力。

小样本学习是从有限数量的比较图像中生成准确的输出,其可以在 2 到 5 张图像上进行训练。零样本是指模型需要在没有任何训练数据的情况下对未知类别进行分类。
而实现上述的最好方式就是视觉语言大模型,其凭借丰富的表示能力和参数规模,展现了卓越的零样本和开放词汇能力,但是通常规模庞大且计算密集,限制了它们在实时或资源受限场景中的应用。
一、知识蒸馏让YOLO实现少样本学习
传统的知识蒸馏方法通常要求教师模型和学生模型结构相似——但如果我们想将多模态大模型丰富的语义理解能力,“压缩”进一个纯粹的、轻量化的视觉检测模型中,该怎么办?
少样本目标检测,大多依赖CLIP、SAM这类模型做prompt工程或在线适配,但这些方法推理慢、成本高——有没有一种方式,能在训练时就把“语义理解能力”提前装进轻量模型里?
来自三星的研究团队提出了 MOCHA ,一种全新的跨架构知识蒸馏框架,首次实现了从大型视觉-语言模型到轻量级检测器的对象级语义迁移。
-
学生模型预训练,使用标准数据集(如COCO)对 YOLO 类轻量检测器进行常规预训练,建立基础检测能力。 -
跨模态知识蒸馏,将以对象为中心的多模态嵌入从视觉-语言教师模型(如LLaVa)迁移到紧凑的纯视觉学生检测器中。 -
少样本个性化推理,用户只需提供1~5张自定义类别的参考图(如自家宠物),系统即可基于原型匹配快速识别,无需任何在线微调或大模型参与。
经过MOCHA蒸馏后的YOLO模型,相比于没有经过蒸馏的基线YOLO,推理速度一致,无需文本提示即可少样本学习,并且在所有数据集和设置下,平均分提升达到了 +10.1。
二、重参数化让YOLO实现零样本学习
YOLOE 是零样本、可提示 YOLO 模型的一项新进展,专为 开放词汇表 检测和分割而设计。与之前仅限于固定类别的 YOLO 模型不同,YOLOE 使用文本、图像或内部词汇表提示,从而能够实时检测任何对象类别。

YOLOE 保留了标准的 YOLO 结构,并引入了可重参数化的区域-文本对齐新模块,通过一个小型的辅助网络细化文本嵌入(如 CLIP),从而支持文本提示检测。
在推理阶段时,此网络被折叠到主模型中,从而确保零开销。因此,YOLOE 可以检测任意文本标记的对象(例如,未见过的“交通灯”),而不会产生运行时损失。
from ultralytics import YOLOE
# Initialize a YOLOE model
model = YOLOE("yoloe-11l-seg.pt") # or select yoloe-11s/m-seg.pt for different sizes
# Set text prompt to detect person and bus. You only need to do this once after you load the model.
names = ["person", "bus"]
model.set_classes(names, model.get_text_pe(names))
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
通过文本提示,可以指定文本描述检测的类别,更详细内容可查看原论文:
https://arxiv.org/pdf/2509.14001
型,Jetson 等设备上可部署!

