caffe 中的卷积的计算过程

时间:2023-02-07 13:29:42

最近在做实验是,发现看代码可以增加自己的认识,就最近对卷积的操作的总结

方便今后的查阅,也矫正之前的理解偏差。

在卷积神经网络中,卷积算是一个必不可少的操作,

下图是一个简单的各层的关系。

caffe 中的卷积的计算过程


可以看出一个很好的扩展的关系,下面是整个卷积的大概的过程

图中上半部分是传统的卷积的操作,下图是一个矩阵的相乘的操作。

caffe 中的卷积的计算过程

下图是在一个卷积层中将卷积操作展开的具体操作过程,他里面按照卷积核的大小取数据然后展开,在同一张图里的不同卷积核选取的逐行摆放,不同N的话,就在同一行后面继续拼接,不同个可以是多个通道,但是需要注意的是同一行里面每一段都应该对应的是原图中中一个位置的卷积窗口。

caffe 中的卷积的计算过程

从上图可以清晰的看到卷积的计算过程是 

将一个三通道的RGB的图像拆分成三张单通道的图像,然后针对每一个通道都有一个k个卷积核,进行卷积操作,从图中可以清晰看到每一个通道的对应的K个卷积和都是不同的,但是在计算完成之后,在将对应的卷积的结果进行叠加,即可,这样就得到整个卷积层的特征图像了。下一步就是其他的操作。


下图是在一个卷积层中将卷积操作展开的具体操作过程,他里面按照卷积核的大小取数据然后展开,在同一张图里的不同卷积核选取的逐行摆放,不同N的话,就在同一行后面继续拼接,不同个可以是多个通道,但是需要注意的是同一行里面每一段都应该对应的是原图中中一个位置的卷积窗口。

caffe 中的卷积的计算过程

对于卷积层中的卷积操作,还有一个group的概念要说明一下,groups是代表filter 组的个数。引入gruop主要是为了选择性的连接卷基层的输入端和输出端的channels,否则参数会太多。每一个group 和1/ groupinput 通道和 1/group 的output通道进行卷积操作。比如有4个input, 8个output,那么1-4属于第一组,5-8属于第二个gruop