在CUDA上实现的 旋转RIO Pooling 函数ROIAlignRotatedForward需要移植到我所使用的SOC上,我使用的SOC支持OPENVX编程整个学习的过程是为了在OPENVX上实现旋转R ROI Align。
其中 ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。

ROI Pooling池化介绍

Pooling 池化层:进行下采样,对特征图稀疏处理,减少数据运算量。通过卷积层获得了图像的特征之后,理论上可以直接使用这些特征训练分类器(如softmax),但这样做将面临巨大的计算量挑战,且容易产生过拟合现象。为了进一步降低网络训练参数及模型的过拟合程度,需要对卷积层进行池化/采样(Pooling)处理。

关于RoI Pooling最重要的事情是:
1.用于对象检测任务
2.允许我们重新使用卷积网络中的特征映射
3.可以显着加快训练(train)和测试时间
4.允许以端到端的方式训练物体检测系统

池化/采样的方式通常有以下两种:
1)Max-Pooling: 选择Pooling窗口中的最大值作为采样值;

2)Mean-Pooling: 将Pooling窗口中的所有值相加取平均,以平均值作为采样值。

ROI Align介绍

ROI Align 是何凯明在2017年的论文Mask-RCNN中提出的,该方法很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)问题我认为就是由于像素对应位置不能被整分,导致多几次处理后对应位置和实际图像位置有差别导致。

ROI-pooling的区域不匹配(mis-alignment)问题简介:

roi-pooling的输入是proposal的坐标,这些坐标由RPN计算得到,因为经过一次回归,所以跟原图上的proposal对应映射到feature map上是一个浮点数的坐标。可想而知,整个feature就是一叠矩阵,矩阵的下标不都是整数吗。所以映射过来的浮点数坐标要被向下取整,缩小为整数区域。如下图所示:可以明显的看到量化后的差异。*实际就是图像取分割以整数取容易出现不能整分导致坐标对应选项和实际内容无法完全对应

这个链接有个动图能比较好的能说明问题,本文就不做深入介绍了

ROI Align优化方法:

ROI Align从ROI Pooling局限性的源头上进行了改进,也就是取消了量化操作,对于量化中产生的坐标为浮点数的像素,利用双线性插值计算其像素值RoiPooling和RoiAlign实现原理,在以后的项目中可以根据实际情况进行方案的选择;对于检测图片中大目标物体时,两种方案的差别不大,而如果是图片中有较多小目标物体需要检测,则优先选择RoiAlign,更精准些。
值得注意的是,ROI Align并不需要对两步量化中产生的浮点数坐标的像素值都进行计算,而是设计了一套优雅的流程。论文中ROI Align的实现方法如上图所示,。其中,虚线框表示feature map,实线框表示一个ROI,Pooling输出大小为2*2,每个子区域中有四个采样点。ROI Align基于双线性插值的方法,利用feature map上距离采样点最近的四个像素得到其像素值。整个过程中没有对ROI,均分ROI产生的子区域(bins)和采样点进行量化。每个bin中采样点的数目和位置存在一定的规则,即若采样点数为1,则该点位于bin的中心位置;若采样点数为4,则采样点的位置为均分该bin为4个小矩形后各自的中心点。通常这些采样点的坐标为浮点数,所以需要用到插值的方法获得其像素值。利用该方法对图1处理后的结果如下所示。
我理解为实际就是采用取的采样点是根据周围点和他的距离对采样点的影响的线性变换关系,计算出采样点的值。

ROI 算法说明:

双线性插值

双线性插值介绍链接

线性插值:


双线性插值:

ROIAlign 经典图说明

**大家可以在很多的算法介绍中看到这个图,容易搞不清楚。对应我前面的Bilinear的介绍图来看就比较好理解。**下图蓝色点对应双线性插值图中的黑点。底图的黑色方格每个正方形格的4个角对应的点其实就是图像像素的值。那么蓝色点的值是根据4个角的像素值和与其的距离关系得到。

旋转的RROIAlign 理解

旋转RROIAlign 实际上是在原有的ROIAlign上增加了一个旋转。
旋转框检测方法该链接有比较好的介绍方便理解

RRoI Align本质和RoI Align是一样的,区别在于双线性插值时采样点是经过偏移(与前文中的坐标偏移一致)。偏移计算为:

其中center w 和 center_h 分别表示中心点的x、y坐标(红点),xx和yy表示采样点所在特征图的x、y坐标。

ROI bin (均分ROI产生的子区域)

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

如果要得到一个m x m的roi align的结果, 同时sample ratio(程序中为sample_num)为2的话(也就是mask rcnn paper里使用的值), 需要在每个bin中采样n x n个点, 因此共采样n x n x m x m个点, .

