Keras框架:实例分割Mask R-CNN算法实现及实现

实例分割

实例分割(instance segmentation)的难点在于:
需要同时检测出目标的位置并且对目标进行分割,所以这就需要融合目标检测(框出目标的位置)以及语义分割(对像素进行分类,分割出目 标)方法。

实例分割–Mask R-CNN

Mask R-CNN可算作是Faster R-CNN的升级版。
Faster R-CNN广泛用于对象检测。对于给定图像,它会给图中每个对象加上类别标签与边界框坐标。 Mask R-CNN框架是以Faster R-CNN为基础而架构的。因此,针对给定图像, Mask R-CNN不仅会 给每个对象添加类标签与边界框坐标,还会返回其对象掩膜。
在这里插入图片描述

Mask R-CNN的抽象架构:

在这里插入图片描述
Mask R-CNN在进行目标检测的同时进行实例分割,取得了出色的效果
在这里插入图片描述

Faster R-CNN与 Mask R-CNN

Mask-RCNN 大体框架还是 Faster-RCNN 的框架,可以说在基础特征网络之后又加入了全连接的分割 子网,由原来的两个任务(分类+回归)变为了三个任务(分类+回归+分割)。Mask R-CNN 是一个 两阶段的框架,第一个阶段扫描图像并生成提议(proposals,即有可能包含一个目标的区域),第二 阶段分类提议并生成边界框和掩码。
在这里插入图片描述
与Faster RCNN的区别:
1)使用ResNet网络
2)将 Roi Pooling 层替换成了 RoiAlign;
3)添加并列的 Mask 层;
4)引入FPN

Mask R-CNN流程

在这里插入图片描述
Mask R-CNN 流程:

  1. 输入一幅你想处理的图片,然后进行对应的预处理操作,获得预处理后的图片;
  2. 将其输入到一个预训练好的神经网络中(ResNet等)获得对应的feature map;
  3. 对这个feature map中的每一点设定预定个的ROI,从而获得多个候选ROI;
  4. 将这些候选的ROI送入RPN网络进行二值分类(positive或negative)和BB回归,过滤掉一部分候 选的ROI(截止到目前,Mask和Faster完全相同);
  5. 对这些剩下的ROI进行ROIAlign操作(ROIAlign为Mask R-CNN创新点1,比ROIPooling有长足进 步);
  6. 最后,对这些ROI进行分类(N类别分类)、BB回归和MASK生成(在每一个ROI里面进行FCN操作) (引入FCN生成Mask是创新点2,使得此网络可以进行分割型任务)。

• backbone:Mask-RCNN使用 Resnet101作为主干特征提取网络, 对应着图像中的CNN部分。(当然 也可以使用别的CNN网络)
• 在进行特征提取后,利用长宽压缩了 两次、三次、四次、五次的特征层来 进行特征金字塔结构的构造。
在这里插入图片描述

Mask R-CNN:Resnet101

1.Resnet 中 Conv Block和Identity Block的结构:
其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度; Identity Block输入维度和输出维度相同,可以串联,用于加深网络
在这里插入图片描述

特征金字塔-Feature Pyramid Networks(FPN)

• 目标检测任务和语义分割任务里面常常需要检测小目标。但是当小目标比较小时,可能在原 图里面只有几十个像素点。
• 对于深度卷积网络,从一个特征层卷积到另一个特征层,无论步长是1还是2还是更多,卷积 核都要遍布整个图片进行卷积,大的目标所占的像素点比小目标多,所以大的目标被经过卷 积核的次数远比小的目标多,所以在下一个特征层里,会更多的反应大目标的特点。
• 特别是在步长大于等于2的情况下,大目标的特点更容易得到保留,小目标的特征点容易被跳 过。
• 因此,经过很多层的卷积之后,小目标的特点会越来越少。
在这里插入图片描述
特征图(feature map)用蓝色轮廓表示, 较粗的轮廓表示语义上更强的特征图。
a. 使用图像金字塔构建特征金字塔。 特征是根据每个不同大小比例的图 像独立计算的,每计算一次特征都 需要resize一下图片大小,耗时, 速度很慢。
b. 检测系统都在采用的为了更快地检 测而使用的单尺度特征检测。
c. 由卷积计算的金字塔特征层次来进 行目标位置预测,但底层feature map特征表达能力不足。
d. 特征金字塔网络(FPN)和b,c一样快, 但更准确。

