【机器学习】经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍

文章目录

    • 三者的比较:RCNN、Fast RCNN、 Faster RCNN
      • 一、框架的对比
        • 1.三者都是二阶算法,网络框架比较:
        • 2.三者的优缺点比较:
    • RCNN
      • 一、RCNN系列简介
      • 二、RCNN算法流程的4个步骤
      • 三、RCNN存在的问题
      • 四、论文解析补充
        • 1.R-CNN提出了两个问题
        • 2.重要结论
    • fast-RCNN
      • 一、fast-RCNN简介
      • 二、fast-RCNN算法的3个步骤
        • 1.概念:训练数据的采样(正负样本)
        • 2.分类器
        • 3.边界框回归器
        • 4.多任务损失函数
      • 三、论文解析补充
        • 1.R-CNN的缺点
        • 2.Fast R-CNN方法的几个优点
        • 3.Fast R-CNN引入Rol层
        • 4.尺度不变性
        • 5.最长时间的花费地方
        • 6.SVD压缩参数
        • 7.重要结论
    • Faster RCNN
      • 一、Faster RCNN简介
      • 二、Faster RCNN算法流程
        • 1.算法流程
        • 2.Faster RCNN 网络的基本结构
        • 3.RPN网络(Region Proposal Network)
          • 3.1RPN网络结构
          • 3.2 anchor的定义
          • 3.3 RPN生成proposal的过程
        • 4.Faster RCNN框架
      • 三、论文解析补充
        • 1.fastrcnn分配两种anchor
        • 2.三种训练网络
        • 3.交替训练的过程
        • 4.感受野的问题
        • 5.小知识点

三者的比较:RCNN、Fast RCNN、 Faster RCNN

一、框架的对比

1.三者都是二阶算法,网络框架比较:

在这里插入图片描述

2.三者的优缺点比较:

在这里插入图片描述

RCNN

一、RCNN系列简介

R-CNN系列(R-CNN,fast-RCNN,faster-RCNN)是使用深度学习进行物体检测的鼻祖论文,其中fast-RCNN 以及faster-RCNN都是延续R-CNN的思路。

R-CNN新提出了CNN卷积特征提取方法和微调。

R-CNN全称region with CNN features,其实它的名字就是一个很好的解释。用CNN提取出Region Proposals中的featues,然后进行SVM分类与bbox的回归(定位置)。

【RCNN网络结构】
在这里插入图片描述在这里插入图片描述

二、RCNN算法流程的4个步骤

重要思想:
(1)通过专门模板去生成候选框(RPN),寻找前景以及调整边界框(基于锚框)
(2)基于之前生成的候选框进行进一步分类以及调整边界框(基于建议框)
具体步骤:
1.一张图像生成1k~2k个候选区域(使用Selective Search方法)
2.对每个候选区域,使用深度网络提取特征(CNN)
3.特征送入每一类的SVM分类器,判别是否属于该类(SVM)
4.使用回归器精细修正候选框位置
步骤详解:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、RCNN存在的问题

1.测试速度慢
2.训练速度慢(过程复杂,cnn、svm、回归网络都要训练)
3.训练所需空间大
在这里插入图片描述

四、论文解析补充

1.R-CNN提出了两个问题

1.如何用CNN定位目标
2.标注数据太少,使用迁移学习的思想(微调)
关于迁移学习(微调):什么是微调?
图像分类:Image:Net 目标检测:PASCAL VOC

2.重要结论

1.在选择图片的时候,会选择比区域大16个像素的图片,这样边缘信息也会利用上。在卷积的时候信息可能丢失。实验证明扩充16个像素 效果会更好
2.最后分类会多出来一类,这一类代表的是背景类。
3.CNN和SVM使用不同的正负样本划分方法。类别分类器使用0.3的阈值
4.可视化学习的特征:高层提取的特征高层每一个不同的通道,学习的就是不一样的东西。eg:1学的是人,2学的是点状
5.R-CNNBB(Bounding box regression)边界框回归
这是RCNN定准确定位的关键,定位正确的位置什么是R-CNNbb?在这里插入图片描述
6.这里的△x,△y…都是通过训练SVM模型实现回归任务得到的。
上述公式预测的是△x,△w,而作者预测的是dx,dw,这是为什么?
1.因为△w是宽放大的比例,这里只可能为正数,但是通过svm模型预测出来的可能存在负数。通过先预测出来dw (也可能是正负),那么通过exp的函数一定是正数即可保证△w为正数。
2.如下图所示,当使用d计算的话,对于两张相同预测和真实之间的损失函数的值相同。在这里插入图片描述

