我正在尝试理解并在自己的数据上使用Faster R-CNN算法。
我的问题与ROI坐标有关:我们作为标签的,以及最终想要的,都是输入图像中的ROI坐标。然而,如果我理解正确的话,锚框是在卷积特征图上给出的,然后ROI回归给出相对于锚框的ROI坐标(因此很容易转换为卷积特征图坐标),接着Fast-RCNN部分使用卷积特征图中的坐标进行ROI池化,并自身(分类并)回归边界框坐标。
考虑到原始图像与卷积特征之间发生了一些卷积和池化操作,可能伴随着步长>1
(子采样),我们如何将原始图像中的坐标与特征空间中的坐标关联起来(双向)?
我们应该如何给出锚框的大小:是相对于输入图像大小,还是相对于卷积特征图?
Fast-RCNN如何回归边界框?(我猜测:相对于ROI建议,类似于建议相对于锚框的编码;但我不确定)
回答:
看起来这实际上是一个实现问题,方法本身并未回答这个问题。
然而,一个好的方法是使用Tensorflow Object Detection API,即始终相对于层的输入大小给出坐标和ROI大小。也就是说,所有坐标和大小都将是0
到1
之间的实数。锚框也是如此。
这种方法很好地处理了下采样的问题,并允许轻松计算ROI坐标。