怎么理解sample_num=1和sample_num=2的差异呢,我认为上面的图为采样点为4的状态。如果采样点为1那么我认为状态应该如下图采样点少了4倍:
RoiAlign-计算实例的链接有很好的说明

需要注意的是bin和sample_num这个概念到后续章节读代码的时候会有用。

CUDA的旋转R ROI Align的OPENCL实现1(原理理解)相关推荐

  1. ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码)

    ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码) 1. Position Sensitive ROI-Pooling 简介 原文:https://blog.csdn.ne ...

  2. ROI pooling 和 ROI Align详解

    ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题.实验显示,在检测 ...

  3. 小嘿嘿之目标检测关键小技术focal loss/DCN/ROI Align/FPN

    目标检测小技术 Focal loss 1.概念 2.损失函数形式 Deformable Convlolutional Networks 1.背景问题 2.原理与结构 3.Deformable RoI ...

  4. RoI Pooling 与 RoI Align 有什么区别?

    ↑ 点击蓝字 关注视学算法 作者丨AlexChung@知乎 来源丨https://zhuanlan.zhihu.com/p/161540817 编辑丨极市平台 基本概念 RoI RoI(Region ...

  5. 【算法】ROI Align 原理

    遍历每一个候选区域,保持浮点数边界不做量化. 将候选区域分割成k x k个单元,每个单元的边界也不做量化. 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操 ...

  6. 目标检测特殊层:ROI Align层详解

    ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题.实验显示,在检测 ...

  7. 解构变换矩阵:如何使变换矩阵分解为位移(T),旋转(R),缩放(S)矩阵

    解构变换矩阵 给定一个转换的复合矩阵,关于组成该转换的任何单个转换的信息就会丢失. 我们如果有一个复合矩阵,怎么能使其分解为TRS三个矩阵呢?即如何完成下述变化: 其中M是给定的变换矩阵,T是平移矩阵 ...

  8. 【深度学习小知识】ROI到ROI pooling 再到ROI Align

    ROI!RoI Pooling! ROI详解 RoI Pooling详解 Pooling操作 ROI pooling ROI Align详解 ROI详解 Region of interest(ROI) ...

  9. RoI Pooling 和 RoI Align

    RoI Pooling 和 RoI Align 一.背景和基本概念 1.背景 2.基本概念 二.RoI Pooling原理 1.目的 2.步骤(以输出RoI feature大小为2×2×5为例) St ...

  10. 【目标检测】|ECCV2020-HCE-全局Roi Align目标检测网络 | Hierarchical Context Embedding for Region-based Object Detec

    提出问题 二阶目标检测器利用RoIPool或RoIAlign提取的区域特征作为ROI.尽管与proposals位置很好地相符,但区域范围内的特征仍可能缺少关键的上下文信息 尤其对于滤除嘈杂的背景检测以 ...

最新文章

  1. torch topk
  2. mysql配置文件构成以及具体的配置demo
  3. 51 nod 1427 文明 (并查集 + 树的直径)
  4. agp模式_AGP的完整形式是什么?
  5. 不信不能雷倒你!超牛高考作文
  6. FakeAPP训练时错误【ResourceExhaustedError: OOM】解决方法
  7. ql的python学习之路-day3
  8. linux完全卸载mysql_mysql完全卸载教程(图文详细)
  9. Win10关闭系统自动更新
  10. 【操作系统】为什么需要内核
  11. 清零软件解决连供打印机喷嘴断墨和堵塞
  12. PreparedStatement 不定参数处理
  13. 工业污染治理投资完成情况分析(2000—2019年)
  14. Nhanes临床数据库挖掘教程1----数据库下载
  15. 关于{高级语言和低级语言}的。谬论!思想误区!解释。author:盗墓者是个丑奴儿
  16. ping某个域名的详细过程
  17. 台式计算机如何上网设置,台式电脑怎样设置宽带自动连接?
  18. 特征工程的准备:特征理解
  19. Android 自动化测试Monkey、Monkeyrunner
  20. 三次多项式的因式分解

热门文章

  1. 招银网络科技校园招聘面试2020.10
  2. 英语听力学习-VOA
  3. Power Designer 概念数据模型导出 逻辑数据模型和物理数据模型 生成数据库脚本
  4. Skype 8.34 Windows7-64bit Ubuntu 16.04安装试验
  5. html取消父元素样式,CSS以防止子元素继承父样式
  6. 【微积分的本质|笔记】直观理解链式法则和乘积法则
  7. Jumpserver docker部署及踩坑
  8. 如何在论文中正确引用参考文献(自动标注)
  9. 又是一次数据分析的例子(自杀分析)
  10. 沟通中的情绪管理(演讲稿)