为了账号安全,请及时绑定邮箱和手机立即绑定

零样本AI:我们所知的微调的终结?

YOLO-World 的零样本方法与 YOLO 的微调相比如何。

微调 vs 零样本学习

SAM 2LLaVAChatGPT 这样的模型可以在没有特殊训练的情况下完成任务。这让人们开始怀疑传统的训练AI的方法(即微调)是否已经过时了。

在本文中,我们将比较两个模型:YOLOv8(微调)和 YOLO-World(零样本学习)。通过观察每个模型的表现,我们将尝试回答一个大问题:微调是否会成为过去式,还是我们仍然需要这两种训练AI的方法?🤔

TL;DR: 如下所示,上述问题的答案是:视情况而定!

图1. 何时使用微调而不是零样本学习,反之亦然?

🔥 了解多模态和基础模型的最新进展,敬请关注我们在CVPR 2024系列中的介绍:

⭐️ 不要错过我们的Segment Anything Model (SAM 2)系列:

目录
  1. 微调 VS 零样本学习
  2. YOLOv8 vs YOLO-World
  3. 那么,什么时候使用微调而不是零样本学习,反之亦然?
  4. 接下来会怎样?
1. 微调 VS 零样本学习

传统上,在计算机视觉中的关键任务——目标检测中,我们主要依赖于微调[1]。这个过程涉及使用一个较小的特定任务数据集来调整预训练模型的参数。

虽然有效,但微调也有其缺点:

  • 1. 耗时:通常需要数小时甚至数天的训练时间。
  • 2. 需要大量数据:每个新类别都需要大量的标注数据。
  • 3. 计算成本高:需要强大的处理能力和大量的能源。
  • 4. 缺乏灵活性:对于每个新对象类别都需要重新训练模型。

进入 零样本 [2],这是一种变革性的方法,解决了上述限制。零样本学习并不是全新的概念,但它 使模型能够识别从未明确训练过的对象类别

从高层次来看,零样本学习的工作原理如下:

  • 1. 模型学会将视觉特征与语义概念关联起来(即语义理解)。
  • 2. 它利用这种理解来识别新的、未见过的对象(即知识转移)。
  • 3. 模型利用上下文线索对不熟悉的对象进行合理的猜测(即上下文推理)。

这为本文的关键问题奠定了基础:鉴于零样本模型(如驱动ChatGPT的语言任务模型)的日益流行物体检测中的微调时代是否即将结束?

2. YOLOv8 与 YOLO-World
2.1 数据集

我们用来运行实验的两个物体检测数据集包括汽车图片和涂鸦/艺术品图片,如图2所示。

图2. 我们用于比较YOLO v8与YOLO-World的对象检测数据集(汽车和涂鸦)

让我们简要介绍一下实验中使用到的模型。

2.2 YOLOv8 与 YOLO-World

YOLOv8[3] 有三个主要组成部分使其独树一帜:骨干网络、颈部架构和 YOLO 头。

  • 骨干网络 CSPDarknet53 是一个深度神经网络,逐步对输入图像进行下采样以提取特征。它分为四个部分,每个部分负责在不同层次上进行特征提取,所有部分都连接到 PAN,PAN 作为 YOLOv8 的颈部。
  • 颈部 对骨干网络捕获的特征进行精炼。YOLOv8 的主要改进之一在于颈部,PAN 成功地结合了不同层次或尺度的特征,以捕获数据中的更多细节。这使得提取的特征更容易被头部解释,从而提高了预测的质量。
  • 头部 与颈部相连,负责做出最终预测。与 YOLOv5 的三个头部不同,YOLOv8 只有一个头部。这种设计通过专注于预测对象的中心来简化模型,从而减少复杂性。

YOLO-World[4] 则具有不同的架构,由 YOLO Detector、Text Encoder 和可重参数化的视觉-语言路径聚合网络(RepVL-PAN)组成。

2.3 性能

YOLOv8 — 车辆数据集

我们介绍一个简单的任务——检测图片中的所有汽车。我们使用3,123张图片训练了YOLOv8模型,训练周期为80个epochs。我们首先通过查看混淆矩阵(图3)开始我们的分析。

图3. YOLOv8(训练集)的混淆矩阵显示“汽车”类别的准确率很高

我们总结了三个主要要点:

  • 1. 模型在训练数据集上表现优异,mAP 为 0.9123,mAR 为 0.8912。
  • 2. 对误报的分析显示,模型在背景中检测到了未标记的车辆。为了提升性能,建议对这些背景中的车辆实例进行标注。
  • 3. 模型展示了强大的泛化能力,在未见过的测试集上表现优异,mAP 和 mAR 分别为 0.9011 和 0.8722。

我们通过Tenyks平台处理了预测结果,生成了以下混淆矩阵(图4):

图4。如预期的那样,YOLOv8(测试集)的混淆矩阵也非常准确。

检查错误,我们发现:

  • 1. 假阳性主要是由于模型检测到了未标记的背景中的车辆,展示了其在全面性上超越人工标注的能力(见图5)。
  • 2. 发现了一个标注不一致的问题,通过更新JSON文件并通过Tenyks_SDK重新上传轻松解决了这个问题。虽然这并没有显著影响整体性能,但它突显了数据质量检查的重要性。

图5。模型(即,YOLOv8)未找到车辆的样本

在这个阶段,可以进一步追求改进,但考虑到时间投入(大约8小时用于训练、测试和故障排除,不包括设置和学习曲线),模型的表现已经非常令人满意。

YOLO-World — 车辆数据集

