Polar Mask笔记

参考(CVPR20’Oral) PolarMask: 一阶段实例分割新思路 - Johnny ez的文章 - 知乎
https://zhuanlan.zhihu.com/p/84890413
振奋人心的一篇文章,看完启发很大

基于FCOS(一个anchor free的目标检测网络)

创新点

新的分割结果表示方法

(1)不是用普通的mask,而是找轮廓点
(2)不是用直角坐标系,而是用极坐标
极坐标的好处
中心点的位置已知固定的情况下,轮廓点的位置只需要一个d就可以表示
Polar Mask笔记
这样36个轮廓点只需要36个d就能表示

(3)中心点centerness:用来对正样本reweight

gt的中心点:重心
prediction的中心点:希望中心点到各个轮廓点的距离差不多
Polar Mask笔记
Polar Mask笔记
Polar Mask笔记
预测出的中心点对应的d,算出polar centerness,如果较大,这个中心点的权重就会较低(根据score排序的时候可能就会被筛掉)

(4)极坐标如何计算IOU?

Polar IoU Loss
Polar Mask笔记

交集的面积是分子,并集的面积是分母。
这里是取接近0的夹角计算扇形面积然后积分
扇形面积公式:
Polar Mask笔记
R是半径,α|\alpha|就是夹角,也就是这里的dθd\theta
离散化并且简化:
Polar Mask笔记
说一下最后(8)为什么加了个log并且交换分子分母
(7)是预测结果的IOU,而我们期望的IOU是1,也就是gt是1,根据交叉熵的公式:
Polar Mask笔记
p(x_i)=1,q(x_i)就是(7)
于是就变成了(8)
有一个问题:
有个疑惑,计算IOU的时候,gt的d是知道的,但预测的d~\tilde{d}是图中那个d~\tilde{d}吗?预测的d~\tilde{d}不应该是预测的中心点到预测的轮廓点的距离吗,怎么会是gt的中心点到预测的轮廓点的距离呢。还是这个d~\tilde{d}是计算出来的?有点好奇是怎么算的,转换为直角坐标再算的吗?
问了一下作者。等待作者回复后补充。

Performance

Polar centerness裸涨1.4个点
Polar IOU loss裸涨2.6个点

细节

gt如何找到那36个点?
(1)遍历边缘点,计算其与中心点的夹角、距离,找36个点。
(2)如果mask比较小,轮廓比较少,有些角度没有,就找接近的。
(3)如果一个角度对应多个值:找最大值
(4)本来不需要nms,如果要做,可以对结果的mask做最小外接框
缺点
对中心有空比如甜甜圈形状的物体效果比较差,此时计算d用的最大值

下一目标:FCOS阅读