百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

AAAI 2021中的目标检测(详细版with code)

toyiye 2024-06-21 12:08 9 浏览 0 评论

作者:张泽今

本文转自知乎,已获作者张泽今授权转载,请勿二次转载。原文链接:

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


本篇文章来介绍一下 AAAI 2021 会议录取的目标检测相关论文,主要包含:一般的 2D 目标检测、旋转目标检测、视频目标检测、弱监督、域自适应等方向。


01

Learning Modulated Loss for Rotated Object Detection

学习用于旋转目标检测的调制损失


蓝色框:reference box 参考框 ;红色:ground truth ;绿色:预测框


参考框是:假设参考盒顺时针旋转一度,得到 ground truth,同样逆时针旋转,得到预测值。如上图中两个 θ 。因此,上述三个框,可以用5个参数来描述。


参考框:(0,0,10,25,-90度), 真实框(0,0,25,10,-1度), 预测框(0,0,10,25,-89度)


此时,L1 loss 远大于 0。


现在流行的旋转检测方法通常使用五个参数(中心点坐标xy,宽度,高度和旋转角度)来描述旋转的边界框,并将l1损失描述为损失函数。在本文中,我们认为上述整合可能会导致训练不稳定性和性能退化,这是由于角度固有的周期性以及相关的宽度和高度突然交换所导致的损失不连续性。


考虑到使用不同测量单位的五个参数之间的回归不一致,该问题更加明显。我们将上述问题称为旋转灵敏度误差 rotation sensitivity error (RSE),并提出了调制旋转损耗 modulated rotation loss 以消除损耗不连续性。我们的新损失 Loss 与八参数回归相结合,进一步解决了参数回归不一致的问题。


实验表明,我们的方法在公共航空影像基准DOTA和UCAS-AOD上具有最先进的性能。它的泛化能力也在 ICDAR2015,HRSC2016 和 FDDB上得到了验证。从图1 可以看到质量上的改进,并且源代码将随论文的发布一起发布。


  • 论文链接:https://arxiv.org/abs/1911.08299
  • 项目链接:https://github.com/yangxue0827/RotationDetection


02

R3Det:Refined Single-Stage Detector with Feature Refinement for Rotating Object

R3Det:具有特征优化的单阶段旋转目标检测器


github code!!!arxiv上作者提交了6版论文。惊呆了,很认真的样子,还有代码,可信!


但在实际设置中,对于大宽高比,密集分布和类别不平衡的旋转目标检测仍然存在困难。


提出了一种快速,准确且端到端的的旋转目标检测器。考虑到现有精炼单级检测器的特征未对齐的缺点,这篇论文设计了一个特征精炼模块来获取更准确的特征以提高旋转目标检测性能。


特征精炼模块的关键思想是通过特征插值将当前精炼的边界框位置信息重新编码为对应的特征点,以实现特征重构和对齐。(精炼阶段是refined stages)

本文提出了一种端到端的精细化单级旋转检测器,采用从粗到细粒度的渐进式回归方法,实现快速、准确的物体检测。


考虑到现有精细化单级检测器存在特征错位的缺点,我们设计了一个特征细化模块,通过获得更精确的特征来提高检测性能。特征细化模块的关键思想是通过像素化的特征插值,将当前精细化边界框的位置信息重新编码到对应的特征点上,实现特征重构和对齐。


为了更准确地进行旋转估计,提出了近似的 SkewIoU 损失,解决了 SkewIoU 的计算无法推导的问题。在三个流行的遥感公共数据集 DOTA、HRSC2016、UCAS-AOD以及一个场景文本数据集 ICDAR2015 上的实验表明了我们方法的有效性。Tensorflow 和 Pytorch 版本代码都有。


detail:

实际上,在文本检测和遥感目标检测领域主要面临三个挑战:

1)大长宽比:对于大长宽比的目标,SkewIOU分数对角度的变化十分敏感

2)密集排列:

