小样本目标检测综述 --刘浩宇,王向军 --阅读笔记

2023-11-15

1 基本背景

首先什么是小样本学习?

小样本学习是指在样本数据不足或质量较低的情况下进行的深度学习训练和预测的方法。

早期深度学习目标检测方法存在哪些问题?

  • 依赖样本的数据的分布与数量,需要足够多的已标注样本的来支持检测效果。但是这样会引入较高的制作成本。
  • 早期应用大量标注样本回归候选框的位置,目标集与训练集数据分布不同会导致检测效果下降。
  • 在军工业场景下,大量的数据样本不易得

2 大样本与小样本的对比

在有大量样本数据的情况下,模型训练误差是很小的。如果样本数量足够大,模型训练误差甚至可以趋于0

  • 在有大量样本数据的情况下,模型训练误差是很小的。如果样本数量足够大,模型训练误差甚至可以趋于0
    但当样本数量很小时,模型无法很好地拟合真实分布,往往会造成很大的模型训练误差。
  • 但当样本数量很小时,模型无法很好地拟合真实分布,往往会造成很大的模型训练误差。

3 在没有大量数据支持的情况下,小样本检测保证检测效果,有哪些解决方法?

  • 数据域 : 通过先验知识来做数据增强,通过数据量的增大解决模型不收敛的问题。
  • 模型域 : 通过先验知识来限制模型复杂度,降低假设空间的大小,使得模型收敛加快。
  • 算法域 : 通过先验知识来提供一个更快捷的搜索策略

3.1 数据域:

  • 本质上就是通过各种数据增强的方法,增加样本容量,增加参数优化与迭代的次数;相当于提供了先验知识,帮助训练模型更接近训练能够达到的最佳模型。
  • 由于被检测目标的真实分布是不可知的p(x,y)绝对准确的先验知识是不可获得的

在这里插入图片描述

3.1.1 转化原有数据集 D t D_t Dt r _r r a _a a i _i i n _n n

我们在做pcb瑕疵检测的时候也发现:一开始使用deeppcb方法的时候,对于论文本身的复现效果较好,而对于我们自己真实的数据指标只有30%多,但是经过筛选并做数据增强之后(筛选主要是从缺陷的宽高比以及相对图像的大小进行筛选以尽量符合deeppcb本身数据集的属性),指标达到了74%左右,有明显提升,这或许正说明了deeppcb模型泛化性不好是由于预先设定的9种默认框是符合deeppcb本身数据集的缺陷分布状态的,也就是综述里说的,先验知识。如果我们想改善对我们数据集的性能,就需要去改变这个所谓的先验知识,修改默认的9种框的宽高比以及大小。在ppyoloe的测试中也有类似情况,对于个别图像出现的漏检现象,或许也正是训练集与目标检测集之间的分布不同导致的,实验发现,将漏检图像放入训练集,重新测试漏检大大降低。

我们之前做过的数据增强:属于转化原有数据集Dtrain的图像增强,支持LabelIMg和LabelMe标注的文件,能实现LabelIMg标注后的图片的增强(包括模糊,亮度,裁剪,旋转,平移,镜像等多种操作的随机组合)。在实验中也确实发现,图像增强可以提升一些训练效果,但作用有限。

源码地址:https://github.com/pureyangcry/tools

综述中提到的这种方案或许以后可以用到:
Zoph等提出了一种自动检索并采用可行的符合应用任务特点的图像增强方案AutoAugment,创建了一个数据增强策略的搜索空间,利用搜索算法选取适合特定数据集的数据增强策略,其尝试的数据增强策略共计22种,可以概括为:色彩变换,扭曲颜色通道而不影响包围框的位置,如对比度、亮度等 、几何变换(几何尺度上扭曲图像,相应地改变包围框注释的位置和大小,如旋转、剪切、平移等) 、包围框变换只扭曲包围框注释中包含的像素内容,如候选框旋转、候选框翻转等 。 其方案特别有益于数据集和小目标的检测。

论文传送门:https://arxiv.org/abs/1906.11172
源码传送门:https://github.com/tensorflow/tpu/tree/master/models/official/detection
3.1.2 迁移其他数据集

