前言 

单阶段目标检测通常通过优化目标分类和定位两个子任务来实现,使用具有两个平行分支的头部,这可能会导致两个任务之间的预测出现一定程度的空间错位。本文提出了一种任务对齐的一阶段目标检测(TOOD),它以基于学习的方式显式地对齐这两个任务。

TOOD在MS-CoCO上实现了51.1Ap的单模型单尺度测试。这大大超过了最近的单阶段检测器,如ATSS(47.7AP)、GFL(48.2AP)和PAA(49.0AP),它们的参数和FLOPs更少。

本文来自公众号CV技术指南的论文分享系列

关注公众号CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

论文:TOOD: Task-aligned One-stage Object Detection

代码:https://github.com/fcjian/TOOD

Background


目标检测通常被表示为通过联合优化目标分类和定位的多任务学习问题。由于分类和定位的学习机制不同,两个任务学习到的特征的空间分布可能不同,当使用两个单独的分支进行预测时,会导致一定程度的错位

最近的一级目标检测器试图通过聚焦于目标的中心来预测两个独立任务的一致输出。他们假设位于对象中心的锚(即,无锚检测器的锚点,或基于锚的检测器的锚盒)可能给出分类和定位两者的更准确的预测。

例如,最近的FCOS和ATSS都使用中心度分支来增强从对象中心附近的锚点预测的分类分数,并为相应锚点的定位损失分配更大的权重。此外,FoveaBox将对象的预定义中心区域内的锚视为正样本。这样的启发式设计已经取得了很好的效果,但这些方法可能会受到两个限制

(1)分类和定位独。目前的单级检测器通过两个独立的分支(即头部)并行独立地进行目标分类和定位。这种由两个分支组成的设计可能会导致两个任务之间缺乏交互,从而导致在执行它们时预测不一致。如图1的“result”栏所示,TSS检测器(左上角)识别“餐桌”的对象(用红色块显示的锚点表示),但更准确地定位“披萨”的另一个对象(红色边界框)。

图1:由ATSS(顶行)和TOOD(底行)预测的检测结果(‘Result’)以及分类得分(‘Score’)和定位得分(‘IoU’)的空间分布图示。

(2)与任务无关的样本分配。大多数无锚点检测器使用基于几何的分配方案来选择对象中心附近的锚点进行分类和定位,而基于锚点的检测器通常通过计算锚框和ground truth之间的IoUs来分配锚盒。然而,用于分类和定位的最佳锚点通常是不一致的,并且可能根据对象的形状和特征而变化很大。广泛使用的样本分配方案是与任务无关的,因此可能很难对这两个任务做出准确而一致的预测,如图1中ATSS的 ‘Score’ 和 ‘IOU’ 分布所示。‘Result’列还说明最佳定位锚(绿色块)的空间位置可能不在对象的中心,并且它与最佳分类锚(红色块)不能很好地对齐。因此,在非最大值抑制(NMS)过程中,精确的bounding box可能会被精度较低的bounding box所抑制。

创新思路


为了解决这些局限性,论文提出了一种任务对齐的一阶段目标检测(Task-aligned One-stage Object Detection, TOOD),旨在通过设计一种新的头部结构和面向对齐的学习方法来更精确地对齐这两个任务:

针对传统的一步法目标检测中分类和定位分别采用两个分支并行实现的特点,设计了一种任务对齐头(T-Head),以增强两个任务之间的交互性。这使得这两项任务能够更协作地工作,进而更准确地调整它们的预测。T-Head在概念上很简单:它计算任务交互特征,并通过一种新颖的任务对齐预测器(TAP)进行预测。然后,它根据任务对齐学习提供的学习信号对两个预测的空间分布进行对齐,如下所述。

为了进一步克服未对齐问题,论文提出了一种任务对齐学习(TAL)来明确两个任务的最优锚点之间的距离它是通过设计一个样本分配方案和一个与任务相关的损失来执行的。样本分配通过计算每个锚点的任务对齐度来收集训练样本(正样本或负样本),而任务对齐损失逐渐统一最佳锚点,以便在训练期间预测分类和定位。因此,在推断时,可以保留分类得分最高并且共同具有最精确定位的边界框。

提出的T-Head和学习策略可以协同工作,在分类和定位两个方面做出高质量的预测。论文的主要贡献可以概括为:

(1)设计了一种新的T-Head,在保持分类和定位特征的同时,增强了分类和定位之间的交互,并进一步将两个任务在预测上对齐;

