囿于数据少?泛化性差?PaddleDetection少样本迁移学习助你一键突围!

目标检测是非常基础和重要的计算机视觉任务,在各行业有非常广泛的应用。然而,在很多领域的实际落地过程中,由于样本稀缺、标注成本高或业务冷启动等困难,难以训练出可靠的模型。

目标检测这类较为复杂的学习任务上,样本不足带来的挑战更加棘手,因为模型复杂度高意味着对训练数据量有更高的要求,否则很容易导致模型过拟合。应对这类问题,一类常见的思路是迁移学习,即依赖资源丰富的源数据集或强大的预训练模型,为下游任务提供额外引导。而少样本学习是一类特殊的迁移学习任务,其针对的是每个标注类型仅有几十甚至几个样本的情况。

为了解决这个问题,飞桨联合百度研究院大数据实验室,发布两种少样本迁移学习的新算法,从不同角度应对标注不足的挑战,提升模型学习效果。

跨领域Label Co-tuning算法

该方法的主要思路是充分利用预训练模型的语义空间,挖掘其与下游任务的关联,计算出类别之间的关系作为下游任务的辅助语义标签,作为原始one-hot类别标签的补充。

领域内Contrastive Tuning算法

对比学习是一种通用的表征学习思路,可以学习样例级的判别特征,也可视为一种有效的数据增强策略。该算法针对目标检测的任务特性,实现patch级别的对比学习,以强化目标领域的表征学习效果。

  • 快速体验

您可以下载PaddleDetection最新代码体验我们的算法。

https://github.com/PaddlePaddle/PaddleDetection/tree/develop

上述少样本学习算法在套件中高度封装,接口简单,只需使用我们提供的配置样例,或在原配置文件中添加少样本学习算法,即可使用算法训练。

  • 具体可参照我们的使用说明

https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/few-shot

接下来,本文将从“跨领域Label Co-tuning算法”和“领域内Contrastive Tuning算法”两个方面来解读PaddleDetection少样本迁移学习新算法的方案技术。

cc9ea644e608e7835a63ff10cc27ba9d.png

跨领域Label Co-tuning算法

848bb2c1be1952fbf0ae4d26751fc284.png算法原理

少样本学习的一个普遍思路是在预训练模型基础上进行微调,然而这种直接的方式面临明显的挑战。

挑战一:当下游任务样本量太少时,很容易导致模型在目标数据集上过拟合,最终,微调后的模型泛化能力差。

挑战二:在微调过程中,如果直接将预训练任务的分类头舍弃,重新初始化,会导致大量预训练模型所学到的信息丢失。而这些信息可能对于预训练模型知识迁移至目标数据集很重要。

针对以上的问题,清华大学的Kaichao You等人在NeurIPS 2020发表了Label Co-tuning[1]算法,该算法是一种针对图像分类任务的迁移学习算法。其主要思路是对预训练类别空间Ys和目标任务类别空间Yt的关联进行建模。在微调之前,预先学习预训练类别ys∈Ysyt∈Yt之间的条件概率分布,即p(ys|yt),作为目标类别的一种辅助语义标签。这样可以有效的降低少量目标样本过拟合其标签的风险,同时预训练模型的分类头也将被重用,提供目标数据在Ys类别空间的预测结果,充分挖掘了预训练模型的迁移潜力。

以下为一个直观的例子,演示为何Label Co-tuning方法能够有效。如果我们的预训练数据集是具有1000类物体的ImageNet,而下游目标任务是COCO图像分类。此时,上下游任务之间存在大量有关联但又不完全相同的类别。如COCO中有“大象”这一类别,而ImageNet则粒度更细,包含“印度象”和“非洲象”。

由于不同数据集中,图像本身的视觉特征也存在一定差异,那么即使在类别的语义概念上有明显重合,其真实关联多数情况下也是比较隐晦、复杂,难以通过人工经验来指定。所以比较严谨的方式是通过学习的方式,建立起Ys和Yt两个完整类别空间的概率分布关系。如下图所示。

bc15b0d9b309ac4a0bc624515cdb5837.png

学习到这种类别关系后,对于每个目标数据集的样本(xi,yi),我们在微调过程中除了要拟合其原始的one-hot类别标签yi外,还会利用一个额外的预训练任务分类头拟合辅助语义标签p(ys|yt=yi),这个辅助标签的长度和预训练分类数相同,是一个soft label。

367268eee4020ba2ef6b847dcd6ddcd4.png算法实现

我们对该原型算法进行了改造和扩展,使其适合目标检测任务,并在PaddleDetection的经典结构Faster RCNN上添加了对Label Co-tuning算法的支持。在上下游类别关系矩阵的计算中,考虑到目标检测任务的特点,我们使用每个patch,而非每张图片作为一个样本。具体而言,需要从目标任务的训练数据中,直接提取出bounding box的标注,并在前向计算中获得该ground truth区域在预训练分类头上的预测结果,同时结合其自身标注的目标类别,来一起计算关系矩阵签p(ys|yt)。需要注意的是,Label Co-tuning虽然利用了完整的预训练模型,但并不需要预训练任务的数据集,关系矩阵是完全利用目标任务训练集计算出来的。

同样的,在微调过程中,我们也在bounding box粒度上应用辅助语义标签。对于每一个需要预测的检测框,我们除了拟合原始的类别标签和位置外,还会额外的拟合其在预训练语义空间上的soft label。

00a7320b33af82a87f625091bc9fe167.png

领域内Contrastive Tuning算法

8f23dda509fe52d192b05d16b22b5fed.png算法原理