另一种数据域的数据增强方式是迁移其他数据集,目前流行的一种方法是引入对抗生成网络产生与训练集Dtrain分布相同的数据作为补充
之前我们一直在使用监督训练的方法,下面这种Nguyen提出的半监督目标检测方法或许也可以尝试。
Nguyen 将未标记图像的训练作为一种潜在变量模型,提出了一种基于期望最大化的未标记图像半监督目标检测方法,对目标检测的分类部分和定位部分进行了潜在标签估计,并对模型进行了优化。在COCO数据集上,半监督相较于监督学习有0.7%的指标提升。
Huang等借助GAN通过白天的数据生成了夜间的数据,看起来效果不错。

Nguyen半监督目标检测方法论文地址:Semi-supervised object detection with unlabeled data .
Huang论文地址: AugGAN:cross domain adaption with GAN-based data augmentation

3.2 模型域

目标检测所采用的模型决定了模型空间P的大小;模型域解决方案的基本原理是:选取较大的模型空间P,再通过先验知识缩小空间。如下图:


我认为,我们对ppyoloe的网络结构的修改可以认为是模型域解决方案。原本ppyoloe的输入是一张3通道的图片,训练之后发现效果没有那么好,漏检现象比较明显,但在我们修改ppyoloe的输入为成对输入(test+temp),经过3层卷积进行浅层特征提取后做特征差,让模型更关注于原图和模板图的差异,实验表明,达到了更好的效果;我觉得添加模板图的输入就是给了模型一个先验知识,缩小了模型空间,使模型更容易贴近训练的最佳模型,也就更贴近真实模型。

3.2.1 多任务训练网路

多任务训练网络:比如Luo等通过一个预先训练的卷积神经网络CNN从源域中的源任务学习来初始化CNN在目标域中的目标任务。在训练过程中,使用从多层CNN的表示中计算出的对抗损失来迫使两个CNN项目样本进入一个任务不变空间。该方法在新领域的新类上显示了令人信服的结果,即使每个类只有几个标记的例子可用,也优于流行的微调方法。

论文地址:Label efficient learning of transferable representations across domains and tasks.

多任务之间进行共享参数是一个很好的思路,我认为在ppyoloe中也类似的提出了一个新颖的头部ET-head,并在T-head的基础上做了优化,平衡速度和精度,核心还是T-head。T-head目的是为了解决传统one-stage的分类与定位任务之间的不对齐问题,为了进一步克服分类和定位的偏差,在论文中提出了任务对齐学习(TAL),它由动态标签分配和任务对齐损失组成。动态标签分配意味着预测/损失感知。根据预测结果,为每个ground-truth分配动态数量的正锚。通过显式对齐两个任务,TAL可以同时获得最高的分类分数和最精确的包围框。这是我认为与综述中提到的深度卷积特征在不同任务中的共享可以一定程度上提高检测精度是一致的。

在这里插入图片描述
该图显示了TOOD(提出T-head)在无锚法中的效果,有了更精准的锚点,成功对齐了分类与定位任务,而不是第一张图片中红色锚点置信度高但是定位更接近披萨,绿色锚点定位准确为桌子但置信度低而被红色锚点NMS抑制。

3.2.2 增量学习网络

另一种模型域的解决方法是增量学习网络:增量学习是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分已学习到的知识,其实现方式非常类似于人类自身的学习模式。

增量学习更像是一种理想状态,比如我们使用微调好的ppyoloe对之前筛选掉的原始数据进行测试有漏检现象,第一解决思路就是将所有原始数据重新按比例增强后重新训练,虽然可行,但费时费力。增量学习这种新思路如果可以避免灾难性遗忘的话,好像更加巧妙,而且在工业场景下会不断出现新的缺陷类型,增量学习的方式也更加合适。
一种用于增量学习的检测器ONCEIncremental few-shot object detection .

3.2.3 迁移学习网络

还有一种模型域解决方案是迁移学习网络:当给定的已标注训练样本不足以完成训练时,可以将其他类似域的先验知识转移到当前应用中,以缓解目标域样本不足导致的效果较差的问题,域适应的方法通常用来提升目标域上的定位效果。

3.3 算法域

算法域解决方案的基本原理是:找到一种模型空间P中快速搜索最优模型的策略,这种策略可以利用先验知识来改变参数θ的搜索过程,使模型在有限次的迭代下快速收敛,其具体原理下图所示:

在这里插入图片描述