3)类别不平衡,很多多类旋转目标数据集的类别极度不平衡


在这篇论文中,主要讨论如何设计一个精确且快速的旋转目标检测器。


首先,论文发现旋转锚框(Anchors)可以在目标密集场景发挥更好的效果,而水平锚框可以以更少的数量实现更高的召回率。因此,在本文精炼的单级检测器中使用两种形式的锚框进行组合,即在第一阶段使用水平锚框以提高速度和产生更多候选框。然后在精炼阶段去使用旋转锚框以适应目标密集场景。


第二,论文还指出现有的精炼单级检测器存在特征未对齐的问题,极大的限制了分类和精炼阶段回归的可靠性。本文设计了一个特征精炼模块(FRM),该模块使用特征插值来获取精炼Anchor的位置信息并重建特征图实现特征对齐。FRM还可以在第一阶段之后减少精炼边界框的数量,从而加速模型。


将这三种技术结合在一起,本文的方法可以在三个公开旋转目标检测数据集(包括DOTA,HRSC2016和ICDRA2015)上实现SOTA性能。

R3Det网络结构


此方法是一个基于RetinaNet的单级旋转目标检测器,命名为R3Det。


将精炼阶段(可以多次添加和重复)添加到网络以精炼边界框,并在精炼阶段添加特征精炼模块(FRM)以重建特征图。


在单阶段旋转目标检测任务中,对预测边界框进行连续的精炼可以提高回归精度,因此特征精炼是必要的。应该注意的是,FRM也可以在其他单级检测器如SSD中使用。

1、带旋转目标检测功能的RetinaNet

先用FPN,得到丰富的高分辨率的特征图。


目标分类子网和目框回归子网虽然结构一样,但使用单独的参数。RetinaNet提出了Focal Loss来解决类别不平衡引起的问题,大大的提高了单级目标检测器的精度。


x,y,w,h, θ中, θ表示高w对x的锐角角度, θ在负二分之派(-90度)到0之间。

2、精炼旋转目标检测器

精炼目标检测器

倾斜交并比分数(SkewIOU)对角度很敏感,轻度的偏移都会导致SkewIOU快速下降。

多个refined stage的IOU阈值从0.5 , 0.6 , 0.7 无数个0.7这样设置。

特征精炼模块

许多精炼检测器仍然使用相同的特征图来执行多个分类和回归,而没有考虑边界框位置变化引起的特征未对齐。


Figure4(b)展示了没有特征对齐的框精炼过程,导致了特征不准确,这对于大宽高比和数量少的样本是不利的。本文提出将当前精炼的边界框(橙色矩形)的位置信息重新编码为相应的特征点(红色的点),然后通过重建整个特征图来实现特征对齐。


整个过程如Figure4(c)所示,为了准确的获取精炼边界框的位置特征信息,本文使用了双线性插值的方法。


解决特征偏移的FRM模块的核心是特征重构。和其它两级旋转目标检测器(包含R2CNN,RRPN等)使用的ROIAlign相比,FRM精度速度均有优势,


  1. ROI Align具有更多的采样点(默认有7x7x4=196个),而减少采样点会极大的影响目标检测器的性能。FRM仅仅采样5个特征点,约为ROI Align的1/40,这为FRM提供了巨大的速度优势。
  2. 在进行分类和回归之前,ROI Align仅需要获得与ROI对应的特征。相比之下,FRM首先获得与特征点对应的特征(实例级别),然后重建整个特征图(图像级别)。最终,与基于ROI Align的全连接网络结构相比,基于FRM的方法可以获得更高效率和更少参数的全卷积结构。
  • 论文链接:https://arxiv.org/abs/1908.05612
  • 项目链接:https://github.com/Thinklab-SJTU/R3Det_Tensorflow


03

Dynamic Anchor Learning for Arbitrary-Oriented Object Detection

用于任意方向目标检测的动态anchor学习


Motivation

