引流量的网站/天猫seo搜索优化
目录
- 前言
- 一.MASK R-CNN网络
- 1.1.RoIPool和RoIAlign
- 1.2.MASK分支
- 二.损失函数
- 三.Mask分支预测
前言
在介绍MASK R-CNN
之前,建议先看下FPN
网络,Faster-CNN
和FCN
的介绍:下面附上链接:
- R-CNN、Fast RCNN和Faster RCNN网络介绍
- FCN网络介绍
- FPN网络介绍
在之前介绍数据集的时候我们讲过图像分割分为语义分割和实例分割,看下面两幅动图展示:
语义分割:
实例分割:
今天介绍的MASK R-CNN
是针对实例分割这种情况的,我们主要从以下几个部分进行讲解:
- MASK R-CNN网络
- RoiAlign
- Mask分支(FCN)
- 损失函数
- Mask分支预测
一.MASK R-CNN网络
先来看下MASK R-CNN
网络结构:
从上面的网络结构可以看出,前面的RolAlign+CNN
就是前面的Faster-RCNN
结构(实际中Faster-RCNN
使员的也是RoIAlign
,并不是RoIPool
)。后面一个卷积层就是自己可以并联的的网络结构用于分割,关键点检测都行。
下面我们来看下MASK
分支的结构,跟FCN
非常像,主要有两种结构:不带FPN特征金字塔结构和带有FPN
的,我们经常使用的也是右边这个带有FPN
的。
1.1.RoIPool和RoIAlign
上面讲到在MASK R-CNN
中吧之前Faster R-CNN
中的RoIPool
替换成了RoIAlign
层,为什么呢?因为在RoIPool
中涉及两次取整的操作,会导致定位产生偏差。
这里我们再来看下RoIPool
操作:
从上面的图中可以看出,RoIPool
可能会涉及两次取整操作,我们以目标检测的标注框为例解释,第一次是在标注框大小投影到最终网络输出特征层进行了一次四舍五入;第二次是在maxpooling
的时候,因为投影后的框不能保证能够均分,还会涉及到一次四舍五入。
相比于RoIPool
,通过上面的图可以看到,第一次投影的时候RoIAlign
并不会涉及到四舍五入的操作,最终计算的值是多少就是多少;第二次池化的时候直接均分第一次投影得到的特征矩阵,找到中心点坐标和周围最近的几个点(也可以采用几个采样点计算均值,这里以一个为例),直接计算双线性差值,也不会涉及到四舍五入的操作。
通过上面的对比可以看出RoIAlign
并不会涉及到任何的取整操作,所以他的定位也更加的准确。
1.2.MASK分支
上面我们讲MASK
分支有两种,带FPN
和不带FPN
,我们最常用的是下面这个带有FPN
的结构:
注意1:
上图中有两个RoI
,上面一个对应的是Faster R-CNN
的预测器的分支,他所用的RoIAlign
跟MASK
分支采用的RoIAlign
并不一样,即两者不共用一个RoIAlign
,一个输出的大小是7×77\times 77×7,一个是13×1313\times1313×13。因为分割要求保留更多的信息,池化比较大的话会损失比较多的信息。下面一个MASK
分支的最后输出28×28×8028\times28\times8028×28×80的意思是对每一个类别(COCO
通常使用的都时候80个类别的)都预测一个28×2828\times2828×28大小的蒙版。
在MASK R-CNN
中对预测的Mask
和class
进行解耦,什么意思?FCN
对每个像素,每个类别都会预测一个类别概率分数,最后会对每个像素沿着channel
方向进行softmax
处理,处理之后就能能得到每个像素归属每个类别的概率分数,所以不同类别之间是存在竞争关系的。通过sofmax
之后,每个像素在channel
方向概率只和等于1
,对于某个类别的概率分数大的话,那么其他类别的概率分数就会小。所以他们之间存在竞争关系,即AMSK
与class
是耦合的状态。那么在MASK R-CNN
中是怎么对mask
与class
进行解耦的呢?刚才说了在mask
分支中对每个预测类别都会预测一个蒙版,但是不会针对每一个数据沿着他的channel
方向做softmax
处理,而是根据faster r-cnn
分支预测针对该目标的类别信息将mask
分支中针对该类别的蒙版信息提取出来使用。这段话听起来有点绕,晦涩难懂,多理解一下。核心就是mask
分支现在不用自己的分类信息了,把faster r-cnn
的分类信息拿过来当做自己的。
注意2:
训练网络的时候输入MASK
分支的目标是由RPN
提供的,即proposals
,需要注意的是输入给mask
分支的proposals
全都是正样本,正样本是在Faster R-cnn
分支进行正负样本匹配的时候得到的,即将proposals
输入到faster r-cnn
分支,在fasterr-cnn
分支中会进行正负样本的匹配就会得到每个proposal
到底是正样本还是负样本以及这个proposal
他所对应的GT
类别是什么,将得到的所有正样本传递给Mask
分支。
预测的时候输入mask
分支的目标是由faster-cnn
提供,即最后预测的目标边界框。RPN
提供的目标边界框可能并不准确,对于一个目标,RPN
可能提供了多个目标边界框,我们刚说了提供给mask
分支的proposals
都是正样本,所以一定会存在交集,这些proposals
都可以提供给mask
分支进行训练,但是在最终预测的时候是直接使用的Faster R-CNN
分支的输出,因为预测的时候只需要最准确的目标边界框即可,可能就一个目标,将这个目标提供给MASK
分支即可,并且在Faster RCNN
中,通过NMS
处理之后是能过滤掉很多重合在一起的目标,最终送入mask分支的目标也就少一些,目标少一些计算量就会下降。
二.损失函数
损失函数总共三项,就是在Faster R-cnn
的基础上加上了mask
分支所对应的损失。
Loss=Lrpn+Lfastrcnn+LmaskLoss =L_{r p n}+L_{fast_rcnn }+L_{mask } Loss=Lrpn+Lfastrcnn+Lmask
如何计算mask
分支的损失,这里我们借用一篇博主画的图,如上图所示,输入一张图片,经过backbone
和fpn
得到不同采样率的特征层,接着通过RPN
就能生成一系列的proposals
,假设通过RPN
得到了一个Proposal
(图中黑色的矩形框),将proposal
输入给RoIAlign
,就能根据proposal
的大小在对应特征层上进行裁剪得到对应的特征(shape为14×14×C14\times14\times C14×14×C),接着通过Mask Branch
预测每个类别的Mask
信息得到图中的logits(
logits通过
sigmoid激活函数后,所有值都被映射到0至1之间)。上面讲了训练的时候输入mask
的分支的proposal
是由RPN
提供的,并且这些proposal
都是正样本,这些正样本是通过Fast R-CNN
分支正负样本匹配过程知道的,对应图上的proposal
通过faster rcnn
时,在正负样本匹配的时候可以得到对应的GT
是猫,所以将logits
中对应类别猫的预测mask
(shape
为28×2828\times2828×28)提取出来。需要注意的是这里的logits
虽然没有在通道上做softmax
处理,但是会进行sigmoid
激活,也就是会将每个预测值映射到0-1
之间。然后根据Proposal
在原图对应的GT
上裁剪并缩放到28×2828\times2828×28大小,得到图中的GT mask
(对应目标区域为1,背景区域为0)。最后计算logits
中预测类别为猫的mask
与GT mask
的BCELoss(BinaryCrossEntropyLoss)
即可。以上仅仅是以一个proposal
为例的,实际中会有很多。
三.Mask分支预测
在真正预测推理的时候,输入Mask
分支的目标是由Fast R-CNN
分支提供的。如上图所示,前面的backbon+fpn,RPN
跟上面介绍的都是一样的,不再介绍。RPN
输出的proposal
s通过Fast R-CNN分支(注意这里的RoIAlign
跟上面的mask的不一样),我们能够得到最终预测的目标边界框信息以及类别信息。接着将目标边界框信息提供给Mask
分支通过RoIAlign
得到对应的特征,对于每个类别都预测一个mask
,就能预测得到该目标的logits
信息,再根据Fast R-CNN
分支提供的类别信息将logits中对应该类别的Mask
信息提取出来,即针对该目标预测的Mask
信息(shape
为28×2828\times2828×28,由于通过sigmoid
激活函数,数值都在0在这里插入代码片
到1
之间)。然后利用双线性插值将Mask缩放到预测目标边界框大小,并放到原图对应区域。接着通过设置的阈值(默认为0.5
)将Mask
转换成一张二值图,比如预测值大于0.5
的区域设置为前景剩下区域都为背景。现在对于预测的每个目标我们就可以在原图中绘制出边界框信息,类别信息以及目标Mask
信息。
相关文章:

MASK-RCNN网络介绍
目录前言一.MASK R-CNN网络1.1.RoIPool和RoIAlign1.2.MASK分支二.损失函数三.Mask分支预测前言 在介绍MASK R-CNN之前,建议先看下FPN网络,Faster-CNN和FCN的介绍:下面附上链接: R-CNN、Fast RCNN和Faster RCNN网络介绍FCN网络介绍…...

导航技术调研(CSDN_0023_20221217)
文章编号:CSDN_0023_20221217 目录 1. 惯性导航 2. 组合导航技术 3. 卡尔曼滤波 1. 惯性导航 惯性导航系统(INS-Inertial Navigation System)是上个世纪初发展起来的。惯性导航是一种先进的导航方法,但实现导航定位的原理却非常简单,它是…...

买卖股票的最佳时机 I II III IV
121. 买卖股票的最佳时机 自己的思路:采用求最长连续子串和题目的思路 class Solution {public int maxProfit(int[] prices) {if(prices.length 1) return 0;int[] nums new int[prices.length - 1];for(int i 0;i < prices.length - 1;i){nums[i] prices[…...

STM32—LCD1602
LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 1602 即 32 字符(16列两行) 第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最…...

英雄算法学习路线
文章目录零、自我介绍一、关于拜师二、关于编程语言三、算法学习路线1、算法集训1)九日集训2)每月算法集训2、算法专栏3、算法总包四、英雄算法联盟1、英雄算法联盟是什么?2、如何加入英雄算法联盟?3、为何会有英雄算法联盟&#…...

【设计模式】备忘录模式和迭代器模式
备忘录模式和迭代器模式备忘录模式代码示例迭代器模式代码示例使用迭代器遍历集合的同时不能删除/增加元素总结备忘录模式 备忘录模式,也叫快照(Snapshot)模式。 在 GoF的《设计模式》⼀书中,备忘录模式是这么定义的:…...

rapidcsv 写csv文件实例
csv实质是一个文本文件,可以使用rapidcsv写文件操作,如下实例: 第一行实质是从-1行开始,列是从0开始 #include "rapidcsv.h" #include <string> using namespace std; void CMFCApplication1Dlg::OnBnClickedBu…...

数据库--进阶篇--9--存储引擎
MySQL体系结构 索引是在引擎层,所以不同的存储引擎,它的索引结构不同。 存储引擎简介 存储引擎就是存储数据、建立所以、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型。 …...

物品的管理的隐私政策
本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下…...

深度解析首个Layer3 链 Nautilus Chain,有何优势?
以流支付为主要概念的Zebec生态,正在推动流支付这种新兴的支付方式向更远的方向发展,该生态最初以Zebec Protocol的形态发展,并从初期的Solana进一步拓展至BNB Chian以及Near上。与此同时,Zebec生态也在积极的寻求从协议形态向公链…...

配对变量t检验
区别双变量t检验,见:https://mp.csdn.net/postedit/100640098 配对变量为两两相关的变量:如敷药前后体重变化。 要求:两变量服从正态分布。 SPSS演练 打开数据文件:ptest.sav 载地址:https://download.c…...

蓝桥杯三月刷题 第八天
文章目录💥前言😉解题报告💥分数🤔一、思路:😎二、代码:💥回文日期🤔一、思路:😎二、代码:💥迷宫🤔一、思路:😎二、代码&a…...

EXCEL技能点3-常用技能1
1 引用格式 公式中引用单元格或者区域时,引用的类型可分为以下三种: 绝对引用 相对引用 混合引用 在Excel里,每个单元格都有一个编码,就像人的身份证一样,在Excel里是按照行列进行编码,例如A1就是第一列的第一行。 那么我们想要引…...

经典分类模型回顾16-AlexNet实现垃圾分类(Tensorflow2.0版)
AlexNet是2012年由亚历克斯克里斯托夫(Alex Krizhevsky)等人提出的一种卷积神经网络结构,它在ImageNet图像识别比赛中获得了第一名,标志着卷积神经网络的崛起。 AlexNet的结构包括8层网络,其中前5层为卷积层ÿ…...

vue3使用vuex
第一步安装: package.json { "name": "demo", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-c…...

Java面向对象:抽象类的学习
本文介绍了抽象类的基本语法概念,什么是抽象类. Java中抽象类的语法,抽象类的特性 抽象类的作用(抽象类和普通类的区别) 用抽象类实现多态… 抽象类的学习一.什么是抽象类二.抽象类语法三.抽象类的特性四.抽象类的作用五. 抽象类实现多态一.什么是抽象类 在面向对象的概念中&am…...

modbus转profinet网关连接5台台达ME300变频器案例
通过兴达易控Modbus转Profinet(XD-MDPN100)网关改善网络场景,变频器有掉线或数据丢失报警,影响系统的正常运行,将5台 ME300变频器modbus转Profinet到1200PLC,通过网关还可以实现Profinet转modbus RTU协议转…...

多校园SaaS运营智慧校园云平台源码 智慧校园移动小程序源码
智慧校园管理平台源码 智慧校园云平台源码 智慧校园全套源码包含:电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统、SaaS运营云平台(支持多学…...

用DQN实现Atari game(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 强化学习研究的是Agent和环境交互中如何学习最优策略,以获得最大收益。Agent需要能够观察环境(observe)所处的状态&…...

【JavaSE专栏11】Java的 if 条件语句
作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云…...

【opensea】opensea-js 升级 Seaport v1.4 导致的问题及解决笔记
一、opensea 协议升级导致旧包不能使用了 我使用的是 “opensea-js”: "^4.0.12” 版本当SDK。于2023年3月9日之后,不能使用了,需要升级到 Seaport v1.4 协议的包。 报错如下: Error: API Error 400: Please provide an OPEN order type when us…...

JS语法(扫盲)
文章目录一、初识JavaScript二、第一个JS程序JS代码的引入JS程序的输出三、语法变量使用动态类型内置类型运算符强类型语言&弱类型语言条件语句循环语句数组创建数组获取数组元素新增数组元素删除数组元素函数语法格式形参实参个数的问题匿名函数&函数表达式作用域作用…...

归并排序的学习过程(代码实现)
归并排序的学习过程 在知乎上搜索相关内容: 先在必应和知乎上搜索归并排序的概念: 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型…...

add_header重写的坑
问题描述: nginx 的 add_header 配置在很多文档中都标注为:“可以覆盖响应头”,然而并没有说出使用场景,导致不少开发人员在使用 add_header 时都出现了错误:add_header 根本没有重写响应头! add_header 的…...

跑步耳机入耳好还是不入耳好,最适合运动的蓝牙耳机
运动耳机在户外佩戴牢固度以及佩戴舒适度是十分重要的,入耳式的耳机在佩戴当中会更有沉浸式听感,骨传导耳机在运动当中佩戴更舒适、更牢固。在选购时可以按照自己的需求来选购,希望看完这篇对你有所帮助。 1、南卡Runner Pro4骨传导蓝牙运动…...

深度学习知识点简单概述【更新中】
文章目录人工神经网络的定义神经元的定义神经元的功能单层神经网络感知机人工神经网络的定义 人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络(动物的中…...

【编程基础】009.输入两个正整数m和n,求其最大公约数和最小公倍数。
最大公约数与最小公倍数 题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入格式 两个整数 输出格式 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35 题目思路 在这里我们用m表示较大的那个数,n表示较小的数。求…...

Golang错误处理
介绍 如果你写过任何 Go 代码,你可能遇到过内置error类型。Go 代码使用error值来指示异常状态。例如,函数在打开文件失败时os.Open返回一个非零值。error func Open(name string) (file *File, err error) 下面的代码用于os.Open打开一个文件。如果发生错误,它会调用log.Fat…...

English Learning - L2 语音作业打卡 复习对比 [ɑ:] [æ] Day18 2023.3.10 周五
English Learning - L2 语音作业打卡 复习对比 [ɑ:] [] Day18 2023.3.10 周五💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 [ɑ:]…...

LabVIEW中以编程方式获取VI克隆名称
LabVIEW中以编程方式获取VI克隆名称演示如何以编程方式获取VI的名称或克隆名称。如果VI作为顶级VI运行,则将显示VI的名称。如果VI在主VI中用作子VI,它将返回克隆的名称。在项目开发过程中,有时需要获取VI的名称。在此示例中,实现了…...