小样本(少样本)目标检测概述(few-shot object detection)

一、小样本目标检测 vs 少样本目标检测

首先必须要分辨这两个概念。如果光看名字,我们可能会单纯的认为小样本就是代检测目标区域比较小,难以检测;少样本就是训练样本数量较少,难以训练。

上面的理解其实是错的。看网上大部分的文章、博客、论文,小样本和少样本是等价的。所谓小样本并非是目标较小,而是训练数据较少。

看英文名字就会更加直白,小样本/少样本目标检测一般翻译为 few-shot object detection,显然 few-shot 指的是数量少。同理还有 one-shot 、zero-shot 都是指样本数量,而一般目标区域较小会用 dense-detection或small 来表达。

二、小样本目标检测简介

小样本分类问题一般被定义为 C-way K-shot 问题,即有 C 种类别的数据且每类仅包含 K个已标记的样本。

小样本目标检测 FSOD(few-shot object detection),是解决训练样本少的情况下的目标检测问题。

众所周知,人类可以仅从一个动物实例中就推广到该动物其它实例,现有深度学习方法,多数仍以数据驱动,即需要成千上万的类别实例训练,使得模型能够“认识”类别的新实例。因此few shot learning ,只从少数实例训练,使得模型即可认识新实例,成为目前的一个研究热点。

通过应用较少的标注数据的半监督方法或者利用不完全匹配的标注数据的弱监督方法,利用极少的标注数据学习具有一定泛化能力的模型显得较为重要,这是小样本学习的所需要解决的问题。

小样本目标检测可以分为以下几种情况:

(1)类别数确定:给定一个现有的目标检测器,该检测器已经在某些类别的大量数据(称为基本类别)上进行了训练。我们希望仅加入少量新的类别和训练集(例如每个类别1-30个),就能够检测新类别,同时保持检测原始基本类别的性能。

(2)类别数确定:用小样本从头开始训练一个目标检测器,没有大量数据可以用于预训练。

(3)类别数不确定:在模型训练后对新的类别进行分类。这要求训练集、验证集和测试集来自于不同类别的数据集。

小样本图像目标检测是传统目标检测技术与小样本学习技术的融合。主流方法是使用一些trick对一般的目标检测网络进行修改,包括但不限于预训练–微调、数据增强、网络修改、样本匹配策略、损失函数修改等。

三、小样本目标检测的方法

这部分内容来源于论文《 张振伟,郝建国,黄健,潘崇煜.小样本图像目标检测研究综述[J].计算机工程与应用,2022,58(05):1-11. 》,知网可以下载这篇论文。

小样本目标检测方法主要基于传统的经典成熟的目标检测方法,借鉴小样本学习框架,构建针对目标检测的小样本解决方案。现有的方法主要可以分为六种:

(1)基于度量学习(metric learning)的方法
(2)基于数据增强的方法
(3)基于模型结构的方法
(4)基于微调(fine-tune)的方法
(5)基于元学习的方法
(6)基于集成的方法

不同方法的对比如下:
在这里插入图片描述
各种方法的具体介绍可以参看这篇论文。

关于元学习的介绍可见 一文入门元学习(Meta-Learning)(附代码) 现有的大多数小样本目标检测方法使用元学习的思想。首先从大量的基类数据中学习通用元特征,然后从少量的支持样本中生成特征映射,对新类的特征图进行重新加权,得到最终的检测结果。

四、小样本目标检测现有的问题

1、依赖于传统的目标检测领域中经典成熟的方法,但是后续的推理速度缓慢,不能满足实时性需求。

2、现有的方法泛化性能差强人意,随小样本类别增加,效果下降明显

五、参考资料

小样本目标检测研究现状

CVPR小样本检测:蒸馏&上下文助力小样本检测(代码已开源)

### 使用YOLOv11实现跨域小样本目标识别的方法 #### 1. 数据预处理 为了提高模型在不同领域数据上的泛化能力,可以采用多种增强技术来增加训练集多样性。对于小样本学习场景,迁移学习和元学习方法尤为重要[^1]。 #### 2. 模型架构调整 针对特定应用场景优化网络结构,比如引入注意力机制或设计更高效的特征提取器。这些改进有助于提升模型对少量标注样本的学习效率以及应对新环境的能力。 #### 3. 训练策略 - **微调(fine-tuning)**: 利用已有的大规模预训练权重作为初始化参数,在新的目标任务上继续迭代更新。 - **少样本学习(Few-shot Learning)**: 应用度量学习(metric learning),通过计算查询图像和支持集中样例之间的距离来进行分类决策;或者利用生成对抗网络(GANs)合成额外的正负类实例辅助训练过程。 #### 4. 测试阶段自适应 当遇到未知分布的数据时,可以通过在线更新的方式逐步调整模型参数,使其更好地适应当前输入特性。这通常涉及到伪标签生成(pseudo-labeling)、不确定性估计(uncertainty estimation)等技巧的应用。 ```python import torch from yolov11 import YOLOv11 def cross_domain_few_shot_detection(source_data, target_data, few_shot_samples): model = YOLOv11(pretrained=True) # 微调模型至源域 fine_tune(model, source_data) # 准备支持集与查询集 support_set, query_set = prepare_sets(target_data, few_shot_samples) # 执行few-shot学习流程 for epoch in range(num_epochs): train_on_support_set(support_set) with torch.no_grad(): evaluate(query_set) cross_domain_few_shot_detection(source_dataset, target_dataset, num_of_shots=5) ```
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ctrl A_ctrl C_ctrl V

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

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

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

打赏作者

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

抵扣说明:

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

余额充值