Light-Head R-CNN: In Defense of Two-Stage Object Detector(2017.11)

news2024/11/25 18:39:14


文章目录

  • Abstract
  • 1. Introduction
  • 2. Related works
  • 3. Our Approach
    • 3.1. Light-Head R-CNN
      • 3.1.1. R-CNN subnet
      • 3.1.2. Thin feature maps for RoI warping
    • 3.2. Light-Head R-CNN for Object Detection
  • Conclusion

原文链接

Abstract

在本文中,我们首先研究了为什么典型的两阶段方法不如单阶段快速检测器(如YOLO[26,27]和SSD[22])快。我们发现Faster R- CNN[28]和R- FCN[17]在RoI扭曲之后或之前进行了密集的计算Faster R-CNN涉及两个完全连接的层来进行RoI识别,而R-FCN则产生一个大的分数图。因此由于结构上的沉重设计,这些网络的速度很慢。即使我们大幅度降低基本模型,计算成本也不能相应大幅度降低

我们提出了一种新的两级检测器,Light-Head R- CNN,以解决目前两级方法的缺点。在我们的设计中,我们通过使用薄特征映射和便宜的R-CNN子网(池化和单个全连接层),使网络头部尽可能轻。我们基于ResNet-101的light-head R-CNN在保持时间效率的同时,在COCO上优于最先进的目标检测器。更重要的是,简单地用一个微小的网络(例如,Xception)替换主干,我们的Light- Head R-CNN在COCO上以102 FPS的速度获得30.7 mmAP,在速度和精度上都显著优于单级快速检测器,如YOLO[26,27]和SSD[22]

1. Introduction

最近基于cnn的目标检测器可分为单级检测器[26、27、22、20、4]和两级检测器[5、28、19、7]。单级探测器通常瞄准速度非常快、精度相当好的最佳点。两阶段检测器将任务分为两步:第一步(body)生成许多建议,第二步(head)专注于对建议的识别。通常,为了达到最佳精度,机头的设计很重。双级检测器具有(相对)缓慢的速度和非常高的精度的最佳点
两级检测器能否在效率和准确性上击败单级检测器?我们发现,Faster R- cnn[5]和R- FCN[17]等典型的两级目标检测器具有相似的特征:主干网络附加了一个沉重的头部。此外,ROI池化后的特征通道数量很大,这使得第一个完全连接的通道消耗大量内存,并可能影响计算速度。

与Fast/Faster R-CNN多次应用每个区域的子网不同,基于区域的全卷积网络(R-FCN)[17]试图在所有ROI之间共享计算。然而,R-FCN需要使用#classes×p×p (p是后续池大小)通道生成非常大的额外分数映射,这也会消耗内存和时间。如果我们使用小型骨干网络,Faster R-CNN或R-FCN的重头设计使两阶段方法的竞争力降低。

在本文中,我们提出了一种light-head设计,以建立一个高效而精确的两级探测器。具体来说,我们应用大核可分离卷积来产生具有小通道数的“薄”特征映射(我们的实验中使用α × p × p, α≤10)该设计大大减少了后续RoI-wise子网的计算量,使检测系统内存友好。池化层附加了一个便宜的全连接层,很好地利用了特征表示进行分类和回归。

由于我们的light-head结构,我们的检测器能够达到速度和准确性的最佳权衡,无论使用大型或小型骨干网络。如图1所示,我们的算法(点画为Light-Head R-CNN)可以明显优于SSD[22]和YOLOv2[27]等快速单级检测器,并且计算速度更快。此外,该算法对大型骨干网也具有一定的灵活性。基于ResNet-101骨干网,我们可以胜过最先进的算法,包括两级检测器,如Mask R-CNN[7]和一级检测器,如RetinaNet[20]。

2. Related works

简要回顾一下最近的一些二维目标检测工作:
准确性的角度来看: R-CNN[6]是最早将深度神经网络特征应用到检测系统中的。手工设计的方法,如选择性搜索[37],边缘盒[40],MCG[1],被用于生成R-CNN的提案。然后提出Fast R-CNN[5],将训练对象分类和边界盒回归结合起来,通过多任务训练提高性能。继Fast R-CNN之后,Faster R-CNN[28]引入了区域提案网络(Region Proposal Network, RPN),利用网络特征生成提案。得益于更丰富的建议,它略微提高了准确性。Faster R-CNN被视为R-CNN系列探测器的里程碑。以下大部分工作都是通过在网络中引入更多的计算来加强Faster R- CNN。Dai等人提出了可变形卷积网络[3],通过在没有监督的情况下学习额外的偏移量来建模几何变换。Lin等人提出了特征金字塔网络(FPN)[19],它利用深度卷积网络固有的多尺度、金字塔层次结构来构建特征金字塔。在FPN的基础上,Mask R- CNN[7]通过在边界框识别的同时增加一个额外的分支,进一步扩展了Mask预测器RetinaNet[20]是另一种基于FPN的单级检测器,它采用Focal-Loss来解决极端前景背景比导致的类不平衡问题。

