【深度学习基础】从R-CNN到Fast R-CNN,再到MaskR-CNN,发展历程讲清楚!

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • R-CNN简介
    • R-CNN实现步骤
    • R-CNN优缺点
  • Fast R-CNN简介
    • Fast R-CNN实现流程
    • Fast R-CNN优缺点
    • Fast R-CNN的功能
  • 问题:faster rcnn 相比fast rcnn,有何改进?------RPN
  • Mask R-CNN简介
    • Mask R-CNN的由来
    • MaskR-CNN的网络结构
    • Mask分支不足
  • 参考:


R-CNN简介

R-CNN简介:区域卷积神经网络(Region Based Convolutinonal Neural Networks,R-CNN)是Girshick等人于2014年提出的第一个基于深度学习的目标检测模型,结合了卷积神经网络和选择性搜索(SelectiveSearch)算法。包括分类与回归,最大的问题速度太慢。先寻找框(region proposal),然后再卷积,因此要对所有框进行卷积操作,比较耗费时间,一张图像需要耗时49秒。只在cpu上进行计算。

R-CNN实现步骤

首先使用选择性搜索算法在输入图像中生成大量独立的候选区域,再对这些可能包含目标的候选框通过裁剪或变形的方式固定成统一尺寸。之后将它们输入到 Alex Net 网络中进行特征提取,在此基础上经过多个 SVM(Support Vector Machine,支持向量机)完成分类判断,结合线性回归的方式对得到的目标预测框进行精修。
在这里插入图片描述

R-CNN优缺点

R-CNN 算法虽然相较于传统目标检测算法在精度上有很大提升,但仍然存在不少缺陷。一方面,R-CNN 对候选区域进行尺度的变换以固定大小,会使候选区域发生形变失真而损失原有的特征信息。另一方面,R-CNN 要对得到的所有候选区域逐个进行特征提取,带来了巨大的计算消耗,进而导致目标检测速度十分缓慢。此外,R-CNN并不是端到端的整体网络,需要进行多次繁琐耗时的训练,浪费大量存储空间,导致该算法难以应用到工业领域中。

Fast R-CNN简介

Fast R-CNN简介:相比于R-CNN其主要创新之处在于:在R-CNN的全连接层和前一个卷积层中添加了一个感兴趣区域池化层(Region of interest pooling,Ro I pooling),提取每个区域建议的特征。输入到该层的不同大小特征图会被统一到固定的尺寸,不需要再对原始图片进行裁剪就可以满足全连接层的需要。这样可以保留候选样本的空间特征信息,减少对磁盘空间的占用,提高训练速度。此外,Fast R-CNN 引入了多任务损失函数,并行进行分类任务和回归任务的训练,加快模型收敛速度。对于分类器计算的参数,也不用单独进行保存,节省了许多空间,同时使模型的实现变得更加简单。

Fast R-CNN实现流程

首先对输入图像使用选择性搜索算法生成候选区域,并利用卷积神经网络对图像进行特征提取,然后将得到特征图上的感兴趣区域输入到 RoI pooling 层形成一个统一尺寸的兴趣区域特征向量,最后经过全连接层进行Soft Max 分类和边界框回归。
在这里插入图片描述

Fast R-CNN优缺点

Fast R-CNN 算法的精度和速度虽然相较于 R-CNN 算法有了大幅度的提升,却依然存在很大缺陷:需要使用计算量大的选择性搜索方法获得候选区域,候选区域的生成过程依然复杂,效率低下。该方法在> Fast R-CNN 的训练和预测时长占比很大,是 Fast R-CNN 速度进一步提升的主要限制。

Fast R-CNN的功能

Faster R-CNN也是何凯明等人提出来的。为解决 Fast R-CNN 网络使用选择性搜索方法计算量大的问题,Ren 等人(2015)提出了 Faster R-CNN。做了两个工作:
1、共享卷积。先做卷积,后在特征图上进行寻找框,计算量明显下降,只需做一次卷积,实现卷积共享。
2、实现了端到端的图像检测。 Faster R-CNN主要流程:首先使用卷积神经网络得到输入图像对应的特征图,再经过RPN 区域建议网络进行前景和背景初步分类并生成候选区域,之后和 Fast R-CNN 一样使用感兴趣区域池化层(RoI Poling)输出固定大小的特征图。最后,在分类分支得到目标的类别置信度得分,在回归分支进行目标的坐标定位。

问题:faster rcnn 相比fast rcnn,有何改进?------RPN

该算法提出候选区域建议网络 (RPN,Region Proposal Networks) 来替换选择性搜索方法,从而提高模型的检测效率。RPN(区域建议网络):RPN网络层是faster rcnn最核心的部分。作用是从(基于)特征图中产生候选框,用于后续的分类工作,分类属于二分类,是否是物体进行分类,这样就过滤掉一些非物体的候选框,判断是前景还是背景,去除背景,保留前景,前景是物体,背景是非物体。之后还要对候选框进行微调,也就是完成回归任务,目的就是将候选框尽量与实际框(ground truth)重叠的比例越大越好。最后,对删选出来的候选框按照实际需求,进行多分类。

