52.1 %AP!AutoAssign:Anchor-free最强检测网络!密集目标检测的可微标签分配

本文主要是介绍52.1 %AP!AutoAssign:Anchor-free最强检测网络!密集目标检测的可微标签分配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击关注上方“AI公园”,并“星标”公号

技术硬文,第一时间送达!

AI公园

AutoAssign:以52.1%的AP成就最强Anchor-free目标检测网络!用于密集目标检测的可微标签分配,模型表现SOTA!优于所有现有的一级检测器,如ATSS、FreeAnchor和FCOS等网络,注:并没有成功收录到ECCV 2020。

作者团队:旷视研究院

1

摘要

在本文中,我们提出了一种具有完全differentiable标签分配策略的anchor-free目标检测器,称为AutoAssign。

它通过生成正负权重图来动态修改每个位置的预测,从而自动确定正样本/负样本。具体来说,我们提供了一个中心加权模块来调整特定于类别的先验分布,以及一个置信度加权模块来适应每个实例的特定分配策略。整个标签分配过程是可微的,不需要其他修改即可迁移到不同的数据集和任务。

在MS COCO上进行的大量实验表明,我们的方法以各种主干的AP稳定地超过了其他最佳采样策略〜1%。此外,我们最好的模型可达到52.1%的AP,优于所有现有的一级检测器。此外,对其他数据集PASCAL VOC,Objects365和WiderFace的实验证明了AutoAssign的广泛适用性。

2

主要思路

2.1 检测现状

检测需要密集的提取正负样本,而根据它们的空间位置进行正负样本分配的过程,称之为标签分配。现代基于cnn的检测器通常采用多尺度特征(如FPN[10])来缓解尺度方差,因此标签分配不仅需要在空间特征映射图中选择位置,还需要选择合适尺度的特征。

(1)Anchor-based检测器

如RetinaNet在每个位置预设几个不同尺度和纵横比的anchor,根据交并比(IoU)排序来选择合适的正负样本。

(2)Anchor-free检测器

如FCOS等无锚探测器对每个目标采样中心面积的固定比例作为空间正位置,并根据预先定义的尺度约束选取FPN的某一阶段。

这些检测器遵循对象的先验分布来设计它们的分配策略。

2.2 发现问题

在现实世界中,物体的外观会因类别和场景的不同而有很大差异,如图2所示。固定中心采样策略可以选择外部对象为正的位置。直观上,物体上的采样位置比普通背景要好,因为这些位置容易产生更高的分类置信度。另一方面,虽然CNN可以学习偏移量,但是当背景采样为正时,feature shift造成的障碍可能会降低性能。
因此,上述固定策略可能并不总是在空间和规模上选择最合适的位置。

2.3 解决思路

在这项工作中,我们提出了一个完全可微策略的标签分配。如图1所示。

  • 首先遵循像FCOS这样的无锚方式,在没有人为设计锚的情况下在每个位置上直接预测对象。

  • 为了为进一步优化保留足够的位置,首先将边界框内的所有位置在所有尺度级别上都视为正候选和负候选。然后生成正权值和负权权值映射对训练损失进行修正。

  • 为了适应不同类别和领域的分布,提出了一个分类加权模块,名为中心加权,从数据中学习每个类别的分布。

  • 为了适应每一种姿态的外观和尺度,提出了一个置信加权模块来在空间和尺度维度上对位置的正置信和负置信进行建模。

  • 然后结合这两个模块来生成所有位置的正权值映射和负权值映射。加权的整个过程是可微的,可以通过反向传播方便进行优化。

2.4 本文贡献

1. 针对密集目标检测,提出了一种新的可微标签分配策略——自动分配算法。此外,可学习范式使它能够在不进行任何修改的情况下转换到不同的数据集和任务。

2. 两个加权模块,即在空间和尺度两个维度上,提出了中心加权和置信加权,以自适应地增加特定类别的分布和特定实例的采样策略。

3.在具有挑战性的MS COCO[12]数据集和来自不同领域的其他数据集(如pascal VOC[3,4]、Object365[19]和宽面[22])上进行了具有竞争性结果的广泛实验,证明了自动分配的有效性和广泛适用性。

3

AutoAssign

3.1 Overview

标签分配是一个完全数据驱动的方式。它从头开始构建,没有传统的组件,例如锚点、IoU阈值、top-k或scale范围,而是直接使用网络预测动态调整每个位置的正/负置信度。

为了优化整个标签分配过程,我们提出了一个完全可区分的策略,在空间和尺度上动态调整特定类别和特定实例的采样策略。策略框架如图3所示。

首先采用FCOS等无锚方式,放弃预先设计的锚,直接预测每个有限元位置上的对象。对于每个实例,我们在它的边界框中保留了所有缩放级别的位置,包括正、负。

然后生成正权值和负权值图w+和w−,以精确地修正训练中对正、负权值的预测。因此,我们将整个分配步骤转换为两个权值映射。

为了适应不同类别的分布,提出了一个名为center weights的分类和依赖数据的权重模块。它先从标准中心开始,然后从数据中学习每个类别的分布。

