ROI Align 解析

2023-10-31

    ROI Align 是何凯明在2017年的论文Mask-RCNN中提出的,该方法很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)问题。本文将先从实验结果入手,然后分析ROI Pooling产生局限性的具体原因和ROI Align的解决方法,最后就两种方法的反向传播公式进行简单说明。

实验对比

    首先通过论文中针对ROI Align和ROI Pooling的实验结果感受下ROI Align的强大。

    翻译过来就是,(c)表中基于ResNet-50-C4框架的结果中,ROI Align的分割效果明显好于ROI Pooling 和ROI Warp的效果;平均池化和最大化池化后的结果差不多,论文中多是用的平均池化的方法。(d)表中基于ResNet-50-C5框架的实验中,使用ROI Align在检测和分割领域的AP都比ROI Pooling的结果要高;池化输入的特征图比网络输入图的缩小比例越大,则ROI Align的效果越明显(缩小32倍的AP30.9大于缩小16倍的AP30.3)。

ROI Pooling的局限性

    ROI Pooling是针对ROI的Pooling操作,整个过程中涉及的两次量化分别发生在对ROI坐标和对ROI划分为等大子区域上的量化。ROI可以有不同的获得方法,如在Faster R-CNN中是由RPN回归得到,故ROI的坐标一般为浮点数,此处需要量化为整数;ROI均分为等大的子区域时,若不能整除,则需要量化。如下图,665*665的矩形框经主干网络后的缩放步长为32,此框的大小也变为665/32=20.78,此时ROI Pooling将其量化为20;池化层的输出大小为7*7,等分后的子区域大小为20/7=2.86,此时将等分后的子区域大小量化为2。图中绿色栅格与其临近红色矩形框间的空白区域显示了经过两次量化后的偏差。由缩放步长可知,该特征图上1个像素的偏差在原图上就是32个像素的差别,这对小物体的检测效果影响很大。


图片1来源:https://leanote.com/api/file/getImage?fileId=5a168ad8ab644140060025d3

ROI Align的思想和实现方法

    ROI Align从ROI Pooling局限性的源头上进行了改进,也就是取消了量化操作,对于量化中产生的坐标为浮点数的像素,利用双线性插值计算其像素值。值得注意的是,ROI Align并不需要对两步量化中产生的浮点数坐标的像素值都进行计算,而是设计了一套优雅的流程。


图2 Mask R-CNN中截图

    论文中ROI Align的实现方法如上图所示,。其中,虚线框表示feature map,实线框表示一个ROI,Pooling输出大小为2*2,每个子区域中有四个采样点。ROI Align基于双线性插值的方法,利用feature map上距离采样点最近的四个像素得到其像素值。整个过程中没有对ROI,均分ROI产生的子区域(bins)和采样点进行量化。每个bin中采样点的数目和位置存在一定的规则,即若采样点数为1,则该点位于bin的中心位置;若采样点数为4,则采样点的位置为均分该bin为4个小矩形后各自的中心点。通常这些采样点的坐标为浮点数,所以需要用到插值的方法获得其像素值。利用该方法对图1处理后的结果如下所示。


图片3来源:https://leanote.com/api/file/getImage?fileId=5a168afaab644140060025d6 

ROI Align的反向传播

    通常,池化方法的反向传播公式如下。


    式中,代表池化前特征图上的点,代表池化后第r个bin中的第j个点,i*(r,j)代表像素点的来源(最大化池化的时候是最大像素值所在位置的坐标)。由公式可知,只有当池化中利用到当前点的像素值(即满足i=i*(r,j))时,才会在处回传梯度。

    类比于ROI Pooling,ROI Align的反向传播需要做如下修改:池化后i*(r,j)是一个浮点数坐标,在池化前的特征图中,每一个与i*(r,j)横纵坐标差值小于1的像素点(即双线性插值时特征图上的四个点),都应该接受池化后点回传的梯度,故ROI Align的反向传播公式如下。


    公式中,d(.)表示像素点的距离,Δh和Δw表示与i*(r,j)横纵坐标的差值,这里作为双线性插值的系数乘在原始梯度上。


参看文献:

  1. http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROI Align 解析 的相关文章

  • (python)牛客网(华为机试一)——入门

    本博客为博主解题的部分记录 由于均为自己写的 所以答案并非最优解 有很多地方可以优化 其他题解合集 python 牛客网 华为机试二 简单 python 牛客网 华为机试三 中等 python 牛客网 华为机试四 较难 题目 HJ17 取近
  • c++模板与泛型编程

    函数模板 template
  • git clone弹出登录验证框 登录无效 -Windows环境

    git篇 git clone弹出登录验证框 登录无效 Windows环境 在这里插入图片描述 使用git clone下载代码的时候 弹出github登录界面 确认账户密码正确的情况下 依旧重复弹出 原因是Github 禁用了TLS v1 0
  • 他98年的,我玩不过他...

    现在的小年轻真的卷得过分了 前段时间我们公司来了个98年的 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好 一大家子指望他一个人

