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

论文:Fast R-CNN
作者:Ross Girshick
链接:https://arxiv.org/abs/1504.08083
代码:https://github.com/rbgirshick/fast-rcnn

目录

  • 1、算法概述
  • 2、Fast R-CNN细节
    • 2.1The RoI pooling layer
    • 2.2 Fine-tuning for detection
    • 2.3 Fast R-CNN detection
  • 3、实验结果
  • 4、创新点和不足

1、算法概述

先说R-CNN的不足之处:
1、训练方式不是端到端的,必须先微调CNN网络,然后用CNN网络得到的特征训练SVMs,最后学习bounding-box回归器。
2、训练起来耗时且耗磁盘空间,用于训练SVMs和bounding-box的区域候选框的特征必须提取好后存储在磁盘中。
3、检测速度很慢,通过重复提取每个区域候选框的特征进行SVM分类加回归,用VGG16的backbone,即使在GPU上推理速度也要47s/image。

同年的SPPNet针对R-CNN也做了改进,除了将用于提取特征的CNN网络替换成ZF5,主要改进点就是用SPP(空间金字塔池化)层替换了网络最后一个池化层,这使得原本R-CNN的2000次CNN前向传播用于提取候选框区域特征得以仅通过一次就可以全部做完,这一改进大大减少了训练和推理时间。但它还是没有解决上面提到的R-CNN第1、第2两个不足点。

Fast R-CNN相对于之前的R-CNN工作做了如下改进:1、将CNN网络由AlexNet替换成了VGG16,能提取到更深层次特征;2、利用多任务损失函数,使得训练一步到位;3、训练阶段网络全部层都可以更新(相对于SPPNet而言,论文中说SPPNet在SPP层之前的卷积层无法更新,我在知乎上搜到的回答如下,回答来自知乎@可以啊,其实论文2.3节也解释了原因);4、不需要额外的磁盘空间用于存储特征。
在这里插入图片描述

2、Fast R-CNN细节

在这里插入图片描述
Fast R-CNN的结构如上图所示,网络接收的输入为一整张图片和一组区域候选框坐标,图片经过几组连续的conv+pooling层后得到特征图,然后,针对每个区域候选框,都将通过感兴趣区域池化层(ROI Pooling Layer)从特征图中提取一个固定长度的特征向量。每个特征向量被送到全连接层,最终连接到两个分支作为网络输出层:一个产生softmax概率估计,类别数为K个对象类加一个“背景”类;另一个为K个对象类输出的四个实数预测。每组4个值为K个类对应的预测box位置(反映在原图中需解码)。

2.1The RoI pooling layer

RoI池化层使用最大池化将任何有效感兴趣区域内的特征转换成具有固定尺寸HxW (例如,7x7)的小特征图。假设某个区域候选框对应特征图上的RoI区域窗口为(r,c,h,w),(r,c)代表矩形左上点,(h,w)代表矩形高,宽。RoI最大池化的工作原理是将h * w大小的RoI窗口划分为H * W个网格,每个网格的大小近似为h/H * w/W,然后将每个网格中的值最大池化到相应的输出网格单元中。RoI Pooling层可看作是单个尺度的SPP层(single-level SPP),如下图所示:
在这里插入图片描述

2.2 Fine-tuning for detection

在微调之前,先调整网络结构,将VGG16的最后一层maxpooling层替换成RoIpooling层,设置输出的固定尺寸为H=W=7;调整输出层为softmax和bounding-box回归,softmax类别为K+1,bounding-box输出为4K;调整输入为图片加上图片对应的区域候选框坐标。
样本采样采用分层采样,Fast R-CNN使用了一个训练过程,共同优化softmax分类器和bounding-box回归器,而不是在三个单独的阶段训练softmax分类器、SVM和回归器推理阶段。

多任务损失
作者通过在每个标记的RoI上使用一个多任务损失L来联合训练分类和bounding-box回归,联合损失公式如下:
在这里插入图片描述
其中,u为ROI对应的类别真实标签,v为ROI对应的矩形框坐标真实标注。因为背景类的标注为u=0,可见背景类不参与坐标框回归损失计算。这里坐标框回归用的是smoothL1损失:
在这里插入图片描述