基于anchor的算法在训练时首先根据将预设的anchor和目标根据IoU大小进行空间匹配,以一定的阈值(如0.5)选出合适数目的anchor作为正样本用于回归分配的物体。但是这会导致两个问题:


  • 进一步加剧的正负样本不平衡。对于旋转目标检测而言,预设旋转anchor要额外引入角度先验,使得预设的anchor数目成倍增加。此外,旋转anchor角度稍微偏离gt会导致IoU急剧下降,所以预设的角度参数很多。(例如旋转文本检测RRD设置13个角度,RRPN每个位置54个anchor)。
  • 分类回归的不一致。当前很多工作讨论这个问题,即预测结果的分类得分和定位精度不一致,导致通过NMS阶段以及根据分类conf选检测结果的时候有可能选出定位不准的,而遗漏抑制了定位好的anchor。目前工作的解决方法大致可以分为两类:网络结构入手和label assignment优化,参见related work这里不再赘述。


统计了训练过程的所有样本IoU分布,以及分类回归分数散点图,结果如下图。我们将anchor和gt的IoU称为输入IoU,pred box和gt的IoU称为输出IoU。从中看出:


  • 74%左右的正样本anchor回归的pred box后依然是高质量样本(IoU>0.5);近一半的高质量样本回归自负样本,这说明负样本还有很大的利用空间,当前基于输入IoU的label assignment选正样本的效率并不高,有待优化。
  • 图c说明,当前的基于输入IoU的标签分配会诱导分类分数和anchor初始定位能力成正相关。而我们期望的结果是pred box的分类回归能力成正相关。从这里可以认为基于输入IoU的标签分配是导致分类回归不一致的原因之一。这个很好理解,划分样本的时候指定的初始对齐很好的为正样本,其回归后就算产生了不好的预测结果,分类置信还是很高,因为分类回归任务是解耦的;反之很多初始对齐不好的anchor被分成负样本,即使能预测好,由于分数很低,无法在inference被输出。
  • 进一步统计了预测结果的分布如d,可以看到在低IoU区间分类器表现还行,能有效区分负样本,但是高IoU区间如0.7以上,分类器对样本质量的区分能力有限。

【问:表面上右半区密密麻麻好像分类器完全gg的样子,但是我们正常检测器并没有出现分类回归的异常,高分box的定位一般也不赖,为什么?

一是由于很多的IoU 0.5以上的点都是负样本的,即使定位准根本不会被关注到;

二是预测的结果中,只要有高质量的能被输出就行了,其他都会被NMS掉,体现在图中就是右上角可以密密麻麻无所谓,只要右下角没有太多点可视化的检测结果就不会太差。】

  • 论文链接:https://arxiv.org/abs/2012.04150
  • 项目链接:https://github.com/ming71/DAL


04

YOLObile: Real-Time Object Detection on Mobile Devices via Compression-Compilation Co-Design

YOLObile:通过压缩编译CoDesign在移动设备上进行实时目标检测


比 YOLOv3 快 7 倍,同时准确率更高。在手机上实现 19FPS 实时高准确率目标检测


YOLObile 框架通过“压缩-编译”协同设计在手机端实现了高准确率实时物体检测。该框架使用了一种新提出的名为“块打孔”的权重剪枝方案,来对模型进行有效的压缩。


他们还提出了一种高效的 GPU-CPU 协同计算优化方案来进一步提高计算资源的利用率和执行速度,并在他们的编译器优化技术的协助下,最终在手机端实现高准确率的实时物体检测。


相比 YOLOv3 完整版,该框架快 7 倍,在手机上实现 19FPS 实时高准确率目标检测。并且同时准确率(mAP)高于 YOLOv3,并没有牺牲准确率提高计算速度。


  • 论文链接:https://arxiv.org/abs/2009.05697
  • 项目链接:https://github.com/nightsnack/YOLObile

相关推荐

Python 的hash 函数(python的hash函数)

