mask-R-CNN

news2024/12/23 9:17:41

前言

代码 论文

# Mask-rcnn 算法在 torch vision 中有直接实现,可以直接引用使用在自己的工作中。
import torchvision
model = torchvision.models.detection.maskrcnn_resnet50_fpn(weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT)

Mask R-CNN(Mask Region-based Convolutional Neural Network)是一种用于目标检测和实例分割的深度学习模型,它是 Faster R-CNN 的扩展,同时可以生成目标的二进制掩码(mask),因此可以实现精确的实例分割。

\1. 骨干网络:Mask R-CNN通常使用骨干网络(如 ResNet)来提取图像特征。这些特征用于目标检测和分割任务。

\2. 区域建议网络(RPN):RPN 用于生成候选区域,它是 Faster R-CNN 中的组件,用于确定可能包含目标的图像区域。

\3. 目标检测:Mask R-CNN 使用区域建议来检测图像中的目标对象,通常通过分类和回归来确定每个目标的位置和类别。

\4. 实例分割:除了目标检测,Mask R-CNN 还生成每个检测到的目标的精确二进制掩码。这允许对目标进行精确的像素级分割。

\5. 多任务学习:Mask R-CNN 采用多任务学习的方法,通过同时训练目标检测和实例分割任务,从而提高模型的性能。

\6. ROI Pooling / ROI Align:用于从特征图中提取每个候选区域的特征,以供后续任务使用。

\7. 损失函数:Mask R-CNN 使用多个损失函数,包括分类损失、回归损失和分割损失,来训练模型。

一、maskrcnn介绍

总体框架

img

针对目标检测算法 Faster-RCNN 加入语义分割算法 FCN,使得完成目标检测的同时也得到语义分割的结果,算法对 Faster-RCNN 的一些细节做了调整,最终的组成部分是 RPN + ROIAlign + Fast-rcnn + FCN。所以要了解 Mask-RCNN 的细节就需要了解 RCNN、Fast-RCNN、Faster-RCNN 这一系列算法的实现过程。

主干结构(backbone)

和前作 Faster RCNN 一样,Mask RCNN 的第一部分是一个标准的 CNN 卷积网络(ResNet50,ResNet101,ResNet50 + FPN,ResNet101 + FPN),目的用来提取图像中的信息。除此之外,Mask-RCNN 还使用了 FPN (Feature Pyramid Networks 特征金字塔网络) 来提升网络的性能。

img

可以看到第二种方法针对 Mask 使用了不同的 RoI,这样 Mask 使用的 RoI 输出大小更大,预测可以做的更精细。 另外,Mask 分支在训练和预测时也有一些小差异,训练网络时的目标是由 RPN 提供的(Proposal),但在预测时的目标是由其他两个分支(Faster-RCNN)提供的,这样做辅助提高了训练模型的能力以及预测的准确度(RPN 提供的类别都是准确的正样本但是完整边界不准确,而预测时 Faster-RCNN 提供的边界是准确的)。

FPN

多尺度特征融合,yolo提过

YOLO_V3

RPN

img

RPN(Region Proposal Network)的主要功能是产生物品检测框。相对于传统方法,RPN生成检测框的速度大大提高,这也是Faster RCNN/Mask RCNN的重要优势,能极快又准地实现预测.

RPN的核心操作是根据特征图按照一定规律生成一系列锚框(anchor box),假设特征图的尺寸为W×H,那么就生成W×H×k个锚框,即特征图上每个点生成k个锚框。一般根据原论文,k取9即选取9个锚框,这9个锚框中有三种形状长宽比分别为{1:1,1:2,2:1}以及三种面积尺度128²,256²,512²,对应生成3×3=9个锚框。

根据上述操作,我们生成了大量的锚框,忽略掉跨越边界的锚框后一般仍有几千至几万个,这些锚框对的候选框之间存在着大量的重叠,RPN采用非极大至抑制的方法,IoU设置为0.7,这样候选框数量大致可以减少到两千个。在这些锚框中进行初步筛选得到固定数量(256个)的锚框用于后续计算,为使得数据平衡,这些锚框中正样本与负样本(背景)的数量要大致相当。

