fcos学习问题
每个像素点都预测一个boundingbox,每个点预测一个box的相对于对象的四个长度,
![enter description here enter description here](https://raw.githubusercontent.com/miaozhijuan/xiaoshujiang/master/%E5%B0%8F%E4%B9%A6%E5%8C%A0/1585274634042.png)
enter description here
boundingbox结果可以映射到正数范围
.前面提到l,t,r,b都是正值,所以作者在回归bounding box这四个值最后加了一个exp(si*x),以确保最后的结果可以映射到正数范围
Center-ness是做什么的?
论文中有提到说,在实验过程中发现一些远离bounding box中心的点,预测出来的box质量很低,对结果有很大干扰,center-ness是用来过滤掉这些点:每一个点回归出一个值,而且要保证这个值越远离box中心越小,越靠近中心越大,于是,想出来了这样一个公式:
![enter description here enter description here](https://raw.githubusercontent.com/miaozhijuan/xiaoshujiang/master/%E5%B0%8F%E4%B9%A6%E5%8C%A0/1585276747944.png)
enter description here
很显然,极端情况下,如果某一个点在box边界,那么centerness就是0; 如果刚好在box中心,这个值就是1。centerness的值在0-1之间。测试的时候,作者将centerness乘以类别score作为新的score,这样就降低了远离中心点的location的分数; 在NMS阶段将会大概率过滤掉它们。
self.fpn_strides是什么意思
loss.py里,训练时的回归target是除以了fpn相应层级的步长的,因此在测试的时候需要乘上步长,才能得到bbox真正的位置。我个人觉得这样做是为了缩小target,使网络训练起来更容易。论文实验部分也说明了这个trick能带来一定提升。