当前位置: 首页 > 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设计的时候,时常需要使用动态铜皮进行设计,当两块动态铜皮存在交集的时候,避让就会存在一个优先级,如下图 上方的铜皮避让调了下方的铜皮,上方的铜皮被避让了 如何调整让下方的铜皮避让上方的铜皮,如下图 具…...

Windows 10/11下GitHack安装配置全攻略:从Python2到实战测试一步到位

Windows 10/11下GitHack实战配置指南:从环境搭建到漏洞挖掘全解析 在网络安全竞赛和渗透测试领域,.git目录泄露一直是常见的敏感信息泄露漏洞。对于Windows平台的安全研究人员来说,如何快速搭建GitHack工具链并有效利用这一漏洞,是…...

从1M到1T1M:忆阻器阵列结构演进史及其在AI芯片中的应用前景

从1M到1T1M:忆阻器阵列结构演进史及其在AI芯片中的应用前景 在半导体技术持续突破的今天,忆阻器阵列正以其独特的物理特性重新定义计算架构的边界。这种兼具存储与计算能力的纳米级器件,正在神经网络加速领域展现出颠覆性潜力。本文将带您穿越…...

如何快速配置安卓虚拟摄像头VCAM:专业使用技巧完整指南

如何快速配置安卓虚拟摄像头VCAM:专业使用技巧完整指南 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 安卓虚拟摄像头VCAM是一款基于Xposed框架的创新工具,能够将…...

3步实现UMA模型吸附能预测:从数据准备到结果验证完整指南

3步实现UMA模型吸附能预测:从数据准备到结果验证完整指南 【免费下载链接】ocp Open Catalyst Projects library of machine learning methods for catalysis 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp 在催化材料研究中,吸附能是评…...

OCRmyPDF:让扫描PDF焕发新生的开源解决方案

OCRmyPDF:让扫描PDF焕发新生的开源解决方案 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 在数字化办公的浪潮中&#xff0c…...

建筑工地AI监控避坑指南:YOLOv11+PyQt5开发中的7个常见错误

建筑工地AI监控避坑指南:YOLOv11PyQt5开发中的7个常见错误 在建筑工地安全监控领域,AI技术的应用正从概念验证走向规模化落地。YOLOv11作为目标检测领域的新锐算法,配合PyQt5的灵活界面开发能力,确实能构建出高效的安全预警系统。…...

南北阁Nanbeige 4.1-3B Git版本控制实战:从入门到团队协作

南北阁Nanbeige 4.1-3B Git版本控制实战:从入门到团队协作 本文面向刚接触版本控制的开发者,手把手教你用南北阁Nanbeige 4.1-3B掌握Git核心技能,从基础命令到团队协作全流程。 1. 为什么你需要Git版本控制? 刚开始写代码时&…...

突破设备边界:开源串流解决方案Sunshine革新跨设备游戏共享体验

突破设备边界:开源串流解决方案Sunshine革新跨设备游戏共享体验 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/…...

G-Helper:华硕笔记本轻量化控制工具全面解析与实战指南

G-Helper:华硕笔记本轻量化控制工具全面解析与实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...

银河麒麟V10 SP1下使用rsync实现多客户端定时数据备份(避坑指南)

银河麒麟V10 SP1多客户端数据同步全链路配置与优化实战 在IT运维工作中,数据备份如同氧气般不可或缺。想象一下,当数十台客户端设备同时运行时,如何确保关键业务数据能够安全、高效地集中备份?银河麒麟V10 SP1作为国产操作系统的…...