图像卷积在代码中的实际操作

来源:互联网 发布:歌词星星知我心呐 编辑:程序博客网 时间:2024/06/05 15:35

      在代码中卷积的实际计算方法是把被卷积图像和卷积核写成两个大矩阵,其中每一行就是被卷积图像中卷积核区域的像素拉成一行,几个通道都放在同一行,行数就是卷积核在上面滑动的次数。两个矩阵相乘即为输出结果,结果矩阵中的每一列就是feature map的一个通道。


图 1

         还有一种方式是左边的矩阵是由卷积核转化来的,右边则是被卷积图像,这样的方式比上面的会复杂点。也是caffe中im2col的做法:把图1中的kernel Matrix的转置放在左边,Input Feature Matrix的转置放在右边,相乘也是得到相同的结果(图1输出矩阵的转置)。


图 2

另外还有一种做法:

比如输入图像和卷积核和图1一样,则转换后左边的矩阵应该是8*27,其中前4行就是第一个卷积核,后4行是第二个卷积核,每一行为一个卷积核在三通道上对应于输入图像位置的权值,右边的矩阵转化后是27*1的矩阵,即把输入图像的每个通道拉成一列,接起来。对于上面的卷积核和输入图像,左边矩阵和右边矩阵为:


得到和第一种方法一样的值

由此根据矩阵论,可以知道反卷积的计算方式。

图1图2参考:https://buptldy.github.io/2016/10/01/2016-10-01-im2col/



原创粉丝点击