目标检测-Two Stage-Mask RCNN

文章目录

  • 前言
  • 一、Mask RCNN的网络结构和流程
  • 二、Mask RCNN的创新点
  • 总结


前言

前文目标检测-Two Stage-Faster RCNN提到了Faster RCNN主要缺点是:

  • ROI Pooling有两次量化操作,会引入误差影响精度

Mask RCNN针对这一缺点做了改进,此外Mask RCNN还添加了全卷积网络的分支,拓展了网络的应用范围,使其可用于多种视觉任务:包括目标分类、目标检测、语义分割、实例分割、人体姿态识别等


提示:以下是本篇文章正文内容,下面内容可供参考

一、Mask RCNN的网络结构和流程

  1. 利用骨干网架构(Backbone Architecture)提取多尺度特征,获得多尺度共享卷积特征图(Feature Maps)

Backbone Architecture由Backbone(ResNet50)和特征金字塔网络FPN(Feature Pyramid Network)组成
在这里插入图片描述

  1. 利用RPN(Region Proposal Network)网络生成候选框,进行分类和第一次边框修正

ps:输入的是多个尺度特征图,每个特征图对应一个RPN,因为输入是多尺度特征,就不需要再对每层都使用3种不同尺度的anchor了,所以只为每层设定一种尺寸的anchor
在P2-P6的五个特征图上分别对应设置5个不同的anchor size(32, 64, 128, 256, 512)并设置3种长宽比(0.5, 1.0, 2.0),也就是每个特征图的每个像素点生成3个anchor(x, y, w, h)
例如,输入图像为512 × 512,那么五个特征图的尺寸分别为128, 64, 32, 16, 8,那么生成的anchors的数量为(128 × 128 + 64 × 64 + 32 × 32 + 16 × 16 + 8 × 8) × 3 = 21824 × 3 = 65472
在这里插入图片描述

  1. 将生成的Region Proposal和多尺度共享卷积特征图(Feature Maps)输入RoI Align,获取每个候选框的多尺度池化特征图

ps:ROI Align是RoI Pooling的改进
ROI Align并没有采用量化操作,而是使用线性插值算法计算特征图,因为没有用到量化操作,就没有引入误差,即原图中的像素和feature map中的像素是完全对齐的,没有偏差,这不仅会提高检测的精度,同时也会有利于实例分割。
在这里插入图片描述

  1. 将候选框的池化特征图输入Head Architecture结构进行分类、第二次边框修正以及生成掩膜(mask)

ps:当使用FPN时,Head Architecture为左边结构,反之为右边结构,实际使用中右边结构更加常用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、Mask RCNN的创新点

  1. 结合FCN增加了Mask Prediction Branch,使得到的网络可用于多种视觉任务,向通用视觉模型迈出了一步
  2. 提出了RoI Pooling的改良方法RoI Align,提高了精度
  3. 通过引入特征金字塔网络(Feature Pyramid Network,简称FPN)来处理不同尺度的目标,有助于改进目标检测的性能,尤其是小尺寸对象目标检测。

总结

  • 整个Mask R-CNN算法非常的灵活,可以用来完成多种任务,包括目标分类、目标检测、语义分割、实例分割、人体姿态识别等多个任务
  • 除此之外,我们可以更换不同的Backbone Architecture和Head Architecture来获得不同性能的结果。
  • 但是,Mask RCNN仍未脱离Two Stage算法速度慢的限制,难以用于实时场景,因此,出现了目标检测新的流派:One Stage算法

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

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

相关文章

FreeRTOS学习第5篇--任务优先级

目录 FreeRTOS学习第5篇--任务优先级任务优先级设计实验任务一StartDefaultTask任务相关代码片段任务二ColorLED_Test任务相关代码片段任务三IRReceiver_Task相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第5篇–任务优先级 本文目标:学习与使用FreeRTOS…

使用css实现 Typora markdown 标题自动编号

第一,找到主题文件夹 第二,复制下面代码放入 AutoNumber.css文件中 body {counter-reset: h1; }#write h1, .markdown-section h1 {counter-reset: h2; }#write h2, .markdown-section h2 {counter-reset: h3; }#write h3, .markdown-section h3 {counte…

红队打靶练习:SAR: 1

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 小结 目录探测 1、gobuster 2、dirsearch WEB CMS 1、cms漏洞探索 2、RCE漏洞利用 提权 get user.txt 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface:…

tp5+workman(GatewayWorker) 安装及使用

一、安装thinkphp5 1、宝塔删除php禁用函数putenv、pcntl_signal_dispatch、pcntl_wai、pcntl_signal、pcntl_alarm、pcntl_fork,执行安装命令。 composer create-project topthink/think5.0.* tp5 --prefer-dist 2、配置好站点之后,浏览器打开访问成…

自动化网络故障修复管理

什么是故障管理 故障管理是网络管理的组成部分,涉及检测、隔离和解决问题。如果实施得当,网络故障管理可以使连接、应用程序和服务保持在最佳水平,提供容错能力并最大限度地减少停机时间。专门为此目的设计的平台或工具称为故障管理系统。 …

springboot基于Java的小区物业管理系统设计与实现

springboot基于Java的小区物业管理系统设计与实现 源码获取: https://docs.qq.com/doc/DUXdsVlhIdVlsemdX

初始SpringBoot:详解特性和结构

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、SpringBoot…

Android集成OpenSSL实现加解密-集成

导入so 将编译生成的 OpenSSL 动态库文件(.so 文件)复制到你的 Android 项目的 libs 目录中 导入头文件 将编译生成的include文件夹导入到项目中 build.gradle添加配置 defaultConfig {……testInstrumentationRunner "androidx.test.runner…

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

TikTok真题第11天 | 1249.移除无效的括号、23.合并K个升序链表、773.滑动谜题

今天开始整hard题,果然费时。 1249.移除无效的括号 题目链接:1249.minimum-remove-to-make-valid-parentheses 解法: 这个题用栈来处理,用栈来记录左括号的位置,同时用一个向量来记录左括号和右括号是否有效&#x…

Navicat里修改表名和字段名的方法

一 修改表名 如图右键点击表名,选择“重命名”,输入新表名后,再敲回车键就可以保存。注意:新表名不能与已经有的表名重复。 二 修改字段名字及类型 第一步 如图右键点击表名,选择“设计表” 第二步 点击字段名字就可…

二叉堆的简单板子+理解+例题

首先,我们先要了解堆是什么? 堆:是一种高级树状数据结构,是一种完全二叉树。 (完全二叉树指的是,除了叶子节点,每个节点均有左右两个子节点的树状结构) 而,二叉堆是堆的最…