今天在看python的hash函数源码的时候,发现针对不同的数据类型python实现了不同的hash函数,今天简单介绍源码中提到的hash函数。(https://github.com/pyth...

8款Python GUI开源框架,谁才是你的菜?

作为Python开发者,你迟早都会用到图形用户界面来开发应用。本文千锋武汉Python培训小编将推荐一些PythonGUI框架,希望对你有所帮助。1、Python的UI开发工具包Kivy...

python适合开发桌面软件吗?(python可不可以开发桌面应用软件)

其实Python/Java/PHP都不适合用来做桌面开发,Java还是有几个比较成熟的产品的,比如大名鼎鼎的Java集成开发环境IntelliJIDEA、Eclipse就是用Java开发的,不过PH...

CryptoChat:一款功能强大的纯Python消息加密安全传输工具

关于CryptoChatCryptoChat是一款功能强大的纯Python消息加密安全传输工具,该工具专为安全研究专家、渗透测试人员和红蓝队专家设计,该工具可以完全保证数据传输中的隐私安全。该工具建立...

为什么都说Python简单,但我觉得难?

Python普遍被大家认为是编程语言中比较简单的一种,但有一位电子信息的学生说自己已经学了C语言,但仍然觉得Python挺难的,感觉有很多疑问,像迭代器、装饰器什么的……所以他提出疑问:Python真...

蓝牙电话-关联FreeSwitch中继SIP账号通过Rest接口

蓝牙电话-关联FreeSwitch中继SIP账号通过Rest接口前言上一篇章《蓝牙电话-与FreeSwitch服务器和UA坐席的通话.docx》中,我们使用开源的B2B-UA当中经典的FreeSWIT...

技术分享|Sip与WebRTC互通-SRProxy开源库讲解

SRProxy介绍目前WebRTC协议跟SIP协议互通场景主要运用在企业呼叫中心、企业内部通信、电话会议(PSTN)、智能门禁等场景,要想让WebRTC与SIP互通,要解决两个层面的...

全网第N篇SIP协议之GB28181注册 JAVA版本

鉴于网上大部分关于SIP注册服务器编写都是C/C++/python,故开此贴,JAVA实现也贴出分享GB28181定义了了基于SIP架构的视频监控互联规范,而对于多数私有协议实现的监控系统...

「linux专栏」top命令用法详解,再也不怕看不懂top了

在linux系统中,我们经常使用到的一个命令就是top,它主要是用来显示系统运行中所有的进程和进程对应资源的使用等信息,所有的用户都可以使用top命令。top命令内容量丰富,可令使用者头疼的是无法全部...

Linux 中借助 perf 对 php 程序模拟CPU高的案例分析

导语本文是一篇Linux借助工具分析CPU高的优化案例,没有任何干货内容,很详细的展示了优化CPU高的具体步骤,非常适合初中级读者阅读!...

centos漏洞处理方法(centos podman)

centos服务器最近有诸多漏洞,修复命令及对应的漏洞整理后,分享给大家RHSA-2020:1176-低危:avahi安全更新yumupdateavahi-libsRHSA-2017:326...

Linux上的free命令详解(Buffer和Cache)

解释一下Linux上free命令的输出。下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(FreeOutput)。例如:FO[2][1]...

linux 命令行之你真的会用吗?--free 基本用法篇

free命令行统计内存使用率及swap交换分区的使用率数据。是由sourceforge负责维护的,在ubuntu上其包名为procps,这个源码包中,除了free还有ps,top,vmstat,ki...

kong api gateway 初体验(konga github)

kongapigateway初体验(firstsight?)。Kong是一个可扩展的开源API层(也称为API网关或API中间件)。Kong运行在任何RESTfulAPI的前面,并通过插件...

在Ubuntu下开启IP转发的方法(ubuntu20 ip)

IP地址分为公有ip地址和私有ip地址,PublicAddress是由INIC(internetnetworkinformationcenter)负责的,这些IP地址分配给了注册并向INIC提...

取消回复欢迎 发表评论:

请填写验证码