从速度的角度来看:目标检测的文献也一直在努力提高检测器的速度。回到最初的R-CNN,它通过整个网络单独转发每个提案。He等人提出SPPnet[8]在候选框之间共享计算Fast/Faster R-CNN[5,28]都通过统一检测管道来加速网络R-FCN[17]在RoI子网之间共享计算,当使用大量提案时,这加快了推断速度。另一个研究热点是无提议检测器。YOLO和YOLO v2[26,27]将目标检测简化为一个回归问题,直接预测边界框和相关的类概率,而不需要生成提议。SSD[22]通过从不同层产生不同尺度的预测进一步提高了性能。与基于盒中心的检测器不同,DeNet[36]首先预测所有盒角,然后快速搜索非平凡边界盒的角分布

总之,从精度角度来看,一级和二级探测器都以接近速度的精度达到了最先进的水平。然而,从速度的角度来看,文献中缺乏与单阶段方法相比具有竞争力的快速两阶段检测器。在本文中,我们尝试设计一种更好和更快的两级检测器,称为light-head R-CNN来填补这一空白。

3. Our Approach

3.1. Light-Head R-CNN

传统的两级目标检测器通常涉及沉重的头部,这对计算速度有负面影响。在我们的论文中,“头”指的是附着在我们的骨干基础网络上的结构。更具体地说,将有两个组成部分:R-CNN子网和ROI扭曲

3.1.1. R-CNN subnet

Faster R-CNN采用了功能强大的R-CNN,它利用两个大的完全连接层或整个Resnet stage[28,29]作为第二级分类器,这有利于检测性能。因此,Faster R-CNN及其扩展在COCO等最具挑战性的基准中执行领先的准确性。但是,当目标建议数量较大时,计算量较大。
为了加速RoI-wisesubnet, R-FCN首先为每个区域生成一组得分图,其通道号将为#classes × p × p (p是接下来的池大小),然后沿着每个RoI池并平均投票最终预测。使用免计算的R-CNN子网,R-FCN通过在RoI共享计分图生成上涉及更多的计算来获得可比的结果。

如前所述,Faster R-CNN和R-FCN头部较重,但位置不同。从精度角度来看,Faster R-CNN虽然在RoI分类方面比较好,但为了减少第一层全连接层的计算量,通常需要全局平均池化,不利于空间定位。对于R-FCN,它在位置敏感池化之后直接将预测结果池化,性能通常不如没有RoI-wise计算层的Faster R-CNN强。从速度的角度来看,更快的R-CNN通过一个昂贵的R-CNN子网独立地传递每个RoI,这降低了网络速度,特别是当提案数量很大时。R-FCN采用免费的R-CNN子网作为二级检测器。但由于R-FCN需要生成一个非常大的RoI池得分图,整个网络仍然消耗时间/内存。

考虑到这些问题,在我们的新Light-Head R-CNN中,我们建议为我们的R-CNN子网使用一个简单,廉价的全连接层,这在性能和计算速度之间做出了很好的权衡。图2 ©提供了我们的Light-Head R- CNN的概述。由于全连接层的计算和内存成本也取决于ROI操作后的通道映射数,我们接下来讨论如何设计ROI翘曲。

3.1.2. Thin feature maps for RoI warping

在将提案馈送到R-CNN子网之前,涉及到RoI warping,使特征映射的形状固定
在我们的Light-Head R-CNN中,我们建议生成具有小通道数的特征映射(薄特征映射),然后进行常规的RoI扭曲。在我们的实验中,我们发现在薄特征映射上的RoI扭曲不仅可以提高精度,而且可以节省训练和推理过程中的内存和计算量。在薄特征映射上考虑PSRoI池化,可以带来更多的计算量来增强R-CNN,减少信道。此外,如果我们在我们的瘦特征映射上应用RoI池,我们可以减少R-CNN开销并放弃全局平均池来同时提高性能。此外,在不损失时间效率的情况下,大卷积可以用于薄特征映射的生成。

3.2. Light-Head R-CNN for Object Detection

