大数跨境
0
0

ICLR2023|性能比肩全监督,弱监督+自监督的旋转目标检测方法H2RBox

ICLR2023|性能比肩全监督,弱监督+自监督的旋转目标检测方法H2RBox 极市平台
2023-02-03
1
导读:仅利用水平框的标注去训练旋转目标检测器
↑ 点击蓝字 关注极市平台
作者丨yangxue@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/574337609
编辑丨极市平台

极市导读

 

作者提出了一种简单且有效的方法H2RBOX,仅利用水平框的标注去训练旋转目标检测器。实验结果表明,H2RBox 与水平盒监督实例分割方法相比具有显着的性能和速度优势,并且内存需求更低。>>加入极市CV技术交流群,走在计算机视觉的最前沿

一、前言

这是一篇弱监督+自监督的旋转目标检测方法解读,性能比肩全监督的方法。

arXiv预印文章链接:

https://arxiv.org/abs/2210.06742

PyTorch代码:

h2rbox-mmrotate (MMRotate 0.x):https://github.com/yangxue0827/h2rbox-mmrotate

h2rbox-mmrotate (MMRotate 1.x):https://github.com/open-mmlab/mmrotate/tree/1.x/configs/h2rbox

Jittor代码:

h2rbox-jdet:https://github.com/Jittor/JDet/tree/master/projects/h2rbox

h2rbox-jittor:https://github.com/yangxue0827/h2rbox-jittor

第三方文章解读:

【弱监督旋转目标检测】H2RBOX: Horizontal Box Annotation Is All You Need For Oriented Object Detection22

https://zhuanlan.zhihu.com/p/586806807

二、动机

相比通用目标检测(水平框检测),旋转检测的研究兴起较晚。以我熟悉的遥感图像旋转检测为例(场景文字相关的旋转检测出现地更早),我是在17年末(国科大研二才进实验室)开始做旋转舰船检测的,当时几乎还找不到相关的研究,大部分还是水平框检测算法(如Faster RCNN、SSD等)在遥感图像的应用。旋转框标注的数据集也很少,当时做旋转舰船检测还是举实验室之力标注了一个。从水平框检测发展到旋转检测的这段时间里,很多数据集以水平框标注的形式发布,如果现在想进一步用于旋转检测,似乎只有重新标注。如果数据集量小还好说,一旦实例数达到十万甚至百万级别,所需要花的人力物力是非常大的。比如,DIOR(19.2w个实例)数据集刚发布的时候是以水平框标注,后来又重新标注了旋转框;SKU110K(173.3w个实例)数据集也是在后来有了一个旋转标注版本。

于是乎,我们想到了这样一个的研究任务:水平框标注的旋转框目标检测。这算是一个弱监督检测任务(也不是很“弱”),就我目前所知好像还没有人做这个事情,算是一个小坑,感兴趣的同学赶紧入坑。如果效果比肩旋转框标注的话,就可以不用重新标注旋转框;即使效果一般般,起码也可以辅助标注旋转框。后来我们查了一下各种标注形式的价格,旋转框每一千个是86刀,比水平框高的63刀高36.5%的价格。

三、相关的研究任务

尽管现在没有直接研究水平框标注的旋转检测算法,但是还是有非常相关的研究方向的,也就是基于水平框标注的实例分割,如本文主要对比的BoxInst和BoxLevelSet。只要在后处理阶段对最后预测的掩码取最小外接矩形就可以实现旋转框的检测了,我们在文中记为HBox-Mask-RBox方法,然而这种做法极易受Mask这个中间形态的影响。

图1(a)中飞机的分割往往会把周围的干扰物体(野点、异常点)也分割进去,最后所转换出的来旋转框明显不准。图1(b)中是两个密集排列的场景,这种场景下常常出现把相邻目标区域也分割进来(BoxInst采用的color pair-wise loss会经常出现这个问题),最终导致转化出来的框过大。除了最后的旋转框不准,模型的效率也会严重下降,因为Mask转成RBox这一步骤(最小外接矩形)非常耗时。HBox-Mask-RBox的方法还有一个缺陷是非常耗显存,这和它们所设计的损失函数有关系。下表就是相关参数的对比:

我们也在H2RBox代码中给了基于BoxInst的代码实现,大家亲自体验一下这类方法。这也解释了审稿人经常问我的一个问题:为什么不用实例分割来做旋转检测以及旋转目标检测这个任务存在的意义。对于预测旋转框可以满足要求的任务来说(如舰船检测、汽车检测等),实例分割的做法有点舍近求远了。像素级的表示比旋转矩形维度更高,自然会使得模型预测任务更难(图1就是具体的一些难点),最终导致效果更差了,这还不算实例分割会增加标注的成本。借用章老师(文章二作)的一句来做总结:标旋转框相比正框,价格上虽然略贵,但没有量级上的差异。国内标成本只高20%,国外标成本高40%,且目标类别越多价格差异越小。但标框和标分割,价格就差几倍了。所以旋转框的一个正经落地思路就是分割平替。有些场景标分割太隆重,标正框太粗糙,就正好标旋转框。

回到弱监督旋转目标检测这个正题,HBox-Mask-RBox方法不可行的万恶之源就是Mask这个过渡形态,所以我们提出了从HBox标注直接预测RBox的方法,也就是HBox-to-RBox方法,简称H2RBox。

四、方法介绍

H2RBox方法既有弱监督也有自监督,先看一下整体的结构图:

整个方法的结构是经典的双塔结构,左边是弱监督分支,右边是自监督分支,它们共享同一个骨干网络(Backbone)和多尺度特征融合网络(Neck)。

弱监督分支

弱监督分支选用的是FCOS作为基准模型,我们在回归子网络多预测了一个角度参数,因此最终的输出是旋转框。由于我们只有水平标注,因此无法直接使用旋转预测框和水平标注框计算损失。在计算回归损失之前,我们将预测的旋转框转换为其对应的水平外接矩形,然后再通过这些水平外接矩形与水平标注框计算损失。这个做法我们记为水平外接矩约束,这也建立了预测旋转框和未标注的旋转框之间的联系,也就是它们的水平外接矩形是高度重合的。当然这是理想情况,需要考虑到训练的模型预测的水平框不一定准,另外就是有些类别水平标注框不一定就是旋转标注框的水平外接矩形,如下图所示:

来源:https://github.com/yangxue0827/h2rbox-mmrotate/issues/1

就从结果来看,这些因素可能会影响 这种高精度指标,对于 这种指标影响不是很大,这里有一篇ICCV21的文章研究目标检测中的旋转增强讨论了这类问题并给了一个解决方案。水平外接矩约束的建立只能将弱监督分支预测的旋转框的可能形态减少,但依然有无数种可行解。为了让该分支预测的旋转框就是正确的那个框,需要增加其他约束来筛选,这也是自监督分支的作用。

自监督分支

自监督分支的输入是原图经过随机角度旋转得到的,旋转中心是图片的中心,旋转矩阵为R。这里需要注意图像旋转后会出现黑边区域而产生信息泄漏,因此文中提供了两种处理方法:

  • 中心区域裁剪法(Center Region Cropping)舍弃包含黑边的区域
  • 反射填充法(Reflection Padding)来填充黑边区域

从实验结果上来看,反射填充法效果更好,可能原因是这种做法不会降低图像的输入大小。

