Mask R-CNN

Mask R-CNN 是基于 Faster R-CNN 的改进版本,用于实例分割任务,即在物体检测的基础上进一步为每个目标生成像素级的分割掩码。以下是 Mask R-CNN 的主要改进思路及其关键技术点:

1. 引入分割分支

在 Faster R-CNN 的基础上,Mask R-CNN 添加了一个并行的分割分支。这意味着在进行分类和边界框回归的同时,网络还需要生成目标的分割掩码。

  • 分割分支:分割分支是一个全卷积网络(FCN),用于预测每个 RoI 的二进制掩码。与分类和回归分支共享特征图,但最终输出的是一个每个 RoI 的分割掩码。

训练过程中Mask分支的目标(proposals)是由RPN提供的,且是根据Fast R-CNN产生的正样本进行训练。

预测时的目标则是由Fast R-CNN提供的

2. RoIAlign 代替 RoIPool

在 Faster R-CNN 中,RoIPool 将不同大小的 RoI 转换为固定大小的特征图。但是,RoIPool 使用了量化操作,可能导致特征对齐不精确,从而影响分割掩码的精度。

  • RoIAlign:Mask R-CNN 引入了 RoIAlign 层,去除了量化操作,通过双线性插值的方法,使特征图和 RoI 更加精确对齐,提升了分割的准确度。

2.1RolPooling

两次取整引入了误差导致Misalignment

eg:

import torch
from torchvision.ops import RoIPool


def main():
    torch.manual_seed(1)
    # 第一次取整是将原图映射到特征图上,根据特征图产生的步距进行取整得到特征图上的预测区域
    x = torch.randn((1, 1, 7, 7))
    print(f"feature map: \n{x}")
    # 原始图像上的左上角坐标(10x10)右下角坐标(224x224)
    proposal = [torch.as_tensor([[10, 10, 224, 224]], dtype=torch.float32)]
    # 原始图像到特征图步距为32,第二次取整,由于在特征图上预测的区域大小不一,但后续处理需要统一大小
    # 为统一大小将预测区域统一尺寸输出 即2x2
    roi_pool = RoIPool(output_size=2, spatial_scale=1/32)
    roi = roi_pool(x, proposal)
    print(f"roi pool: \n{roi}")


if __name__ == '__main__':
    main()

运行结果:

2.ROIAlignment

import torch
from torchvision.ops import RoIAlign

# 依据最近的点(f1、f2、f3、f4)的值双线性插值出输出点的值
def bilinear(u, v, f1, f2, f3, f4):
    return (1-u)*(1-v)*f1 + u*(1-v)*f2 + (1-u)*v*f3 + u*v*f4


def main():
    torch.manual_seed(1)
    x = torch.randn((1, 1, 6, 6))
    print(f"feature map: \n{x}")
    
    proposal = [torch.as_tensor([[10, 10, 124, 124]], dtype=torch.float32)]
    roi_align = RoIAlign(output_size=2, spatial_scale=1/32, sampling_ratio=1)
    roi = roi_align(x, proposal)
    print(f"roi align: \n{roi}")

    u_1 = 0.203125
    v_1 = 0.203125
    f1_1 = x[0, 0, 1, 1]  # -1.6091
    f2_1 = x[0, 0, 1, 2]  # -0.7121
    f3_1 = x[0, 0, 2, 1]  # 1.6871
    f4_1 = x[0, 0, 2, 2]  # 0.2284

    u_2 = 0.984375
    v_2 = 0.984375
    f1_2 = x[0, 0, 2, 2]  # 0.2284
    f2_2 = x[0, 0, 3, 2]  # 0.4676
    f3_2 = x[0, 0, 2, 3]  # 0.1991
    f4_2 = x[0, 0, 3, 3]  # 0.0457
    print(f"bilinear(0,0): {bilinear(u_1, v_1, f1_1, f2_1, f3_1, f4_1):.4f}")
    print(f"bilinear(1,1): {bilinear(u_2, v_2, f1_2, f2_2, f3_2, f4_2):.4f}")
    


if __name__ == '__main__':
    main()

运行结果:

