一个网站建设流程图,蓝色系网站设计,房地产基础知识,网站开发策划书怎么写paper: Few-Shot Object Detection: A Comprehensive Survey (CVPR2021)
深度学习提高了目标检测的精度#xff0c;但是它需要大量的训练数据。 对于训练数据集中没有见过的目标#xff0c;是检测不了的#xff0c;所以就限制了在实际中的应用。 如果想让模型去识别新的目标…paper: Few-Shot Object Detection: A Comprehensive Survey (CVPR2021)
深度学习提高了目标检测的精度但是它需要大量的训练数据。 对于训练数据集中没有见过的目标是检测不了的所以就限制了在实际中的应用。 如果想让模型去识别新的目标就需要自己标注这是既花时间又很枯燥的活而且像医疗数据这种根本得不到大量的数据。 对比人类就不同了小孩子看一眼一个物体就能很快认识它。 那么就引出了few shot目标检测FSOD。称作小样本目标检测。旨在通过少量标注的数据去训练一个已经预训练的模型就能达到检测新目标的目的。
大致思想如下
小样本目标检测的一些概念 先给模型训练的base数据集和新标注的小样本数据集novel是不重叠的。
K-shot目标检测 C n o v e l C_{novel} Cnovel中每个类别只有K个标注的目标instances. 并不一定是K张图片一张图片中可有多个目标。 难度最大的是one-shot目标检测也就是K1.
N-way目标检测从N个类别中检测目标N| C n o v e l C_{novel} Cnovel|
few-shot目标检测可以总结为N-way K-shot检测。
为什么要先用 D b a s e D_{base} Dbase训练然后再用 D n o v e l D_{novel} Dnovel而不是直接用 D n o v e l D_{novel} Dnovel训练因为只用 D n o v e l D_{novel} Dnovel训练会overfit, poor generalization. 那么把 D b a s e D_{base} Dbase和 D n o v e l D_{novel} Dnovel融合成一个数据集一起训练呢 D b a s e D_{base} Dbase数据集中的样本数远远多于小样本的 D n o v e l D_{novel} Dnovel是很大程度的class imbalance, 结果就是训练时会偏向base数据集造成小样本数据类别检测效果不好。
基本上训练是分成3步的 第1步用classification数据比如imageNet先训练backbone, 得到初步的模型 M i n i t M_{init} Minit, 第2步用 D b a s e D_{base} Dbase训练得到模型 M b a s e M_{base} Mbase, 最后用训练得到 M f i n a l M_{final} Mfinal
小样本数据训练的相关概念
Few-Shot Learning and Classification: 最早用于分类任务比目标检测任务要简单一些它的一些ideas也可用于目标检测。
Semi-Supervised Learning: 半监督学习只有少量有标签的数据大量没有标签的数据可用来学习合适的representations. 可用来提高few-shot learning中学习到的representations.
Incremental Learning: 一般的深度学习会遇到严重的忘性学习了新数据就忘了旧数据。 比如先用COCO数据集训练再用航拍数据训练然后就只能检测航拍数据COCO数据竟检测不出来了。 增量学习旨在保留旧类别的performance. 当不断有新的类别进来时一些FSOD方法会引入增量学习。
几种不同的目标检测
一般目标检测分类目标框类别有限不在训练类别里面的就检测为背景。需要标注的数据集进行训练。
Cross-Domain目标检测 先用大量标记数据训练再用不同领域的少量数据训练。这乍一听不就是few-shot么。 其实不然cross-domain前后虽然是不同的domain, 但前后类别是一样的比如先用合成数据训练再用真实数据训练 few-shot是引入新的类别。
Zero-shot目标检测 是few-shot的极端情况标注数据为0 K0。 zero-shot常和语义word embedding一起语义上相似类别的目标在embedding空间会有相似的feature。 zero-shot对于检测常用的物体是可以的但是如果你提供一个特殊的标签或者想区分非常相近的目标是有问题的。
Weakly Supervised目标检测 弱化标注训练数据仅包含image-level的标签。 比如在图像的某个地方是不是存在某种类别的目标。这种标注比画框标注简单常可通过关键字搜索获得。 弱监督的难点再于训练时没有任何定位信息的情况下检测到所有目标。 虽然说在标注上难度有所下降但是仍然需要大量的图片在很难获得图片比如医疗图像时仍然是有困难的。
几种Learning Techniques:
Transfer Learning迁移学习 和few-shot的区别是新的类别数据不必要是小数据。 因此如果用迁移学习做小样本训练需要结合小样本学习。
Metric Learning度量学习: 学习一个embedding, 可以理解为一个特征向量。相似的目标特征会相似有较小的距离. 不相似的目标距离就远。 为了学习到有较低类内距离和较高类间距离的L2特征一般会用到triplet loss或者它的拓展。 这些特征的推广性还不错模型可以encode新类别的目标不需要重新训练。 在模型推理阶段模型会提取新目标的embedding然后类别会分到最相近的特征embedding类别中。 不过上面只提到了分类对于目标检测还需要把目标的位置信息融合进去。
Meta Learning元学习 也叫“学会学习”以推广到新的任务和新的数据。 对于小样本few-shot来说元学习需要学会如何区分出训练时不固定的类别 所以需要学习如何最有效地获取需要的信息以便在只有少量样本时也能学到有效信息。
小样本目标检测方法分类
paper中将FSOD分为两类meta learning和transfer learning. 其中meta learning又分为single-branch和dual-branch. dual-branch: 2个input, query和support image. single-branch: 类似于一般的检测模型但是在训练新的类别或者用metric learning时会压缩需要学习的参数的数量。
一些dual-branch结构和迁移学习会结合metric learning的idea所以为了不至于混淆paper不把metric learning单独当作一个类别。 而是通过训练策略和结构把SOTA方法进行区分。
下面的图是survey中涉及到的方法可以看出小样本目标检测这个领域还很新大部分方法都是近几年才提出来 其中多数用了transfer learning和dual-branch meta learning.