当前位置: 首页 > news >正文

Mask R-CNN 算法学习总结

Mask R-CNN 相关知识点

  • 整体框架
  • 1.Resnet 深度残差学习
    • 1.1 目的
    • 1.2 深度学习深度增加带来的问题
    • 1.3 Resnet实现思想【添加恒等映射】
  • 2.线性插值
    • 2.1 目的
    • 2.2 线性插值原理
    • 2.3 为什么使用线性插值?
  • 3.FPN 特征金字塔
    • 3.1 FPN介绍
    • 3.2 为什么使用FPN?
    • 3.3 自下而上层【提取特征】
    • 3.4 自上而下层【横向连接,特征融合】
  • 4. Anchors(候选框生成)
    • 4.1 实现步骤
  • 5. RPN 区域建议网络
    • 5.1 目的
    • 5.2 实现步骤
  • 6. ROI 感兴趣区域
    • 6.1 目的
    • 6.2 实现步骤
  • 7. DetectionTargetLayer【目标检测层】
    • 7.1 目的
    • 7.2 实现步骤
  • 8. RoiAlign 水平对齐
    • 8.1 为什么使用线性插值实现?【使用RoIPool带来的问题】
    • 8.2 使用ROIAlign 与RoiPool的原因
    • 8.3 ROIAlign优点
    • 9.分类与回归

  • 相关文章链接
    • Resnet论文
    • Mask R-cnn论文
    • 线性插值原理

整体框架

在这里插入图片描述

1.Resnet 深度残差学习

1.1 目的

  • 防止增加深度模型loss增加问题

1.2 深度学习深度增加带来的问题

  • 梯度消失与爆炸问题
  • 退化问题:随着网络深度的增加,准确度会饱和,然后迅速退化。

1.3 Resnet实现思想【添加恒等映射】

  • 增加模型层数与恒等映射做对比,如果增加层数效果变差,就把权重设置接近于0的值。【近似于没有增加模型深度】
  • 确保较深的模型应该不会比较浅的模型产生更高的训练误差。
    在这里插入图片描述
  • Convolution Blockidentity Block区别
    • Convolution Block通道数和特征图大小变化
      在这里插入图片描述

2.线性插值

2.1 目的

  • 减少像素特征不对齐问题
  • 降低预测框误差

2.2 线性插值原理

  • 单线性插值: 根据2点确定一条直线,斜率固定,就可以得到插入值的位置
  • 多线性插值就是多次的但线性插值得到的

2.3 为什么使用线性插值?

  • 对图片上采样,原始图片3∗33*333范围红色框中的值,会得到4∗44*444框中红色框的值。
  • 假设目标图片红框坐标为(i,j)(i,j)(i,j),那么在原始图片位置(i∗3/4,j∗3/4)(i*3/4,j*3/4)i3/4,j3/4
  • 已知i=2,j=3i=2,j=3i=2,j=3i = 2 , j = 3 i=2,j=3i=2,j=3i=2,j=3i=2,j=3i=2,j=3,所以在原始图片位置(1.5,0.75)( 1.5 , 0.75 )(1.5,0.75)
    • 不是整数,在找原始图片位置时,会自动取整
    • 即,需要使用线性插值,来降低误差
      在这里插入图片描述

3.FPN 特征金字塔

3.1 FPN介绍

  • 横向连接的自顶向下结构
  • 用来提取特征和特征融合

3.2 为什么使用FPN?

  • 在特征提取中去最后一层特征图,对图片语义性较高,但是对于图片的小物体,零散特征不多,使小物体在图片中检测的效果不好
  • 将多个阶段特征图融合在一起,有了高层语义特征,也有了底层轮廓特征,效果会更好
    在这里插入图片描述

3.3 自下而上层【提取特征】

  • 使用Resnet深度残差算法主干结构提取特征,返回每个阶段最后一层的数据。
    • 不改变特征图大小的层为一个阶段
    • 每次提取特征都是每个阶段最后一层的输出

3.4 自上而下层【横向连接,特征融合】

  • 使用1*1卷积核将特征图大小统一
  • 使用线性插值进行上采样与此阶段的前一个阶段进行特征融合,以此类推,返回特征融合后每个阶段的值
  • 例如:C5阶段的特征图上采样后与C4的特征图融合,得到P4
    在这里插入图片描述

4. Anchors(候选框生成)

4.1 实现步骤

  • 对提取的特征图进行区域金字塔网络
  • 将生成很多不同的候选框,在图片上进行提取特征,一个图片会提取出多种特征图
  • anchors(候选框生成):以每个像素点为中心,设置3个不同大小的scales,每个scales3个不同的roatis,生成各种框
  • 例如:scales:(32, 64, 128),roatis([0.5, 1, 2]),所以每个像素点会生成9个不同的框
    在这里插入图片描述

5. RPN 区域建议网络

