【目标检测】Fast R-CNN详解

2023-11-16

前言

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络的骨架,在训练速度比R-CNN快了近9倍,测试速度快了213倍,在Pascal VOC数据集上accuracy从62%提升至66%,它解决了重复卷积计算和固定输入尺度的问题。

Fast R-CNN框架

Fast R-CNN 的总体架构如下图所示。
在这里插入图片描述
顾名思义,Fast R-CNN 相对于R-CNN 的一个重要的优势就是速度快,以下是它的主要步骤:
1. 利用SS算法(选择性搜索)生成1k-2k的候选区域。
2. 使用深度网络(VGG16)对输入的图像进行提取特征,把候选区域投影到特征图上生成相应的特征矩阵。
3. 然后将每个特征图经过兴趣区域池化(RoI Pooling)层缩放到7×7的特征图。
4. 接着经过一系列全连接层,最后并联一个softmax层预测类别和bbox regressor(边界框回归)预测边界框。

特征提取

需要注意的是这里把整张图像送入网络提取特征,然后把候选区域经过映射到特征图上提取特征,而不是单独对每一个候选区域进行计算(卷积运算)
即实现了共享卷积的过程,这也是因为它比R-CNN快的原因。

RoI Pooling层

ROI Pooling 层的工作原理是将每个候选区域的特征图均匀分割成一个网格单元。对网格中的每个单元格应用 max pooling操作以返回单个值。所有单元格的所有值表示特征向量,需要注意的是这里将卷积神经网络的输出和提议区域作为输入。其优点是不限制输入图像的尺寸,也能转化为大小统一的特征矩阵。

分类器

在这里得到候选框的类别以及得分,我们知道经过softmax运算会的得到一个概率分布,由于Pascal VOC数据集上有20个类别,因此输出的神经元共有21个,其中一个是背景的概率。
在这里插入图片描述
例如从上图我们可知预测的类别为第4个类别。

边界框回归器

常用的边界框表示有(中间,宽度,高度)和(左上,右下),原论文用的是第一种,因此候选框回归参数为 ( d x , d y , d w , d h ) (d_x,d_y,d_w,d_h) (dx,dy,dw,dh), 假如有 N + 1 N+1 N+1个类别,则输出 4 ( N + 1 ) 4(N+1) 4(N+1)个神经元,在Pascal VOC数据集上候选框回归参数如下:
在这里插入图片描述

Multi-task loss

在常见的神经网络中,其流程大多是定义损失函数,从而反向传播来训练模型,在Fast R-CNN中,其定义的损失函数是多任务损失函数。
在这里插入图片描述
1.分类损失
p p p:候选边界框经分类器预测的概率分布(softmax) p = ( p 0 , p 1 , . . . , p N ) p=(p_{0},p_{1},...,p_{N}) p=(p0,p1,...,pN)
u u u:真是边界框中的真是类别标签
其中 L c l s = − log ⁡ p u L_{cls}=-\log p_{u} Lcls=logpu

2.边界框回归损失
在这里插入图片描述
在这里插入图片描述
其中,
t u t^{u} tu:对应边界框回归器的对应类别为 u u u的回归参数 ( t x u , t y u , t h u , t w u ) (t_x^u,t_y^u,t_h^u,t_w^u) (txu,tyu,thu,twu)
v v v:对应真是目标边界框的回归参数 ( v x , v y , v h , v w ) (v_x,v_y,v_h,v_w) (vx,vy,vh,vw)
需要注意的是smooth L1损失完美地劈开了L1和L2作为损失函数的缺陷。

参考资料

目标检测中的回归损失函数系列一:Smooth L1 Loss
Fast R-CNN

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【目标检测】Fast R-CNN详解 的相关文章

  • live reload enabled是什么意思_老外说“Pigheaded”什么意思?猪头三?才不是

    最近 猪肉价格 一路飞涨 老妈买完菜 每天都在唠唠叨叨 今天排骨又涨了xx块钱 五花肉又涨了xx 邻居家长里短 聊得都是 猪肉 简直像小猪佩奇花一亿买了 小区热搜榜 似的 所以 小编就想着倒腾一篇 猪猪 相关的英语知识 分享给大家 咳咳 蹭
  • 初级5 题目一 认识哈希函数和哈希表

    1 哈希函数的定义及性质 1 哈希函数是函数 所以接收一个变量 返回一个值 接收的变量 其定义域理论上是无穷大 返回的值是哈希值 也就是每个变量都能生成对应的哈希值 2 哈希函数的值域是有穷的 哈希值有穷个 并非无穷大 哈希函数相当于把无穷
  • 作用域&内存空间

    作用域 C 语言编译器可以确认 4 种不同类型的作用域 代码块作用域 文件作用域 原型作用域和函数作用域 文件作用域 全局变量 函数名 链接属性 简单的来说 编译器将你的源文件变成可执行程序需要经过两个步骤 编译和链接 编译过程主要是将你写

