当前位置: 首页 > 编程日记 > 正文

增量学习不只有finetune,三星AI提增量式少样本目标检测算法 | CVPR 2020

作者 | VincentLee

来源 | 晓飞的算法工程笔记

该论文研究了非常有意义的增量式少样本目标检测场景iFSD(Incremental Few-Shot Detection),场景设置如下:

  • 检测模型可以在包含充足样本的基础类别上进行训练

  • 训练好后,iFSD能够应用到真实世界中,任何新类别在任何时候都能通过少量标注样本进行注册

  • 对于无限的新类别的学习,在内存使用量、存储用量和计算量上都应该是可行的,理想情况下,模型可以发布在资源有限的设备上,如手机和机器人

目前的常规目标检测算法大都难以适用于iFSD的场景设置,一般的做法是对新类别进行fine-tune,但这样既耗时效果又一般。为此,论文提出无限制CentreNet(OpeN-ended Centre nEt, ONCE),在原CentreNet(CenterNet?)的基础上,采用基于特征的知识迁移策略,将网络分成类可知和类不可知模块进行增量式少样本学习。首先使用基类训练一个通用的特征提取器,然后基于meta-learning学习class code生成器,最后通过结合特征和class code进行目标定位。

论文的主要贡献如下:

  • 在增量式少样本目标检测问题上,论文首次尝试减少常规需要深度训练的目标检测算法对大量训练数据进行批量训练的依赖

  • 提出无限制CentreNet(OpeN-ended Centre nEt, ONCE),将CentreNet适应到增量式少样本场景中

  • 在目标检测和服装关键点检测实验上,ONCE都比目前的方法要好

方法论

增量式少样本目标检测算法(Incremental Few-Shot Detection, iFSD)的目标为获得能够仅使用少量样本就能进行增量式学习新类别学习器,将目标类别分为足够样本的基础类别和少量样本的新类别,分别用于系统初始化和增量式学习,注意在增量式学习期间不能使用基类数据。

目标检测架构

常规的目标检测算法由于两阶段设计以及softmax分类器的使用,导致很难动态直接加入新类别。论文选择了CentreNet作为基础模型,出于以下两点考虑:

  • 高效的one-stage目标检测pipeline

  • 类别独立的建模范式(per-class heatmap centroid prediction),新类能够以插件形式接入

CentreNet将目标检测定义为point-attribute的回归问题,结构如图1,将中心点和空间大小(宽和高)作为回归目标,每个目标使用2D heatmap进行表示,而heatmap是类间独立的。

Incremental Few-shot Object Detection

由于CentreNet是批量学习的模型,不适合iFSD场景,在其结构上引入meta-learning的思想,即文中的无限制CentreNet(OpeN-ended Centre nEt , ONCE)

Model formulation:ONCE将CtreNet分为两部分:(i) 通用的特征提取器,将输入转化为3D特征图 (ii) 目标定位器,包含用于将特征图成heatmap的类特定编码(class code)。为了脱离批量学习的形式,类特定编码(class code)由meta-learned network(class code generator)根据辅助集生成

Meta-Training: Learning a Few-Shot Detector,为了充分压榨基础类别的作用,将ONCE训练分别两个串行的阶段。第一阶段训练类不可知的特征提取器,第二阶段固定特征提取器,联合训练目标定位器和meta-network,meta-network根据给定的辅助集生成类特定编码,目标定位器则结合类编码和特征进行少样本目标定位学习

Meta-Testing: Enrolling New Classes,给予包含少量标注图片的新类别辅助集,直接使用学习到的特征提取器、目标定位器和meta-network。先通过meta-network生成类特定编码参数化目标定位器,然后直接进行图2 stage I对应的推理,不需要模型再训练。

  • Stage I: Feature Extractor Learning

阶段一主要训练ONCE的类可知特征提取器,使用正常的CentreNet训练方法进行完整训练,目标定位器不用于阶段二,但后面基类的class code会复用阶段一的。

对于训练图片,提取类可知特征图,目标定位器结合学习到的与类相关的卷积核(class code)得到类的中心点heatmapYk。

对于目标的定位,先确定局部峰值,局部峰值为bbox输出位置,要求大于等于所有临界像素,最终的bbox结果如公式2,为中心偏移,为尺寸预测,结合offset code和size code获得,具体方法与上面的类别heatmap获取类似,使用回归损失对的参数和的参数进行优化。

  • Stage II: Class Code Generator Learning

在阶段一学习到的参数仅包含基类,是固定的。为了适应iFSD场景,使用class code生成器来根据样本图片在线生成新类别的class code。生成器的训练使用matching network的meta-learning策略,从基类中采样大量的少样本训练数据子集,模拟测试时的场景。

定义单个iFSD任务为在基类上平均采样获得的类标签集,标签集仅包含一个或几个类别,将标签集中的每个类的图片随机分为辅助集合(meta-training)和查询集(meta-valudation)Q。