FPN的提出是为了实现更好的feature maps融合,一般的网络都是直接使用最后一层的feature maps,虽然最后一层的 feature maps 语义强,但是位置和分辨率都比较低,容易 检测不到比较小的物体。FPN的功能就是融合了底层到高层 的feature maps ,从而充分的利用了提取到的各个阶段的 特征(ResNet中的C2-C5)。
在这里插入图片描述
2. 特征金字塔FPN的构建
• 特征金字塔FPN的构建是为了实现特征多 尺度的融合,在Mask R-CNN当中,我们取出在主干特征提取网络中长宽压缩了两次 C2、三次C3、四次C4、五次C5的结果来进 行特征金字塔结构的构造。
• P2-P5是将来用于预测物体的bbox,box- regression,mask的。
• P2-P6是用于训练RPN的,即P6只用于RPN 网络中。
在这里插入图片描述

Mask R-CNN:Roi-Align

3.Roi-Align
Mask-RCNN中提出了一个新的思想就是RoIAlign,其实RoIAlign就是在RoI pooling上稍微改动过 来的,但是为什么在模型中不继续使用RoI pooling呢?
在这里插入图片描述
在RoI pooling中出现了两次的取整,虽然在feature maps上取整看起来只是小数级别的数,但是当 把feature map还原到原图上时就会出现很大的偏差,比如第一次的取整是舍去了0.78(665/32=20.78),还原到原图时是20*32=640,第一次取整就存在了25个像素点的偏差,在第二 次的取整后的偏差更加的大。对于分类和物体检测来说可能这不是一个很大的误差,但是对于实例分割而言,这是一个非常大的偏差,因为mask出现没对齐的话在视觉上是很明显的。而RoIAlign 的提出就是为了解决这个不对齐问题。
在这里插入图片描述
RoIAlign的思想其实很简单,就是取消了取整的这种粗暴做法,而是通过双线性插值来得到固定四 个点坐标的像素值,从而使得不连续的操作变得连续起来,返回到原图的时候误差也就更加的小。 它充分的利用了原图中虚拟点(比如20.56这个浮点数。像素位置都是整数值,没有浮点值)四周 的四个真实存在的像素值来共同决定目标图中的一个像素值,即可以将20.56这个虚拟的位置点对 应的像素值估计出来。
在这里插入图片描述
• 蓝色的虚线框表示卷积后获得的feature map,黑色实线框表示ROI feature。
• 最后需要输出的大小是2x2,那么我们就利用双线性插值来估计这些蓝点(虚拟坐标点,又称双线 性插值的网格点)处所对应的像素值,最后得到相应的输出。
• 然后在每一个橘红色的区域里面进行max pooling或者average pooling操作,获得最终2x2的输出结果。我们的整个过程中没有用到量化操作,没有引入误差,即原图中的像素和feature map中的 像素是完全对齐的,没有偏差,这不仅会提高检测的精度,同时也会有利于实例分割。

Mask R-CNN:分割掩膜