元学习:区别于其他优化方式使模型更接近最优模型,元学习的优化策略直接目标是真实模型, 其目标是让机器“学会学习”。元学习拟合一系列相似任务的分布,利用元学习器将各个学习任务的参数合成,以此获得一个好的初始化参数。本质上是要寻找一个对于所有任务都较优的模型参数。

最后,由于本人知识储备有限,尽量花费大量时间阅读综述,仍觉理解不足,以上有理解错误之处,敬请指证;在本综述中提到的一些思路与方法,可以参考具体的文献。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小样本目标检测综述 --刘浩宇,王向军 --阅读笔记 的相关文章

  • C语言学习之extern关键字

    1 了解extern 1 extern是C语言的一个关键字 可以用来修饰函数与变量 2 当extern修饰一个变量或函数时时 就是在声明这个变量 函数 告诉编译器在外部文件中已经这个变量 函数 要通过编译 2 extern的用法 1 在一个
  • 使用java实现word转pdf,亲测有效,完美保留样式

    网上了很多方法 要么转换速度慢 要么转换出来的格式不一样 遇到了各种问题 无法完美完成转换 在stackoverflow发现完美答案 依赖
  • 网易严选滑块

    疫情分控在家 哎 难搞哦 大表哥们 虽然是网易一家的滑块 就当无聊分享一下 说明一下 有些id用官方的那套可能过不去 文章末尾分享一个ast解混淆的js 大家可以拿去用过用 之前的文章有写过网易的 也是简单介绍了一下 严选滑块 先看看b d
  • webpack系列 —— 性能优化篇

    一 压缩图片和css 压缩图片 image webpack loader 来压缩图片文件 image webpack loader 使用 imagemin 来进行压缩 use file loader 需要在file loader之后添加 i
  • Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

    SDIO Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块 内置无线网络协议IEEE802 11协议栈以及TCP IP协议栈 能够实现用户主平台数据通过SDIO口到无线网络之间的转换 SDIO具有传输数据快 兼容SD M
  • Jupyter Notebook 更改默认存储路径、更改默认浏览器、添加虚拟环境的kernel

    文章目录 1 更改默认存储路径 1 1 修改配置文件 1 2 修改快捷方式 2 更改默认浏览器 3 添加虚拟环境的kernel 1 更改默认存储路径 1 1 修改配置文件 Jupyter Notebook 的默认存储路径是 C Users