fast-RCNN

一、fast-RCNN简介

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(再Pascal VOC数据集上)。
在这里插入图片描述
注意:
这里与RCNN有明显的不同,RCNN是独立的四步,这里只有两步,所以大大加快了训练速度。
在这里插入图片描述

二、fast-RCNN算法的3个步骤

1.一张图像生成1K~2K个候选区域(使用Selective Search方法)
2.将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
在这里插入图片描述
注意:
与RCNN在第二步有所不同,RCNN是把候选框送入CNN,而fast-RCNN是把整张图片送进去。
在这里插入图片描述

1.概念:训练数据的采样(正负样本)

1.正样本就是感兴趣的部分,负样本就是没有我们需要的样本(可以理解为背景)
2.训练的时候不是用ss算法中的全部候选框,只是使用了一部分:只要候选框和我们的真实的目标边界框的iou大于0.5,那么就认为是正样本,不是所有的正样本都会被使用,也是随机选择使用的。
3.RoI Pooling Layer
在这里插入图片描述

2.分类器

在这里插入图片描述

3.边界框回归器

在这里插入图片描述
在这里插入图片描述

4.多任务损失函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、论文解析补充

1.R-CNN的缺点

1.训练是多阶段的
2.训练需要大量的空间和时间
3.因为每张图片需要2000个候选框,所以训练的很慢
主要原因:R-CNN需要一个CNN前向传播,但是没有使用到共享计算。这里使用SPPnet的思路
下边介绍一下SPPnet引入的新思想 什么是SPPnet?
在这里插入图片描述
这里使用到sppnet思想空间金字塔池化层
和RCNN的区别
RCNN一般使用的是3*3步长为2的最大池化层,spp层就是限制了输出的尺寸,动态池化控制输出尺寸,不需要想RCNN限制输入图片的尺寸了
新思想:
不传候选区域,直接传整张图片。这一块解决了上述CNN因为候选框太多处理图片慢的问题。
缺点:
无法更新空间金字塔池化之前的卷积层

2.Fast R-CNN方法的几个优点

1.mAP高于R-CNN、SPPnet
2.训练是单阶段的,使用多任务损失
3.训练可以更新所有网络层 (包括卷积层和全连接层)
4.特性缓存不需要磁盘存储

3.Fast R-CNN引入Rol层

RoI层只是SPPnets中使用的空间金字塔池化层的特殊情况,其中只有一个金字塔层。

4.尺度不变性

有两个目标,一个目标大,一个小,如果都能被识别,证明模型有很好的尺度不变性。

5.最长时间的花费地方

对于检测,要处理的roi数量很大,并且近一半的前向通过时间花在计算全连接层上

6.SVD压缩参数

中间的对角矩阵,左上的最重要,右下的相对不重要,故取左上一部分。把nn 变tt.相当于把n压缩到t,压缩的越多,后续的参数越少。
在这里插入图片描述

7.重要结论

1.sppnet只微调全连接层,把卷积层全部冻结。
fastrcnn证明了微调卷积层也是很重要的,实验证明调越靠前的卷积层,效果会更好。
2.多任务训练能提高平均精度。
3.多尺度训练能提高平均精度。
4.大量的训练数据能提高平均精度。
5.使用softmax替换SVM能提高平均精度。
6.使用更多的候选框不一定能提高平均精度。会出现先上升再向下的趋势
7.不需要再单独训练分类器边界框回归器

Faster RCNN

一、Faster RCNN简介

Faster RCNN 是作者 Ross Girshick 继 RCNN 和 Fast RCNN后的又一力作。同样使用 VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及cOco竞赛中获得多个项目的第一名。

二、Faster RCNN算法流程

Faster RCNN = RPN + Fast RCNN
RPN 是指 Region Proposal Network,建议区域生成网络。 Faster RCNN 中用 RPN 来代替了 Fast RCNN 中的SS算法。

1.算法流程

(1)将图像输入网络得到相应的特征图。

(2)使用RPN网络生成候选框,将RPN生成的候选框投影到特征图上获得ROI区域的特征矩阵。

