【深度学习基础】从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
相关文章:

【深度学习基础】从R-CNN到Fast R-CNN,再到MaskR-CNN,发展历程讲清楚!
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...

面试算法51:节点值之和最大的路径
题目 在二叉树中将路径定义为顺着节点之间的连接从任意一个节点开始到达任意一个节点所经过的所有节点。路径中至少包含一个节点,不一定经过二叉树的根节点,也不一定经过叶节点。给定非空的一棵二叉树,请求出二叉树所有路径上节点值之和的最…...

阿里云 k8s 容器服务 设置节点为不可调度的两种方法有什么区别?
两种方法的区别在于:drain 会驱逐原来节点上的所有 pod,而 cordon 只是停止调度, 禁止新的 pod 调度进来,但旧的 pod 不会受影响。...

新一代数据质量平台datavines
在我实习的第一家公司的时候,有幸参与Apache Griffin的开发,也先后在一起其他公司使用过数据质量平台,同时也调研过一些开源的数据质量平台。 最近和朋友一起参与开发了datavines数据质量平台,随着在数据行业越呆越久,…...

建议收藏《2023华为海思实习笔试-数字芯片真题+解析》(附下载)
华为海思一直以来是从业者想要进入的热门公司。但是岗位就那么多,在面试的时候,很多同学因为准备不充分,与岗位失之交臂,无缘进入该公司。今天为大家带来《2023华为海思实习笔试-数字芯片真题解析》题目来源于众多网友对笔试的记录…...

【详细教程】关于如何使用GitGitHub的基本操作汇总GitHub的密钥配置 ->(个人学习记录笔记)
文章目录 1. Git使用篇1.1 下载安装Git1.2 使用Git 2. GitHub使用篇2.1 如何git与GitHub建立联系呢?2.2 配置公钥 1. Git使用篇 1.1 下载安装Git 点击 官网链接 后,进入Git官网,下载安装包 然后根据系统类型进行下载,一般为wind…...

HTML样式CSS、图像
HTML样式-CSS: CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。CSS可以通过以下方式添加到HTML中:1)、内联方式:在HTML元素中使用“style”属性;2)、内部样式表:在HTML文档头部<head>区…...

智能电表瞬时电量是什么意思?
智能电表已经成为我们进行能源管理的重要工具。其中,瞬时电量这一概念逐渐走进大众视野。那么,智能电表瞬时电量究竟是什么意思?它对我们的生活和能源管理又有哪些影响呢?下面,小编就来为大家介绍一下瞬时电量…...

Redis之 redis.config配置文件
文章目录 前言一、基本配置1.单位2.包含3.网络配置4.通用5.快照6.安全7.限制8.仅追加模式 二、总体主要介绍总结 前言 行家一出手,就知有没有,让一起学习redis.config配置文件。 一、基本配置 Redis 的配置文件位于 Redis 安装目录下,文件名…...

BIOS开发笔记 - CMOS
CMOS原来指的是一种生产电子电路的工艺,在PC上一般指的是RTC电路单元,因为早期它是由这种工艺生产出来的,所以又把RTC称作了CMOS。 RTC(Real Time Clock)即实时时钟,用于保存记录时间和日期,也可以用来做定时开机功能。RTC靠一组独立的电源给它供电,这样设计的目的就是…...

leetcode_117 填充每个节点的下一个右侧节点指针 II
文章目录 1. 题意2. 题解2.1 BFS2.2 BFS空间优化2.3 DFS序层次记录 3. Ref 1. 题意 在一颗树的同层之间用指针把他们链接起来。 填充每个节点的下一个右侧节点指针 II 2. 题解 2.1 BFS 用一个变量记录下同层最右侧的节点,当遍历到时更新下一层的最右侧节点即可…...

亲测 IDEA Pycharm 全家桶 自动重置免费30天
理论上是通用的 插件市场安装 添加第三方插件仓库地址 在Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:https://plugins.zhile.io 搜索:IDE Eval Reset插件进行安装。如果搜索不到请注意是否做好了上一步?网络是否…...

Marp: 将 Markdown 变为 PPT 式样的 VScode 插件
样例代码: --- marp: true size: 16:9 theme: default header: footer: --- <!-- _footer: Jia ming<br>Gansu University of Political Science and Law --> <!-- _backgroundColor: lightskyblue --> ## <!-- fit --> 笔记检验概述>…...