3. 多任务损失

Mask R-CNN 使用多任务损失函数,将分类、边界框回归和分割掩码的损失组合在一起进行优化。

  • 损失函数
    • 分类损失:用于目标类别的分类任务,通常是交叉熵损失。
    • 边界框回归损失:用于边界框位置回归,通常是平滑 L1 损失。
    • 掩码损失:用于分割掩码的预测,通常是二分类交叉熵损失。

掩码训练损失:

4. 结构改进

Mask R-CNN 在网络结构上进行了优化,使其能够高效地处理分割任务。

  • 掩码分支:在分类和回归任务之后,增加一个分割掩码分支,独立生成每个 RoI 的分割掩码。
  • 分割通道:每个类别有独立的掩码预测通道,网络输出的是 K × m × m 的掩码,其中 K 是类别数,m × m 是分割掩码的尺寸。

5.预测流程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cms XAMPP搭建帝国cms示例(用于代码审计)

网上大部分都是小皮因为是一键很省事,但本人一直用的xampp所以若有人也是用xampp搭建可以看此篇文章 这里示例为 帝国CMS -v7.5 xampp搭建过程中如果本机存在mysql服务则需要先将mysql服务停止在start xampp的mysql服务 任务管理器----->服务----->找到mys…

这四个有意思的工具,很香

提醒英雄 提醒英雄应用是一款能够帮助用户彻底解决健忘症的应用程序。该应用创建的事项会完全同步到通知中心,并且持续保持在锁屏界面上,只要打开手机,用户就会看到之前设置的提醒事项。这种设计确保了用户在任何时候都能及时收到提醒&#…

软件设计不是CRUD(23):在流式数据处理系统中进行业务抽象落地——详细编码

(接上文《软件设计不是CRUD(22):在流式数据处理系统中进行业务抽象落地——设计思考》) 4、详细设计 项目开发初期,有两种测速雷达和对应的摄像头需要接入,分别是STC500型测速雷达和TTS400型测…

怎么通俗理解概率论中的c r(cramer rao 克拉默拉奥)不等式?

还是推一下比较好记 视频链接 【数理统计学重要定理证明:C-R不等式——无偏估计的方差下界-哔哩哔哩】 https://b23.tv/4gk1AvU 【数理统计学重要定理证明:C-R不等式——无偏估计的方差下界-哔哩哔哩】

C#标志位的使用

C#作为一种功能强大的编程语言,是在.NET框架中广泛使用的语言之一。在实际应用中,C#的标志位在各种系统设计和编程实践中会涉及到。这篇文章将讨论如何使用C#的标志位来跟踪报警声音的播放状态。 报警系统是一种广泛应用的系统,它可以在关键时…

Java网络爬虫入门

文章目录 1、导入依赖2、CrawlerFirst 1、导入依赖 <dependencies><!-- HttpClient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></…

windows解决clion终端中文乱码

windows解决clion终端中文乱码 问题&#xff1a; 解决办法&#xff1a; 添加system("chcp 65001 > nul");

华为手机用户必看:如何使用华为应用市场下载应用?

华为应用市场是华为手机用户专用的应用商店&#xff0c;提供了丰富多样的应用程序供用户下载和安装。以下是详细的步骤和解释&#xff1a; 1. 打开应用市场: 首先&#xff0c;在你的华为手机上找到并点击应用市场的图标。通常情况下&#xff0c;它会在主屏幕上或者应用程序列表…

EOS Black灵魂回响黑色账号注册 EOS Black怎么注册账号教程

又一款新的MMORPG游戏即将上线&#xff0c;游戏名称叫做《灵魂回响&#xff1a;黑色》&#xff0c;游戏继承了《灵魂回响》系列的基本世界观和背景故事&#xff0c;从危险中救出来的阿尔卡纳们沉醉于权力开始堕落, 少数阿尔卡纳还没有忘记自己的本分,为净化世界而努力&#xff…

Java技术驱动的智能ERP系统:打造企业高效管理与创新发展的数字化引擎