随机推荐

  • LeetCode 之 剑指 Offer 24. 反转链表(Java)

    文章目录 LeetCode 之 剑指 Offer 24 反转链表 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 24 反转链表 Java 一 题目 剑指 Offer 24 反转链表 定义一个函数 输入一
  • 大数据处理框架MapReduce

    大数据处理框架MapReduce是一种用于处理大规模数据集的编程模型和计算框架 它能够将大规模数据集分解为多个小的数据块 并在分布式计算环境中进行并行处理 MapReduce采用了一种简单而有效的数据处理模式 由两个主要的阶段组成 Map阶
  • Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法

    Sublime Text 3代码提示插件Anaconda下载 http damnwidget github io anaconda carousel features 安装后写代码出现白框 光标移到白框行 下方状态栏里可以看到错误信息 可见
  • 80.带权的无向图

    带权的无向图 include
  • 如何用GPT轻松搞定一篇毕业论文。

    大家好 我是五竹 心血来潮整理了一份手册 ChatGPT学习指南 并且将为小白们持续更新和GPT相关的资源和教程 专注于打造一部最好的GPT入门指南 欢迎大家转发 收藏 点赞支持 谨防失联 下面 我将如何使用GPT写论文的步骤分享给大家 1
  • 怎么把半角引号替换成全角_巧妙批量互换全角与半角双引号

    工作中时常会遇到使用英文标点符号的文章 如图 2 38所示 为了规范文件编排 通常需要将所有的英文标点符号转换为中文标点符号 即达到如图 2 39所示的效果 使用查找和替换功能可以快速完成这一工作 下面以替换半角双引号为例进行介绍 图2 3
  • 3D游戏设计——UI系统

    HW9 1 血条 Health Bar 的预制设计 具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI 血条是游戏对象的一个子元素 任何时候需要面对主摄像机 分析两种实现的优缺点 给出预制的使用方法 IMGUI 使用一个
  • Python如何使用Any和All?代码示例和解析

    Any和All是python中提供的两个内置插件 用于连续的And Or Any 如果任何一项为True 则返回true 如果为空或全部为假 则返回False 可以将任何内容视为对提供的可迭代对象进行的一系列OR操作 它将执行短路 即一旦知
  • 单向链表(c/c++)

    链表是一种常见的数据结构 其中运用到了结构体指针 链表可以实现动态存储分配 换而言之 链表是一个功能强大的数组 可以在某个节点定义多种数据类型 可以实现任意的添加 删除 插入节点等 废话结束 前置知识 地址 结构体 malloc函数与循环选
  • Linux图形化界面安装

    点击创建新的虚拟机 选择自定义模式然后点击下一步 红色框内是根据自身电脑选择的 一般为默认的就行 然后点击下一步 选择一个镜像文件 选择安装到的路径还有虚拟机的名称 默认就行 也是默认 电脑配置好的话可以适当增加 根据需求选择不同的网络类型
  • 我与世界杯足球那些事——世界杯征文

    征文活动链接 https bbs csdn net topics 609601920 目录 第一次了解世界杯 第一次观看世界杯 世界杯主题曲 我最热爱的球员 今年世界杯 预测冠军 第一次了解世界杯 提起世界杯 我可能了解的比较晚一些 是在2
  • 【win11+Visual Studio 2019 配置 PCL 1.12.1 的经验总结分享】

    点云pc库的下载与安装参考另外一篇文章 链接 https blog csdn net weixin 47869094 article details 131270772 spm 1001 2014 3001 5501 各种教程里面这都很好
  • mysql-connector-java与mysql版本的对应

    记录下mysql connector java与mysql版本的对应关系 已方便以后参考 这是最新版本对应 时间 2017年5月23日 官网文档地址 https dev mysql com doc connector j 5 1 en co
  • kafka-__consumer_offsets

    consumer offsets zookeeper不适合大批量的频繁写入操作 Kafka 1 0 2将consumer的位移信息保存在Kafka内部的topic中 即 consumer offsets主题 并 且默认提供了kafka co
  • RACI 职责分配矩阵 模型使用详解及案例分析

    一 RACI产生背景 RACI是项目管理中的人力资源管理方法 一个项目团 队的成员往往来自于不同背景的各个部门 这些成员受部门经理和项目经理的双重管辖 由于这些人往往是临时组织起来的 并且项目的各个阶段扮演不同的角色 而项目的任务又很紧迫
  • Spring详解(二)------IOC控制反转

    我相信提到 Spring 很多人会脱口而出IOC 控制反转 DI 依赖注入 AOP等等概念 这些概念也是面试官经常问到的知识点 那么这篇博客我们就来详细的讲解 IOC控制反转 ps 本篇博客源码下载链接 百度网盘 链接不存在 密码 oquc
  • 全国计算机等级考试题库二级C操作题100套(第100套)

    第100套 给定程序中 函数fun的功能是 在形参s所指字符串中寻找与参数c相同的字符 并在其后插入一个与之相同的字符 若找不到相同的字符则函数不做任何处理 例如 s所指字符串为 baacda c中的字符为 a 执行后s所指字符串为 baa
  • LU分解

    在高等工程数学一书中 LU分解 LU Decomposition 是矩阵分解中最普通的一种 也是最经典的一种 它可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积 有时是它们和一个置换矩阵的乘积 LU分解主要应用在其数值分析中 用
  • Java远程连接Redis时出现: java.net.SocketTimeoutException: connect timed out的解决办法

    今天连接Redis报了了连接超时的错误 搞了半天终于把问题给解决了 这里来梳理一下我解决问题的思路 1 redis已经在linux上安装成功了 也已经正常启动了 端口6379 2 使用idea连接redis报连接超时 第一想法是没有开启re
  • ROI Align 解析

    ROI Align 是何凯明在2017年的论文Mask RCNN中提出的 该方法很好地解决了ROI Pooling操作中两次量化造成的区域不匹配 mis alignment 问题 本文将先从实验结果入手 然后分析ROI Pooling产生局