4. 分割掩膜
基于交并比值获得感兴趣区域(ROI)后,给已有框架加上一个掩膜分支,每个囊括特定对象的区域都会被赋予一个掩膜。每个区域都会被赋予一个m×n掩膜,并按比例放大以便推断。
在这里插入图片描述
mask语义分割信息的获取
在之前的步骤中,我们获得了预测框,我们把这个预测框作为mask模型的区域截取部分,利用这个预测框对mask模型中用到的公用特征层进行截取。
截取后,利用mask模型再对像素点进行分类,获得语义分割结果。
mask分支采用FCN对每个RoI产生一个Kmm的输出,即K个分辨率为mm的二值的掩膜,K为分类物体的种类数目。
K
mm二值mask结构解释:最终的FCN输出一个K层的mask,每一层为一类。用0.5作为阈值进行二值化,产生背景和前景的分割Mask。
在这里插入图片描述
对于预测的二值掩膜输出,我们对每个像素点应用sigmoid函数(或softmax等),整体损失定义为平均二值交叉损失熵。引入预测K个输出的机制,允许每个类都生成独立的掩膜,避免类间竞争。这样做解耦了掩膜和种类预测。
在这里插入图片描述
Mask R-CNN的损失函数为:
在这里插入图片描述
Lmask 使得网络能够输出每一类的 mask,且不会有不同类别 mask 间的竞争:
• 分类网络分支预测 object 类别标签,以选择输出 mask。对每一个ROI,如果检测得到的ROI属于哪 一个分类,就只使用哪一个分支的交叉熵误差作为误差值进行计算。
• 举例说明:分类有3类(猫,狗,人),检测得到当前ROI属于“人”这一类,那么所使用的Lmask为 “人”这一分支的mask,即每个class类别对应一个mask可以有效避免类间竞争(其他class不贡献Loss)
• 对每一个像素应用sigmoid,然后取RoI上所有像素的交叉熵的平均值作为Lmask。
**最后网络输出为14
14或者28*28大小的mask,如何与原图目标对应?**
需要一个后处理,将模型预测的mask通过resize得到与proposal中目标相同大小的mask。
在这里插入图片描述

Mask R-CNN—总结

主要改进点:

  1. 基础网络的增强,ResNeXt-101+FPN的组合可以说是现在特征学习的王牌了;
  2. 分割 loss 的改进, 二值交叉熵会使得每一类的 mask 不相互竞争,而不是和其他类别的 mask 比较 ;
  3. ROIAlign解决不对齐的问题,就是对 feature map 的插值。直接的ROIPooling的那种量化操作会使得 得到的mask与实际物体位置有一个微小偏移,是工程上更好的实现方式。

Mask R-CNN:COCO数据集

MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的 Microsoft COCO数据集,与ImageNet竞赛一样,被视为是计算机视觉领域最受关注和最权威的 比赛之一。
COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取图像中的目标,通过精确的segmentation 进行位置的标定。
包括:

  1. 对象分割;
  2. 在上下文中可识别;
  3. 超像素分割;
  4. 330K图像(> 200K标记);
  5. 150万个对象实例;
  6. 80个对象类别;
  7. 91个类别;
  8. 每张图片5个字幕;
  9. 有关键点的250,000人;

代码实现

在资源中

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

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

相关文章

机器学习 缺陷检测_球检测-体育中的机器学习。

机器学习 缺陷检测🚩 目标 (🚩Objective) We want to evaluate the quickest way to detect the ball in a sport event in order to develop an Sports AI without spending a million dollars on tech or developers. Quickly we find out that detec…

使用python和javascript进行数据可视化

Any data science or data analytics project can be generally described with the following steps:通常可以通过以下步骤来描述任何数据科学或数据分析项目: Acquiring a business understanding & defining the goal of a project 获得业务理解并定义项目目…

为什么饼图有问题

介绍 (Introduction) It seems as if people are split on pie charts: either you passionately hate them, or you are indifferent. In this article, I am going to explain why pie charts are problematic and, if you fall into the latter category, what you can do w…

先知模型 facebook_使用Facebook先知进行犯罪率预测

先知模型 facebookTime series prediction is one of the must-know techniques for any data scientist. Questions like predicting the weather, product sales, customer visit in the shopping center, or amount of inventory to maintain, etc - all about time series …

github gists 101使代码共享漂亮

If you’ve been going through Medium, looking at technical articles, you’ve undoubtedly seen little windows that look like the below:如果您一直在阅读Medium,并查看技术文章,那么您无疑会看到类似于以下内容的小窗口: def hello_…

基于Netty的百万级推送服务设计要点

1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类:1&#x…

鲜为人知的6个黑科技网站_6种鲜为人知的熊猫绘图工具