随着数字化浪潮的席卷&#xff0c;现代企业对于高效、稳定、易于扩展的管理系统需求愈发迫切。为了满足这一需求&#xff0c;我们倾力打造了一款基于Java技术的企业级资源规划&#xff08;ERP&#xff09;管理系统。该系统以Spring Cloud Alibaba、Spring Boot、MybatisPlus、R…

代码审计中XSS挖掘一些体会

0x01 XSS的挖掘思路 1.1 反射型 直接搜索 echo print_r print之类的函数即可 也可以寻找$_GET变量来判断是否存在输出&#xff08;不过对于代码审计来说除非实在挖不出漏洞&#xff0c;否则没必要关注反射xss&#xff09; 1.2 dom型 和反射型差不多 需要看网站的前端javascr…

实验1_配置标准IPv4 ACL

1、实验目的 通过本实验可以掌握&#xff1a; IPv4 ACL工作方式和工作过程定义编号和命名的标准IPv4 ACL的方法接口和VTY下应用标准IPv4 ACL的方法 2、实验拓扑 配置IPv4 ACL的实验拓扑如图9-2所示 配置 ACL 实验拓扑如下图所示。本实验中&#xff0c;通过配置标准 ACL 实现…

第 54 期:MySQL Too many open files 报错

社区王牌专栏《一问一实验&#xff1a;AI 版》全新改版归来&#xff0c;得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询&#xff0c;表达了想试用体验 ChatDBA 的意愿&#xff0c;对此我们表示感谢 &#x1f91f;。 目前&#xff0c;ChatDBA 还在最后的准备…

56.SAP MII开发的一个系统响应错误 Error code: ICMETIMEOUT

问题 一个SAP MII开发的项目&#xff0c;最近新增了一个功能&#xff0c;查询数据源量比较大&#xff0c;逻辑有点复杂&#xff0c;大约7-8分钟。发布到生产系统后&#xff0c;发生响应错误&#xff0c;返回 Error code: ICMETIMEOUT <!-- Error code: ICMETIMEOUT -->\r…

DAY 45 企业级虚拟化技术KVM

企业级虚拟化技术KVM 1.kvm是什么 kernel virtualization machine 内核虚拟机 qemu的二次开发 软件全拼 qemu-kvm kvm virtulbox ovm vmware vsphere套件&#xff08;vmawre-esxi&#xff09; microsoft hyper-V 2.什么是虚拟化 资源利用 资源隔离 虚拟化管理&…

反激开关电源保险丝以及热敏电阻的选型

保险丝&#xff08;2A/250V&#xff09; 保险丝的选型及计算 1、保险丝的作用就是在电路出现故障造成过流甚至短路时能及时切断电路电源的联系。&#xff08; 保护后 级电路&#xff0c;一旦出现故障&#xff0c;由于电流过大温度过高&#xff0c;保险丝熔断 &#xff09; 2、…

ArcGIS arcpy代码工具——关于工具使用的软件环境说明

系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…

用户需求分析揭秘:最佳实践与策略

大多数产品团队都有自己处理客户需求的一套流程。但是那些潜在的客户和他们的需求呢&#xff1f;如果在产品管理上已经有一定的资历&#xff0c;很可能对此见惯不怪了。 通常&#xff0c;这些需求是销售人员跑来告诉你的&#xff0c;大概就是说&#xff1a;“超棒的潜在客户一…

MySQL 架构

本篇主要介绍一下MySQL的架构 目录 一、整体架构 二、连接层 网络端口 连接管理线程 三、服务层 NoSQL接口与SQL接口 Parser&#xff08;语法分析器&#xff09; Optimizer&#xff08;查询优化器&#xff09; Cache & Buffers(缓存&#xff09; 四、存储引擎层…

AI实时免费在线图片工具5:Glyph-ByT5图上添加文字显示

1、Glyph-ByT5图上添加文字显示&#xff08;支持多语言&#xff1a;中文、英文、韩文等&#xff09; 参考&#xff1a;https://github.com/AIGText/Glyph-ByT5 在线网址&#xff1a; https://huggingface.co/spaces/GlyphByT5/Glyph-SDXL-v2 下面是画框&#xff0c;一个框要点…