随机推荐

  • 计算机二级12月报名时间广东,18年广东省全国计算机等级考试报名:12月15日起...

    全国计算机等级考试 National Computer Rank Examination 简称NCRE 是由教育部考试中心主办 面向社会 用于考查应试人员计算机应用知识和能力的全国性计算机水平考试体系 一 考试时间及考试体系 一 考试时间
  • 【C语言】自动售货机

    题目 假设一种自动售货机可以为顾客提供 3 种价格档次的不同饮料 投入2元钱 可选择康师傅矿泉水 怡宝矿泉水和农夫山泉之一 投入 3 元钱 可选择可乐 雪碧和果汁之一 投入 5 元钱 可选择奶茶 咖啡和酸奶之一 编写程序 模拟用户向自动售货
  • hcl在服务器上保存文件,HCL File Extension - What is .hcl and how to open? - ReviverSoft

    You re here because you have a file that has a file extension ending in hcl Files with the file extension hcl can only b
  • @Mapper注解中如何使用Mybatis的<if>标签

    以 Update为例子
  • 图像分类、目标检测、图像分割区别

    1 图像分类 图像分类主要是基于图像的内容对图像进行标记 通常会有一组固定的标签 而你的模型必须预测出最适合图像的标签 这个问题对于机器来说相当困难的 因为它看到的只是图像中的一组数字流 上图片来自于Google Images 而且 世界各
  • jquery的$().each,$.each的区别

    在jquery中 遍历对象和数组 经常会用到 each和 each 两个方法 两个方法是有区别的 从而这两个方法在针对不同的操作上 显示了各自的特点 each 对于这个方法 在dom处理上面用的较多 如果页面有多个input标签类型为che
  • 图机器学习课程笔记6

    维生素C吃多了会上火 个人CSDN博文目录 cs224w 图机器学习 2021冬季课程学习笔记集合 目录 1 思维大纲 2 中文笔记 1 思维大纲 2 中文笔记
  • 面试经典(19)--求二叉树中节点的最大距离

    题目描述 写一个程序求二叉树中相距最远的两个节点之间的距离 图3 11 A和B即为所求距离最远的两个节点 我们先作图 看能否找到规律 我们可以看到 所求的两个节点可能经过二叉树的根结点 也可能不经过二叉树的根结点 每个节点维护左右子树最大距
  • 【笔记】C++库函数——bitset

    笔记 C 库函数 bitset 看到有大佬掏出这个库函数 一愣 这绝对是未曾想象过的道路 长见识 有时候做题总能碰见稀奇古怪的库函数 每个都令我大开眼界 以后看到感兴趣的都会记录一下 感觉是个好东西 算是学习道路上的小小积累吧 抓紧记录一下
  • VSCode相对路径问题

    习惯了anaconda等环境写程序的同学 在使用VSCode时 遇到的一个问题就是相对路径问题 在anaconda中 相对路径是针对当前的文件的相对路径 在VSCode中 相对路径是针对当前项目文件夹的 如果需要将VSCode内的相对路径设
  • 对不起,其实我是.......

    大家好 最近在后台收到有同学问我 你是哪个学校的 又或者问我你今年大几了 其实 我想这些答案在大家心里面应该早已经有了答案 不过 今天说的不是这些 而是 没错 今天我来给大家推荐一款 马克思原理复习必背的小程序 由我们学校 校级组织 清泽心
  • Linux Top 命令指南

    top 命令允许用户监视 Linux 上的进程和系统资源使用情况 它是系统管理员工具箱中最有用的工具之一 并且在每个发行版中都预装了它 与 ps 等其他命令不同 它是交互式的 我们可以浏览进程列表 终止进程 等等 本文中 我们将了解如何使用
  • 倾斜摄影三维模型五种常见格式

    在倾斜摄影三维数据中 OSGB数据居多 航拍的影像经过建模软件处理产出之时 有很多成果的数据需要我们去选择输出 对于不同的项目需求 我们需要选择合适的输出数据格式 他们之间有什么区别 分别是应用在哪些个领域 今天分别以OSGB OBJ FB
  • ipsec.conf(5) - Linux man pag 中文翻译

    ipsec conf 5 Linux man page 英文网址 https linux die net man 5 ipsec conf 未经许可 禁止转载 请知悉 Name 名称 ipsec conf IPsec配置和连接 Descri
  • Java内存分配介绍

    Java内存分配为 栈 堆 方法区 本地方法栈和寄存器 字节码文件加载时进入的内存方法区 方法运行区域为栈 变量也是存储在栈中 new出来的东西会在堆内存中开辟空间并产生地址 public class ArrayDemo public st
  • esp8266-12f介绍与使用

    nodemcu 体积相对较大 而且价格也相对较高 这时候 esp12f就可以用来代替 使用 nodemcu v2 v3 使用的是esp12e 与esp12f只有布线上有所差别 是esp8266 12的增强版 esp 12F 引脚图 各个引脚
  • 成员函数在类外定义的时候,函数名为啥不能加static

    今天清理手机微信没用的数据 惊人啊 删了1G 的图 再删删其它没用的数据 腾出来3G 的空间 无意间发现了一张以前聊天时候的图 回忆了一下 当时讨论的是 为啥成员函数在类外定义时 函数名不能加static class Point publi
  • (一)python库httprunner4 用法

    4个命令 httprunner V httprunner h hrun xxx 运行yaml json pytest 会内部执行hmake hmake xxx 把yaml json格式转成pytest测试用例 一个yaml用例结构 由一个c
  • 服务器查看系统盘位置,云服务器ecs怎么查看系统盘

    云服务器ecs怎么查看系统盘 内容精选 换一换 本节介绍将Windows操作系统的KVM实例变更为擎天架构实例的操作步骤 KVM实例 参考规格清单 查询对应规格的虚拟化类型 擎天架构实例 选择 通用计算增强型C7 变更规格时不支持修改网络类
  • 小样本目标检测综述 --刘浩宇,王向军 --阅读笔记

    文章目录 1 基本背景 2 大样本与小样本的对比 3 在没有大量数据支持的情况下 小样本检测保证检测效果 有哪些解决方法 3 1 数据域 3 1 1 转化原有数据集 D t D t