(2)论文提出了TAL,在识别出的任务对齐锚点上显式地对齐两个任务,并为所提出的预测器提供学习信号;

(3)论文在MSCOCO上进行了广泛的实验,TOOD达到了51.1AP,超过了现有的单级检测器,如ATSS。定性结果进一步验证了任务对齐方法的有效性。

Methods


与最近的单级探测器类似,TOOD具有一个“主干-FPN-头”的整体流水线。此外,考虑到效率和简单性,TOOD在每个位置使用一个锚点(与ATSS相同),其中“锚”是指anchor-free检测器的锚点,或者是anchor-based检测器的锚盒。

图2. TOOD的整体学习机制。

首先,T-Head对FPN特征进行预测。其次,使用预测来计算每个锚点处的任务对齐度量,基于该度量,TAL为T-Head产生学习信号。最后,T-Head对分类和定位的分布进行了相应的调整。具体地说,对齐程度最高的锚点通过“Prob”(概率图)获得更高的分类分数,并通过学习的“偏移量”获得更准确的边界框预测。

如图2所示,T-Head和TAL可以协作改进两项任务的一致性。具体地说,T-Head首先对FPN特征进行分类和定位预测。然后,TAL基于一种新的任务对齐度量来计算任务对齐信号,该度量度量测量两个预测之间的对齐程度。最后,T-Head在反向传播过程中使用TAL计算的学习信号自动调整其分类概率和定位预测。

Task-aligned Head


为了设计一种高效的head结构,以改进单级探测器中head的传统设计(如图3(A)所示)。论文通过考虑两个方面来实现这一点:(1)增加两个任务之间的交互,(2)增强检测器学习比对的能力。T-Head如图3(B)所示,它有一个简单的特征提取器和两个任务对齐的预测器(TAP)。

图3.传统的并行头和提出的T-Head之间的比较。

为了增强分类和定位之间的交互,论文使用特征提取器来学习来自多个卷积层的任务交互特征堆栈,如图3(B)中的蓝色部分所示。这种设计不仅方便了任务的交互,而且为这两个任务提供了多层次的特征和多尺度的有效感受野。形式上,Xfpn表示FPN特征。特征提取器使用具有激活函数的N个连续卷积层来计算任务交互特征:

其中,conv k和δ分别指第k个卷积层和ReLU函数。因此,论文利用head的单个分支从FPN特征中提取丰富的多尺度特征。然后,将计算出的任务交互特征送入两个TAP进行分类定位。

Task-aligned Predictor(TAP)


论文对计算出的任务交互特征进行目标分类和定位,这两个任务可以很好地感知彼此的状态。然而,由于单一分支的设计,任务交互功能不可避免地在两个不同的任务之间引入了一定程度的功能冲突,这在其它论文中也有讨论。

图4 Task-aligned Predictor(TAP)

直观地说,对象分类和定位的任务具有不同的目标,因此聚焦于不同类型的特征(例如,不同的层次或感受野)。因此,论文提出了一种层注意机制(layer attention mechanism),通过在层级动态计算任务特征来鼓励任务分解。如图4所示,针对每个分类或定位任务分别计算特定于任务的功能:

其中wk是可学习层注意w的第k个元素,它是根据跨层任务交互特征计算出来的,能够捕获层之间的依赖关系:

其中X inter是通过平均池化获得。最后,从每个Xtask中预测分类或定位的结果:

其中X task是X_k task的拼接特征,conv1是用于降维的1×1卷积层。然后,使用Sigmoid函数将Z task转换为密集分类分数P(H×W×80),或对象边界框B(H×W×4),其具有distance-to-bbox的转换。

Prediction Alignment


在预测阶段,通过调整两个预测的空间分布来进一步明确地对齐这两个任务:P和B。与以往只能基于分类特征或局部特征调整分类预测的中心度分支或IOU分支不同,论文通过使用计算的任务交互特征联合考虑两个任务来对这两个预测进行对齐。值得注意的是,分别对这两个任务执行对齐方法。

如图4所示,论文使用空间概率图M∈(H×W×1)来调整分类预测:

其中M是从交互特征计算的,从而允许它学习在每个空间位置的两个任务之间的一致性程度。同时,通过交互特征进一步学习空间偏移量映射O∈(H×W×8),用于调整每个位置的预测bounding box,从而对定位预测进行对齐。具体地说,学习的空间偏移使对齐程度最高的锚点能够识别其周围的最佳边界预测:

值得注意的是,每个通道的偏移量都是独立学习的,这意味着对象的每个边界都有自己的学习偏移量。这允许对四个边界进行更准确的预测,因为它们中的每一个都可以单独从其附近最精确的锚点学习。因此,不仅协调了这两个任务,而且通过为每边确定一个精确的锚点来提高定位精度。

对齐图M和O是从交互特征堆栈中自动学习的:

T-Head是一个独立的模块,可以在没有TAL的情况下正常工作。它可以方便地以即插即用的方式应用于各种一级物体检测器,以提高检测性能

Task Alignment Learning


TAL与以前的方法有两个不同之处。首先,从任务对齐的角度,它基于设计的度量动态地选择高质量的锚。其次,它同时考虑锚点分配和权重。它包括一个样本分配策略和专门为协调这两项任务而设计的新损失

为了应对NMS,训练实例的锚点分配应该满足以下规则:(1)对齐的锚点应该能够预测高分类分数,并进行精确的联合定位;(2)对齐错误的锚点应该具有低分类分数并随后被抑制。基于这两个目标,论文设计了一个新的锚点对齐度量来明确地度量锚点级别的任务对齐程度。对准度量被集成到样本分配和损失函数中,以动态地改进每个锚点处的预测。

其中,s和u分别表示分类分数和IOU值。α和β用于控制锚点对齐度量中这两个任务的影响。

对于每个实例,选择取值最大的锚点作为正样本,而将剩余的锚点作为负样本。同样,训练是通过计算专门为调整分类和定位任务而设计的新损失函数来执行的。

Task-aligned Loss


为了显式提高对齐锚点的分类得分,同时降低未对齐锚点(即t值较小)的分类得分,我们在训练过程中使用了替换正锚点的二进制标签。使用归一化t,即ˆt来代替正锚点的二进制标签,其中ˆt由以下两个性质来归一化:(1)确保硬实例的有效学习(对于所有对应的正锚点,这些硬实例通常具有较小的值);(2)基于预测bounding box的精度来保持实例之间的排序。

因此,论文采用简单的实例级归一化来调整ˆt的规模:ˆt的最大值等于每个实例中的最大IOU值(u)。分类任务的损失函数定义如下:

采用焦点损失进行分类,以缓解训练期间负样本和正样本之间的不平衡。其中i表示对应于一个实例的第i个锚点与负值锚点,j表示来自负负锚点的第j个锚点,γ是聚焦参数。

与分类目标类似,根据ˆt重新加权为每个锚点计算的bounding box回归损失,并且GIoU loss(L_GIoU)可以重新表示如下:

其中b和~b表示预测的边界框和相应的ground truth。TAL的总训练损失是L_cli和L_reg的总和。

Conclusion


1. 论文在MS-Coco上进行了广泛的实验,TOOD在MS-CoCO上实现了51.1AP的单模型单尺度测试。这大大超过了最近的单阶段检测器,如ATSS(47.7AP)、GFL(48.2AP)和PAA(49.0AP),它们的参数和FLOPs更少。

2.不同训练样本分配方案之间的比较。‘Pos/neg’:正/负锚定分配。‘Weight’:锚定权重分配。‘fixed’:固定分配。‘ada’:自适应赋值。在这里,TAP根据最后head tower的分类和定位特征对齐预测。

3.不同检测器中不同head结构的比较。

4.可视化

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

在公众号中回复关键字 “入门指南“可获取计算机视觉入门所有必备资料。

其它文章

CVPR2020 | D3S: 判别式单镜头分割跟踪器

Pytorch 数据流中常见Trick总结

计算机视觉中的transformer模型创新思路总结

PNNX: PyTorch 神经网络交换格式

ICCV2021 | 渐进采样式Vision Transformer

MobileVIT:轻量级视觉Transformer+移动端部署

ICCV2021 | SOTR:使用transformer分割物体

ML2021 | PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

ICCV2021 | PnP-DETR:用Transformer进行高效的视觉分析

ICCV2021 | Vision Transformer中相对位置编码的反思与改进

2021-视频监控中的多目标跟踪综述

一文概括机器视觉常用算法以及常用开发库

统一视角理解目标检测算法:最新进展分析与总结

给模型加入先验知识的常见方法总结|    谈CV领域审稿

全面理解目标检测中的anchor|    实例分割综述总结综合整理版

HOG和SIFT图像特征提取简述|    OpenCV高性能计算基础介绍

目标检测中回归损失函数总结|    Anchor-free目标检测论文汇总

小目标检测的一些问题,思路和方案|小目标检测常用方法总结

2021年小目标检测最新研究综述

深度学习模型大小与模型推理速度的探讨

