百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

IoU优化:在Anchor-Free中提升目标检测精度

bigegpt 2024-08-19 12:05 80 浏览

CVPR2021:IoU优化用于提升Anchor-Free目标检测精度

简要

目前的anchor-free目标检测器非常简单和有效,但缺乏精确的标签分配方法,这限制了它们与经典的基于Anchor的模型竞争的潜力,这些模型由基于IoU度量的精心设计的分配方法支持。

本文提出了伪IoU:一个简单的度量,带来更标准化和准确的分配规则到anchor-free目标检测框架没有任何额外的计算成本或额外的训练和测试参数,通过利用训练样本质量良好的有效分配规则使它可以进一步提高anchor-free目标检测,之前已经应用于基于anchor的方法。通过将伪IoU度量合并到端到端单阶段anchor-free目标检测框架中,研究者观察到它们在pascal一般目标检测基准上的性能和MSCOCO的一致。新提出的方法(单模型和单尺度)与其他最近最先进的anchor-free的方法比较,也取得了类似的性能。

背景

Anchor在计算机视觉中表示锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框。目标检测是"在哪里有什么"的任务,在这个任务中,目标的类别不确定、数量不确定、位置不确定、尺度不确定,传统非深度学习方法如VJ和DPM,和早期深度学习方法如OverFeat,都要金字塔多尺度+遍历滑窗的方式,逐尺度逐位置判断"这个尺度的这个位置处有没有认识的目标",非常笨重耗时。

近期顶尖(SOTA)的目标检测方法几乎都用了anchor技术。首先预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远",不再需要多尺度遍历滑窗,真正实现了又好又快,如在Faster R-CNN和SSD两大主流目标检测框架及扩展算法中anchor都是重要部分。

当然也有不用anchor的检测算法:2016 ECCV的YOLO是全局回归,但很快在YOLOv2就替换为anchor方法;2018 ECCV的CornerNet是角点预测,但论文用了非常庞大的hourglass-104速度比较慢,关键点与anchor技术没有明确的公平对比,孰优孰劣尚不清楚。

IoU

Intersection over Union是一种测量在特定数据集中检测相应物体准确度的一个标准。我们可以在很多物体检测挑战中,例如PASCAL VOC challenge中看多很多使用该标准的做法。通常我们在 HOG + Linear SVM object detectors 和 Convolutional Neural Network detectors (R-CNN, Faster R-CNN, YOLO, etc.)中使用该方法检测其性能。注意,这个测量方法和你在任务中使用的物体检测算法没有关系。

IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。为了可以使IoU用于测量任意大小形状的物体检测,我们需要:

  • ground-truth bounding boxes(人为在训练集图像中标出要检测物体的大概范围)
  • 我们的算法得出的结果范围

也就是说,这个标准用于测量真实和预测之间的相关度,相关度越高,该值越高。

最近,目标检测方法的另一个流行分支是anchor-free模型,它们在整个训练过程中不假设预定义的anchor,这减少了许多需要启发式调优的锚的超参数。anchor-free模型直接预测从GT真实框的左、右、顶部和底部的边界框,如FCOS和FSAF。然而,由于缺乏准确的分配,他们都使用其他方法来弥补性能差距。对于FCOS,它将收缩GT内的所有点视为正样本,并增加了一个中心分支来重新权衡检测中减少一些假阳性的输出。对于FSAF,它采用了在线特征选择和无锚点和基于锚的方法的组合。

对于GT真实框内的每个特征映射点,在映射到原始输入图像后,我们假设一个相应的伪框为中心,与GT真实框的相同大小。然后我们可以很容易地计算中心伪框和GT真实框之间的单位。由于IoU是基于一个分配给每个点的伪框,我们命名伪IoU度量。在伪IoU计算之后,每个点可以被分配一个伪IoU值v,就像每个锚的IoU一样,用基于锚的方法进行分配。从上图中显示,边界框边附近的一些点被指定为负样本。如果以这些低伪单位为阳性样本,会导致更多的假阳性和不准确的边界框。

新框架分析

RetinaNet后,我们采用ResNet-101作为骨干来提取特征,并使用FPN通过自上而下的路径和横向连接增强特征图,使丰富的多尺度特征金字塔与单一分辨率输入图像,被证明是一个强大的检测组件,如上图(a)所示。

检测头是一个FCN,它附加到来自FPN的每个输出特征映射上,它包含两个子集:一个分类器和一个回归器。对于上图(b)中所示的分类器子网络,它遵循四个具有256个滤波器的堆叠3×3卷积层,最后附加一个具有C个滤波器的3×3卷积层。C是用来在每个点上进行最终分类的类数。对于回归器子网络,在上图(c)中,它还遵循四个堆叠的3×3卷积层和256个卷积层,最后附加了每个空间位置具有4个滤波器的3×3卷积层。

损失函数

实验及可视化

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...