“卷积神经网络(Convolutional Neural Network,CNN)”之问

目录

Q1:CNN 中的全连接层为什么可以看作是使用卷积核遍历整个输入区域的卷积操作?

A1:以 AlexNet 为例,AlexNet 最后 4 层为全连接层,其中第一层全连接层是由卷积层做拉伸而得,所以我们只需要考虑后面三个全连接层即可。对于第二个全连接层中的任一个神经元 \(FC_i^{(2)}\),其都和上一层中所有神经元相连,如果我们将上一层神经元排列成 6×6×256,即对第一个全连接层不进行拉伸,那么神经元 \(FC_i^{(2)}\) 就相当于对上一层神经元乘以一个 6×6×256 的 filter(即 filter 的大小和 feature map 是一样的),经激活函数后得到的就是该神经元 \(FC_i^{(2)}\) 的输出。如果有 4096 个 filter,那么第二个全连接层就会有 1×1×4096 个神经元。之后情况类似,用 4096 个 1×1×4096 的 fiter 进行卷积即可得到第三层全连接层(1×1×4096),用 1000 个 1×1×4096 的 fiter 进行卷积即可得到第四层全连接层(1×1×1000)。所以全连接层也可以看成是卷积核遍历整个输入区域的卷积操作。

“卷积神经网络(Convolutional Neural Network,CNN)”之问
图 1 AlexNet

Q2:1×1 的卷积核(filter)怎么理解?

A2:首先需要搞清楚,1×1 的 filter 都干了些什么。
1)不改变 feature map 的大小。即当 stride 和 padding 分别为 1 和 0 时,使用 1×1 的 filter 对大小为 6×6 的 feature map 进行卷积,并不会改变 feature map 的大小。
2)会改变 channel 的数量,以此来达到升维和降维。下一层 channel 数量由该层 filter 的个数决定。
3)增加了非线性。下一层每一个 channel 的 feature map 中任意一点都是上一层同一位置所有 channel 的非线性组合(因为有非线性激活函数)。
4)channel 间信息的交互。

References

语义分割中的深度学习方法全解:从FCN、SegNet到各代DeepLab -- 知乎
一文读懂卷积神经网络中的1x1卷积核 -- 知乎

上一篇:CBAM: Convolutional Block Attention Module—— channel attention + spatial attention


下一篇:CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks