还记得 CNN 不适用放缩和旋转的东西么。
将所有元素给上乘上一个权重然后求和,映射到处理后的一个元素上。
例如对于 3 × 3 的转换:
$$ a_{n m}^{l}=\sum_{i=1}^{3} \sum_{j=1}^{3} w_{n m, i j}^{l} a_{i j}^{l-1} $$
其中左侧是转换后的一个元素,右侧是转换前的和。
也就是转换后的每一个点,都是左侧的转换的权值和,然后就要去找这些权值,就可以实现旋转缩放。
对于旋转缩放显然是可以用矩阵变换的。
$$ \left[\begin{array}{l}x^{\prime} \\y^{\prime}\end{array}\right]=\left[\begin{array}{ll}a & b \\c & d\end{array}\right]\left[\begin{array}{l}x \\y\end{array}\right]+\left[\begin{array}{l}e \\f\end{array}\right] $$
这个当然是不可能用 gradient decent 来求 $a, b,c,d,e,f$,因为微分是 0。(离散的)
Interpolation
用周围的坐标的偏差值来代指中间的值。
然后就可以用 gradient decent 了。
总的来说就是训练机器缩放或旋转图片,然后丢给 CNN 去识别。