Affine Transformation中Rotate Transformation的等价变换

13 篇文章 0 订阅
12 篇文章 0 订阅

2D图像中的仿射变换种类有平移,旋转,放缩与SHEAR变换,具体公式可以参考http://cn.mathworks.com/discovery/affine-transformation.html

最近的工作是为了训练一个网络来回归这些仿射变换参数,比如平移了多少,放缩了多少等等,但是博主发现,当不考虑SHEAR变换的时候,其他三个变换的参数量都能极好的学习,而且泛化性有很好的保障,但是加入了SHEAR变换之后,我发现根本就训练不动了,原因是如下:

1. 在不考虑SHEAR变换的时候,仿射变换矩阵为[scale * cos(theta), scale * sin(theta), 0; scale * -sin(theta), scale * cos(theta), 0; tx ty 1] 可以看出,平移,旋转以及放缩的参数耦合性并不强,并且从图像上我们也能直观的看出平移量,旋转量以及放缩量,学习难度也是依次递增

2. 当考虑SHEAR变换的时候,仿射变换矩阵就特别复杂,参数的耦合非常强,直观的解释是,我们很难从图像中读出我们做了多少的旋转,放缩,以及SHEAR变换,这也就是为什么加了SHEAR之后,根本训练不动。

然后,更深层次的原因是,我们想通过图像直接逆回去求SHEAR,ROTATE,SCALE,TRANSLATION四个矩阵(考虑了变换顺序),但是这四个矩阵确定是唯一的吗?没有SHEAR我们确定是唯一的,但是有了SHEAR就不是了,为什么?因为ROTATE可以表示为SHEAR*SCALE!具体证明也很简单,在此略过。

所以当考虑SHEAR矩阵的时候,就不应该再考虑ROTATE矩阵,这会让整个模型没法去根据图像逆回去求对应的变换参数,这也就解释了为什么,SHEAR跟SCALE的LOSS下降的比ROTATE的LOSS要小,因为分类器在尝试把ROTATE用SHEAR跟SCALE表示。但是当没有SHEAR变换的时候,ROTATE的LOSS是要降的比SCALE快的,因为ROTATE的特征更容易提取。

以上的内容可能大家都看不懂,属于我自己工作中遇到的问题的碎碎念了= =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值