在得到这些锚框后,RPN中还需要完成两项工作,首先判断这个锚框中是否存在待识别的物体,这是一个二分类问题,第二项工作是怎样调整锚框才能使得其和真实值更接近。观察整个RPN网络的具体结构,可以看到RPN网络可以分为两部分,分别用来解决这两个问题:计算分类误差损失以及边界框回归损失。第一部分的输出是一个大小为W×H×k×2的矩阵,只分类锚框中有物品或者是只有背景的概率,故每个锚框有两个输出。第二部分的输出是大小为W×H×k×4的矩阵,用来判断原始锚框需要做的平移以及缩放,这里的损失计算函数与整个模型的计算方式相同,具体细节写在了边界框回归损失部分。

ROI

ROI 意为 Region of Interest 即感兴趣的区域。从 Mask-RCNN 的架构可以看出,ROI 有两部分输入,第一部分是由 backbone 生成的特征图像(feature map),另一部分是由 RPN 生成的检测框 (proposal),ROI 这一部分的主要职责就是把生成的检测框对应到特征图像上。

RoIPooling(老方法)

img

RoIPooling 是 Faster-RCNN 提取特征的模块。整个 RoIPooling 可以分成前后两步,第一步将候选框缩放到特征层上,对于非整数的情况四舍五入取整。第二步操作类似 MaxPooling,将刚得到的区域缩放到一个预定义的大小(比如7x7),当无法整除时各部分大小再次做取整操作,每个区域内选取最大值作为输出。下面是在一个8x6特征图上选取输出大小2x2为的动图示例 。

RoIAlign(改进)

img

RoIAlign 是 Mask-RCNN 对 RoIPooling 的改进,也是用于提取特征,主要是针对 RoIPooling 中的取整操作带来的误差 (misalignment)。ROIPooling 主要有两部分取整带来的误差,第一个是候选框对应到特征层上时的取整,第二个是区域缩放时不能整除时对边界的取整。RoIAlign 主要就是对这两个地方进行优化,对于没有落在真实像素点的计算,不再取整改用最近的四个点进行双线性插值。上面是 Mask-RCNN 原论文中 RoIAlign 的示意图,保留每一步的计算精度不取整直至最后,利用双线性插值计算每个子区域四个点,比较出最大值作为这一部分的输出(最终的采样结果对采样点位置以及采用点个数并不敏感,所以一般都直接使用四个采样点)。

ProposalLayer层

对20W+候选框进行过滤,先按照前景得分排序;取6000个得分高的,把之前得到的每个框回归值都利用上;看总体图可知:将RPN网路的输出作为该模块的输入,首先利用rpn_bbox对anchors进行第一次修正,得到ROI并删除其中的一部分超界的ROI。接着,对剩下的ROI进行score排序,保留其中预测为前景色概率大的一部分。最后,利用NMS获得最终的RP。

DetectionTargetLayer

img

1.之前得到了2000个ROI,可能有pad进来的(0充数的)这些去掉

2.有的数据集一个框会包括多个物体,这样情况剔除掉

3.判断正负样本,基于ROI和GT,通过IOU与默认阈值0.5判断

4.设置负样本数量是正样本的3倍,总数默认400个

5.每一个正样本(ROI),需要得到其类别,用IOU最大的那个GT

6.每一个正样本(ROI),需要得到其与GT-BOX的偏移量

7.每一个正样本(ROI),需要得到其最接近的GT-BOX对应的MASK

8.返回所有结果,其中负样本偏移量和MASK都用0填充

DetectionTargetLayer的输入包含了,target_rois, input_gt_class_ids, gt_boxes, input_gt_masks。其中target_rois是ProposalLayer输出的结果。首先,计算target_rois中的每一个rois和哪一个真实的框gt_boxes iou值,如果最大的iou大于0.5,则被认为是正样本,负样本是是iou小于0.5。选择出了正负样本,还要保证样本的均衡性,具体可以才配置文件中进行配置。最后计算了正样本中的anchor和哪一个真实的框最接近,用真实的框和anchor计算出偏移值,并且将mask的大小resize成28*28,这些都是后面的分类和mask网络要用到的真实的值。

损失函数

img

经过 RoI 处理后的特征矩阵一般有确定大小(原论文是7x7),将这样的矩阵展平经过一系列全链接层得到预测结果,对于 Mask-RCNN 网络有三个预测输出结构,分别输出预测预测的种类类别、预测物品的矩形展示框以及待预测物品的准确边界(像素级分类)。

