二维目标检测SOTA---TOOD论文解读

代码链接

paper链接

个人博客

问题

本文首先提出了一个目前一阶目标检测器存在的普遍问题就是在head部分将分类和定位这两个任务并行的来做了。这样的话就存在两个任务之间不对齐的问题。因为两个任务是的目标不一样。分类任务更加关注目标的显著的,关键的特征。而定位任务更加关注图像的边界特征。这就导致当使用两个独立的分支来进行预测的时候,会导致一定程度上的结果的不能对齐。

image-20211224184542854

如上图所示,第一张中的result列,绿色和红色的方块表示的是在定位任务和分类任务中生成的最有的anchor,白色箭头表明的是最优的anchor相对目标中心偏移。从上述中我们可以看出,第一行中的分类任务红色anchor的最优的anchor虽然分类出了dining table,但是其最优的anchor确是在piza上。而最优的定位任务的anchor,其分类的分数又很低。这就是两个任务没有对齐的表现。就是说分类性能好的anchor,其定位的精度差。定位精度高的anchor,其分类性能差。

此外,目前对于anchor的分配策略也是任务无关的。例如上图中的,由于最优的定位anchor不位于目标的中心点,因此他很难和最优的分类的anchor进行绑定。这就造成一个精确的bbox在NMS的过程中可能会被一个不太精确的bbox抑制住。

作者还分析了一些启发式的规则的缺点

解决方法

为了解决上述问题,作者提出了一个任务对齐的一阶目标检测头。其主要做了两方面的工作,一个是设计了一个任务对齐的head,另一方面是设计了一个任务对齐的学习方法,后者主要表现为设计了一种任务对齐的分配策略和任务对齐有关的损失函数。

任务对齐的head

不同于传统的单阶段的目标检测的网络。作者通过两个方面来改进不同任务之间相关独立的问题。首先是增加两个任务之间的交互,另一个提高检测头学习对齐的能力。其中检测头分为T-head部分和TAP部分。其具体结构如下图所示:

image-20211224184613332
image-20211224184645137

其中TAP的结构非常简单,就是在RPN的特征图上使用了几个卷积层,并分别保存各个卷积层的输出,作者把这部分特征图称为 两个任务之间的交互特征。然后分别使用TAP这个子网络在交互特征上进行分类和定位任务的预测。到这里,我理解的还是和普通的分两个分支进行预测的任务是没什么区别的,只是多了几个卷积层。重点在这个TAP部分。

由于两个任务的预测都是基于这个交互特征来完成的,但是两个任务对于特征的需求肯定是不一样的,因为作者设计了一个layer attention来为每个任务单独的调整一下特征,这个部分的结构也很简单,可以理解为是一个channel-wise的注意力机制。这样的话,我们就得到了对于每个任务单独的特征X_{1~N}^{task}然后再利用这些特征生成我们所需要的类别或者定位的特征图。

在生成预测结果之后,作者为了能够更加深入的对其两个任务,显式的调整了两个预测的空间分布。不同于以往的网络利用一个无中心的,或者IoU分支,根据分类特征和定位特征来调整分类的预测。本文通过计算的任务交互特征(上图中的蓝色部分)来同时考虑两个任务。如上图TAP的结构图中可以看出,作者计算了从交互特征中计算了一个大小为H \times W \times 1的空间概率图M,这个概率图被用于调整分类的预测输出P.其调整方法如下图公式所示:
P^{align}=\sqrt{{P \times M}}
这里可以理解为M是用来评价这个位置两个任务的对齐的程度。

上面是对于分类损失任务的调整,此外,作者还计算了对于定位任务部分的偏移。其首先利用交互特征计算了关于空间偏移图,大小为O \in R^{H \times W \times 8}。然后使用这个来调整关于定位任务的输出。其计算方法如下所示:
B^{align}(i,j,c)=B(i + O(i + O(i, j, 2\times c), j + O(i, j , 2 \times c + 1)), c)
上述的意思就是,我针对每个位置的anchor,都使用交互特征计算了一个偏移,告诉他最好的anchor是位于什么位置。但是这些偏移肯定都是不是整数,因此这部分使用的是线性插值的方法来完成的。此外,值得注意的是,这部分是对每个通道单独去做的。这意味着每个边界都有计算自己的偏移,这能够带来更加精度的预测,因为每个边界都能从其周围最精确的anchor中学习到信息。

