目标检测——Cascade R-CNN算法解读

论文:
Cascade R-CNN: Delving into High Quality Object Detection (2017.12.3)
链接:https://arxiv.org/abs/1712.00726
Cascade R-CNN: High Quality Object Detection and Instance Segmentation (2019.6.24)
链接:https://arxiv.org/abs/1906.09756
作者:Zhaowei Cai, Nuno Vasconcelos
代码:https://github.com/zhaoweicai/cascade-rcnn(Caffe) 与 https://github.com/zhaoweicai/Detectron-Cascade-RCNN (Detectron)


R-CNN系列其他文章:

  • R-CNN算法解读
  • SPPNet算法解读
  • Fast R-CNN算法解读
  • Faster R-CNN算法解读
  • Mask R-CNN算法解读
  • Cascade R-CNN算法解读
  • Libra R-CNN算法解读

目录

  • 1、算法概述
  • 2、Cascade R-CNN细节

1、算法概述

目标检测算法中,训练用的正负样本是通过IoU阈值来定义的,低IoU阈值(比如0.5)通常会产生噪声检测。然而,随着IoU阈值的增加,检测性能趋于下降。作者认为主要有以下两点原因,一是由于IoU阈值增加会导致正样本减少,训练过程中容易造成过拟合;二是在推理阶段模型最优的IoU与输入预测的IoU 之间会产生不匹配。为了应对上述问题,作者提出了Cascade R-CNN,它由一系列经过IoU阈值训练的检测器组成,从而对接近的误报(困难负样本)具有更强的选择性。检测器是分阶段训练的,为了减少过拟合问题。在推理中应用了相同的级联过程,使得每个阶段的假设和检测器质量之间的匹配更加紧密。


2、Cascade R-CNN细节

作者给出了Cascade R-CNN与Faster R-CNN流程对比图,如下图所示。
在这里插入图片描述
图(a)代表Faster R-CNN,图中包含两个阶段,H0,B0,C0代表第一个阶段,用于提出候选区域,也就是Faster R-CNN中的RPN网络结构,RPN网络的输出B0代表输出的候选框,B0再应用ROI pooling经过后续检测头H1得到最终的输出C1和B1。
而图(d)就是作者所提的Cascade R-CNN结构,作者认为要求单一回归量在所有质量水平上(即不同IoU样本)表现完全一致是非常困难的。受到姿态回归和人脸对齐的启发,作者将复杂的回归任务分解为一系列更简单的步骤。
在这里插入图片描述
T代表总共包含T个级联回归器,且每个级联回归器都是在当前样本{bt}分布下是最优的。论文中,作者通过实验取T值为3。

图(d)看起来和图(b)的框架图一样,但有着如下三点不同:

  1. 图(b)只是Faster R-CNN在做推理时的优化改进,迭代BBox是一种用于改进边界框的后处理过程,而图(d)的分层回归是一种重采样过程,它改变了不同阶段要处理的假设的分布。
  2. 由于图(d)同时用于训练和推理,所以训练分布和推断分布之间没有差异。
  3. 图(d)是针对不同阶段的重采样分布,对多个专门化回归量{fT,fT−1,···,f1}进行优化。这与图(b)中用同一个回归器迭代推断方式相反,它只对初始分布是最优的。这些差异使定位比迭代推断更精确。图(b)的迭代推理方式可用公式表示如下:
    在这里插入图片描述
    它只会优化一个回归器,但推理迭代的时候根据不同IoU值重复迭代使用,这种方式是次优的,且后续需要大量的人工参与,比如累计提议、预测投票等方式。

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

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

相关文章

Z 字形变换(6)

这道题之前一直不会做,明白他是什么意思,但是找不到方法或者方法过于繁琐 方法1: 这是我在力扣评论区看到的方法,太精彩了。 虽然我实现起来效率并不高,可能是我代码的问题,但是他的思路很巧妙。 字符串的…

Spring--1

spring是一个轻量级的,采用IOC与AOP编程思想的java后端开发框架,简化了企业级的应用开发。 Spring体系 数据访问层,Web层,配置中心,测试区 IOC 控制反转,将创建对象的控制权交由Spring框架,需…

音频分割:长语音音频 分割为 短语音音频 - python 实现

在做语音任务时,有是会用到的语音音频是长音频,这就需要我们将长音频分割为短音频。 该示例将声音的音量和静默时间结合作为语音的分割条件。 使用音量和静默时间结合的分割条件,能够比较好的进行自然断句,不会话语没有说完就切断…

Spring声明式事务管理:深入探索XML配置方式

前言 Spring的事务管理,无论是基于xml还是注解实现,本质上还是实现数据库的事务管理机制,因此要注意发送SQL的连接是否为同一个,这是实现声明式事务的关键。 以下案例和实现基于SSM整合框架完成,不知道如何整合SSM&…

【K8S系列】Kubernetes Pod 状态详细介绍及异常状态解决方案