类别损失

第一种输出种类类别的预测器非常简单,与普通的 CNN 模型后面类似,一系列全连接层激活函数层最后加一层 softmax 层预测各个种类的概率,损失函数使用的是多类别的交叉熵损失函数。

边界框回归损失

第二部分损失是用来物品边界框回归器用来计算边界框的损失。

Mask 损失

第三部分损失是物品准确边界的计算损失。在这一部分中, Mask-RCNN 中选取了 FCN 算法作为 Mask 的预测方法。FCN 算法可以对任意大小的矩阵做像素级分类

总损失

其实 Mask-RCNN 的扩展性非常强,模型结构可以按照具体的问题进行调整,比如在关键点检测中,就可以像 Mask 分支一样再并联一个关键点检测分支。最后的整体误差损失是各个部分的损失加在一起,对于标准的 Mask-RCNN,总损失有 5 部分:类别误差、回归框误差、Mask 预测误差、RPN 类别误差损失、RPN 边界框误差损失,将这些误差损失求和就是整体误差,用来训练评估模型。

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

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

相关文章

uni-app实现拍照功能

直接些这样的组件代码 <template><view><button click"takePhoto">拍照</button><image :src"photoUrl" v-if"photoUrl" mode"aspectFit"></image></view> </template><script&g…

Web(3)网络扫描与window,Linux命令

NMAP各种选项的使用 三种情况修改IP地址总结&#xff1a; 1.为漏洞环境配ip地址 注&#xff1a;1.打开metasploitable后&#xff0c;用mafadmin/msfadmin登录后&#xff0c;重新设置密码&#xff0c;su root登录; 为此创建一个ip地址&#xff0c;命令&#xff1a;ifconfig et…

centos 7.9离线安装wget

1.下载安装包 登录到wget官网上下载最新的wget的rpm安装包到本地 http://mirrors.163.com/centos/7/os/x86_64/Packages/ 2.上传安装包到服务器 3.安装 rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm 4.查看版本 wget -V

智能测径仪数据采集系统 棒材产线智能化提升方向必备

棒材企业通过学习先进技术和进行技术交流&#xff0c;形成了建设智能化生产线的共识&#xff0c;然而棒材生产线目前存在数据采集效率低、物料跟踪难、质量管控弱、成品质量差、库区混乱、成本居高等问题。通过增加钢坯表面检测、钢坯无头焊接、控轧控冷、自动测径、高速冷床、…

C++DAY46