Mini-batch采样
Batchsize设置为128,是从两张图片采样得到,每张图片包含64个ROI区域,25%的是正样本,正样本为IOU(ROI区域与groundtruth交并比)大于等于0.5的,类别u>=1;其余IOU为0.1到0.5的视为背景样本,类别u=0,IOU小于0.1的视为困难样本挖掘的参考例子。训练中只做了概率为0.5的水平翻转数据增强。

尺度不变性
作者也采用类似于SPPNet同样的方式进行多尺度训练,通过图像金字塔为网络提供近似的尺度不变性。在测试阶段,也采用在图像金字塔上进行区域候选框选择。

2.3 Fast R-CNN detection

在推理阶段,网络接收一张图片或者是一张图片的图像金字塔列表及对应的R个目标区域候选框坐标。在测试阶段R取值为2000。当用图像金字塔作为输入时,2000个ROI区域也被按比例分配到图像的每个尺度上,这些ROI区域接近224x224的大小。最终会在类别分支得到K+1个分数,在回归分支得到4个坐标点(取类别分数最大的类别对应的4个坐标值),然后按类别应用nms消除多余的框。

3、实验结果

实验设置:作者使用了三种模型(S,M,L)用于对比,AlexNet(model S),VGG_CNN_M_1024(model M,与S有相同的深度,但是通道数更宽),VGG16(model L),作者在VOC2007,VOC2010,VOC2012上测试结果如下:
在这里插入图片描述
和R-CNN,SPPNet训练时间及推理时间对比结果如下:
在这里插入图片描述

4、创新点和不足

  • 创新点:
    1、利用多任务损失函数,使得训练一步到位;
    2、提出RoIPooling层,使得训练阶段网络全部层都可以更新;
    3、Fast R-CNN消除了存储特征的磁盘空间消耗。
  • 不足:
    1、候选框区域生成还是用selective search,不仅耗时且与后面的训练过程是独立的;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

火星探索:技术挑战与前沿进展

火星探索:技术挑战与前沿进展 一、引言 火星,这颗红色的星球,长久以来一直吸引着人类的目光。随着科技的飞速发展,火星探索已经从纯粹的科幻梦想逐渐转变为现实的研究课题。然而,火星探索仍然面临着诸多技术挑战。本文将深入探讨火星探索的关键技术、现有技术瓶颈以及前沿…

【FPGA图像处理实战】- 图像基础知识

视频图像处理是FPGA主要应用方向之一,很多FPGA从事或准备进入这一领域,我们现在开始发布新的FPGA实战专栏——FPGA图像处理。 FPGA处理视频图像处理的主要优势是流水线和并行处理运算,特别是现在视频分辨率越来越大,从720p到1080…

文字、图片免费生成视频和专属数字人,你不来试试吗?

查看生成的效果:AI产生的视频(关注公众号,获取精彩内容) 您是否想要制作一些令人惊叹的视频,但又没有视频编辑的技能或经验?您是否想要利用人工智能的力量,让您的图片和声音变成动态的视频&…

二叉树链式结构的实现——C语言

目录 一、提前说明 二、二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3后序遍历 2.4代码 三、二叉树结点个数 3.1整体思路 3.2代码 四、二叉树叶子结点个数 4.1整体思路 4.2代码 五、二叉树的高度(深度) 5.1整体思路 5.2代码 六、二叉树第k层节点个数 6.1整体…

selenium三猛士

selenium包括三个项目,分别是:Selenium WebDriver,Selenium IDE,Selenium Grid。 Selenium WebDriver Selenium WebDriver是客户端API接口,测试人员通过调用这些接口,来访问浏览器驱动,浏览器再访问浏览器…

数学建模 | MATLAB数据建模方法--机器学习方法

近年来,全国赛的题目中,多多少少都有些数据,而且数据量总体来说呈不断增加的趋势, 这是由于在科研界和工业界已积累了比较丰富的数据,伴随大数据概念的兴起及机器学习技术的发展, 这些数据需要转化成更有意…

Linux的基本指令(4)

目录 20.tar指令(重要):打包/解包,不打开它,直接看内容 21.bc指令 22.uname –r指令: 23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 20.tar指令(重要):打包/解包&#…

