ICLR 2023 | 高分论文!上海交大提出H2RBox:旋转目标检测新网络

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>车道线检测微信技术交流群

作者:yangxue  | (源:知乎)编辑:CVer

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

一、前言

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

6bfe61a68fcbe012208dfd71b20b2abe.jpeg

H2RBox: Horizontal Box Annotation is All You Need for Oriented Object Detectionhttps://arxiv.org/abs/2210.06742

PyTorch代码:

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

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

Jittor代码:

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

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


二、动机

相比通用目标检测(水平框检测),旋转检测的研究兴起较晚。以我熟悉的遥感图像旋转检测为例(场景文字相关的旋转检测出现地更早),我是在17年末(国科大研二才进实验室)开始做旋转舰船检测的,当时几乎还找不到相关的研究,大部分还是水平框检测算法(如Faster RCNN、SSD等)在遥感图像的应用。旋转框标注的数据集也很少,当时做旋转舰船检测还是举实验室之力标注了一个。从水平框检测发展到旋转检测的这段时间里,很多数据集以水平框标注的形式发布,如果现在想进一步用于旋转检测,似乎只有重新标注。如果数据集量小还好说,一旦实例数达到十万甚至百万级别,所需要花的人力物力是非常大的。比如,DIOR(19.2w个实例)数据集刚发布的时候是以水平框标注,后来又重新标注了旋转框;SKU110K(173.3w个实例)数据集也是在后来有了一个旋转标注版本。于是乎,我们想到了这样一个的研究任务:水平框标注的旋转框目标检测。这算是一个弱监督检测任务(也不是很“弱”),就我目前所知好像还没有人做这个事情,算是一个小坑,感兴趣的同学赶紧入坑。如果效果比肩旋转框标注的话,就可以不用重新标注旋转框;即使效果一般般,起码也可以辅助标注旋转框。后来我们查了一下各种标注形式的价格,旋转框每一千个是86刀,比水平框高的63刀高36.5%的价格。

三、相关的研究任务

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

491097f10c1a9a04c1b78e55d92c1864.jpeg

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

d196a7fcf4a87195049db4d465a94dc6.jpeg

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

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

四、方法介绍

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

fd396f5c276f74a7862a85c5f567e663.jpeg

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

弱监督分支

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

0a71eaa47cfb3c3f3692cdddcc902d74.jpeg

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

就从结果来看,这些因素可能会影响AP75这种高精度指标,对于AP50这种指标影响不是很大。水平外接矩约束的建立只能将弱监督分支预测的旋转框的可能形态减少,但依然有无数种可行解。为了让该分支预测的旋转框就是正确的那个框,需要增加其他约束来筛选,这也是自监督分支的作用。

自监督分支

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

  • 中心区域裁剪法(Center Region Cropping)舍弃包含黑边的区域

  • 反射填充法(Reflection Padding)来填充黑边区域

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

574ea2a6f90ccd8fe1bfe83e959a893b.png

bd73c8b957525e18c6ff164f5312e788.jpeg

  • 水平外接矩形约束:从上图(b)可以看出尽管水平外接矩形约束已经减少了许多种错误的预测形式,但是依然还是存在无数种可能得情况,只是这些情况的水平外接矩形满足高度重合的条件;

  • 尺度约束:图(c)展示了这个约束可以将上述说的无数种可能得情况进一步减少到两种,也就是正确的结果和中心对称的结果。可能大家会迷惑Lwh只是让两个分支对同一目标预测的结果尺度保持一致,但是并不能保证这个尺度就是正确的。这里要稍微补充解释一下,由于自监督分支的输入图像的旋转角度是随机的,那么随着多轮的训练模型就会学习到这样的一个知识,同个目标不管旋转多少度,模型都能输出一个同尺度的旋转框,且这些旋转框的水平外接矩形和对应的水平gt保持高度重合,那么这里的尺度只能是目标的实际尺度才能满足。注意,这里的关键条件是同个目标不管旋转多少度。

  • 角度约束:现在模型距离正确预测结果只差消除中心对称的情况,两个分支的预测结果可能出现的下面四种情况(如下式所示),因此只要告诉模型两个分支预测结果的角度关系和输入图像的角度关系一致(R)就可以了。

3bd80873b84c910de59bced0d93c5fa5.png

建议参考https://zhuanlan.zhihu.com/p/586806807中的图9来辅助理解

f76ae200e16bb5de12dadd3f5407d3c6.png

损失函数

弱监督分支损失:

