还记得 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

用周围的坐标的偏差值来代指中间的值。

Screen Shot 2022-04-19 at 6.37.46 PM.png

然后就可以用 gradient decent 了。

总的来说就是训练机器缩放或旋转图片,然后丢给 CNN 去识别。