在 Kubernetes 中,Pod 是最小的可调度单元,负责运行一个或多个容器。Pod 的状态能够反映其生命周期中的不同阶段,帮助用户了解当前的运行状况。本文将详细介绍 Kubernetes Pod 的各种状态及其可能的异常状态解决方案。 一、Pod 状态概览 Po…

查缺补漏----数据结构树高总结

① 对于平衡二叉树而言,树高的规律: 高度为h的平衡二叉树的含有的最少结点数(所有非叶节点的平衡因子均为1): n01,n11,n22 含有的最多结点数: (高度为h的满二叉树含有的结点数) ②…

Flutter在 iOS 中实现无弹窗获取剪切板内容

前言 在最新的项目需求中,我们需要在获取剪切板内容时避免弹出授权提示。这一功能是基于竞品的实现,旨在优化用户体验,特别是在推广获取跳转链接的场景下非常有用。 解决方案 通过查阅资料,我们发现对于 iOS 16 及以上的系统&a…

Fusion创建一个简单的api脚本文件

我的Fusion版本:Fusion 2.0.20476 x86_64 脚本模块在实用程序->附加模型->脚本和附加模块,快捷键为shifts 里面有一些演示脚本,可以直接使用 也可以自己创建一个新的脚本 创建的脚本在此处—— 选择脚本文件,点击编辑&a…

Unity Mirror NetworkManager初识

文章目录 Network Manager网络管理器什么是网络管理器?通过Transports进行定制化网络连接管理自定义连接地址和端口号Game State Management游戏状态管理Network Manager HUD玩家预制体及其生成控制Spawn Prefabs其他预制体注册Scene Management场景管理 Network Ma…

在Windows系统中,cmd 查看 MongoDB 相关信息

MongoDB是一种流行的NoSQL数据库,广泛应用于各种现代应用程序中。 1 查看MongoDB的版本号 要查看MongoDB的版本号,可以使用mongo命令连接到MongoDB,然后执行db.version()。 mongo连接到数据库后,执行以下命令,输出M…

读数据工程之道:设计和构建健壮的数据系统16源系统实际细节(下)

1. 数据共享 1.1. 云数据共享的核心概念是,多租户系统支持租户之间共享数据的安全策略 1.2. 任何具有细粒度权限系统的公有云对象存储系统都可以成为数据共享的平台 1.3. 数据共享也简化了数据市场的概念,在几个流行的云和数据平台上都可用 1.4. 数据…

RabbitMQ系列学习笔记(三)--工作队列模式

文章目录 一、工作队列模式原理二、工作队列模式实战1、抽取工具类2、消费者代码3、生产者代码4、查看运行结果 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、工作队列模式原理 与简单模式相…

SpringBoot篇(二、制作SpringBoot程序)

目录 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 3. 阿里云 4. 手动 五、在IDEA中隐藏指定文件/文件夹 六、复制工程-快速操作 七、更改引导类别名 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 官网制作:Spring Boot 3. 阿里云 阿里云版制…

基于SSM+微信小程序的家庭记账本管理系统(家庭1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、管理员端功能有首页、个人中心、用户管理,消费详情管理、收入详情管理、系统管理等。 2、用户端功能有首页、消费详情、收入详情、论坛信息、我的等功能。 2、项目技术 …

django5入门【02】创建新的django程序

注意: ⭐前提:已经安装了python以及django所依赖的包1、通过django-admin管理工具在命令行创建Django应用程序,创建命令如下: django-admin startproject ProjectName❓ 疑问:除了使用命令行创建django程序外&#x…

OCR经典神经网络(三)LayoutLM v2算法原理及其在发票数据集上的应用(NER及RE)

OCR经典神经网络(三)LayoutLM v2算法原理及其在发票数据集上的应用(NER及RE) LayoutLM系列模型是微软发布的、文档理解多模态基础模型领域最重要和有代表性的工作: LayoutLM v2:在一个单一的多模态框架中对文本(text)、布局&…

eQEP正交解码

目录 基本介绍 整体框架 关键模块 编译问题 实验效果 基本介绍 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到位移或者速度信息。编码器从输出数据类型上分,可以分为增量式编码器和绝对式编码器。…

深入浅出MySQL:概述与体系结构解析

目录 1. 初识MySQL1.1. 数据库1.1.1. OLTP(联机事务处理)1.1.2. OLAP(联机分析处理) 2. SQL2.1. 定义2.2. DQL(数据查询语言)2.3. DML(数据操纵语言)2.4. DDL(数据定义语…

Python基于OpenCV的实时疲劳检测

2.检测方法 1)方法 与用于计算眨眼的传统图像处理方法不同,该方法通常涉及以下几种组合: 1、眼睛定位。 2、阈值找到眼睛的白色。 3、确定眼睛的“白色”区域是否消失了一段时间(表示眨眼)。 相反,眼睛长…

Python网络请求库requests的10个基本用法

大家好!今天我们要聊聊Python中非常实用的一个库——requests。这个库让发送HTTP请求变得超级简单。无论你是想抓取网页数据还是测试API接口,requests都能派上大用场。下面我们就一起来看看如何使用requests完成一些常见的任务。 引言 随着互联网技术的…