Mask R-CNN简介

Mask R-CNN模型在Faster R-CNN模型的基础上添加了一个基于 FCN 的掩模预测分支用于实例分割。 输入图像首先通过骨干网络( Resnet - FPN)进行特征提取得到特征图,再通过区域建议网络
(RPN)在特征图上生成感兴趣区域ROI,并将感兴趣区域对应位置的特征池化为固定尺寸的特征,最后由检测分支进行目标框的分类和回归,由掩模预测分支对目标进行像素级别的分割。 特征金字塔(Feature Pyramid Networks,FPN)由 Tsung-Yi Lin 等人于 2017年提出,用于解决目标检测中的多尺度问题。
在这里插入图片描述

Mask R-CNN的由来

FasterR-CNN解决了目标检测准确率低、速度慢等问题,能够较好地完成目标的识别任务与矩形框的定位任务。但是对于某些需要输出目标边缘轮廓(即分割结果)的检测而言,FasterR-CNN只能实现检测的部分,无法完成其分割任务,而FCN刚好与之相反,它可实现分割,却无法实现目标的检测。针对这个问题,He Kai-ming等人将热门的目标检测网络—FasterR-CNN和经典的语义分割网络—FCN相结合,提出了实例分割网络——MaskR-CNN。MaskR-CNN继承于FasterR-CNN,只是在FasterR-CNN的基础上,通过FCN增加了一个mask掩码预测分支,即在保证良好检测性能的基础上,实现了目标检测和分割的一体化。

MaskR-CNN的网络结构

Mask R-CNN在Faster R-CNN的基础上改进。改进与意义:
1、FPN。采用特征金字塔网络提取特征-----FPN。对特征图进行上下采样,并做融合,特征更加丰富。
2、RoIAlign。将RoIAlign层替换RoIPooling层。保留小数特征,提高对小物体的检测精度。之前的roipooling是向下取整的,因此会损失小数部分的特征。为了对小数部分也提取特征(保留小数特征),采用roialign,这样(提高了)更适合对小物体的检测。最后输出的是7X7的特征图
3、添加了一个mask分支。对于Mask分支,是Mask R-CNN在Faster R-CNN基础上增加的分支用于生成检测目标的掩码。Mask分支的输入来自于经过ROI Align处理后的ROI。对于每一个ROI,Mask分支有K个m×m维度的输出,对这些大小为m×m的Mask进行编码,得到该ROI K个类别的概率值,由此实现实例分割的目的。如图4所示,Mask分支对其进行4次卷积和1次反卷积操作,并使用了像素级sigmoid激活函数,最后得到K×m×m维度的输出,其中K为检测目标的类别数目,m为特征图的尺寸。由于Mask分支根据分类分支所预测的类别标签来选择输出的掩码,其允许网络为每一类生成一个掩码,不同类之间不存在竞争,这使得分类和掩码生成分解开来,可以提高实例分割的效果。
在这里插入图片描述

Mask分支不足

然而Mask R-CNN作为两阶段检测模型,实行先检测后分割策略,其分割效果受检测结果的制约。对于RPN提取出的ROI特征图,Mask分支采用全卷积操作提取语义信息,这对于局部语义信息有较好的敏感度,但是忽略了上下文信息。
在这里插入图片描述

参考:

1、https://blog.csdn.net/qq_36269513/article/details/80420363?ops_request_misc=%7B%22request_id%22%3A%22164251636616780261910185%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=164251636616780261910185&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-80420363.pc_search_result_control_group&utm_term=+FCN&spm=1018.2226.3001.4187

2、https://blog.csdn.net/wangdongwei0/article/details/83110305

3、https://blog.csdn.net/qq_27825451/article/details/89677068?ops_request_misc=%7B%22request_id%22%3A%22164886912816780271937139%22%2C%22scm%22%3A%2220140713.130102334.pc_all.%22%7D&request_id=164886912816780271937139&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-89677068.142%5Ev5%5Epc_search_result_cache,157%5Ev4%5Econtrol&utm_term=mask+rcnn%E7%9A%84%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84&spm=1018.2226.3001.4187

4、https://blog.csdn.net/linolzhang/article/details/71774168?ops_request_misc=%7B%22request_id%22%3A%22164251624216780271977050%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=164251624216780271977050&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-71774168.pc_search_result_control_group&utm_term=mask+rcnn&spm=1018.2226.3001.4187

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

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

相关文章

代码随想录第五十七天|● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是&qu…

Python之循环语句

循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。 循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础 while循环的基础语法 生活中的循环 程序中的循环 只要条件满足 会无限循…

【EI会议征稿】第四届生物信息学与智能计算国际学术研讨会(BIC 2024)

第四届生物信息学与智能计算国际学术研讨会(BIC 2024) 2024 4th International Conference on Bioinformatics and Intelligent Computing 2024年第四届生物信息学与智能计算国际学术研讨会 (BIC 2024)将定于2024年1月26-28日在…

循环神经网络 - RNN

循环神经网络(Rerrent Neural Network,RNN)是神经网络的一种,类似的还有深度神经网络(DNN)、卷积神经网路(CNN)、生成对抗网络(GAN)等。**RNN对具有时序特性的数据非常有成效,他能挖掘数据中的时…

