SimCal(ECCV2020)


文章目录

  • Abstract
  • Method
    • Using Existing Long-tail Classification Approaches
      • Loss Re-weighting
      • Focal Loss
    • Proposed SimCal:Calibrating the Classifier
      • Dual Head Inference
  • Experiment
  • 创新

原文
代码

Abstract

本文主要研究了长尾分布下的实例分割问题,并提出了一个简单而有效的解决方案——SimCal方法。在现有的实例检测和分割模型中,它们通常只适用于样本数量相当平衡的数据集,如COCO数据集,而在现实场景下,数据集通常是长尾分布的,这会导致性能下降。作者通过系统地调查了Mask R-CNN模型在LVIS数据集上的表现,发现其准确率下降的主要原因是物体提案分类不准确为了解决这个问题,作者首先考虑了各种技术来提高长尾分类性能,这些技术确实提高了实例分割结果然后,作者提出了一种简单的校准框架使用双层类平衡采样方法更有效地缓解分类头偏差。这种方法显著提高了LVIS数据集和他们采样的COCO-LT数据集上尾部类别的实例分割性能。该分析提供了有用的见解,可用于解决长尾实例检测和分割问题,而SimCal方法可以作为一个简单但强大的基准线。该方法已经赢得了2019年LVIS挑战赛。

Method

Using Existing Long-tail Classification Approaches

给定样本xi,模型输出logits,记为yi, pi是对真实标签z的概率预测

Loss Re-weighting

这一思路通过对不同的样本或类别施加不同的权值来缓解偏差,从而使尾类或样本在训练过程中得到更高的关注,从而提高分类性能。
具体来说,每个类的训练样本用w = N/Nj加权,其中Nj是第j类的训练实例数,N是一个超参数。为了处理噪声,权重被限制在[0.1,10.0]。背景的权重也是一个超参数。在训练时,第二阶段的分类损失加权为L = -wi log(pi)

Focal Loss

焦点损失可以看作是损失重加权,通过预测自适应地给每个样本分配一个权重。它最初是针对一级检测器的前景-背景类不平衡问题而开发的,也可以用于缓解长尾问题中的偏倚,因为头类样本由于训练足够而往往损失较小,而尾类样本的影响会再次放大。这里我们使用焦损
L = -(1 - pi)γ log(pi)

重加权方法往往会使数据极度不平衡的深度模型的优化复杂化,对于长尾分布的目标检测也是如此,从而导致头部类的性能较差
Focal loss很好地解决了前景和简单背景样本之间的不平衡问题,但难以解决相似度和相关性较高的前景对象类别之间的不平衡问题
class-aware margin loss,在损失计算中强制执行的先验边际也会使深度模型的优化复杂化,导致头部类的性能下降更大
重复采样策略遭受过拟合,因为它从尾类重复采样

Proposed SimCal:Calibrating the Classifier


如图,作者提出了一种双水平采样方案,收集训练实例,通过再训练来校准分类头
首先,从所有类别(即c1到cn)中均匀地抽取n个对象类(它们具有相同的概率)。然后,我们分别随机选取包含这些类别的图像(即Ic1到Icn),并将其输入到模型中。在对象级别上,我们只收集属于抽取类别和背景的提议用于训练。以上,我们只是为了简化起见,为每个抽取类别选取一张图像,但请注意,抽取的图像数量也可以更大。

如图2右(a)所示,在标准训练后,我们冻结了除分类头外的所有模型部分(包括骨干、RPN、盒子和掩码头),并采用双水平采样来重新训练分类头,该分类头以原始头初始化。然后,向分类头提供相当平衡的建议实例,从而使模型能够消除偏差。与传统的在大规模数据集上预训练后在小规模数据集上进行微调不同,我们的方法只改变数据样本分布。

N为每批抽样类别的数量,ni为第i类的提案样本数量,i =0为背景,Lcls为交叉熵损失,pij和p * ij表示模型预测和基础真值标签

Dual Head Inference

经过上述校准,分类头现在在类别上是平衡的,并且在尾部类别上可以表现得更好。然而,头类的性能下降。为了达到最佳的整体性能,我们考虑将新的平衡头和原有的平衡头结合起来,它们在尾部和头部类别上分别具有更高的性能。因此,我们提出了一个双头推理架构。

