文章目录

  • 前言
  • 基本方法
    • 重采样
    • 重加权
    • 更多工作参考
  • 参考

前言

最近忙着工作,上班下班放假时间都被工作沾满了,都没什么时间写博客。今天看了一篇文章万字综述:如何打造自动驾驶的数据闭环?,刚好在跟最近在做的目标检测有关系,在目标检测中常常困扰我一个问题,假设当前我有一万个样本的训练集,训练集中每个样本数量都很均衡,假设有5类,每一类就有2000张样本。现在领导让我添加一类识别,可是只有几百张,如果将新类别的几百张样本加入一万张训练集里面,会不会对原有的类别有影响,或者是会影响新类别的识别。这个问题就是长尾问题。

在传统的的分类和识别任务中,训练数据的分布往往都收到了人工的均衡,即不同类别的样本数量无明显差异。一个均衡的训练样本有很多好处,不仅可以简化了对算法鲁棒性的要求,也一定程度上保障了所得模型的可靠性。但是随着样本中的类别增强,维持各个类别之间均衡就将带来指数增长的采集成本。那如果不刻意地对样本进行人工均衡干预,那么这些数据类别的分布往往如下图所示。如果直接利用长尾数据来训练的分类和识别系统,往往会对头部数据过拟合,从而在预测时忽略尾部的类别。如何有效的利用不均衡的长尾数据,来训练出均衡的分类器就是我们所关心的问题,从工业需求上来说,该研究也将大大地提升数据采集的速度并显著降低采集成本。

基本方法

重采样

重采样主要是对头部类别的欠采样和尾部类别的过采样。本质都是对不同类别的图像采样频率根据样本数量进行反向加权。其中最常用的策略是类别均衡采样。类别均衡的概念主要是区别传统学习过程中的样本均衡,也就是每个图像都有相同的概率被选中,不论其类别。而类别均衡的核心是根据不同类别的样本数量,对每个图像的采样频率进行加权。

重采样就是已有数据不均衡的情况下,人为地让模型学习时接触到的训练样本时类别均衡的,从而在一定程度上减少对头部数据的拟合。不过由于尾部的少量数据往往被反复学习,缺少足够多的样本差异,不够鲁棒,而头部拥有足够差异的大量数据又往往得不到充分学习,所以重采样也并非是真正完美的解决方案。

关于重采样的方法可以参考:

  1. Decoupling Representation and Classifier for Long-Tailed Recognition, ICLR 2020(代码:classifier balancing)

  2. BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition,CVPR 2020(代码:BBN)

    这个图说明,长尾分类的最佳组合来自于:利用Cross-Entropy Loss和原始数据学出来的backbone + 利用Re-sampling学出来的分类器。

  3. Dynamic Curriculum Learning for Imbalanced Data Classification,ICCV 2019

重加权

重加权主要体现在分类的loss上,不同于采样,因为loss计算的灵活性和方便性,很多比较复杂的任务比如物体检测和实例分割等,都更倾向于使用重加权loss来解决长尾分布问题,如weighted loss、focal loss等。