数据预处理完后就会被送入自监督分支,与弱监督分支不同的是该分支只包含回归子网络。自监督分支会输出新视角下的旋转预测框。有这样一个正确命题:对任意的旋转矩阵R,如果两个分支对同一个目标预测的旋转框都是正确的,那么所预测的旋转框之间的空间关系应该和两个输入图像的空间关系一致。 通过证明,我们发现这个命题在水平外接矩约束存在的前提下是充分必要的。 因此,我们将弱监督分支预测的旋转框做了R矩阵的变换,再计算变换后的旋转框与自监督分支预测的旋转框的一致性损失, 也就是图中的 主要包含尺度损失 、中心点损失 和 角度损失 , 主要是为了引入尺度约束和角度约束。到目前为止, 已经引入了三种约束, 下图描述了三种不同约束是如何引导模型一步步预测出正确的结果。

  • 水平外接矩形约束: 从上图(b)可以看出尽管水平外接矩形约束已经减少了许多种错误的预测形式,但是依然还是存在无数种可能得情况,只是这些情况的水平外接矩形满足高度重合的条件;
  • 尺度约束: 图(c)展示了这个约束可以将上述说的无数种可能得情况进一步减少到两种,也就是正确的结果和中心对称的结果。可能大家会迷惑LwhL_{wh}L_{wh}只是让两个分支对同一目标预测的结果尺度保持一致,但是并不能保证这个尺度就是正确的。这里要稍微补充解释一下,由于自监督分支的输入图像的旋转角度是随机的,那么随着多轮的训练模型就会学习到这样的一个知识,同个目标不管旋转多少度,模型都能输出一个同尺度的旋转框,且这些旋转框的水平外接矩形和对应的水平gt保持高度重合,那么这里的尺度只能是目标的实际尺度才能满足。注意,这里的关键条件是同个目标不管旋转多少度。
  • 角度约束: 现在模型距离正确预测结果只差消除中心对称的情况,两个分支的预测结果可能出现的下面四种情况(如下式所示),因此只要告诉模型两个分支预测结果的角度关系和输入图像的角度关系一致(R)就可以了。
建议参考https://zhuanlan.zhihu.com/p/586806807中的图9来辅助理解

式中 分别表示弱监督分支所估计的重合边界框和自监督分支估计的中心对称边界框。这里的SSS表示中心对称变换。

我们根据上述三个约束和上图列出了以下五个方程:

水平外接矩形约束保证 是已知量。尺度约束使得两个分支预测的尺度相同都是 。此时只剩下四个末知数 , 在 时, 方程组有唯一解(因为不是线性方程组, 所以我暂时还没法严格证明, 求助各位大佬)。已知正确的gt是上述方程组的一个解, 那么预测的结果就只能是正确的gt。

损失函数

弱监督分支损失:

自监督分支损失:

具体细节不过多介绍了,可以看原文对公式的具体说明。这里主要是想强调两点:1) 自监督分支中的中心点损失 不是必须的,因为弱监督分支中的回归损失已经包含了这部分,因此在实际实验中我们发现 需要设置一个比较小的权重,大概0-0.15即可;2) 自监督分支的gt是需要通过弱监督分支进行标签再分配得到了,本文最终采用了最简单的一对一空间位置对应关系(R的仿射变换)来进行重分配的,空间关系如下式所示:

具体就是将弱监督分支位置 上的分配到的标签作为弱监督分支位置 的标签。

消融实验

结论:

  • 反射填充 (Reflection Padding)比补零填充 (Zeros Padding)效果要好;
  • 一对一的再分配策略 (O2O)优于一对多再分配策略 (O2M);
  • 类正方形需要做特殊处理:策略1 (S1) 为训练时类正方形类别(储油罐ST和环岛RA)不参与 的训练;策略2 (S2) 为测试时直接取类正方形类别预测结果的水平外接矩形作为最后的输出;这两种可以分开使用也可以单独使用,效果均差不多,但是两种共同使用会使训练更加鲁棒易收敛;
  • 一致性损失 的使用可以消除多余的预测情况,只保留正确的预测情况,显著地提升模型的检测精度。

对比实验

增加了ATSS为Baseline的H2RBox的实验,代码也已经开源到https://github.com/yangxue0827/h2rbox-mmrotate中
原arXiv版本实验设置存在错误,导致H2Rbox效果比baseline的FCOS要好,最终版本进行了重新实验并修改了相应的描述。

结论:

  • H2RBox不管在精度上还是在速度和存储开销上都远远好于HBox-Mask-RBox范式的工作,如BoxInst-RBox和BoxLevelSet-RBox;
  • 对比于RBox监督的方法,H2RBox在各方面比已经做到了比较接近的水平。

五、总结