OSPF复习(2)

目录 一、LSA的头部 二、6种类型的LSA(课堂演示) 1、type1-LSA:----重要且复杂 2、type2-LSA: 3、type3-LSA: 4、type4-LSA: 5、type5-LSA: 6、type7-LSA: 三、OSPF的网络类…

【OpenCV实现图像:用Python生成图像特效,报错ValueError: too many values to unpack (expected 3)】

文章目录 概要读入图像改变单个通道黑白特效颜色反转将图像拆分成四个子部分 概要 Python是一种功能强大的编程语言,也是图像处理领域中常用的工具之一。通过使用Python的图像处理库(例如Pillow、OpenCV等),开发者可以实现各种各…

Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

背景:Web 端需要使用已有的 C 库(使用 CMake 编译),需要将 C 项目编译成 WebAssembly(.wasm) 供 js 调用。 上篇文章《Mac 上安装 Emscripten》 已讲解如何安装配置 Emscripten 环境。 本篇文章主要讲解如何将基于 CMakeLists 配…

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…

【QT】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

【数据结构与算法】排序二叉树的创建节点的添加和删除(附代码实现与代码讲解)

首先来了解下排序二叉树的基本概念 排序二叉树&#xff1a;任意一个根节点&#xff0c;比他的左子树中的任意节点都大&#xff0c;比他的右子树中的任意节点都小 比如下面的这个树就是排序二叉树 OK&#xff0c;在了解了这个基本概念之后&#xff0c;就可以去看下面的代码了 …

【Linux】关于Nginx的详细使用,部署项目

前言&#xff1a; 今天小编给大家带来的是关于Nginx的详细使用&#xff0c;部署项目&#xff0c;希望可以给正在学习&#xff0c;工作的你带来有效的帮助&#xff01; 一&#xff0c;Nginx简介 Nginx是一个高性能的开源Web服务器和反向代理服务器。它最初由Igor Sysoev在2004年…

Linux开机、重启、关机和用户登录注销

1.【关机】 shutdown shutdown now 表示立即关机 shutdown -h now 表示立即关机 shutdown -h 1 表示1分钟后关机 halt 用来关闭正在运行的Linux操作系统 2.【重启】 shutdown -r now 表示立即重启 reboot 重启系统 sync …

OceanBase:01-单机部署(开发环境)

目录 一、体系架构 二、配置要求 三、解压安装包 四、执行安装 五、配置环境变量 六、快速部署 七、访问数据库 OceanBase 数据库&#xff08;OceanBase Database&#xff09;是一款蚂蚁集团完全自研的企业级原生分布式数据库&#xff0c;在普通硬件上实现金融级高可用&…

前端实验(一)单页面应用的创建

实验目的 掌握使用vite创建vue3单页面程序命令熟悉所创建程序的组织结构熟悉单页面程序运行原理能够编写简单的单页面程序 实验内容 创建一个名为vue-demo的单页面程序编写简单的单页面程序页面运行单页面程序 实验步骤 使用vite创建单页面程序 创建项目名为目录vue-demo的…

Linux入门指令和权限讲解

目录 一&#xff0c;Linux指令讲解 1. ls 指令&#xff08;查看文件&#xff09; 2. pwd命令&#xff08;展现当前工作目录&#xff09; 3. cd 指令&#xff08;改变当前所处工作目录&#xff09; 4. touch指令&#xff08;创建文件&#xff09; 5.mkdir指令&#xff08;创…

Java日志组件介绍之二

一、前言 Java日志组件介绍之一 主要介绍了JDK内置日志和Apache的common-logging通用日志接口&#xff0c;今天这篇我们继续了解Java其它一些日志组件。 二、slf4j slf4j即Simple Logging Facade for JAVA &#xff0c;简单日志门面&#xff0c;类似common-logging&#xff0…

2023最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

Mac上的iTerm2和Oh My Zsh 的安装(安装过程和失败详解)

前言&#xff08;无重点&#xff0c;安装往后看&#xff09; 由于在很多人的安利下&#xff0c;说很好用&#xff0c;作者今天花费了4个小时用血的教训总结出来的安装教程&#xff0c;我在安装过程中遇到的最大的问题就是 1. curl: (7) Failed to connect to raw.githubusercon…

由QTableView/QTableWidget显示进度条和按钮,理解qt代理delegate用法

背景&#xff1a; 我的最初应用场景&#xff0c;就是要在表格上用进度条显示数据&#xff0c;以及放一个按钮。 qt-creator中有自带的delegate示例可以参考&#xff0c;但终归自己动手还是需要理解细节&#xff0c;否则不能随心所欲。 自认没那个天赋&#xff0c;于是记录下…

JAVA 实现PDF转图片(spire.pdf.free版)

1.引入jar包 导入方法1&#xff1a; 手动引入。将Free Spire.PDF for Java下载到本地&#xff0c;解压&#xff0c;找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面&#xff0c;将本地路径中的jar文件引入Java程序&#xff1a; 导入方法2&#xff1a;如果您想通过…