(3)将每个ROI区域的特征矩阵通过 ROI pooling 层缩放到7x7大小的特征图,接着将特征图展平为vector,之后通过一系列全连接层得到预测结果。

2.Faster RCNN 网络的基本结构

在这里插入图片描述

3.RPN网络(Region Proposal Network)
3.1RPN网络结构

在这里插入图片描述
图中的 conv feature map 是图像输入网络得到相应的特征图,通过sliding window处理之后产生一个256-d的一维向量。该向量通过两个全连接层,分别输出分类概率scores和边界框回归参数coordinates,其中k是指 k个 anchor boxes,2k个scores是每个 anchor box 分别为前景和背景的概率(注意这里只区分前景和背景,所有的类别都归为前景),4k个coordinates是因为每个anchor box 有四个参数。
注意
2k cls的2分别代表是背景不是背景
4k reg的4代表中心坐标、宽、高

3.2 anchor的定义

anchor不是候选框(Proposal),后面会提到二者的区别。
在这里插入图片描述
我们在特征图中找一个点,就可以在原图中找到对应的一个像素点,以该像素点为中心,画出9个不同大小和长宽比的框,称为anchor 。如下图所示,这些anchor里面可能包含目标,也可能没有目标。因为我们在一张图中想找的的目标的大小和长宽比并不是固定的,所以这里用9个不同大小和长宽比的anchor来进行预测。
注意
这里要做特征图向原图的映射
如果找?
x = 原图的宽度/特征图的宽度(取整)* 3 (x = 步距 * 滑动窗口大小)
y = 原图的高度/特征图的高度(取整)* 3 (y = 步距 * 滑动窗口大小)
为什么是9个anchor呢?
论文中给出了每个anchor的面积和长宽比:

所以特征图中的每个位置在原图中都会生成 33=9 个anchor,如下图所示,蓝色的三个anchor是面积为128128的,红色是面积为256256的,绿色是512512的。
在这里插入图片描述
如何计算感受野?
在这里插入图片描述
论文细节
在这里插入图片描述

3.3 RPN生成proposal的过程

对于一张 1000x600x3 的图像(三通道),用3x3的卷积核进行特征提取得到60x40的特征图,则共有 60x40x9 (约2w个)个anchor。忽略超过图片边界的 anchor 后,剩下约 6000 个anchor。

对于这6000 个 anchor,通过RPN生成的边界框回归参数将每个 anchor 调整为proposal(前面提到了每个anchor经过RPN都输出2个概率和4个边界框回归参数),这里就能看到anchor和proposal的区别。这个过程就是 RPN 生成候选框的过程。

RPN 生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩下 2000 个候选框。

4.Faster RCNN框架

在这里插入图片描述
Faster RCNN 在Fast RCNN的基础上更进一步,将候选框生成也融入到CNN网络中,使得 候选框生成、特征提取、候选框分类、候选框边界回归这四大部分都结合在一个CNN网络中,避免了分步训练,实现了真正端到端的目标检测。

三、论文解析补充

1.fastrcnn分配两种anchor

1)与目标框相交最大的anchor 2)IOU>0.7的anchor

2.三种训练网络

1)交替训练本篇论文使用的就是交替训练
2)近似联合训练存在的问题:RPN在反向传播时,不能计算偏导数。所以求出来的值只是一个近似值。
3)非近似联合训练

3.交替训练的过程

1)单独训练RPN网络
2)单独训练RCNN网络,并且使用第1步训练的RPN网络
3)使用RCNN网络初始化RPN网络(这里固定了卷积层,仅仅微调了RPN独有的结构)
4)固定了卷积层,仅仅微调了RCNN独有的结构
在这里插入图片描述

4.感受野的问题

ZF感受野171
VGG感受野228
在这里插入图片描述
为什么能预测的比感受野更大?
根据可见部分,可以粗略预测(人们在看东西的时候,也可以根据已知推未知)

5.小知识点

1)coco数据集上小目标图像比较多
2)RPN上只跑了300个候选区域(通过实验所得)

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

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

相关文章

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中,其突出功能之一是能够构建个性化视图,允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程,你将获得关于开发Odo…

放慢音频速度的三个方法 享受慢音乐