Kubernetes(K8s)Pod控制器详解-06

Pod控制器详解 Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建 控制器创建…

分享85个节日PPT,总有一款适合您

分享85个节日PPT,总有一款适合您 85个节日PPT下载链接:https://pan.baidu.com/s/1FTbSj2Baix-Cj6n42Cz26g?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。…

语义分割 U-net网络学习笔记 (附代码)

论文地址:https://link.springer.com/chapter/10.1007/978-3-319-24574-4_28 代码地址:https://b23.tv/PCJJmqN 1.是什么? Unet是一种用于图像分割的深度学习网络模型,其结构由编码器和解码器组成,可以对图像进行像素…

深度学习 -- 神经网络

1、神经网络的历史 2、 M-P模型 M-P模型是首个通过模仿神经元而形成的模型。在M-P模型中,多个输入节点对应一个输出节点y。每个输入x,乘以相应的连接权重w,然后相加得到输出y。结果之和如果大于阈值h,则输出1,否则输出0。输入和输出均是0或1。 公式2.1: …

【代码】多种调度模式下的光储电站经济性最优 储能容量配置分析matlab/yalmip

程序名称:多种调度模式下的光储电站经济性最优储能容量配置分析 实现平台:matlab-yalmip-cplex/gurobi 代码简介:代码主要做的是一个光储电站经济最优储能容量配置的问题,对光储电站中储能的容量进行优化,以实现经济…

08-中介者模式-C语言实现

中介者模式: Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.(用一个中介对…

2243:Knight Moves

文章目录 题目描述思路1. DFS2. BFS3. 动态规划 解题方法1. DFS2. BFS3. 动态规划 题目描述 题目链接 翻译如下: 注:骑士移动是和象棋里的马一样走的是日字型 你的一个朋友正在研究旅行骑士问题 (TKP),你要找到最短的…

结合贝叶斯定理浅谈商业银行员工异常行为排查

1.贝叶斯定理的数学表达 贝叶斯方法依据贝叶斯定理。关于贝叶斯定理解释如下:首先我们设定在事件B条件下,发生事件A的条件概率,即 ,从数学公式上,此条件概率等于事件A与事件B同时发生的概率除以事件B发生的概率。 上述…

VUE语法-(readonly的用法)将数据设置成只读模式

1、功能概述 在Vue中定义一个变量,这个变量的值不允许被修改,核心是通过readonly设置成只读。 如果不会使用ref和reactive响应式数据参考如下博客: https://blog.csdn.net/tangshiyilang/article/details/134701103 2、具体实现 如下案例…

轻量级万物分割SAM模型——MobileSAM安装实测摘要

目录 0、前言1、准备工作安装python环境说明安装说明 运行测试app安装依赖修改代码 2、实际测试效果自带图片测试其它图片测试1其它图片测试2 总结 0、前言 本文将介绍一种轻量级万物分割SAM模型——MobileSAM的安装和实测情况。SAM是meta公司的一种图像分割大模型&#xff0c…

摩根士丹利:人工智能推动增长

摩根士丹利(NYSE:MS)将人工智能战略整合到其财富管理业务中,标志着竞争性金融格局迈出了变革性的一步。该公司的人工智能计划,包括与 OpenAI 合作开发人工智能聊天机器人,促进了其财富部门的显着增长。值得…

VSCode 开发C/C++实用插件分享——codegeex

VSCode 开发C/C实用插件分享——codegeex 一、codegeex 一、codegeex CodeGeeX 智能编程助手是一款编程插件,CodeGeeX支持多种主流IDE,如VS Code、IntelliJ IDEA、PyCharm、Vim等,同时,支持Python、Java、C/C、JavaScript、Go等多…

C++学习之路(十六)C++ 用Qt5实现一个工具箱(为屏幕颜色提取功能增加一个点击复制的功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《颜色代码转换和屏幕颜色提取功能》功能。今天我们把屏幕颜色提取的功能再扩展一下,让它可以点击复制吧。下面我们就来看看如何来规划开发这样的小功能并且添加到我们的工具箱中吧。 老规矩,先…