在上述讨论之后,我们给出了一般目标检测的实现细节。我们的方法的流水线如图2 ©所示。我们有两个设置:1)设置“L”来验证我们的算法在与大型骨干网络集成时的性能;2)设置“S”,验证算法在小型骨干网下的有效性和效率。除非另有说明,否则设置L和设置S共享相同的其他设置。
基本特征提取器:对于设置L,我们采用ResNet 101[9]作为基本特征提取器。另一方面,我们利用类似于exception的小基模型进行设置s。Xception模型的网络结构如表7所示。在图2中,“转换层”表示我们的基本模型。conv4和conv5的最后一个卷积块记为c4, c5。
Thin feature maps. 我们在c5上应用了大的可分离卷积层[35,25],结构如图3 C所示。在我们的方法中,我们让k为15,设置S为C mid = 64,设置l为C mid = 256。我们还将C out减少到10×p×p,这与R-FCN中使用的有限#类×p×p相比是非常小的。得益于大内核带来的更大的有效接受域,我们所汇集的特征映射更加强大。
R-CNN subnet. 这里我们只在R-CNN子网中使用一个具有2048个通道(无辍学)的全连接层,然后是两个兄弟的全连接层来预测RoI分类和回归。每个边界框位置只应用了4个通道,因为我们在不同的类之间共享回归。得益于强大的RoI扭曲特征图,一个简单的Light- Head R-CNN也可以在保持效率的情况下取得显著的效果。

RPN(区域建议网络) 是一种滑动窗口类无关的目标检测器,它使用了c4的特征。RPN预先定义了一组锚,这些锚由几个特定的尺度和纵横比控制。在我们的模型中,我们设置了三种纵横比{1:2,1:1,2:1}和五种比例尺{32 2,64 2,128 2,256 2,512 2}来覆盖不同形状的物体。由于存在大量相互严重重叠的提案,因此采用非最大抑制(NMS)来减少提案的数量。然后将其输入RoI预测子网。我们将NMS的IoU阈值设置为0.7。然后,我们根据锚点的IoU比和真值边界框对锚点训练标签进行签名。如果锚的IoU超过0.7,任何接地真值框,它将被设置一个积极的标签。对于ground-truth box具有最高IoU的锚也将被分配一个正面标签。同时,如果所有接地真值框的IoU小于0.3,则其标签为负。更多细节可参考[28]。

Conclusion

在本文中,我们提出了Light Head R-CNN,它涉及到一个更好的两级目标检测器的设计原则。与传统的两级检测器(如Faster R-CNN和R-FCN)通常具有重头相比,我们的light-head设计使我们能够在不影响计算速度的情况下显著提高检测结果。更重要的是,与YOLO和SSD等快速单级检测器相比,我们在计算速度更快的情况下获得了更优越的性能。例如,我们的Light Head R-CNN加上小型的Xception-like基础模型可以在102 FPS的速度下实现30.7 mmAP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1288624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何能够获得想要的科研数据资料呢?

在当今的学术界,科研数据的获取对于研究人员来说至关重要。然而,由于各种原因,如数据难以获取、数据不完整或不准确等,使得许多研究人员面临困难。那么,如何才能够获得的科研数据资料呢? 一、参考文献 根…

实验报告-实验四(时序系统实验)

