按理说,应该先理清maskrcnn的整体脉络的。可是因为太多技术细节没理清。所以,就按着学习节奏,学到哪写到哪,最后再来个总结串起来。
双线性插值在maskrcnn中用于RoiAlign过程中。
本质作用:用来实现特征的压缩提取。
其实,它真的很简单。原理简单,公式也简单。
举例场景:将一个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)
其实,就是一条横线上的Q11和Q21,自身的值乘以自身权重再相加。而权重和距离成反比,所以此处用的x1,x2这边坐标轴来计算距离比值。
R1已经计算出来,同理:R2也可计算出来。再同理,R1、R2、P此时处于一条一维竖线上了,就可以再次取值。
所以,顾名思义,双线性插值。就是:P和周围4个点,不在一个维度不好插,那就先把那4个点拍成2个点,这2个点和P在一个维度,然后就好插了。也就是做了两轮线性插值。
不管,双线性插值在数学上如何理解,但在cv上这样理解就足够了。
其本质就是为了–让周围的像素点根据各自权重来发言。以免max取值那种一言堂,或者均值法那种绝对皿煮。