对比学习是一种很有潜力的自监督表征学习方式,一般被用于预训练阶段学习图像的通用的视觉表征。而近期的一些研究表明,在常规的监督学习任务中,合理引入对比学习也能提升模型的判别效果,如分类、检测、分割等。基于这一思路,南加州大学的Bo Sun等人实现了检测框粒度上的自监督学习方法[2],可以显著提升少样本目标检测效果,并将成果发表在CVPR 2021。

该算法本质上有别于通常的样本级对比学习,通常的对比学习选择将每个样本的不同变换作为正例,其他样本作为负例。而在检测任务上,该方法引入了类别级的对比学习,但以每个bounding box为样本单元,即属于同类别的检测框之间互为正例,而不同类别则作为负例。

通过这样一种类别对比的方式,算法在微调过程中引入额外的loss来引导模型对同类patch学习更加紧密的表征,而不同类patch的表征则区别更加明显,如下图所示。

296a890a87541230ff589adfa4e54074.png

1595807e0464b9cb7fd7577da8425748.png算法实现

和Label Co-tuning算法相比,这种Contrastive Tuning的方法更加通用,虽然没有改进对预训练模型的复用,但其优点是对任务所做的假设更少,例如不需要依赖预训练任务和目标任务之间的潜在关联。在原始论文中,该算法仅适用于二阶段的Faster RCNN模型。我们对算法进行了扩展和改进,使其能够应用于PaddleDetection最新的PP-YOLOE系列模型。

PP-YOLOE系列模型具备非常出色的精度和效率,同时模型结构也大为精炼。但对于Contrastive Tuning来说,这种单阶段模型由于简化了Anchor生成和筛选的过程,使得中间过程中存在大量无效的patch,增加对比学习的计算负担。

针对此问题,我们引入了一种均衡策略,从采样和损失两方面对Contrastive Tuning的计算效率进行优化,同时不影响计算精度。具体来说,在前向计算的采样过程中,我们只对正样本patch全部保留,而对负样本patch选择随机采样,来保持正负样本的合理配比。在计算Contrastive loss时,我们根据当前patch的IoU得分来设定阈值,仅对得分高于阈值的样本点进行loss回传。

4a11bbe49d1526e1e9b84175ebde60e6.png

算法效果

e745a512c79501a90d0b3f141116ce6f.png

项目传送门

  • PaddleDetection少样本学习算法体验

https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/few-shot

  • PaddleDetection官方库

https://github.com/PaddlePaddle/PaddleDetection

飞桨PaddlePaddle公众号后台回复关键词:PaddleDetection,获取更多学习资料包。

参考文献

[1] You, Kaichao, et al. "Co-tuning for transfer learning." Advances in Neural Information Processing Systems 33 (2020): 17236-17246.

[2] Sun, Bo, et al. "Fsce: Few-shot object detection via contrastive proposal encoding." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~


http://www.niftyadmin.cn/n/24781.html

相关文章

vue+element对接第三方接口实现校园发帖网站“淘柳职”

一.前言 当前项目访问地址:点击查看效果 接上一篇博客《vueelementuijava 前后端分离实现学校帖子网站,仿照“淘柳职”学校大作业》 上一篇博客介绍的项目完全自带前、后端实现的,是一个完整的项目,现在作者在此基础上&#xff…

由拉氏变换直接写出时域函数的简便方法

由拉氏变换直接写出时域函数的简便方法1. 因式分解2. 简便方法1) 没有重根、没有零极点情况2) 没有重根,但是具有零极点3) 有重根的情况3. 备注众所周知,拉普拉斯变换可以将时域函数x(t)x(t)x(t)转换到频域内X(s)X(s)X(s): x(t)⟹X(s),orX(s)…

论文笔记Neural Ordinary Differential Equations

论文笔记Neural Ordinary Differential Equations概述参数的优化连续标准化流(Continuous Normalizing Flows)生成式的隐轨迹时序模型(A generative latent function time-series model)这篇文章有多个版本,在最初的版…

分布式缓存系统 Ignite、Hazelcast、Ehcache

一、Apache IgniteApache Ignite是一个以内存为中心的分布式数据库、缓存和处理平台,支持事务、分析以及流式负载,可以在PB级数据上享有内存级的性能。如果禁用原生持久化,Ignite就是一个分布式缓存,它实现了JCache规范&#xff0…

【Leetcode】699. 掉落的方块(困难)

一、题目 1、题目描述 在二维平面上的 x 轴上,放置着一些方块。 给你一个二维整数数组 positions ,其中 positions[i][lefti,sideLengthi]positions[i] [left_i, sideLength_i]positions[i][lefti​,sideLengthi​] 表示:第 i 个方块边长…

SwitchResX for Mac 屏幕分辨率修改工具

前言 SwitchResX V4.12.1 是Mac上一款功能强大的屏幕分辨率修改软件,可以为您提供控制显示器分辨率所需的所有工具。在switchresx帮助下,您可以管理无论是Mac Retina显示器,Cinema Displays还是电视机甚至投影仪的任何分辨率。而且switchres…

干货|app自动化测试之Appium WebView 技术原理

混合应用测试或微信小程序测试,都会涉及到 WebView 组件,这节内容将分析一下 WebView 的技术原理。首先通过日志分析查看 Appium 的运行过程。WebView日志分析要想查看 ChromeDriver 的日志,需要在 Capability 里开启 一个开关项 showChromed…

数据的存储(C语言)

数据类型: 要了解数据是如何存储的,我们就得先知道C语言中的数据类型 基本数据类型 基本数据类型,也就是C语言内置类型: char -> 字符型 short -> 短整型 int -> 整…