主要想分享一下后续可以继续做的几个研究点。如果有同道中人想接着做这些研究,欢迎加我好友一起交流,一起发paper~~

  1. 基于H2RBox的改进:
  • 提高高精度指标AP75AP_{75}AP_{75}:H2RBox其实在高精度指标AP75AP_{75}AP_{75}上效果并不好,主要前面有提到,一个是训练的模型预测的水平框不一定准,另外就是有些类别水平标注框不一定就是旋转标注框的水平外接矩形;
  • 适用于H2RBox的数据增强:细心的小伙伴可以发现我最终给的表格里最高的性能没有使用数据增强(主要是旋转增强),是因为加了之后发现模型预测不出角度了,猜测的原因是使用的旋转会引入黑边,还有就是会和自监督分支的旋转增强冲突等;
  • 更好的标签再分配策略:当前采用的是最简单的One-to-One (O2O),完全可以有更好的策略;
  • 孪生/对称网络:目前自监督的预测投只有回归分支,还是和弱监督分支不对称的,这里我们没有做过哪个更好,是可以继续探索一下的。对称的好处是后续可以用EMA来更新自监督分支的权重,我个人认为会更加合理,毕竟很多自监督的工作都是这样子的,这也是我目前在扩展的实验;
  • 更好的一致性损失:如何让模型更快更鲁棒地学习到旋转信息,这个就比较发散了,其实很多回归损失都可以拿来试一下,本文的一致性损失实际上就是计算两个不同分支对同一个目标预测框在经过R变换后的重叠率。

2. 更通用框架的设计:

根据不同的标注形式,目前其实已经有了Point2HBox[1-2]、HBox2RBox(本文)、HBox2Mask[3-5]的工作,那其实还有几个工作需要补齐,比如Point2RBox、Point2Mask(这个可能有了,我不太了解)、RBox2Mask,甚至设计一个统一的框架,将上述所有范式归纳到同一个框架中,这就非常有意义了。

  1. Object Localization under Single Coarse Point Supervision, CVPR, 2022
  2. Point-to-Box Network for Accurate Object Detection via Single Point Supervision, ECCV, 2022
  3. Boxinst: High-performance instance segmentation with box annotations, CVPR, 2021
  4. Box-supervised Instance Segmentation with Level Set Evolution, ECCV, 2022
  5. Box2Mask: Box-supervised Instance Segmentation via Level-set Evolution, arXiv:2212.01579, 2022

3. 在其他任务的迁移使用

H2RBox文章放到arXiv后没几天出现了一篇和H2RBox在框架层面非常相似的半监督语义分割方法Dense FixMatch,那其实可以思考一下是否还可以应用到其他任务中去。

Dense FixMatch: https://arxiv.org/pdf/2210.09919.pdf

公众号后台回复“CNN综述”获取67页综述深度卷积神经网络架构

极市干货

技术干货损失函数技术总结及Pytorch使用示例深度学习有哪些trick?目标检测正负样本区分策略和平衡策略总结

实操教程GPU多卡并行训练总结(以pytorch为例)CUDA WarpReduce 学习笔记卷积神经网络压缩方法总结

极市原创作者激励计划 #


极市平台深耕CV开发者领域近5年,拥有一大批优质CV开发者受众,覆盖微信、知乎、B站、微博等多个渠道。通过极市平台,您的文章的观点和看法能分享至更多CV开发者,既能体现文章的价值,又能让文章在视觉圈内得到更大程度上的推广,并且极市还将给予优质的作者可观的稿酬!

我们欢迎领域内的各位来进行投稿或者是宣传自己/团队的工作,让知识成为最为流通的干货!

对于优质内容开发者,极市可推荐至国内优秀出版社合作出书,同时为开发者引荐行业大牛,组织个人分享交流会,推荐名企就业机会等。


投稿须知:
1.作者保证投稿作品为自己的原创作品。
2.极市平台尊重原作者署名权,并支付相应稿费。文章发布后,版权仍属于原作者。
3.原作者可以将文章发在其他平台的个人账号,但需要在文章顶部标明首发于极市平台

投稿方式:
添加小编微信Fengcall(微信号:fengcall19),备注:姓名-投稿

点击阅读原文进入CV社区

收获更多技术干货

【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读10.8k
粉丝0
内容8.2k