Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
dothinking committed Jul 10, 2022
1 parent c14c35e commit d00b92e
Showing 1 changed file with 35 additions and 12 deletions.
47 changes: 35 additions & 12 deletions docs/2022-07-03-空间金字塔池化(SPP)关键参数计算.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ $$


!!! warning "注意:"
这是作者为论文中特定场景提出的,确实并不具备(作者也没声明)通用性
这是作者为论文中特定场景提出的,确实并不具备(作者也没主张)其通用性


## 初步修正的公式
Expand Down Expand Up @@ -114,7 +114,7 @@ p = \left \lceil \frac {(n-1)*s + k - w} {2} \right \rceil
\tag{5}
$$

代入 $k=s$,公式(5)退化为公式(3)计算 $p$ 的部分,表明它是公式(5)更具一般性,公式(3) $p$ 只是一个特例
$k=s$ 代入上式即可得到公式(3)中计算 $p$ 的部分,表明上式更具一般性,公式(3)计算 $p$ 的方法只是公式(5)一个特例


结合(4-1)左半部分和(4-2)右半部分:
Expand Down Expand Up @@ -160,9 +160,9 @@ $$

以 $P_1$ 方向为例,因为 $k,s$ 都是正整数,我们取 $P_0$ 右侧最接近的正整数值,即 $k = s = \lceil w / n \rceil$ ,于是得到了网上常见的初步修正的公式,即上文的公式(3)。

至此,可以解释和统一之前的计算方法。
至此,可以统一上文提及的计算方法,并且完美解释以下两个问题:

### 公式(3)在什么情况下不再适用?
### (a)公式(3)在什么情况下不再适用?

对照可行域图就很好解释了——绿色线段上可能不存在整数解。

Expand All @@ -174,22 +174,46 @@ $$
\frac {w} {n-1} = \frac {a*n+b} {n-1} = a + \frac {a+b} {n-1}
$$

显然,$w/(n-1)$ 的整数部分至少达到 $a+1$ 即 $(a+b)/(n-1) \geq 1$ 时,绿色线段标注的可行域上才有整数解。因此,公式(3)的使用条件
显然,$w/(n-1)$ 的整数部分至少达到 $a+1$ 即 $(a+b)/(n-1) \geq 1$ 时,绿色线段标注的可行域上才有整数解:

$$
\left \lfloor \frac {w} {n} \right \rfloor + \left(w \mod n\right) + 1 \geq n
$$

进一步考虑端点上的情况,即上式取等号,此时 $w/(n-1)$ 恰好为整数,且 $k=s=w/(n-1)$,参考公式(5)可知:

$$
p = \left \lceil \frac {n*k - w} {2} \right \rceil
= \left \lceil \frac {w} {2 *(n-1)} \right \rceil
= \left \lceil \frac {k} {2} \right \rceil
$$

结合 $k \geq 2p$ 的限定条件,此时要求 $k$ 即 $w/(n-1)$ 必须为偶数。

综上,公式(3)的使用条件:

$$
t = \left \lfloor \frac {w} {n} \right \rfloor + \left(w \mod n\right) + 1
$$

$$
t \gt n \quad \lor \quad
\left(
t = n \quad \land \quad w/(n-1) \mod 2 = 0
\right)
\tag{7}
$$

其中,$\lor$ 和 $\land$ 分别表示“或”和“且”。


### 如何处理公式(3)不适用的情况?
### (b)如何处理公式(3)不适用的情况?

当 $w,n$ 不满足不等式(7)时,公式(3)失效,那就走 $P_2$ 的路线,如青色箭头所示:

- 此种情况下往右显然不存在可行的$s$了,于是向左一步得到 $P_0$ 附近的 $s$;

- 然后向上增大 $k$ 知道满足可行域要求
- 然后向上增大 $k$ 直到满足可行域要求


以上过程反映了公式(2)的思路,但是为了更具通用性,确定 $k$ 时需要检查是否落在可行域内。将公式(2)中 $s$ 的表达式代入(4-4)的缩放式得到 $k$,然后将 $k,s$ 代入公式(5)计算 $p$,最终得到公式(2)的更一般形式:
Expand All @@ -213,19 +237,17 @@ $$

## 完整算法

适用条件:$w \geq n \gt 1$,不满足此条件时,参考上文例外描述。
特别说明:以下算法优先选择传统非重叠的池化方式,只有在无法满足时,才考虑重叠的池化方式。如果倾向于重叠的池化方式,则直接进入第(2)部分即可。

**已知输入、输出尺寸 $w$ 和 $n$($w \geq n$),求SPP池化层的窗口尺寸$(k)$,步长$(s)$及边距$(p)$**

(1)当 $\lfloor w/n \rfloor + \left(w \mod n\right) + 1 \geq n$ 时,
(1)当满足不等式(7)时,

$$
s = k = \left \lceil \frac {w} {n} \right \rceil,
\quad
p = \left \lceil \frac {n*k - w} {2} \right \rceil
$$

(2)$\lfloor w/n \rfloor + \left(w \mod n\right) + 1 \lt n$ 时,
(2)当不满足不等式(7)时,

$$
s = \left \lfloor \frac {w} {n} \right \rfloor,
Expand All @@ -235,3 +257,4 @@ k = w - (n-1)*s,
p = 0
$$

注意:以上算法优先选择传统非重叠的池化方式,只有在无法满足时,才考虑重叠的池化方式。如果倾向于重叠的池化方式,则直接选择第(2)部分计算公式即可。

0 comments on commit d00b92e

Please sign in to comment.