鲜为人知的6个黑科技网站Pandas is the go-to Python library for data analysis and manipulation. It provides numerous functions and methods that expedice the data analysis process.Pandas是用于数据分析和处理的Python库。 它提供了加速数据分析过程的众多功能和方法…

VRRP网关冗余

实验要求 1、R1创建环回口,模拟外网 2、R2,R3使用VRRP技术 3、路由器之间使用EIGRP路由协议  实验拓扑  实验配置  R1(config)#interface loopback 0R1(config-if)#ip address 1.1.1.1 255.255.255.0R1(config-if)#int e0/0R1(config-if)#ip addr…

大熊猫卸妆后_您不应错过的6大熊猫行动

大熊猫卸妆后数据科学 (Data Science) Pandas is used mainly for reading, cleaning, and extracting insights from data. We will see an advanced use of Pandas which are very important to a Data Scientist. These operations are used to analyze data and manipulate…

数据eda_关于分类和有序数据的EDA

数据eda数据科学和机器学习统计 (STATISTICS FOR DATA SCIENCE AND MACHINE LEARNING) Categorical variables are the ones where the possible values are provided as a set of options, it can be pre-defined or open. An example can be the gender of a person. In the …

jdk重启后步行_向后介绍步行以一种新颖的方式来预测未来

jdk重启后步行“永远不要做出预测,尤其是关于未来的预测。” (KK Steincke) (“Never Make Predictions, Especially About the Future.” (K. K. Steincke)) Does this picture portray a horse or a car? 这张照片描绘的是马还是汽车? How likely is …

mongodb仲裁者_真理的仲裁者

mongodb仲裁者Coming out of college with a background in mathematics, I fell upward into the rapidly growing field of data analytics. It wasn’t until years later that I realized the incredible power that comes with the position. As Uncle Ben told Peter Par…

优化 回归_使用回归优化产品价格

优化 回归应用数据科学 (Applied data science) Price and quantity are two fundamental measures that determine the bottom line of every business, and setting the right price is one of the most important decisions a company can make. Under-pricing hurts the co…

大数据数据科学家常用面试题_进行数据科学工作面试

大数据数据科学家常用面试题During my time as a Data Scientist, I had the chance to interview my fair share of candidates for data-related roles. While doing this, I started noticing a pattern: some kinds of (simple) mistakes were overwhelmingly frequent amo…

scrapy模拟模拟点击_模拟大流行

scrapy模拟模拟点击复杂系统 (Complex Systems) In our daily life, we encounter many complex systems where individuals are interacting with each other such as the stock market or rush hour traffic. Finding appropriate models for these complex systems may give…

vue.js python_使用Python和Vue.js自动化报告过程

vue.js pythonIf your organization does not have a data visualization solution like Tableau or PowerBI nor means to host a server to deploy open source solutions like Dash then you are probably stuck doing reports with Excel or exporting your notebooks.如果…

plsql中导入csvs_在命令行中使用sql分析csvs

plsql中导入csvsIf you are familiar with coding in SQL, there is a strong chance you do it in PgAdmin, MySQL, BigQuery, SQL Server, etc. But there are times you just want to use your SQL skills for quick analysis on a small/medium sized dataset.如果您熟悉SQ…

计算机科学必读书籍_5篇关于数据科学家的产品分类必读文章

计算机科学必读书籍Product categorization/product classification is the organization of products into their respective departments or categories. As well, a large part of the process is the design of the product taxonomy as a whole.产品分类/产品分类是将产品…

交替最小二乘矩阵分解_使用交替最小二乘矩阵分解与pyspark建立推荐系统

交替最小二乘矩阵分解pyspark上的动手推荐系统 (Hands-on recommender system on pyspark) Recommender System is an information filtering tool that seeks to predict which product a user will like, and based on that, recommends a few products to the users. For ex…

python 网页编程_通过Python编程检索网页

python 网页编程The internet and the World Wide Web (WWW), is probably the most prominent source of information today. Most of that information is retrievable through HTTP. HTTP was invented originally to share pages of hypertext (hence the name Hypertext T…