为了适应每种姿态的外观和尺度,进一步提出了一个实例加权模型,称为置信加权。它根据每个目标的预测置信度,动态地对目标在空间和尺度上的位置进行加权。最后,结合两个权重模块来生成所有位置的正权值和负权值。给定一个对象n,我们构建应用整个加权机制后的训练损失如下式所示:


3.2 Center Weighting

先验分布是标签分配的基本要素,特别是在训练的早期阶段。一般来说,物体的分布以中心优先为主。然而,来自不同类别的对象,例如长颈鹿和人类可能有不同的分布。保持采样中心的位置不能捕捉实际实例的不同分布。对于不同类别的对象,自适应中心分布更适合去血缘化。基于中心先验,我们引入了一个具有可学习参数的分类高斯形状加权函数G。“分类的方式”是指每个类别都有其独特的参数(μ,σ),而同一类别的所有对象共享相同的参数。这里我们将G定义为:

直观地,~u控制每个类别的中心距框中心的偏移量。并且~σ根据类别特征来衡量每个位置的重要性。因此,~σ决定了在用合理的权重下有多少位置会有效地导致正损失。
还需要注意的是,G适用于所有FPN阶段。由于同一类别的对象可以具有任意大小或长宽比,因此最合适的位置可以在任何FPN阶段。此外,为了补偿不同的FPN降采样率所带来的干扰,我们根据FPN各阶段的降采样率对距离~d进行了归一化。

3.3 Confidence Weighting

现有的动态策略在设计时考虑到网络可以很容易地获得高置信度的合适样本,同时倾向于对次样本进行低置信度的预测。其中,置信度指标分别在尺度选择和空间分配(锚一致性)中被证明是有效的。在置信度加权中,我们提出了分类和局部化的联合置信度指标来指导空间和尺度上的加权策略。

  • Classification confidence

给定一个空间位置,其分类的置信度可以自然定义为Pi(cls|θ)式中为模型参数。然而,为了确保考虑到所有合适的位置,我们首先考虑了盒子内的所有空间位置。由于一个对象很难完全填满它的边框,初始的正集往往会包含相当一部分背景位置。如果一个位置实际上是背景,那么该位置中的所有类谓词都应该是不合理的。因此,将太多的低背景位置作为正确率将损害检测性能。

为了抑制来自劣质位置的假正样本,引入了一个新的Implicit-Objectness分支,如图3所示。它的工作原理与RPN[17]和YOLO[14]中的Objectness一样,是一个基于前景和背景的二元分类任务。但这里存在缺乏明确标签的问题。RPN和YOLO采用预先定义的赋值,带有一致的正标签,而我们需要动态地寻找和强调适当的正标签。因此,我们将Objectness和classification分支一起优化,因此它不需要显式标签。这就是为什么它被称为隐含对象(ImpObj)。对于位置i∈Sn,应用ImpObj后,可以定义分类置信度Pi(cls|θ):

  • joint confidence modeling

为了生成每个位置的正/负无偏估计,除了分类之外,还应该包括定位置信度。典型的本地化输出是框偏移量,很难直接度量回归置信度。将局部化损失Lloci(θ) 转化为似然Pi(loc|θ)它可以由loss Li(θ)推导如下。在不失一般性的前提下,本文采用二元交叉熵(BCE)损失进行分类。

  • Weighting function

在联合置信表示Pi(θ)的基础上,我们将置信加权函数C(Pi)以指数形式提出,以强调包含高度置信对象的位置为:

3.4 Weight Maps

  • Positive weights

给定一个目标i,对于其边框内的所有位置,应该关注正确的位置,并做出更准确的预测。然而,在训练过程的开始,网络参数被随机初始化,使得其预测的置信区间不合理。因此,来自先验的指导信息也很重要。对于位置i∈Sn,我们将中心权重模块的特定类别先验G(~di)和置信度权重模块C(Pi)组合在一起,生成正权重wi+为:

  • Negative weights

一个边界盒通常包含一定数量的真实背景位置,我们还需要加权的负损失来抑制这些位置,消除假positive标签。此外,由于方框内的位置总是倾向于预测positive的高置信度,我们倾向于使用位置信度来生成无偏假positive label。矛盾的是,负分类对回归任务没有梯度,这意味着位置信度不应该进一步优化。因此,我们在每个位置的预测建议和所有对象之间使用IoUs来生成我们的负权值wi- as

3.5 Loss Function

通过生成正权和负权映射,实现了为每个实例动态分配更合适的空间位置和自动选择合适的FPN阶段的目的。由于权重映射会导致训练损失,因此以可微的方式处理标签分配。AutoAssign的最终损失函数:

S表示所有尺度上的所有位置。因此对于边界盒内的某个位置,正损失和负损失都将以不同的权重进行计算。这与其他标签分配策略有很大的不同。为了处理负位置之间的不平衡问题,采用了focal loss。

4

实验结果

4.1 消融实验

  • Center weighting and confidence weighting

中心权重和置信权重的贡献

  • Analysis of center weighting

  • Analysis of confidence weighting

4.2 SOTA对比实验

COCO数据集:

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

这篇关于52.1 %AP!AutoAssign:Anchor-free最强检测网络!密集目标检测的可微标签分配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S