对于零样本学习来说,过程简单得多。大约需要10分钟来获取一个模型,理解其工作原理并生成结果。但是,微调相比于零样本学习好多少,额外花费的时间是否值得呢?🤔

这里是 YOLO-World 在测试集上的混淆矩阵(图 6):

图6. YOLO-World 在汽车测试集上的结果不如 YOLOv8

这里是一些主要内容:

  • 1. 模型性能:
    — 训练数据集: mAP 为 0.49,mAR 为 0.63。
    — 测试数据集: mAP 为 0.44,mAR 为 0.55(对于至少有一个预测结果的图像)。
  • 2. 错误分析:
    — YOLO-World 的主要弱点: 在分辨 640x640 像素图像中占据较小区域的车辆时存在困难(见图 7)。
    — 大多数假阳性实际上是未标注的车辆,表明数据集中存在显著的标注问题。

图7. 基于物体大小的假阴性预测

  • 3. 零样本与微调模型对比:
    — 在混淆矩阵和漏检方面,零样本模型的表现不如微调模型。
    — 然而,零样本模型显示了一个关键优势:对训练数据集中的错误标注具有抗性

这个标注问题虽然看似微不足道,但解决起来却耗时耗力。安德鲁· Ng 的一句话很贴切:

“在机器学习中,80%的时间用于准备和清理数据,只有20%的时间用于实际的模型构建。”

考虑到在微调上投入的时间,这80%代表了相当大的努力。

结论中,微调的表现优于零样本学习,但训练所需的时间和资源可能并不总是值得这种边际改进。对于简单的任务,零样本模型提供了一个成本效益的起点,而微调则作为必要时的备选方案。

图8。不出所料,YOLO-World 的表现不如经过微调的模型。

▶️ 问题仍然存在:当这些方法被用于识别更复杂的对象时,它们的表现会如何比较?

YOLOv8 — 涂鸦数据集

我们使用 YOLOv8 对此数据集进行了类似的设置,以下是主要收获:

  • 1. 模型性能差异: 模型在训练集上的表现优于测试集(mAP 84%,mAR 88%),这表明可能存在过拟合或难以泛化到新数据。
  • 2. 类别不平衡: 数据集中存在显著的类别不平衡,只有9.7%的图像包含非破坏行为的实例。这导致模型在破坏行为检测上的表现优于非破坏行为检测。
  • 3. 泛化问题: 模型在未见过的数据上难以保持其性能,特别是在非破坏行为检测方面,这表明该概念难以学习和泛化。
  • 4. 特定检测挑战: 模型难以区分实际破坏行为和正常标志或不同语言的文本,经常将常规标志误判为破坏行为。

YOLO-World — 涂鸦数据集

对于 YOLO-World,这里有三个主要要点:

  • 1. 模型难以区分涂鸦: 模型未能区分涂鸦和非涂鸦行为,这可能是由于数据中的表述模糊所致。即使专注于“涂鸦”,模型的预测结果也没有改变,导致性能指标较差。
  • 2. 测试集表现不佳: 在测试集中,模型仅对两张图片进行了预测,且全部预测错误。
  • 3. 是否需要微调?: 虽然微调后的模型表现不佳,但它仍然产生了一些结果。当你试图让一个五岁孩子识别他从未听说过的东西时,你必须先教会他这是什么。对于模型来说也是如此:零样本学习可以理解基本对象并表现良好,但一旦需要识别更具体的东西,你最好准备进行微调
3. 那么,什么时候使用微调而不是零样本学习,反之亦然?

我们主要问题的答案是什么?答案是:视情况而定(见图9)。

图9. 比较微调和零样本学习

如果你只关注准确性,而不考虑其他因素,那么零样本学习可能不是你的最佳选择。在纯粹的精度方面,它可能会比微调后的模型表现得更差。

然而,在现实世界中,准确性可能并不总是最重要的指标。其他因素如 时间资源可扩展性 也应予以考虑。鉴于应用程序和用例的广泛多样性,可以说人工智能的世界足够大,可以容纳多种方法:应用场景实在太多,无法断言某种方法是普遍优越的。

想象一下,零样本模型就像一个好奇的五岁孩子。如果你的任务是那种你可以放心地让孩子去做的事情——比如在没有事先训练的情况下识别图像中的特定对象——那么零样本学习可能是一个很好的选择。它会像孩子处理任务一样:拥有通用知识但没有特定的专业技能。

然而,如果你认为这项任务对于孩子来说太复杂,无法准确完成,或者潜在的不准确性对于你的应用来说是不可接受的,那么你应该准备好 投入必要的时间和资源 来对模型进行微调,以满足你的特定需求。

4. 接下来是什么?

我们正在准备一个 Jupyter Notebook,演示如何使用Tenyks Python SDK 分析和调试您的模型。

具体地,在此帖子中展示的数据集中,你会发现:

  1. Tenyks SDK 的介绍及其优势
  2. 安装 Tenyks SDK 的说明
  3. 准备工作区的步骤
  4. 创建数据集和上传模型预测的指导
  5. 搜索和显示图像的方法
  6. 使用自然语言搜索过滤器的技术(例如,搜索“白色汽车”、“校车”、“福特皮卡”等)
参考资料

[1] 大模型的参数高效微调:全面调查

[2] 一种令人尴尬的简单的零样本学习方法

[3] 实时飞行物检测使用 YOLOv8

[4] YOLO-World:实时开放词汇对象检测

作者 : Victor Sirakov, Dmitry Kazhdan, Jose Gabriel Islas Montero

如果你想了解更多关于Tenyks的信息,可以尝试使用sandbox

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消