Faster RCNN,为什么conv的结果可以变成bbox_deltas?

Faster RCNN, Why does conv's result can become the bbox_deltas?

Here and here 是代码。

我很困惑 rpn_bbox_pred 只是卷积的结果。

rpn_bbox_pred 正在变成 bbox_deltas

这个我看不懂。

假设我们有一个 (3,2,36) conv 的结果。

注意:

36 = 4 * 9

所以reshape之后,(3,2)的每个点都有9个proposal.

如程序所示:

import numpy as np
a = [[[1]*36,[2]*36],[[3]*36,[4]*36],[[5]*36,[6]*36]]
a = np.array(a)
print(a.reshape([-1,4]))

程序中,每(3,2)个feature map是[[1,2],[3,4],[5,6]].

打印结果:

[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [4 4 4 4]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [5 5 5 5]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]
 [6 6 6 6]]