至此,我们就介绍完了文中关于T-head部分结构的描述。从这个自网络的结构中可以看出,其任务对齐主要是通过三个方面来完成的,一个是任务交互的特征,然后是逐个任务的特征,最后利用交互特征来对任务特征的预测输出来学习偏移,使得两个任务能够更好的交互。

任务对齐的学习

为了能够更好的知道前面的T-head网络能够进行任务对齐的预测,作者还介绍了一种任务对齐的学习方法TAL.这个方法主要包含两个方面的内容,一个是能够根据涉及的指标动态的选择高质量的anchor,另一方面,他同时考虑了anchor划分和权重。这部分主要通过一个简单的anchor划分策略和特别涉及的损失函数来实现两任务的对齐。首先是任务对齐的anchor划分策略,就是选择哪些anchor为positive,哪些anchor是positive。另一方面是涉及了一个任务对其的损失函数。

任务对齐的分配策略

为了能够应付NMS,一个好的分配策略应该能够满足一下规则:

  1. 一个对齐的好的anchor应能够预测较高的分类分数同时还有精确的定位框。
  2. 一个没有对齐的anchor应该具有较低的分类分数同时被抑制。

为了能够实现上述目标,作者设计了一个用于评价anchor对齐指标的值,这里将其记为t.其计算方法如下:
t = s^{\alpha} \times u^{\beta}
其中s表示预测类别的置信度,u表示预测的边界框的IoU.\alpha\beta用来控制两个任务对于对齐指标的影响。值得注意的是,t在两个任务共同对齐优化中起着非常重要的作用,他鼓励网络去动态的关注任务对齐的anchor。

有了上述评价指标之后,我们就根据t来选择k个最大的anchor作为positive,其余的都是negative的。

任务对齐的损失

在分类对象方面,为了能够显示的增加对齐的anchor的分类分数,同时,减少没有对齐的anchor的分类分数,文中在训练过程中使用t来代替positive的二值标签。但是作者发现,随着\alpha\beta的增大,t变得非常小,这导致网络没办法收敛。因此作者对t进行了归一化,记为\hat t,并用他来代替positive的二值标签。

其中\hat t应具有以下两个性质:

  1. 应能够保证困难目标的高效的学习。困难目标就是对于所有与之对应的positive anchor的t都很小
  2. 需要根据预测的边界框的精度保持实例之间的顺序。

因此,作者设计了一个实例级别的归一化来调整\hat t的范围,作者将\hat t的最大值设置为实例之间的最大IoU.也就是计算t的式子中的u的值,至于其余的是怎么变化的需要去看一下代码。这样的话,我们就将分类损失设计为一下形式:

<img src="https://blog-image-twn29004.oss-cn-chengdu.aliyuncs.com/blog-img/202112241847658.png" alt="image-20211224184711480" style="zoom: 80%;" />

在定位方面,为了使得网络能够更好的关注对齐的网络,作者使用上面提出的对齐的衡量指标\hat t来作为回归损失的权重。就是说,如果这个anchor越是任务对齐的,即\hat t就越大,那么这个anchor的GIoU损失在整个损失函数中所占的比重就越大,我们可以理解为网络就更加的关注这些anchor。如果\hat t的值小的话,作用刚好相反。因此就有了一下损失函数的设计。

<img src="https://blog-image-twn29004.oss-cn-chengdu.aliyuncs.com/blog-img/202112241847381.png" alt="image-20211224184731250" style="zoom: 50%;" />

所以,总的损失函数就是由上述两个损失组成。

解决效果

作者在MS COCO数据集上去了AP 51.1的成绩。

消融实验

T-Head和其他并行结构的头的对比。

image-20211224184809818

TAL的anchor选择方法和其他anchor选择方法的对比。

image-20211224184822438

anchor-based的TOOD的anchor-free的TOOD的性能的区别:

image-20211224184838656

从上表可以看出,anchor-free和anchor-based这两个TOOD的性能相差不是很大。

关于t的计算过程中,\alpha\beta不同的值对于模型性能的影响。

image-20211224184856927

从上表可以看出,这个超参数对于模型性能的影响并不是很大。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容