图像分类里的小样本学习(Few-shot Image Classification)

1. 为什么需要"小样本学习"?

我们人类学新东西很快:比如你第一次见到一种新水果,可能只看过一两张照片,下次再看到就能认出来。

但传统深度学习做图像分类往往不行:

  • 你想让模型学会"新类别A",通常得给它很多张标注图片(几十到上千张)。

  • 如果每个新类别只有 1~5 张图,模型很容易"背题"而不是"学会"。

小样本学习(Few-shot Learning)研究的就是:

当每个类别只有很少的标注图片时,模型还能不能可靠地学会分类?


2. 小样本学习到底在做什么?(N-way K-shot)

在小样本图像分类里,经常用一句话描述一个任务:N-way K-shot

  • N-way:这次要分多少类(比如 5 类)

  • K-shot:每类给多少张"参考图"(比如每类 1 张或 5 张)

同时还有两种集合:

  • Support set(支持集):给模型"学习/参考"的少量样本

  • Query set(查询集):用来测试模型是否学会(类似考试题)

举个最常见的例子:5-way 1-shot

  • 支持集:5 个类别,每类 1 张图(总共 5 张)

  • 查询集:每类再拿几张图,让模型去判断属于哪一类

你可以这样理解:

支持集 = "教科书上的例题",查询集 = "考试题"。


3. 为什么传统分类器在小样本下容易失败?

传统分类网络最后一步是一个固定的分类头(Softmax 分类器)。这在大数据时很强,但小样本时会遇到两个典型问题:

  1. 过拟合:样本太少,模型容易记住支持集那几张图的"细节噪声"。

  2. 泛化差:新类别的外观变化(角度、光照、背景)一多,模型就不稳。

所以小样本学习通常会想办法让模型别"死记硬背",而是学到更通用的判别方式。


4. 小样本学习最经典的思路:先学"会比较",再去分类(度量学习)

4.1 分类 ≈ "看起来更像谁"

假设你要判断一张新图属于 5 个类别中的哪一个,而每个类别你只有 1~5 张参考图。最自然的方法就是:

  • 把新图与每个类别的参考图比一比

  • 看"更像谁",就判为谁

这就是小样本学习里非常主流的路线:度量学习(Metric-based)


5. 原型网络(Prototypical Networks):最像"人类做分类"的 few-shot 方法

原型网络的核心想法可以一句话讲完:

每个类别用一个"代表向量"(原型)来概括,新图离哪个原型最近,就属于哪个类。

5.1 它怎么做?

  1. 用一个"特征提取器"(比如 ResNet/ConvNet)把图片变成向量(可以理解为"图片的指纹")。

  2. 对每个类别,把该类的 K 张支持图的向量求平均,得到这个类的原型(prototype)

  3. 来了一张查询图,就计算它和每个类别原型的距离,离谁近就预测为谁。

5.2 为什么它适合小样本?

  • K 很小的时候,你没法训练一个复杂的分类器,但"每类一个中心"这个思路非常稳。

  • 新类别来了,不需要重新训练大模型:只要把支持集算出原型,就能分类。


6. 让模型学"怎么快速学会"(MAML)

  • MAML 的目标不是直接学分类,而是学一个"很好的起点参数"。

  • 当遇到新类别时,用支持集做几步快速微调,就能适配新任务。

可以用一句话类比:

原型网络像"拿尺子比相似度";MAML像"学一套快速补课的方法"。


7. 现代实践的一句总结:预训练很重要

近几年在工程里常见的事实是:

  • 如果你有一个在大数据上预训练过的视觉模型(比如 ImageNet 训练过的 ResNet,或自监督训练过的 ViT),

  • 那么 few-shot 的效果会大幅提升。

因为预训练模型已经学会了大量通用视觉特征(边缘、纹理、形状、结构),小样本阶段只是在"少量数据下做适配"。


8. 小样本图像分类最常见的坑

  • 过拟合:样本少,训练分类头时别训练太久;增强要开足。

  • 数据分布变化:训练集是自然图片,测试是工业/医学图,效果会掉很多,这叫域偏移。

  • 评估波动大:因为 episode 随机抽样,结果会有方差,论文常用"平均准确率 ± 置信区间"。


9. 小结:一句话带走核心

你可以用这段做结尾:

小样本学习的目标,是让模型在"每类只有几张图"的条件下仍能可靠分类。最经典的方法是度量学习:先学一个好的特征空间,再用"原型/最近邻"按相似度完成分类;元学习方法则试图让模型学会"如何快速适配新任务"。在现代实践中,强预训练 + 简单的 few-shot 头往往是既好用又稳定的选择。

相关推荐
2501_943695332 小时前
大专统计与会计核算专业,怎么积累财务数据分析的案例?
数据挖掘·数据分析
●VON2 小时前
React Native for OpenHarmony:猜数字游戏完整技术实现文档
学习·react native·react.js·游戏·开源鸿蒙·von
民乐团扒谱机2 小时前
【微实验】Zhang-Suen 快速并行细化算法与MATLAB实现
人工智能·学习·算法·计算机视觉·数学建模·matlab
GHL2842710902 小时前
TeamTalk-msg_server学习
运维·服务器·c++·学习
试试勇气2 小时前
Linux学习笔记(十三)--动静态库
笔记·学习
好好学习天天向上~~2 小时前
3_Linux学习总结_基础指令
linux·服务器·学习
AI视觉网奇2 小时前
ue metahuman自动绑定实战
笔记·学习·ue5
tb_first2 小时前
万字超详细苍穹外卖学习笔记3
java·jvm·笔记·学习·spring·tomcat·maven
coldstarry2 小时前
sheng的学习笔记-AI-adaboost(Adaptive Boosting)
人工智能·笔记·学习