小样本(少样本)目标检测概述(few-shot object detection)_小样本目标检测_ctrl A_ctrl C_ctrl V的博客-程序员秘密

技术标签: 机器学习  图像处理  目标检测  深度学习  人工智能  

一、小样本目标检测 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小样本检测:蒸馏&上下文助力小样本检测(代码已开源)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43799400/article/details/123992543

智能推荐

阿里香港轻量服务器加上BBR会发生什么?_阿里云轻量装不了bbr_流星奇迹year的博客-程序员秘密

文章选自我的博客:https://blog.ljyngup.com/archives/595.html/前言因为备案原因,我只好买了阿里的香港轻量。虽然已经知道是非直连大陆的,也就是说延迟和速度不会太理想,但是没办法,还是下单了。前几天都还好,之后的速度就惨不忍睹了。特别是晚上,网页几乎加载不出来,当天发工单,客服说先监控几天看看,第二天还给我打了电话。阿里云的服务还不错的。偶然看到了这篇文章...

php算前端还是后端,php属于后端还是前端_GO厂长的博客-程序员秘密

php是一种开源的通用计算机脚本语言,属于后端语言;PHP是一个应用范围很广的语言,特别是在网络程序开发方面;PHP大多在服务端运行,透过运行PHP的代码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和用户端的GUI应用程序。PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTM...

python基础 python三大结构 if语句 多重if语句 else语句 elif语句 for循环 while循环_python中else可以对应几个if_伊凡ED的博客-程序员秘密

for 循环 if语句 分支python三大结构1 、顺序结构 顺序结构是指代码按照编写的顺序,自上而下,自左至右 运行的顺序 在编程语言中大多是的编码都是这种结构。2、 分支结构 分支结构的表达式结果是一个布尔值的表达式 分支结构的基本语法有 if语句1 if 语句单项分支 if语法在分支结构中表达式是如果怎么样,表达式中的布尔值如果是True就执行当前if语句内...

SQL中N+1问题已经MyBaits中的解决方案_Uno2的博客-程序员秘密

概括地讲,N+1 查询问题可以是这样引起的: 你执行了一个单独的 SQL 语句来获取结果列表(就是“+1”)。 对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是“N”)。 这个问题会导致成百上千的 SQL 语句被执行。这通常不是期望的。 如果当SQL数据库中select语句数目过多,就会影响数据库的性能,如果需要查询n个Customer对象,那么必须执行n+1次sele

查找EMM和ECM_ecm和emm_rell336的博客-程序员秘密

CA_system_ID:表示适用于相关ECM和EMM流的相关的CA系统类型(CA厂家标识符).CA_PID:PMT表中的该描述信息为ECM的PID,CAT表中的该描述信息为EMM的PID.一般来说,ecmtableid为0x80/0x81,emmtableid为0x82~0x8F这个值是由ca厂家决定的。ca_descriptor描述字值为0x09,下面给

Android Studio 3.0 的一些小变化_珠穆朗玛小王子的博客-程序员秘密

前言一大早还在北京拥挤的地铁里,我的CTO闫哥在微信里给我发了一条信息:Android Studio 3.0发布了。为什么会这么关注Android Studio 3.0 的版本发布呢?主要是因为公司即将开发的新app准备使用Kotlin语言,而Android Studio 3.0 已经把Kotlin的语言支持内置进去了,这样就省去了很多的麻烦,如果你还没接触过Kotlin语言,可以去百度一...

随便推点

Maltab-机器学习-Engineering features_南叔先生的博客-程序员秘密

Statistical FunctionsMeasures of Central TendencyFunction Description mean Arithmetic mean median Median (middle) value mode Most frequent value trimmean Trimmed mean (mean, excluding outliers) geomean Geometric mean harme

以太坊java_java程序员使用web3j进行以太坊开发详解_weixin_39603357的博客-程序员秘密

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用web3j提供的API开发接口与以太坊进行交互,是java工程师学习以太坊应用开发的不二选择。以太坊概述以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了...

Cookie和Session的底层实现原理_有头发的代码匠的博客-程序员秘密

一、CookieCookie的特性:会话数据保存在浏览器客户端Cookie的底层实现原理:1)服务器创建cookie对象,把会话数据存储到cookie对象中。 new Cookie("name","value");2)服务器发送cookie信息到浏览器 response.addCookie(cookie);3)浏览器从响应头中得到服务器发送的C...

Python不开辟新的内存空间实现矩阵的转置、顺时针、逆时针旋转90度_python矩阵顺时针旋转_修炼之路的博客-程序员秘密

a = [[1,2,3], [4,5,6], [7,8,9]]row = len(a)#实现矩阵的转置for i in range(row): for j in range(row): if j > i: a[i][j],a[j][i]=a[j][i],a[i][j]#实现矩阵逆时针旋转90度for i in range(row // 2): for j in range(i,row-1-i): .

RecyclerView瀑布流布局优化——解决列跳动、item闪烁、空白的问题_recyclerview瀑布流 布局乱跳__wthee的博客-程序员秘密

原因为什么会出现这种列跳动、item闪烁、空白的问题呢?经过分析,应该是由于我们加载的图片高度不确定(宽度确定因为可以根据屏幕宽度和每行Item数目进行等分),而当我们向RecyclerView下方滑动一段距离后,由于ViewHolder的回收机制,item的尺寸并不确定,滑回到上方时Item需要重新自行绘制,于是这个又导致重绘,所以会有闪烁、跳动、空白等问题。原文:https://blog...

cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_热血枫叶的博客-程序员秘密

简介:      cocos2dx-LuaProxy 的作用主要是让cocos2dx引擎的扩展包(extensions)binding到Lua,便于做cocos2dx-lua项目开发者们。一、环境搭建:1.软件准备:cocos2d-x 2.1.4 cocos2dx-LuaProxyCocosbuilder 3.0 a2.搭建环境

推荐文章

热门文章

相关标签