视频目标检测与图像目标检测的区别

CV算法工程师的一年工作经验与感悟

单阶段实例分割综述|    语义分割综述|    多标签分类概述

视频理解综述:动作识别、时序动作定位、视频Embedding

资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库

论文创新的常见思路总结|    卷积神经网络压缩方法总结

神经网络超参数的调参方法总结   |数据增强方法总结

归一化方法总结 | 又名"BN和它的后浪们"

Batch Size对神经网络训练的影响|计算机视觉入门路线

ICCV2021 | TOOD:任务对齐的单阶段目标检测的更多相关文章

  1. One Stage目标检测

    在计算机视觉中,目标检测是一个难题.在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析.如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别.如果该 ...

  2. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  3. 目标检测 | 经典算法 Cascade R-CNN: Delving into High Quality Object Detection

    作者从detector的overfitting at training/quality mismatch at inference问题入手,提出了基于multi-stage的Cascade R-CNN ...

  4. [炼丹术]YOLOv5目标检测学习总结

    Yolov5目标检测训练模型学习总结 一.YOLOv5介绍 YOLOv5是一系列在 COCO 数据集上预训练的对象检测架构和模型,代表Ultralytics 对未来视觉 AI 方法的开源研究,结合了在 ...

  5. 单次目标检测器-SSD简介

    SSD 是使用 VGG19 网络作为特征提取器(和 Faster R-CNN 中使用的 CNN 一样)的单次检测器.我们在该网络之后添加自定义卷积层(蓝色),并使用卷积核(绿色)执行预测. 同时对类别 ...

  6. 把一个整体目标设置成多个分阶段目标,完成了一个目标后,就相当于一件事OVER

    如果事情有变坏的可能,不管这种可能性有多小,它总会发生 . 一.任何事都没有表面看起来那么简单:二.所有的事都会比你预计的时间长:三.会出错的事总会出错:四.如果你担心某种情况发生,那么它就一定会发生 ...

  7. 单次目标检测器-YOLO简介

    YOLO 在卷积层之后使用了 DarkNet 来做特征检测. 然而,它并没有使用多尺度特征图来做独立的检测.相反,它将特征图部分平滑化,并将其和另一个较低分辨率的特征图拼接.例如,YOLO 将一个 2 ...

  8. CVPR2019目标检测方法进展综述

    CVPR2019目标检测方法进展综述 置顶 2019年03月20日 14:14:04 SIGAI_csdn 阅读数 5869更多 分类专栏: 机器学习 人工智能 AI SIGAI   版权声明:本文为 ...

  9. CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

随机推荐

  1. Shadertoy 教程 Part 2 - 圆和动画

    Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...

  2. populating-next-right-pointers-in-each-node leetcode C++

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  3. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /

    Char类 String类 字符串的格式化:String类的Format方法 StringBuilder类 以上:百度 or 查手册.....

  4. js和jq文档操作

    JS文档操作 一.dom树结构 1.元素节点 2.文本节点 3.属性节点      不属于元素节点的子节点  4.文档节点(document) 二.处理元素节点    method    1.docu ...

  5. mongoDB 的一般使用

    理解 mongodb 也是nosql 的一种.他的数据存储类型是一种和json格式比较像的数据类型,可以看作就是json. mongodb 里的数据库都是一个单独的库.一般需要用的库都会设置自己的us ...

  6. Java Logback简易教程

    本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可. 一.前言 本文以一个简单的项目为例,一步步展示logback的同步和异步配置方法,并且配置的日志要求满足阿里巴巴Java开发手册- ...

  7. jQuery淡入淡出效果

    如果是通过鼠标点击事件来触发动画效果可以使用 $("#button").click(function(){ $("#div").stop().fadeToggl ...

  8. 【pycharm】Python pip升级及升级失败解决方案,报错:You are using pip version 10.0.1, however version 21.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    我已经升级到了最新的版本 安装其他模块过程中出现下面提示,便说明你需要升级pip You are using pip version 10.0.1, however version 21.3.1 is ...

  9. Jmeter 运行结果的csv文件生成报告

    把运行结果保存到本地,下次可以直接用结果生成测试报告. 一.首先保证脚本能正常运行 二.本地创建csv文件,用来保存运行结果 三.察看结果树,选择本地文件(上一步创建好的csv文件),保存运行结果,如 ...

  10. Docker学习:起步篇

    Docker-概述 学习资源 最好的资源在官网! Docker官方: Docker 官方主页: https://www.docker.com(opens new window) Docker 官方博客 ...