作者提出了一种新的组合方案,直接从头类和尾类两个分类器中选择预测结果:
其中z∈[0,C]表示类别,C为类别数,z =0表示背景,pcal和porig分别表示振动头和原始头的(C+1)维预测,p为组合预测,Nz为z类的训练实例数,T为控制头尾类别边界的阈值数,推断的其他部分保持不变(图2 (d))。

Experiment

作者首先使用了四种常见的长尾分类方法(loss re-weighting、class-aware margin loss、focal loss和image level repeat sampling)来解决LVIS数据集中的长尾问题,并对其效果进行了评估。结果表明,这些方法虽然可以在一定程度上提高长尾类别的性能,但也会导致头部类别的性能下降。接着,作者将SimCal框架应用于Mask R-CNN模型中,并与上述方法进行了比较。结果显示,SimCal框架可以显著提高长尾类别的性能,同时也能保持头部类别的性能不变或略有提升。此外,作者还分析了不同类型的分类器(class-wise和class-agnostic)在长尾类别上的表现差异,并提出了进一步改进的方向

创新

使用了一种新的双层采样方案,结合图像级别的采样和实例级别的采样,以收集平衡类别的提议样本,并使用这些样本来校准分类器
引入了一个简单的双头推理组件,有效地减轻了头部类别性能下降的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/575305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Open CASCADE学习|一个点的坐标变换

gp_Trsf 类是 Open CASCADE Technology (OCCT) 软件库中的一个核心类,用于表示和操作三维空间中的变换。以下是该类的一些关键成员和方法的介绍: 成员变量: scale: Standard_Real 类型,表示变换的缩放因子。 shape: gp_TrsfFor…

网络安全之防范钓鱼邮件

随着互联网的快速发展,新的网络攻击形式“网络钓鱼”呈现逐年上升的趋势,利用网络钓鱼进行欺骗的行为越来越猖獗,对互联网的安全威胁越来越大。网络钓鱼最常见的欺骗方式就是向目标群体发送钓鱼邮件,而邮件标题和内容,…

用于肺结节分类的常规 EHR 的纵向多模态Transformer集成成像和潜在临床特征