5.1 目的

  • 提取前景与背景
  • RPN具有平移不变性
    • 在不同位置的同一物体都可以检测出来,因为生成了很多框

5.2 实现步骤

  • 分类:对生成的候选框进行二分类,判断是前景还是背景
  • 回归:得到候选框偏移量【ground-truth与候选框偏移大小】
  • 将生成的候选框做前景和背景二分类
    • 返回分类得分,分类概率,区域框数据
      在这里插入图片描述

6. ROI 感兴趣区域

6.1 目的

  • 筛选有用的候选框

6.2 实现步骤

  • 按照前景得分排序,取前n个的得分最高的候选框
  • 根据候选框偏移量微调候选框位置,使候选框更接近grouth-truth
  • 对于越界的候选框,进行范围修剪
  • IOU过滤:筛选出候选框与ground-truth重叠比例大于阈值的候选框
  • MNS(非极大值抑制)过滤:候选框重叠比例大于阈值的最高得分候选框
  • 根据得分值选择前n个得分最高的前景,获取正样本数据集

在这里插入图片描述

7. DetectionTargetLayer【目标检测层】

7.1 目的

  • 找到正样本GT的类别,IOU最大的类别
  • 正样本与GT-box的偏移量
  • 正样本与GT-box对应的掩码mask,即实例分割框
  • 负样本的偏移量与mask使用0填充

7.2 实现步骤

  • 去除padding填充的候选框
  • 获取前n个得分最高的前景数量不够,会使用padding填充,凑齐n个前景
  • 去除一个框包含多个物体的去除
  • 正负样本判断:基于ROIground-truth,通过IOU值与默认阈值0.5判断
  • 数据集正负比例为1:3

8. RoiAlign 水平对齐

8.1 为什么使用线性插值实现?【使用RoIPool带来的问题】

  • 当一个特征图大小为800时,物体大小是665,对特征图进行卷积,假设特征图缩小了32倍,800/32=25,得到新的25大小特征图,但是665/32=20.78,所以物体的位置应该在25特征图上占20.78,但是他们会舍弃小数,实际是占20的大小
  • 将物体映射到原图,会损失0.78*32=24.96个像素点,对于大物体偏差不大,但是对于小物体偏差就会很大【如果出现奇数就会出现这个问题】

8.2 使用ROIAlign 与RoiPool的原因

  • 网络进入全连接层,需要保持特征图大小一致

8.3 ROIAlign优点

  • 消除了RoIPool的苛刻量化【向下取整】,将提取的特征与输入正确对齐
  • RoIPool没有pixel-to-pixel之间对齐关系,不能预测到原图位置的像素点,预测位置具有较大的误差。
    在这里插入图片描述

9.分类与回归

  • 将所有特征图大小统一后,就可以进入全连接层
  • 进行相关分类与回归操作

相关文章:

Mask R-CNN 算法学习总结

Mask R-CNN 相关知识点整体框架1.Resnet 深度残差学习1.1 目的1.2 深度学习深度增加带来的问题1.3 Resnet实现思想【添加恒等映射】2.线性插值2.1 目的2.2 线性插值原理2.3 为什么使用线性插值?3.FPN 特征金字塔3.1 FPN介绍3.2 为什么使用FPN?3.3 自下而上层【提取特征】3.4 …...

Gorm -- 添加记录

文章目录添加单条记录直接添加模型对象赋予默认值方法一: gorm 标签赋予默认值方法二: 设置钩子方法(Hooks)指定字段插入插入时忽略某些字段插入时禁止使用钩子方法添加多条记录通过对象列表插入通过字典列表插入在字典中使用SQL内…...

go提高升阶(四) I/O流学习

I/O 官网课程 购买课程找博主推荐 文章目录I/O文件信息创建文件、目录IO读IO写(权限)文件复制Seeker接口断点续传遍历文件夹bufio电脑中一切,都是以 二进制流的形式存在的。jpg:010100000010010101001010101010010101010 编码格式,还原为一个…...

【代码随想录训练营】【Day28】第七章|回溯算法|93.复原IP地址|78.子集|90.子集II

复原IP地址 题目详细:LeetCode.93 这道题与上一道练习题分割回文字符串十分详细,一样是涉及到分割字符串、判断字符串、递归与回溯的问题,所以这道题要解决的难点在于: 如何分割IP地址字符串如何判断分割的IP地址是否合法递归的…...

Get请求和Post请求区别

前后端交互请求数据的方式有很多种。 例如:Get Post Put Patch Delete Copy 等等很多请求方式 但是用的最多的就是Get和Post Get请求方式 1. get多用于从服务器请求获取数据 2.get传送的数据量较小,不能大于2KB 3.get安全性非常低 Post请求方式 1.…...

static关键字

static的基本基本用法可以分为下面几种: (1)static修饰全局变量 (2) 修饰局部变量 (3)修饰普通函数 (4)修饰类的成员变量 一、static修饰全局变量 当同时编译多个文件时…...