myWidget::myWidget(QWidget *parent): QWidget(parent) {this->resize(1280,720);this->setWindowTitle("300英雄");this->setWindowIcon(QIcon("D:/BaiduNetdiskDownload/孤独摇滚图标/1.png"));this->setStyleSheet("background-color…

AI电销机器人好不好用关键是什么?

影响AI电销机器人是否好用的两个因素分别是&#xff0c;识别系统以及线路。 有很多电销企业都想找一个好用的AI电销机器人&#xff0c;可是什么样的机器人才是好用的机器人呢?有哪些因素会影响AI电销机器人好不好用呢? 添加图片注释&#xff0c;不超过 140 字&#xff08;可选…

内存访问与栈

内存访问与栈 1 内存分段2 DS和[address]3 mov、add、sub指令形式4 栈4.1 入栈与出栈4.2 SS与SP4.3 空栈4.4 栈顶超界4.5 push、pop指令 5 小结 本文属于《 X86指令基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 内存分段 在x86程序执行时&#xff0c;内存会被分段&am…

微信小程序的框架

目录 一、视图层 1. WXML 数据绑定 列表渲染 条件渲染 模板 2. WXSS 尺寸单位 样式导入 内联样式 选择器 3. WXS事件 二、逻辑层 1. 页面生命周期 2.跳转 1. 一级跳一级 2. 一级跳二级 3. 二级跳二级 4. 二级跳一级 总结 带给我们的收获 一、视图层 1. …

竞赛 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0…

微信小程序使用阿里巴巴iconfont,报错Failed to load font http://at.alicdn.com/t/..........

介绍 上篇文章&#xff0c;介绍了&#xff0c;在微信小程序里导入并使用阿里巴巴iconfont图标&#xff1b;但是在页面里使用后&#xff0c;可以看到后台日志有打印错误信息&#xff0c;具体报错如下&#xff1a; 分析 报这个错&#xff0c;是因为项目里使用了 iconfont字体…

OpenCV15-图像边缘检测:Sobel、Scharr、Laplace、Canny

OpenCV15-图像边缘检测&#xff1a;Sobel、Scharr、Laplace、Canny 1.边缘检测原理2.Sobel算子3.Scharr算子4.生成边缘检测滤波器5.Laplacian算子6.Canny算法 1.边缘检测原理 图像的边缘指的是图像中像素灰度值突然发生变化的区域&#xff0c;如果将图像中的每一行像素和每一列…

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高&#xff0c;消费者对生活质量有着越来越高的期望。生活中&#xff0c;各式各样的电气设备为我们的生活带来了便利&#xff0c;在安装使用这些用电器时&#xff0c;需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…

直播美颜技术的技术背后:美颜SDK的原理与实践

对于美颜美颜SDK来说大家都不会陌生&#xff0c;通过它&#xff0c;我们能够实现实时美颜效果&#xff0c;改善视频质量&#xff0c;吸引更多观众。 一、美颜SDK是什么&#xff1f; 美颜SDK为开发者提供了一整套美颜和图像处理功能&#xff0c;用于实时处理直播视频流。这个工…

Android USB分析

先下一个定论&#xff0c;常规来讲&#xff0c;所有作slave的android设备都是配件&#xff0c;作为主机的android设备还是叫Host。此外还有usb tethering支持的radnis功能以及ncm功能&#xff0c;这两个是网络相关的usb应用&#xff0c;使用usb模拟网卡。其中radnis属于上网能力…

如何减轻软件测试的时间压力?6大注意事项

软件测试处于软件研发流程的下游。如果上游的项目进度延迟&#xff0c;往往会遇到通过压缩测试时间来按时交付的情况。 因此软件测试人员经常遇到时间压力&#xff0c;可能会为了赶时间草率测试&#xff0c;导致测试人员无法充分地测试所有功能和场景&#xff0c;影响测试的覆盖…

如何制作有专业水准的的电子杂志:专家教你秘籍

​随着数字化时代的到来&#xff0c;电子杂志作为一种新型的传媒形式&#xff0c;越来越受到人们的关注和喜爱。但是&#xff0c;如何制作一份具有专业水准的电子杂志呢&#xff1f; 今天&#xff0c;给大家分享一款在线就能制作的电子杂志------FLBOOK&#xff0c;让你轻松打造…

【mac】常用命令01

1、如何像windows一样看磁盘&#xff1f; 不断的在上层文件夹显示&#xff0c;找到最上层&#xff0c;拖拽到左侧&#xff0c;方便之后找 2、Macintosh HD显示隐藏文件夹方法 终端窗口&#xff1a; defaults write com.apple.finder AppleShowAllFiles true killall Finder 或者…

Java发起Soap请求

目录 1.前言2.请求报文格式2.1不带表头的请求格式2.2带表头的请求格式 3 请求代码实例3.1解析Soap返回的XML&#xff0c;提取需要的元素 参考 文章所属专区 超链接 1.前言 SOAP请求&#xff08;Simple Object Access Protocol&#xff0c;简单对象访问协议&#xff09;是HTTP…

CEC2013(MATLAB):猎豹优化算法(The Cheetah Optimizer,CO)求解CEC2013

一、猎豹优化算法CO 猎豹优化算法&#xff08;The Cheetah Optimizer&#xff0c;CO&#xff09;由MohammadAminAkbari等人于2022年提出&#xff0c;该算法性能高效&#xff0c;思路新颖。 参考文献&#xff1a; Akbari, M.A., Zare, M., Azizipanah-abarghooee, R. et al. Th…

word误删除的文件怎么恢复?恢复办法分享

在日常工作和学习中&#xff0c;我们常常会使用到Word来撰写文章、毕业论文、方案等。然而&#xff0c;我们可能会遇到Word误删文件的情况&#xff0c;令我们陷入恐慌&#xff0c;特别是这个文件很重要时。幸运的是&#xff0c;有办法找回。下面一起来看下word误删除的文件怎么…