Longitudinal Multimodal Transformer Integrating Imaging and Latent Clinical Signatures from Routine EHRs for Pulmonary Nodule Classification 摘要 该研究提出了一种基于Transformer 的多模态策略,用于将重复成像与常规电子健康记录(EHRs&…

AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题

一、AbstractRoutingDataSource实现多数据源切换 为了实现数据源的动态切换,我们采用了AbstractRoutingDataSource结合AOP反射来自定义注解。通过这种机制,我们可以在运行时根据自定义注解来选择不同的数据源,从而实现灵活高效的数据访问策略…

C++内存分布 new和delete介绍

目录 C/C内存分布 栈区 堆区 静态区 常量区 C new和delete 分配空间形式对比 new delete与malloc free的区别 可不可以串着使用new和free呢 C/C内存分布 C的内存分布,大体上分为栈区 堆区 静态区 常量区 栈区 栈区是用于存储函数调用时的局部变量 函…

C语言中,如何判断两个数组是否包含相同元素?

在C语言中判断两个数组是否包含相同元素可以采用多种方法,其中最常见的方法是使用排序和比较两个数组的元素。在解释这个问题之前,我们需要了解一下C语言中的数组、排序算法和比较方法。 数组 数组是C语言中一种基本的数据结构,它是一系列相…

mysql的DDL语言和DML语言

DDL语言: 操作数据库,表等(创建,删除,修改); 操作数据库 1:查询 show databases 2:创建 创建数据库 create database 数据库名称 创建数据库,如果不存在就创建 crea…

Linux论坛搭建

1.安装httpd服务 1.1安装httpd软件 [rootlocalhost yum.repos.d]# dnf install httpd 1.2.修改httpd的配置 [rootlocalhost yum.repos.d]# vim /etc/httpd/conf/httpd.conf 1.3.启动这个httpd服务,并查看它的状态 [rootlocalhost yum.repos.d]# systemctl start httpd [ro…

前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

目录 1. 引言2. 跨源资源共享和实现方法3. 在Django项目中配置django-cors-headers库Reference 1. 引言 在进行后端API开发时,有时会遇到“跨域资源共享 (CORS) 请求…被阻止“的错误,如图1所示。本文讲解如何在使用DRF(Django REST Framewo…

什么是ISP,为什么跨境推荐ISP?

ISP,全称Internet Service Provider,即“互联网服务提供商”。它是为个人或企业提供访问、使用或参与互联网服务的组织,主要为用户提供互联网接入业务、信息业务和增值业务。ISP是经国家主管部门批准的正式运营企业,享受国家法律保…

多模光纤标准:OM1、OM2、OM3、OM4和OM5

【摘要】 在当今信息时代,光纤通信作为一种高速、高带宽的数据传输方式,已经成为现代通信网络的重要基石。而在光纤通信系统中,多模光纤因其适用于短距离传输和相对低成本而备受青睐。本文瑞哥将带大家好好了解多模光纤中的不同标准&#xff…

Error: contextBridge API can only be used when contextIsolation is enabled

在electron项目中preload.js文件使用下面的方法时报错 const { contextBridge, ipcRenderer } require(electron); contextBridge.exposeInMainWorld(electronApi, {});node:electron/js2c/renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js …

大型企业高效内部协同,向日葵SDK私有化部署案例解析

大型集团企业的内部,沟通协作的重要性不言而喻,我们时常能听到关于所谓“大企业病”的吐槽,多数也是源于企业内部沟通协作效率低,进而导致内耗加重。甚至我们可以这么说,越是发展壮大的集团企业,其内部的沟…

java:Http协议和Tomcat

HTTP协议 Hyper Text Transfer Protocol 超文本传输协议,规定了浏览器和服务器之间数据传输的规则 特点: 基于TCP协议,面向连接,安全 基于请求响应模型:一次请求对应一次响应 HTTP协议是无状态协议,对事务的处理没有记忆能力,每次请求-响应都是独立的. 优点 速度较快 …

图论基础知识 深度优先(Depth First Search, 简称DFS),广度优先(Breathe First Search, 简称DFS)

图论基础知识 学习记录自代码随想录 dfs 与 bfs 区别 dfs是沿着一个方向去搜,不到黄河不回头,直到搜不下去了,再换方向(换方向的过程就涉及到了回溯)。 bfs是先把本节点所连接的所有节点遍历一遍,走到下…

平安城市 停车场 景区对讲SV-6201-T IP网络非可视对讲报警柱简介

平安城市 停车场 景区对讲SV-6201-T IP网络非可视对讲报警柱简介 18123651365微信 功能特点: 全金属外壳,户外防风雨,坚固耐用,易于识别单键呼叫,可通过软件指定呼叫目标,双向对讲广播喊话终端内置扬声器…

LabVIEW连接PostgreSql

一、安装ODBC 下载对应postgreSQL版本的ODBC 下载网址:http://ftp.postgresql.org/pub/odbc/versions/msi/ 下载好后默认安装就行,这样在ODBC数据源中才能找到。 二、配置系统DSN 实现要新建好要用的数据库,这里的用户名:postg…

SpringCloud 之 服务消费者

前提 便于理解我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.comRest学习实例之消费者 创建一个消费者去消费 消费者模块展示 1、导入依赖 <!-- 实体类api自己创建的模块 Web 部分依赖展示--><depe…

57-VPX电路设计

视频链接 VPX连接器电路设计01_哔哩哔哩_bilibili VPX接口电路设计 1、VPX介绍 1.1、VPX简介 VPX总线是VITA(VME International Trade Association, VME国际贸易协会)组织于2007年在其VME总线基础上提出的新一代高速串行总线标准。VPX总线的基本规范、机械结构和总线信号等…

Golang特殊init函数

介绍 init()函数是一个特殊的函数&#xff0c;存在一下特性 不能被其它函数调用&#xff0c;而是子main()函数之前自动调用不能作为参数传入不能有传入参数和返回值 作用&#xff1a; 对变量进行初始化检查/修复程序状态注册运行一次计算 以下是<<the way to go>>…