17874fbdc56afdb1e4f14aadb296ce3e.jpeg

自监督分支损失:

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

消融实验

f0522ddd0cfb4e5c645cb862891addc1.jpeg

结论:

  • 反射填充 (Reflection Padding)比补零填充 (Zeros Padding)效果要好;

    bb1bafd14a0e82a49099bca500c04460.jpeg
  • 一对一的再分配策略 (O2O)优于一对多再分配策略 (O2M);

    eed7c4791a777dca5890b21fb679cbc6.jpeg
  • 类正方形需要做特殊处理:策略1 (S1) 为训练时类正方形类别(储油罐ST和环岛RA)不参与  Lθ 的训练;策略2 (S2) 为测试时直接取类正方形类别预测结果的水平外接矩形作为最后的输出;这两种可以分开使用也可以单独使用,效果均差不多,但是两种共同使用会使训练更加鲁棒易收敛;

  • 一致性损失  Lss 的使用可以消除多余的预测情况,只保留正确的预测情况,显著地提升模型的检测精度。

对比实验

3195fbef762b1d31508c072b347ef226.jpeg

增加了ATSS为Baseline的H2RBox的实验,代码也已经开源到https://github.com/yangxue0827/h2rbox-mmrotate中

a9a72af73340c50c65c8d75a88b0fe29.jpeg

原arXiv版本实验设置存在错误,导致H2Rbox效果比baseline的FCOS要好,最终版本进行了重新实验并修改了相应的描述。

结论:

  • H2RBox不管在精度上还是在速度和存储开销上都远远好于HBox-Mask-RBox范式的工作,如BoxInst-RBox和BoxLevelSet-RBox;

  • 对比于RBox监督的方法,H2RBox在各方面比已经做到了比较接近的水平。

五、总结

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

  1. 基于H2RBox的改进:

  • 提高高精度指标:H2RBox其实在高精度指标上效果并不好,主要前面有提到,一个是训练的模型预测的水平框不一定准,另外就是有些类别水平标注框不一定就是旋转标注框的水平外接矩形;

  • 适用于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,那其实可以思考一下是否还可以应用到其他任务中去。

072c67d64beb1a9237025e46576f47b8.jpeg

点击进入—>CV微信技术交流群

CVPR/ECCV 2022论文和代码下载

 
 

后台回复:CVPR2022,即可下载CVPR 2022论文和代码开源的论文合集

后台回复:ECCV2022,即可下载ECCV 2022论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF

目标检测交流群成立
扫描下方二维码,或者添加微信:CVer222,即可添加CVer小助手微信,便可申请加入CVer-目标检测 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信号: CVer222,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!

▲扫码进群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看
好的,以下是MIA、MICCAI、NIPS、CVPR、ICLR在2018到2023年的语义分割方面的一些高亮工作: 1. MIA:2018年的MIA会议上,一篇名为“Fully Convolutional Networks for Semantic Segmentation”的论文提出了一种基于全卷积神经网络的语义分割方法,该方法能够在保留图像细节的同时实现高精度的分割结果。 2. MICCAI:2019年的MICCAI会议上,一篇名为“Attention U-Net: Learning Where to Look for the Pancreas”的论文提出了一种名为Attention U-Net的方法,用于进行胰腺分割。该方法结合了注意力机制和U-Net结构,能够更好地捕捉图像中感兴趣的区域。 3. NIPS:2019年的NIPS会议上,一篇名为“Semantic Segmentation with Object-Centric Variational Auto-Encoder”的论文提出了一种基于变分自编码器的语义分割方法,该方法能够生成具有高质量语义标签的图像。 4. CVPR:2020年的CVPR会议上,一篇名为“DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs”的论文提出了一种名为DeepLab的方法,用于进行语义分割。该方法结合了深度卷积网络、空洞卷积和全连接条件随机场,能够在不同分辨率下实现高质量的分割结果。 5. ICLR:2021年的ICLR会议上,一篇名为“Semantic Image Synthesis via Adversarial Learning”的论文提出了一种基于对抗学习的语义图像合成方法。该方法能够从语义标签生成具有高质量的图像,并在图像合成中保留了原始语义信息。 6. MICCAI:2023年的MICCAI会议上,一篇名为“Learning to Segment Medical Images with Limited Annotated Data”的论文提出了一种基于有限标注数据的医学图像分割方法。该方法结合了元学习和数据增强技术,能够在只有少量标注数据的情况下实现高质量的分割结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值