软件模拟电路图 说明 SW:开关,共六个Q1~Q3:输出Y0~Y3:输出 74LS194 首先,要给S1和S0高电位,将A~D的数据存入寄存器中(如果开始没有存入数据,那么就是0000在里面移位,不…

Azure Machine Learning - 在 Azure 门户中创建演示应用

目录 准备环境启动向导配置搜索结果添加自动提示功能添加建议创建、下载和执行清理资源 使用 Azure 门户的“创建演示应用”向导来生成可下载的“localhost”样式的 Web 应用,该应用在浏览器中运行。 根据其配置,生成的应用在首次使用时就能正常运行&…

Spring Cloud Alibaba实践:使用Nacos实现服务注册与发现

什么是Nacos Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如…

初学者如何入门深度学习:以手写数字字符识别为例看AI 的学习路径,一图胜千言!超多高清大图收集整理

文章大纲 深度神经网络机器学习,深度学习,数据发掘之间的关系神经元与激活函数理解深度神经网络最好的可视化工具深度学习基础概念能解决神马种类的问题?卷积池化以手写字符识别为例讲述深度学习的分类问题MNIST 数据集简介初学者入门 :生成式 AI -- generative-ai-for-beg…

GPT-Crawler一键爬虫构建GPTs知识库

GPT-Crawler一键爬虫构建GPTs知识库 写在最前面安装node.js安装GPT-Crawler启动爬虫结合 OpenAI自定义 assistant自定义 GPTs(笔者用的这个) 总结 写在最前面 GPT-Crawler一键爬虫构建GPTs知识库 能够爬取网站数据,构建GPTs的知识库&#xf…

AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 2 “架构 AWS”

接续上一章节,我们把开发环境架设好之后,此章节叙述如何建立 AWS IoT 环境,请务必已经有 AWS Account,申请 AWS Account 之流程将不在此说明。 III-1. 登入AWS IoT, 在“管理”>“所有装置”>“实物”下点击“建…

element-plus组件中的el-drawer的使用

在项目的制作过程中经常会用到弹窗组件,这里假设一种情况当你在一个页面需要多个弹窗组件的时候怎么样才能精准的打开和关闭对应的弹窗呐?? ① 绑定一个点击事件----【给点击事件传入一个下标】这里是打开事件 ② 使用element-plus中的 :befo…

最新关于openai.APIConnectionError: Connection error.的解决方法

其实是和以前一样的处理方式,(挂魔法)修改代理,但是openai的源码改了,好多博客的方法不能用了。现在给一个新的修改方式,自己用的,发现可以。 1.找到pip下载的openai的Lib,找到_base…

2023年度端侧transformer类分类力作SwiftFormer模型解读

写在前面:本篇直接结合代码来理解网络的笔记 paper: Swiftformer-paper code: https://github.com/Amshaker/SwiftFormer 文章目录 网络结构精析零、整体一、patch embed二、stage 网络结构精析 零、整体 可以看到结构中,整体就是: stem -&…

融云 Global IM UIKit,灵活易用的即时通讯组件设计思路和最佳实践

(全网都在找的《社交泛娱乐出海作战地图》,点击获取👆) 融云近期推出的 Global IM UIKit,支持开发者高效满足海外用户交互体验需求,且保留了相当的产品张力赋予开发者更多自由和灵活性,是实现全…

算能技术资料地址、Demo github地址

技术资料地址: https://developer.sophgo.com/site/index/material/38/all.html Demo github地址:https://github.com/sophgo/sophon-demo

--enable-preview JDK预览新功能运行打包

--enable-preview JDK预览功能运行打包 1. 这里以JDK19的预览功能虚拟线程为例2. 解决方案:在pom文件中加入build 1. 这里以JDK19的预览功能虚拟线程为例 以下这段代码是无法运行的。会报错 SpringBootApplication public class SpringBootOkhttpApplication {pub…

【PID学习笔记 6 】控制系统的性能指标之二

写在前面 上文介绍了控制系统的稳态与动态、过渡过程、阶跃响应以及阶跃信号作用下过渡过程的四种形式。本文紧接上文,首先总结过渡过程的分类,然后介绍控制系统的性能评价,最后重点介绍控制系统性能指标中的单项指标。 一、过渡过程的分类…

【C】递归函数

一、什么是递归 递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。 我们先了解一个知识: 每一次函数调用,都会向内存栈区上申请一块空间。 这块空间主要用来存放函数中的局部变量,和函数调用过程中…

圈子社交系统:打破时间与空间的限制。APP小程序H5三端源码交付,支持二开!

在现代社会,社交已成为人们生活中不可或缺的一部分。然而,传统的社交方式往往受制于时间和空间的限制,使得人们难以充分发挥社交的潜力。为了解决这一问题,圈子社交系统应运而生。 圈子社交系统通过技术手段打破时间与空间的限制&…

一文读懂MySQL基础知识文集

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

面试题:公司规定所有接口都用 post 请求,这是为什么?

文章目录 前言get 与 post 的区别所有接口都用 post 请求?网友程墨 Morgan网友苏莉安网友大宽宽 前言 最近在逛知乎的时候发现一个有趣的问题:公司规定所有接口都用 post 请求,这是为什么? 看到这个问题的时候其实我也挺有感触的…

Insomnia -- 非常nice的开源 API 调试工具

1. 这款开源 API 调试工具很棒!!! Kong Insomnia是一个协作的开源API开发平台,可以轻松构建高质量的API,而不会像其他工具那样臃肿和混乱。 350开源插件 平衡能力和复杂性。当你需要的时候扩展工作流(当你不需要的时…

深度解析:PDM、PDM产品数据管理

PDM的定义 PDM,Product Data Management,产品数据管理,顾名思义,PDM将所有与产品相关的信息和所有与产品有关的过程集成到一起。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺管理|零部件管理系统_彩虹PDM软件 产品相关的信息主…