A Comprehensive Tool for Modeling CMOS Image-Sensor-Noise Performance论文总结及翻译

A Comprehensive Tool for Modeling CMOS Image-Sensor-Noise Performance Author: Ryan D. Gow Link: https://ieeexplore.ieee.org/document/4215175/metrics#metrics Select: ⭐️⭐️⭐️⭐️ Type: Academic Journal 备注: CMOS图像传感器噪声性能建模的综合工具 总结 …...

嘀嗒出行再闯IPO:千军万马我无懈

羽扇纶巾笑谈间,千军万马我无懈。 在激烈竞争中再度冲刺港交所IPO的嘀嗒出行,闪露出一丝歌词里的气魄。交通运输部下属网约车监管信息交互系统的数据显示,截至2023年1月31日,全国共有300家网约车平台公司取得网约车平台经营许可。…...

MATLAB算法实战应用案例精讲-【优化算法】增强型鲸鱼优化算法(EWOA)(附matlab代码实现)

前言 增强型鲸鱼优化算法(Enhanced Whale Optimization Algorithm,EWOA)是Mohammad H. Nadimi-Shahraki等人于2022年提出的一种改进算法。由于标准的鲸鱼优化算法及其它的改进算法都存在种群多样性低和搜索策略差的问题,因此引入有效的策略来缓解鲸鱼优化算法的这些核心缺点…...

登录Oracle数据库遇到ORA-01017密码错误的解决办法

文章目录症状分析解决办法欢迎加下方我的微信👇,拉你入学习群我们在登录Oracle数据库时可能会遇到ORA-01017错误,这里分析原因并提供解决办法。点击试看博主的专著《MySQL 8.0运维与优化》(清华大学出版社) 症状 图像…...

10个黑客基础教程!简单有效

如果你的电脑运行缓慢,请使用下面介绍的方法来帮助加速、优化和提高电脑的性能。 1.关闭启动时自动运行的应用程序 计算机上安装的许多应用程序都可以将自己配置为在启动期间自动启动并继续在后台运行,但是,如果不是每天都使用这些应用程序…...

JPA之实体之间的关系

JPA之实体之间的关系 10.1.1实体类创建 注解的应用 Table,Entity IdGeneratedValue指定主键,Column P174 实体类编写规范 Table(name "t_user") Entity(name "User") public class User implements Serializable {IdGeneratedVa…...

如何在 C++ 中调用 python 解析器来执行 python 代码(三)?

本文在 C 中调用 multi.py 脚本,并向它传入参数并执行,然后获得返回值并在 C 中打印结果。 目录 如何在 C 中调用 python 解析器来执行 python 代码(一)?如何在 C 中调用 python 解析器来执行 python 代码&#xff0…...

【Linux】gcc/g++/gdb的使用

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️社区 : 进步学堂       🛰️欢迎关注:👍点赞🙌收…...

浅浅谈一谈B树和B+树

目录: 🚀1.B树 🚀2.B树 索引背后的数据结构是啥呢,是B树,是为了数据库索引设计的,我们可以先了解B树,再说B树 1.什么是B树 B树也叫B-树,这里的-不读减,是一个符号 我们已经学过了二叉搜素树,B树其实就是N叉搜素树,二叉搜索树只能在每一个结点放一个…...

Keil新建一个国民32位MCU工程

1.打开Keil软件,点击Project→New uVision→Project 2.将工程保存到自己的工程文件夹,并给项目命名,点击保存 3.选择自己需要开发的芯片,点击OK 4.点击OK 5.出现上图所示,工程已经建好了,点击配置工程。 6.…...

webpack.config.js与package.json文件的配置

path要使用绝对路径,通过每次复制文件位置非常麻烦且容易导致问题 使用node中的 写个包名跟入口名称,其他全部回车 此步完成后,自动生成一个package.json包 licence指的是开源,一般不写 安装文件夹需要的依赖 dirname是node自带…...

超详细Eclipse配置JDK

在此附上Eclipse安装教程 超详细Eclipse安装教程 在此附上JDK1.8安装配置教程 超详细JDK1.8安装与配置 ①打开Eclipse–>点击Window–>点击Preferences ②找到Java–>找到Installed JREs–>点击Add… ③选中Standard VM–>之后点击Next ④点击Directory找…...

成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares

成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares 目录 解决问题 解决思路 解决方法—四大原因分析 T1、数据本身问题的解决方法...

Allegro如何设置铜皮避让的优先级操作指导

Allegro如何设置铜皮避让的优先级操作指导 在用Allegro进行PCB设计的时候,时常需要使用动态铜皮进行设计,当两块动态铜皮存在交集的时候,避让就会存在一个优先级,如下图 上方的铜皮避让调了下方的铜皮,上方的铜皮被避让了 如何调整让下方的铜皮避让上方的铜皮,如下图 具…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...