在推理阶段,辅助集用于为每个类别生成class code

基于class code集合,按照公式4和公式5在查询图片上进行目标检测,通过最小化在上的平均预测误差来优化class code生成器的参数,误差计算使用损失为GT heatmap。

  • Meta Testing: Enrolling New Classes

给予少量的标注样本,新类别的meta-testing流程如下:

  • 使用少量的标注样本通过公式3获取class code

  • 通过公式4获取测试图片的特征

  • 通过公式1定位新类别的目标实例

  • 找到heatmap中局部最大位置,通过公式2获取所有bbox的坐标进行输出

对于基类的测试在第一步直接使用阶段一学习到class code,通过上述步骤,可以简单且独立地将新类别加入到iFSD中。

  • Architecture

特征提取器使用主干为ResNet的Simple baseline,结构如上图,包含encoder-decoder对。首先提取图片的低分辨率的3D特征图,然后通过可学习的上采样卷积输出高分辨率的特征图。class code生成器使用相同的encoder主干,在进行阶段二之前,生成器的权重拷贝特征提取器的权重进行初始化,最终通过global average pooling输出256维的class code 。鉴于辅助集的数量可能各不一样,最终的class code为类所有辅助图片的class code的平均值。

实验

Non-Incremental Few-Shot Detection

将样本少的新类(10 shot)和样本充足的基类(all)混在一起进行训练,结果如表1。

Incremental Few-Shot Object Detection

  • Experimental setup

same-dataset实验,将COCO的60类作为基类,其余20类作为新类别。对于meta-training,从基类随机采样32个任务,每个任务包含3个类别,每个类别包含5个标注的bbox。对于meta-testing,使用全部20个新类别,每个类别随机采样几张图片,有两种测试方法,一种是一次性加入全部类别(incremental batch learning),另一种是逐步加入类别(continuous incremental learning)
cross-dataset实验,跟上述类似,只是meta-training的基类从COCO采样,meta-testing的新类从VOC采样。

  • Object detection on COCO

ONCE的性能比其它方法优异,尽管在新类别上的准确率普遍较低,但ONCE算是一种不错的快速解决增量式少样本检测的方法。

在逐渐增加类别的场景下,ONCE表现稳定,而其它方法的表现则逐渐变差。

  • Object detection transfer from COCO to VOC

与same-dataset的结果相差不大。

Few-Shot Fashion Landmark Detection

结论

在研究了现实的增量少样本目标检测问题后,论文提出了一个不错的快速解决算法ONCE,能够以推理的形式将新类别进行注册而不需要再使用旧的训练数据,相比其它类似的方法更有效。

这里需要注意的是,论文的方法与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需要全部进行比对,十分耗时。而论文是增量式添加类别到模型,以常规的推理形式直接检测,十分高效且数据量需求十分低,虽然最终的性能有点难看,但是这个思路还是可以有很多工作可以补的。

论文地址:https://arxiv.org/abs/2003.04668

【end】◆有奖征文◆推荐阅读了解这4个重点,带你探索未来将如何设计智能系统和机器人!IJCAI 2020灭霸式拒稿,AI审稿是否更公平?64% 的企业未实现智能化,5 成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?Docker 开发环境的滑坡比特币Logo背后有哪些历史及象征意义?Logo 上的“B”为什么会向右倾斜?抗住百万人直播、被联合国推荐,起底飞书技术演进之路!你点的每个“在看”,我都认真当成了AI

相关文章:

修改Linux内核参数提高服务器并发能力

1.参数设置 查看相关的参数 sysctl -a|grep tcp_keepalive net.ipv4.tcp_keepalive_intvl 30 net.ipv4.tcp_keepalive_probes 2 net.ipv4.tcp_keepalive_time 160 设置相关的参数 sysctl -w net.ipv4.tcp_keepalive_time 7500 也可以直接打开 # vim/etc/sysctl.conf 加入ne…

GPS小车移动应用程序

//用于desktop部署private void btnInitializeObjects_Click(object sender, System.EventArgs e){Catalog Cat MapInfo.Engine.Session.Current.Catalog; //创建临时层TableInfoMemTable tblInfoTemp new TableInfoMemTable("Animation");Table tblTemp Cat.GetT…

iOS网络-NSURLSessionDataTask大文件离线断点下载

什么叫离线断点下载,就是用户下载中关闭程序重新打开可以继续下载 代码实现如下: #import "ViewController.h" interface ViewController ()<NSURLSessionDataDelegate> //输出流 property (nonatomic, strong) NSOutputStream *stream ; //Task对象 property …

fcntl使用