根据正则表达式截取字串符,这个办法打败99%程序员
作为一名程序员,常常会在以下情况下使用函数功能根据正则表达式截取字符串: 1.字符串处理:当需要使用正则表达式匹配和提取字符串中的特定模式时,可以使用该函数。例如,从一段文本中提取电子邮件地址、电话号码或网站…...

冬天女儿的羽绒服就选它了,哈哈很喜欢
长款设计感满满的羽绒服 真的一下子就戳中了我的心巴 90白鸭绒+杜邦三防工艺+精细压线 厚实保暖不臃肿,粉色撞色甜美又可爱...

Vim插件配置
工欲善其事,必先利其器,倒腾一下vim的配置,做个记录。 ".vimrc里的内容:""for base configure set t_Co256 if ! has("gui_running")set t_Co256 endifif &diffhighlight DiffAdd ctermbold cte…...

函数参数的最佳传递方式与现代C++的规则
函数参数的最佳传递方式与现代C的规则 在C中,如何最佳地传递函数参数以及如何处理类的特殊成员函数,一直是优化性能和代码质量的重要话题。下面我将详细解释这些概念。 使用移动语义实现 Swap 函数 移动语义(Move Semantics)能…...

Asterisk Ubuntu 安装
更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…...

rwkv模型lora微调之accelerate和deepspeed训练加速
目录 一、rwkv模型简介 二、lora原理简介 三、rwkv-lora微调 1、数据整理 2、环境搭建 a、Dockerfile编写 b、制造镜像 c、容器启动 3、训练代码修改 四、模型推理 1、模型推理 2、lora权重合并 3、推理web服务 五、总结 由于业务采用的ChatGLM模型推理成本太大了…...

分享一下在微信小程序里怎么做一个投票链接
在当今信息化社会,投票已成为各行各业收集意见、汇聚智慧的重要手段。传统的投票方式往往需要投入大量人力物力,而如今,借助微信小程序,我们可以在几分钟内创建一个高效、便捷的投票平台。本文将详细介绍如何在微信小程序中添加投…...

v-model语法糖
v-model原理 v-model实现双向绑定的语法糖,常用于表单与组件之间的数据双向绑定v-model本质上是 value属性和input事件的一层包装 v-model的作用:提供数据的双向绑定数据发生了改变,页面会自动变 v-bind:value页面输入改变 , 数据…...

纷享销客荣获最佳制造业数字营销服务商奖
2023年10月26日,第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家,共同探讨如何通过数字化转型赋能企业自身成长,实现信息化向数字化的升级转型。 在本次盛会上,纷享销客以其卓越的基本面、…...

蓝桥杯每日一题2023.11.3
题目描述 承压计算 - 蓝桥云课 (lanqiao.cn) 题目分析 将重量存入a中,每一层从上到下进行计算,用d进行计算列的重量,当前d的重量应为正上数组和右上数组的个半和并加上自身的重量 计算到30层记录最大最小值,进行比例运算即可 …...

中国电子云-隐私计算-云原生安全可信计算,物理-硬件-系统-云产品-云平台,数据安全防护
目录 联邦学习的架构思想 中国电子云-隐私计算-云原生安全...

PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发),具有很好的参考价值,希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据,比如淘宝平台商品API接口,订单接口,京东接口,1688接…...

Spring Cloud应用- Eureka原理、搭建
初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot,…...

Servlet 设置启动时机(web.xml方式和@WebServlet方式)
1、通过web.xml方式 5)Servlet的启动时机 - 默认情况下,servlet是不会随着容器的启动而被实例化的,只有当第一次给我发请求时才会被实例化那么,这种情况对于第一次请求是不公平的因此,为了提高用户体验度,提高服务器的…...

一个使用uniapp+vue3+ts+pinia+uview-plus开发小程序的基础模板
uniappuviewPlusvue3tspiniavite 开发基础模板 使用 uniapp vue3 ts pinia vite 开发基础模板,拿来即可使用,不要删除 yarn.lock 文件,否则会启动报错,这个可能和 pinia 的版本有关,所以不要随意修改。 拉取代码…...

Kali安装docker
第一步:kali添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add 第二步:进入root更新源: su rootecho ‘deb https://download.docker.com/linux/debian stretch stable’> /etc/ap…...

Maven第七章:Maven工程最佳实践
Maven第七章:Maven工程最佳实践 前言 本章重点,通过一个maven工程最佳实践案例,熟悉和掌握maven在项目中的应用基本思路,让你的技能值瞬间暴涨。 最佳实践 确定项目的坐标和依赖 在Maven中,项目的坐标定义了项目的唯一标识符,包括groupId、artifactId和version。因此,在…...