• 以detectron2了解maskrcnn实现源码(1)--双线性插值


    前前言

    按理说,应该先理清maskrcnn的整体脉络的。可是因为太多技术细节没理清。所以,就按着学习节奏,学到哪写到哪,最后再来个总结串起来。

    前言

    双线性插值在maskrcnn中用于RoiAlign过程中。
    本质作用:用来实现特征的压缩提取。
    其实,它真的很简单。原理简单,公式也简单。
    
    • 1
    • 2
    • 3

    正文

    举例场景:将一个2x2的特征汇聚成一个。

    常规的取平均值、最大值。这些办法都没有考虑到权重。
    RoiAlign中对于区域中心点来说,周围的像素点的权重就不一样。当然,此处不打算涉及RoiAlign,对它不了解也没事。反正就假设,现在要将一个2x2网格分布的4个特征汇聚成一个特征。

    双线性插值
    网上随便找了张图。我们将四个特征定义为:Q11、Q12、Q21、Q22。P就是采样点位置。
    P的位置对应不同的权重情况,就是说:实际场景中,提取特征时,4个特征的权重大小是通过P的位置来体现的。RoiAlign就是对其最直观的体现。
    为何能通过位置来体现呢?因为可以用P点离某个特征的距离远近来表示该特征的权重大小。
    此点不理解的话,下篇看了RoiAlign就理解了。

    既然用距离远近来代表权重大小,那也就是离某个特征越近那这个特征权重越大。你想呐,汇聚像素特征的时候,自然就该离哪个像素近就受其影响大,其权重就高。
    那我们现在将问题简化下,现在是二维的,因为图像是二维码的嘛。那我们先假设现在是提取一维的特征。比如:在Q11,Q21这条一维的横线上,提取R1点的特征。那R1取值时,Q11和Q21的权重与其R1的距离成反比。则有公式如下:

    R1 = Q11*(x2-x)/(x2-x1) + Q21*(x1-x)/(x2-x1)
    
    • 1

    其实,就是一条横线上的Q11和Q21,自身的值乘以自身权重再相加。而权重和距离成反比,所以此处用的x1,x2这边坐标轴来计算距离比值。
    R1已经计算出来,同理:R2也可计算出来。再同理,R1、R2、P此时处于一条一维竖线上了,就可以再次取值。
    所以,顾名思义,双线性插值。就是:P和周围4个点,不在一个维度不好插,那就先把那4个点拍成2个点,这2个点和P在一个维度,然后就好插了。也就是做了两轮线性插值。
    不管,双线性插值在数学上如何理解,但在cv上这样理解就足够了。
    其本质就是为了–让周围的像素点根据各自权重来发言。以免max取值那种一言堂,或者均值法那种绝对皿煮。

  • 相关阅读:
    数字滤波器和模拟滤波器(一)
    【软考 系统架构设计师】案例分析⑧ 数据库索引与视图
    【电商实战02】如何借助工具快速生成代码?初学者容易踩的坑有哪些?
    nginx -s reload, 提示 [emerg] duplicate location “/“
    黑客首选攻击语言为什么是Python?你知道吗?
    自己写个网盘系列:① 来学习开启这个项目吧
    【Linux】基础
    SCADA的总体设计(一)
    运维学习笔记——arthas 线上
    threejs 初始化
  • 原文地址:https://blog.csdn.net/OHRadiance/article/details/125486471