1、获取文件的flags&#xff0c;即open函数的第二个参数: flags fcntl(fd,F_GETFL,0); 2、设置文件的flags: fcntl(fd,F_SETFL,flags); 3、增加文件的某个flags&#xff0c;比如文件是阻塞的&#xff0c;想设置成非阻塞: flags fcntl(fd,F_GETFL,0)…

两次关于软考网络工程师的经历

考过两次软考网络工程师&#xff0c;第一次没怎么准备&#xff0c;稀里糊涂参加考试&#xff0c;下午差几分&#xff1b;第二次痛定思痛&#xff0c;好好的分析了下试题&#xff0c;上午61&#xff0c;下午49&#xff0c;下午只写了30分钟左右&#xff0c;因为觉得自己过的了了…

“不会数学,干啥都不行!”骨灰级程序员:你方向不对,努力也白费!

最近半年来&#xff0c;我们收到了很多留言&#xff0c;有很多都是相似的问题&#xff1a;1&#xff09;数学不好搞编程好难&#xff0c;因为数据结构、编程语句、算法&#xff0c;核心原理都是数学。而且光会基础数学远远不够&#xff0c;还需要概率论&#xff0c;微积分、优化…

重新安装nginx注意事项

记得清理/etc/nginx/sites-enabled/default转载于:https://www.cnblogs.com/xiangnan/p/5146775.html

2020年,5种将死的编程语言

来源 | 码农网 译者 | 小峰曾几何时&#xff0c;几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现&#xff0c;关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言&#xff0c;它的创造者似乎就只是将这个功能堆在另一个功能…

关于 ulimit -SHn 65535

使用ulimit -a 可以查看当前系统的所有限制值&#xff0c;使用ulimit -n 可以查看当前的最大打开文件数。 新装的linux默认只有1024&#xff0c;当作负载较大的服务器时&#xff0c;很容易遇到error: too many open files。因此&#xff0c;需要将其改大。 使用 ulimit -n 65…

Could not load file or assembly App_Licenses.dll的问题

今天在AspDotNetStorefront做定制化开发&#xff0c;编译的时候莫名其妙地报告Could not load file or assembly App_Licenses, Version0.0.0.0, Cultureneutral, ... (Exception from HRESULT: 0x80070057 (E_INVALIDARG))的错误&#xff0c;检查文件系统&#xff0c;发现文件…

Docker 用法总结之:管理工具 shipyard 的具体使用指南

Docker 的命令行就已经非常好用了&#xff0c;假设非要加上基于 Web 的管理界面的话也有一些选择&#xff0c;如 DockerUI (Angular.js), Dockland (Ruby), Shipyard (Python/Django) 等。只是眼下来看 Shipyard 项目要活跃一点&#xff0c;Shipyard 支持多 host&#xff0c;能…

轻量级简单队列服务HTTPSQS安装与使用

原文地址&#xff1a;http://blog.s135.com/httpsqs 1.安装 wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stable.tar.gz cd libevent-2.0.12-stable/ ./configure --prefix/usr/local/libevent-2.0.12-stable/ make…

GitHub移动端正式发布

整理 | 郭芮图源 | 视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在去年的 Universe 大会上&#xff0c;GitHub 推出了尚处于 Beta 阶段的移动版客户端&#xff08;GitHub for mobile&#xff09;&#xff0c;支持 iOS 和 Android 两大主流移动平台。时隔…

手机的定制化需求

根据自身的市场需求&#xff0c;文化环境&#xff0c;业务定位等诸多因素&#xff0c;运营商会对手机提出定制化要求&#xff0c;并指定相应的手机规范。随着差异化竞争和精益经营的不断提高&#xff0c;由运营商提出的手机规范也越来越复杂。据不完全统计&#xff08;图10-1&a…

oracle 9i 安装及连接远程数据库

用oracle 11g很久了&#xff0c;真的感觉是一个很重量级的客户端&#xff0c;安装都要一个多小时&#xff0c;最近刚开始接触这种精简版的数据库客户端&#xff0c;捣鼓了半天&#xff0c;总算成功。 1.下载客户端 2.安装 傻瓜式安装即可&#xff0c;记得自己的路径。 3.配置环…

FAST-CGI安装与使用

FastCGI 像是一个常驻 (long-live) 型的 CGI&#xff0c;它可以一直执行着&#xff0c;只要激活后&#xff0c;不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。 1.下载安装fcgi # wget http://www.fastcgi.com/dist/fcgi.tar.gz # ta…

利用 JQuery的load函数动态加载页面

利用JQuery的load函数动态加载页面 JQuery有好多Ajax函数&#xff0c;其中load是用来动态加载一个页面的内容到指定的dom元素上。我们来做个例子&#xff1a;做一个上下&#xff08;左右&#xff09;结构的页面&#xff0c;其中下左部分放2个以前我们做过的div按钮&#xff0c…

教你用Android做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划

