【图解】Mask R-CNN 架构

 Mask R-CNN 是一种自顶向下(top-down)的姿态估计模型,它是在 Faster R-CNN [44] 这个目标检测框架的基础上扩展而来的。目标检测是指从图像中检测出不同类别的物体,并且输出它们的边界框(bounding box)。

Mask R-CNN 的结构包括一个标准的基础 CNN,通常是一个 ResNet [18] ,用于从图像中提取特征,然后将这些特征输入到一些专门针对不同任务训练的小型神经网络中,用于提出物体候选(RPN [44])

RPN 的输出是一个二元组 (rpn_class, rpn_bbox) ,其中:

  • rpn_class 是一个二维数组,表示每个锚点(anchor)的类别概率。锚点是一种预定义的边界框,它们覆盖了图像中不同的位置、大小和形状。RPN 会对每个锚点进行二分类,判断它是否包含了物体(foreground)或者背景(background)。rpn_class 的形状是 (batch, anchors, 2) ,其中 batch 是批次大小,anchors 是锚点的总数,2 是类别数。rpn_class 中每个元素是一个长度为 2 的向量,表示该锚点属于 foreground 或者 background 的概率。
  • rpn_bbox 是一个二维数组,表示每个锚点的边界框偏移量。边界框偏移量是指将锚点调整为更贴合物体的位置和大小所需要的平移和缩放的量。rpn_bbox 的形状是 (batch, anchors, 4) ,其中 batch 是批次大小,anchors 是锚点的总数,4 是偏移量的维度。rpn_bbox 中每个元素是一个长度为 4 的向量,表示该锚点在 x, y, w, h 四个方向上的偏移量,其中 x, y 是中心坐标,w, h 是宽度和高度。

 region proposals+Feature Map 不同大小和形状,后续难以统一处理,所以需要RoIAlign 。

RoIAlign 的输出是一个固定大小的 feature map,比如 7 x 7 x C ,其中 C 是通道数。这个 feature map 是从输入的 feature map 中根据 RoI 的位置和大小进行裁剪和插值得到的。RoIAlign 使用了双线性插值(bilinear interpolation)来计算 feature map 中每个像素点的值,使得 feature map 更加平滑和精确。

为了从 RoIAlign 的输出得到 box 和 class,Mask R-CNN 使用了一个叫做 box head 的小型神经网络,它由两个全连接层(fully connected layer)组成。box head 的输入是 RoIAlign 的输出,也就是一个固定大小的 feature map。box head 的输出是一个长度为 K+4 的向量(vector),其中 K 是类别数。这个向量表示每个 RoI 的类别概率和边界框偏移量,也就是说,前 K 个元素是一个 one-hot 向量,表示该 RoI 属于哪个类别的概率,后 4 个元素是一个四维向量,表示该 RoI 在 x, y, w, h 四个方向上的偏移量,其中 x, y 是中心坐标,w, h 是宽度和高度。

通过 box head 的输出,我们可以得到每个 RoI 的类别和边界框,用于后续的 Mask R-CNN 的分割任务。

为了从 RoIAlign 的输出得到 mask,Mask R-CNN 使用了一个叫做 mask head 的小型神经网络,它由两个卷积层(convolution layer)和一个反卷积层(deconvolution layer)组成。mask head 的输入是 RoIAlign 的输出,也就是一个固定大小的 feature map。mask head 的输出是一个 28 x 28 x K 的张量(tensor),其中 K 是类别数。这个张量表示每个类别对应的 mask 的概率分布,也就是说,每个类别有一个 28 x 28 的 mask,表示该类别物体在图像中的位置和形状。为了得到最终的 mask,我们需要根据分类结果选择对应的类别,并且将 mask 进行二值化(binarization),即将大于某个阈值(比如 0.5)的像素点设为 1 ,表示物体,将小于等于阈值的像素点设为 0 ,表示背景。

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

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

相关文章

k8s概念-深入pod

回到目录 工作负载(workloads) 工作负载(workload)是在kubernetes集群中运行的应用程序。无论你的工作负载是单一服务还是多个一同工作的服务构成,在kubernetes中都可以使用pod来运行它 workloads分为pod与control…

js实现原型链污染,沙箱绕过

一、沙箱绕过 1.概念 沙箱绕过"是指攻击者利用各种方法和技术来规避或绕过应用程序或系统中的沙箱(sandbox)。沙箱是一种安全机制,用于隔离和限制应用程序的执行环境,从而防止恶意代码对系统造成损害。它常被用于隔离不受信…

【机器学习】Feature Engineering and Polynomial Regression

Feature Engineering and Polynomial Regression 1. 多项式特征2. 选择特征3. 缩放特征4. 复杂函数附录 首先,导入所需的库: import numpy as np import matplotlib.pyplot as plt from lab_utils_multi import zscore_normalize_features, run_gradien…

《C和指针》(6)指针

1、内存和地址 计算机的内存是由数以亿万计的位(bit)组成,每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限,所以单独的位用处不大。通常许多为合成一组作为一个单位,这样就可以存储范围较大的值。下图…

VMware vSphere整体解决方案及实验拓扑

VMware vSphere整体解决方案及实验拓扑 VMware vSphere完整的解决方案 VMware vSphere有两个核心组件:ESXI,vCenter。ESXI实现的是单机虚拟化,而vCenter实现集群虚拟化,把所有的ESXI统一进行管理。当然了,要想是实现…

【福建事业单位-推理判断】03类别推理

【福建事业单位-推理判断】03类别推理 一、类别推理1.1语义关系考点一、近义反义关系(不需要严格的,意思相近即可)近义反义的二级辨析(感情色彩)考点二:比喻义、象征义 1.2 逻辑关系1.2.1全同关系&#xff…

提交App Store应用图标不能包含alpha通道

近日提交APP至App Store时遇到一个问题,在交付ipa时出现一个图标不符合规定的提示 翻译过来就是 资产验证失败(90717)应用商店图标无效。“HBuilder.App”中资产目录中的应用商店图标不能是透明的,也不能包含alpha通道。 因为我…

PHP8的数据类型转换-PHP8知识详解

什么是数据类型转换? 答:数据从一个类型转换成另外一个类型,就是数据类型转换。 在PHP8中,变量的类型就是由赋值决定的,也就是说,如果 string 赋值给 $var,然后 $var 的类型就是 string。之后…

flex 弹性布局

Flex 布局的使用 任何一个容器都可以指定为 Flex 布局。 .box{ display: flex; //flex作为display的一个属性使用 } 行内元素也可以使用 Flex 布局。 .box{ display: inline-flex; } 注意:设为 Flex 布局以后,子元素的float、clear和vertical-align…

c高级:day3

作业: 1. 整理思维导图 2.判断家目录下,普通文件的个数和目录文件的个数 #!/bin/bash ######################################################################## # File Name: zy1.sh # Created Time: 2023年08月04日 星期五 19时13分08秒 ##############################…

C++ __builtin_popcount函数作用

__builtin_popcount函数是系统自带的一个返回值是int/long/long long二进制1的个数的函数。 对于int,long, long long分别用一下三种函数: __builtin_popcount(unsigned int n)//返回值为int __builtin_popcountl(unsigned int n)//返回值为…

深入理解MVVM架构模式

MVVM原理 MVVM是一种用于构建用户界面的软件架构模式,它的名称代表着三个组成部分:Model(模型)、View(视图)和ViewModel(视图模型)。MVVM的主要目标是将应用程序的UI与其底层数据模…