如何让音频慢速播放?我们都知道,在观看视频时,我们可以选择快进播放,但是很少有软件支持慢速播放。然而,将音频慢速播放在某些情况下是非常必要的。例如,当我们学习一门新语言时,我们可以将音频…

Pytorch详细应用基础(全)

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.安装pytorch以及anaconda配置 尽量保持默认的通道,每次写指令把镜像地址写上就行。 defaults优先级是最低的&#…

深度学习神经网络相关记录《二》

如何判断模型是一个好模型? 模型预测效果,也就是模型预测的准确率运算速度;能够处理大量数据、短时间内急速学习、可以实时进行预测,是机器学习的重要优势;可解释性;深度学习已经不太关系这一点了&#xf…

基础:TCP三次握手做了什么,为什么要握手?

1. TCP 三次握手在做些什么 1. 第一次握手 : 1)握手作用:客户端发出建立连接请求。 2)数据处理:客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_S…

基于Matlab的视频人面检测识别,Matalb实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

分布式(计算机算法)

目录 分布式计算 分布式​编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…

【uniapp】uniapp设置改变全局字体大小功能:

文章目录 一、效果:二、文档:三、案例:引用插件,将项目中的字体单位rpx换成rem,结合官网提供的page-meta属性,通过控制根字体大小,达到调节字体大小要求。 一、效果: 二、文档&#…

代码随想录算法训练营第46天 | 完全背包,139.单词拆分

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 完全背包理论基础: https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9…

全网最全的幻兽帕鲁服务器搭建教程——阿里云保姆级教程

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

DVWA靶场-SQL InjectionSQL注入

SQL Injection(SQL注入)概念 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注…

YOLOv2学习

YOLOv2学习 Anchor boxes 和 bounding boxes 的区别锚框(Anchor Boxes)边界框(Bounding Boxes)锚框与边界框的区别 摘要引言数据集组合方法(Dataset Combination Method)联合训练算法(Joint Tra…

Python AI 之PhotoMaker 安装总结

PhotoMaker 官方文档 PhotoMaker GitHub 地址:https://github.com/TencentARC/PhotoMaker PhotoMaker Windows 安装 温馨提示:PhotoMaker 官网github 版本为通用版本,如果是Windows系统安装PhotoMarker 需要使用截图下的版本: 第一步&am…

nvm安装和使用保姆级教程(详细)

一、 nvm是什么 : nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和npm都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、卸载之前安装的node: …

【Spring MVC】Spring MVC拦截器(Interceptor)

目录 一、拦截器介绍 二、拦截器 Interceptor 定义 2.1 HandlerInterceptor接口 2.2 Spring MVC中提供的一些HandlerInterceptor接口实现类 1、AsyncHandlerInterceptor 2、WebRequestInterceptor 3、MappedInterceptor 4、ConversionServiceExposingInterceptor 三、拦…

creator-webview加载优化

title: creator-webview加载优化 categories: Cocos2dx tags: [cocos2dx, creator, webview, 优化, 加载, 性能] date: 2024-03-02 13:17:20 comments: false mathjax: true toc: true creator-webview加载优化 前篇 Android WebView shouldInterceptRequest - https://www.ji…

Linux——动静态库的制作及使用与动态库原理

目录 一、静态库 1.静态库的制作 2.静态库的使用 加载静态库方法一:安装头文件与库文件 加载静态库方法二:指定文件目录 二、动态库 1.动态库的制作 2.动态库的使用 方法一:安装到系统中 方法二:软链接 方法三&…

新火种AI|英伟达GTC大会在即,它能否撑住场面,为AI缔造下一个高度?

作者:小岩 编辑:彩云 英伟达不完全属于AI行业,但神奇的是,整个AI领域都有着英伟达的传说。因为几乎所有的AI巨头都需要英伟达的芯片来提供算力支持。 也正因此,纵使AI赛道人来人往,此起彼伏,…

Session会话绑定

1.需求原因 用户的请求,登录的请求,经过负载均衡后落到后面的web服务器上,登录的状态/信息也会记录在web服务器上,就会导致不通的web服务器上,登录状态不统一,造成用户频繁需要登录 2.目标:如何实现会话保持/会话共享 方案一:登录状态写入cookie中.(wor…

阿里云服务器centos安装msf教程

msf官方命令行一键安装 curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall 稍微等待几分钟即可安装成功&am…