作者 | Pek_KuaiJia责编 | 夕颜头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID:CSDNnews&#xff09;随着目前用户需求的精细化和智能化&#xff0c;很多时候我们需要在App内集成语音输入模块&#xff0c;为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚&#…

基于r-Kernel的LiteOS操作系统

LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统。也就是说它跑在存储空间和RAM有限的超低电压微控制器上&#xff0c;这也是吸引我关注它的原因&#xff08;在超低电压下系统更易出错&#xff09;。它採用r-kernel内核&#xff0c;r-kernel有三个特征&#x…

Linux网络编程中的几组类似功能的区别

1.bzero与memset char buff[1024]; memset(buff,0,sizeof(buff));bzero(buff, sizeof(buff)); struct sockaddr_in addr memset(&addr, 0, sizeof(addr)); bzero(buff, sizeof(buff)); 参考《UNIX网络编程 卷1&#xff1a;套接字联网API 第3版》1.2的解释&#xff1a…

5个案例让Python输出漂亮的表格!

来源 | Python数据之道前言最近在用python写一个小工具&#xff0c;这个工具主要就是用来管理各种资源的信息&#xff0c;比如阿里云的ECS等信息&#xff0c;因为我工作的电脑使用的是LINUX&#xff0c;所以就想着用 Python写一个命令行的管理工具&#xff0c;基本的功能就是同…

VS2010正式版MSDN下载

之前写了一篇关于微软VS2010发布会的介绍&#xff0c;现在VS2010的正式版也叫RTM版本终于在MSDN开始提高下载了&#xff0c;暂时性的还只有英文版本&#xff0c;不过等等马上应该会有中文的了。 VS2010 RTM下载地址 Microsoft Visual Studio 2010 Premium - ISOMicrosoft Visua…

windows 2012 nps配置

Windows2012 Nps配置windows 2012 nps配置1.安装windows nps角色&#xff0c;安装网络策略服务器及主机凭据授权协议。2.域中注册服务器3.配置网络策略4.按所需添加条件5.运行-mmc-添加 -证书管理单元添加个人证书—申请新证书6.选择ad注册策略即可7.选择radius身份验证—注册8…

使用man在线手册页

#man -k 函数 #man 返回的数字 函数 # man -k file | grep umask要查看linux下的函数umask 可以使用man&#xff0c;例如 # man 2 umask 如果不知道man后的节号&#xff0c;可以使用-k先查找 # man -k umask 如果使用-k返回太多内容&#xff0c;可以使用g…

Python爬取近十万条程序员招聘数据,告诉你哪类人才和技能最受热捧! | 原力计划...

作者 | Huang supreme编辑 | 郭芮出品 | CSDN博客图源 | 视觉中国随着科技的飞速发展&#xff0c;数据呈现爆发式的增长&#xff0c;任何人都摆脱不了与数据打交道&#xff0c;社会对于“数据”方面的人才需求也在不断增大。因此了解当下企业究竟需要招聘什么样的人才&#xff…

论爱的精进与痴迷

文&#xff1a;洪启嵩 汝爱我心&#xff0c;我怜汝色。以是因缘&#xff0c;经百千劫&#xff0c;常在缠缚。──《楞严经》 爱情为什么是轮回的根由&#xff0c;《楞严经》里有一段话说得很清楚&#xff1a;「汝爱我心&#xff0c;我怜汝色。 以是因缘&#xff0c;经百千劫&am…

[原] Jenkins Android 自动打包配置

一、Jenkins自动打包配置 目标&#xff1a;1. 自动打包&#xff1b;2. 自动上传&#xff1b;3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作。 减少重复劳动&#xff0c;减少人工成本。 持续、自动地构建/测试软件项目…

盛大文学难逃“垄断”嫌疑,完美文学虎口夺食

观点&#xff1a;盛大文学已难逃“垄断”嫌疑&#xff1b;完美文学强攻文学阵地&#xff0c;与盛大文学发生正面冲突已成定局。盛大文学频频出手&#xff0c;在3个多月的时间里&#xff0c;先后收购榕树下、小说阅读网、言情小说吧和潇湘书院4家网站&#xff0c;加上此前拥有的…

GitHub接连封杀开源项目惹众怒,CEO亲自道歉

作者 | 唐小引图源 | 东方 IC来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;王坚博士曾经做过这样一个非常形象的比喻&#xff0c;他将做 App 比作是在别人的花园里弄盆栽&#xff0c;「种点花草是没有问题的」&#xff0c;不过「别人叫你的产品下架你就得下架&am…

Phabricator是什么,代码审查工具

Phabricator是什么&#xff1f; Phabricator支持两种代码审查工作流&#xff1a;“review”&#xff08;提交前审查&#xff09;和 “audit”&#xff08;提交后审查&#xff09;。 Phabricator是Facebook保驾护航的11大IT技术之一。在Phabricator的网站中&#xff0c;开发者给…