随机推荐

  • nginx基本介绍(安装、常用命令、反向代理)

    文章目录 引言 一 nginx是什么 二 nginx的下载和安装 1 下载 2 windows下安装 3 运行 4 外部服务器无法访问问题 三 nginx的常用命令 四 nginx config 五 FileZilla 1 什么是FileZ
  • 数字证书 X509详解 && python解析SSL证书

    数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据 提供了一种在Internet上验证您身份的方式 其作用类似于司机的驾驶执照或日常生活中的身份证 它是由一个由权威机构 CA机构 又称为证书授权 Certificate Au
  • C++模板实参类型推导

    1 什么是模板 C 特性之一 批量生成代码的手段 2 模板有什么应用 1 泛型编程 例如 std vector 2 模板元编程 利用模板的特化等特性 在编译期计算出结果 例如 3 模板实参类型推导 虽然模板这么牛逼 但是今天我们不讲上述两个
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 解决pip更新问题.WARNING: You are using pip version 19.2.3, however version 20.2.1 is available.

    一开始遇到这个问题在网上找了很多发现解决不了问题的根本 一开始我以为是网络的问题 后来一直是这样 然后有大佬告诉我你可能python版本太高了 他说卸载了换3 7的 3 8的很多功能都用不了 不过这样是很麻烦的 因为之前也安装了一些库 如果
  • 云服务器上Wamp搭建网站

    说明 想要在云服务器搭建网站 且需要被外网访问浏览的苦逼程序员可以参考本文 前提是你已经购买好了服务器以及公网IP 近一个月买了3次服务器 使用wamp搭建了3次网站了 本以为最后一次会轻车熟路 但是东搞西搞还是花了1个多小时 看来还是要把
  • (附源码)python+mysql+基于协同过滤算法的书籍推荐 毕业设计101555

    摘 要 21世纪的今天 随着社会的不断发展与进步 人们对于信息科学化的认识 已由低层次向高层次发展 由原来的感性认识向理性认识提高 管理工作的重要性已逐渐被人们所认识 科学化的管理 使信息存储达到准确 快速 完善 并能提高工作管理效率 促进
  • “晓白”学python-科普篇(3)-那些和python相关的岗位之python-web开发工程师

    老袁啊 python有这么广泛的应用 那我学好python能不能找到一份和python相关的工作呢 晓白问道 老袁听了回答道 你这个问题太笼统了 实际上你想问的是两个问题 一个就是那个工作岗位和python是相关的 第二个就是这些工作岗位对
  • nginx 正向代理 配置 http 和 https

    nginx 正向代理 配置 http 和 https 应用场景 同学A 所在公司对外网有所限制 借助云服务器nginx正向代理 实现正常浏览公网资料 服务端 云服务器 安装nginx cd usr local wget http nginx
  • Vue3内置组件teleport详解

    teleport的作用 该组件可以将指定内容渲染到特定容器中 而不受 DOM 层级的限制应用场景 当蒙层内容在一个组件中时 蒙层内容是无法遮挡住全部内容的 因此 需要使用teleport将蒙层内容渲染到更全局的组件中 如果不使用telepo
  • python入门(二)——数据类型

    目录 一 数字类型 二 字符串 例题1 凯撒密码 例题2 星号三角形 三 time模块 人家说合格的程序员要养成经常写博客的习惯 嗯 我正在培养中 日积月累 希望自己能坚持下去 一 数字类型 1 整数 与往常的C C 等语言的不同是 pyt
  • python为什么没有指针_Python的指针:有什么意义?

    Python部落 python freelycode com 组织翻译 禁止转载 欢迎转发 目录为什么Python没有指针 Python中的对象 不可变对象和可变对象 了解变量C的变量 Python的名称 关于Python的预实现对象的注释
  • slect( )、poll( )、epoll( )函数详解

    1 slect 函数 1 1 函数原型 include
  • QT 手动建立 带参数的信号槽

    在QT中 如果直接使用UI 在控件上点击槽函数自动建立信号槽及槽函数是非常方便的 但是 有时候 我们会采用全代码 动态建立窗口和控件 这个时候就需要手动方式来建立控件的槽函数 方法如下 1 首先在window h头文件中添加 public
  • Java中多态的实现机制

    多态性是面向对象程序设计代码重用的一个重要机制 我们曾不只一次的提到Java多态性 在Java运行时多态性 继承和接口的实现一文中 我们曾详细介绍了Java实现运行时多态性的动态方法调度 今天我们再次深入Java核心 一起学习Java中多态
  • JavaScript 错误处理

    错误处理 一 What 什么是错误处理 错误是指导致系统不能按照用户意图工作的一切原因 事件 在程序设计过程中 由于某些错误的存在 致使程序无法正常运行 处理这些错误以使程序正确运行就称为错误处理 错误处理功能是衡量编译器性能的重要方面 它
  • elasticsearch 出现 cluster_block_exception read_only_allow_delete问题

    做爬虫的时候 只是简单的存入elasticsearch中 在测试服务器上结果发现老是插入不进去 提示的错误 logstash outputs elasticsearch retrying failed action with respons
  • java数组经典题目:数3退1;每数到3就退出一个人,求最后剩下一个人的编号;

    import java util Arrays public class Tes public static void main String args 数3退1 每数到3就退出一个人 求最后剩下一个人的下标 boolean people
  • 竞赛:STL之vector用法详解(关于vector这一篇就够了!)

    目录 前言 一 什么是vector 二 vector常见的函数 1 函数说明表 2 vector的存储和遍历 构造vector的四种方法 3 vector的插入 删除 insert的几种形式 erase的用法 4 begin函数和front
  • 【目标检测】Fast R-CNN详解

    前言 Fast R CNN是作者Ross Girshick继R CNN后的又一力作 同样使用VGG16作为网络的骨架 在训练速度比R CNN快了近9倍 测试速度快了213倍 在Pascal VOC数据集上accuracy从62 提升至66