相关文章参考:

  1. Class-Balanced Loss Based on Effective Number of Samples,CVPR 2019(代码:class-balanced-loss)
  2. Learning Imbalanced Datasets with Label-Distribution-Aware Margin Loss,NIPS 2019(代码:https://github.com/kaidic/LDAM-DRW)
  3. Rethinking Class-Balanced Methods for Long-Tailed Visual Recognition from a Domain Adaptation Perspective, CVPR 2020
  4. Remix: Rebalanced Mixup, Arxiv Preprint 2020

更多工作参考

  1. Learning to Segment the Tail, CVPR 2020(代码:https://github.com/JoyHuYY1412/LST_LVIS)
    这篇工作的核心亮点有两处:第一是把学习长尾分布的数据看成是一种增量学习(incremental learning),即我们是优先学会常见物体(头部数据),然后再基于对常见类别的知识,去认知少见的尾部类别。这其实是一种非常接近人类思维的学习方法。这个工作的学习流程如下图,将类别根据出现频率依次排列,并划分为不同的学习阶段,依次从易到难的学习所有类别。

    第二个亮点是高效的实例级别重采样(Efficient Instance-level re-sampling)。作为长尾分类的常用方法,重采样在instance-level的数据上却没有重加权来的易于实现。如果一个图片只采样一个实例的话,虽然可以直接将instance-level重采样退化为image-level重采样,但却不够高效。因此基于对数据的观察,我们发现一个物体出现时,往往图片中会同样出现同一类别的其他实例,所以提出了如下高效的实例重采样:

  2. Focal Loss for Dense Object Detection, ICCV 2017(代码:https://github.com/clcarwin/focal_loss_pytorch)

  3. Equalization Loss for Long-Tailed Object Recognition, CVPR 2020(代码:https://github.com/tztztztztz/eql.detectron2)

  4. Overcoming Classifier Imbalance for Long-tail Object Detection with Balanced Group Softmax, CVPR 2020(代码:https://github.com/FishYuLi/BalancedGroupSoftmax)

  5. Large-Scale Object Detection in the Wild from Imbalanced Multi-Labels, CVPR 2020

参考

  1. Long-Tailed Classification (1) 长尾(不均衡)分布下的分类问题简介

深度学习 数据长尾问题相关推荐

  1. 深度学习数据特征提取:ICCV2019论文解析

    深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...

  2. 深度学习——数据预处理篇

    深度学习--数据预处理篇 文章目录 深度学习--数据预处理篇 一.前言 二.常用的数据预处理方法 零均值化(中心化) 数据归一化(normalization) 主成分分析(PCA.Principal ...

  3. 深度学习数据集中数据差异大_使用差异隐私来利用大数据并保留隐私

    深度学习数据集中数据差异大 The modern world runs on "big data," the massive data sets used by governmen ...

  4. 深度学习数据更换背景_开始学习数据科学的最佳方法是了解其背景

    深度学习数据更换背景 数据科学教育 (DATA SCIENCE EDUCATION) 目录 (Table of Contents) The Importance of Context Knowledg ...

  5. 深度学习数据自动编码器_如何学习数据科学编码

    深度学习数据自动编码器 意见 (Opinion) When I first wanted to learn programming, I coded along to a 4 hour long Yo ...

  6. 【matplotlib + opencv】关于opencv和matplotlib绘制图像时,出现色差色偏的问题探讨,思考,解决。(深度学习数据包plt.imshow绘制的图像底色偏绿蓝偏黄)

    文章目录 一.图像红变蓝,蓝变红的问题 (1)原因分析 (2)代码及结果展示 1)错误代码 2)错误结果 3)正确代码 二.深度学习数据包plt.imshow绘制图像偏蓝黄色 (1)原因分析 1)原理 ...

  7. 深度学习半自动标注_时下流行的深度学习数据标注工具

    时下流行的深度学习数据标注工具 迷若烟雨 2018-09-04 16:36:00 15820 收藏 33 分类专栏: 深度学习 版权 本文将标注工具适用的最佳运行环境分成了三类. 跨平台 https: ...

  8. 卫星影像领域的深度学习数据和模型项目

    深度学习和大数据学习需要依赖海量数据,遥感卫星也是深度学习的一个关键场景.后续我会支持更新我们在这个领域的进展,分享今天收集和整理的数据和项目,期待中国航天行业也能有更好的开放性. 地理空间和环境数据 ...

  9. 深度学习入门笔记(十二):深度学习数据读取

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. traceview android studio,TraceView 的正确打开方式
  2. ×××(虚拟专用网)服务实验介绍
  3. 华为鸿蒙系统2019年秋季上市,华为鸿蒙系统秋季上市?或许真的要提前了,最快可能下个月发布...
  4. 一种基于云信sdk的互动直播的实现
  5. Delphi 按Esc快捷键退出程序的简单方法
  6. 批作业是小学老师的一大乐趣 | 今日最佳
  7. ubuntu server安装hadoop和spark,并设置集群
  8. python中list是什么类型_Python中的list数据类型
  9. 江苏成教计算机统考操作题多少分,江苏省成人计算机统考试题,操作题.doc
  10. 报告PPT(163页):基于Python语言的课程群建设探讨与实践
  11. 使用Fragstats对栅格数据进行分析
  12. Excel/WPS如何查找重复数据
  13. 使用VIM是一种信仰
  14. 2016暑假集训小结
  15. python笔试题奥特曼打怪兽_一个python面试笔试题
  16. esp8266对接天猫精灵(3)原理
  17. highCharts 设置标示线
  18. C++网络(四)持续处理请求的C/S网络
  19. C++ 标准模板库(STL)——适配器(Adaptor)
  20. 菜鸟学数电1-如何看懂TTL名称

热门文章

  1. 基于PaddleHub的圣诞节祝福语
  2. 服务器部署php环境,php服务器环境搭建方法
  3. android button imagebutton 区别,ImageView子控件,ImageButton和ZoomButton使用
  4. SSTI漏洞基础解析
  5. 免费天气预报的WebService服务接口
  6. Android ADT——快速更新API
  7. 你怎样看待计算机与人类的发展,计算机语言与人类语言的相互渗透
  8. 工匠心做事感恩心做人——总结
  9. scrum回顾_如何开好scrum回顾会议
  10. 戴尔笔记本重装系统win7,一键重装系统教程