如何将卷积神经网络中的全连接层变成卷积层
卷积由feature map到全连接层的设置节点个数也为一个超参数,可以进行设置;同时,这个过程也可以看作是一个卷积的过程。
全连接层实际就是卷积核大小为上层特征大小的卷积运算,一个卷积核卷积后的结果为一个节点,就对应全连接层的一个神经元。
假设: 最后一个卷积层的输出为7×7×512,连接此卷积层的全连接层为1×1×4096(相当于全连接网络有4096个神经元)。
相当于一个全链接网络的输入层有7×7×512个输入神经元,下一层有4096个神经元。
如果将这个全连接层转化为卷积层:
1.共需要4096组滤波器
2.每组滤波器含有512个卷积核
3.每个卷积核的大小为7×7
4.则输出为1×1×4096
由于每个滤波核的大小和上一层的feature map大小一样,所有feature map上的cell不共享权重,而全连接网络就不是共享权重的,保证了转换后的卷积层的运算结果和全连接层是一样的。
如果: 后面再连接一个1×1×2048的全连接层(相当于全连接网络有4096个神经元)。
则其对应的转换后的卷积层的参数为:
1.共有2048组滤波器
2.每组滤波器含有4096个卷积核
3.每个卷积核的大小为1×1
4.则输出为1×1×2048
拓展:
全连接层的坏处就在于其会破坏图像的空间结构,因此人们便开始用卷积层来“代替”全连接层,通常采用1×1的卷积核,这种不包含全连接的CNN成为全卷积神经网络(FCN),FCN最初是用于图像分割任务,之后开始在计算机视觉领域的各种问题上得到应用,事实上,Faster R-CNN中用来生成候选窗口的CNN就是一个FCN。FCN的特点就在于输入和输出都是二维的图像,并且输入和输出具有相对应的空间结构,在这种情况下,我们可以将FCN的输出看作是一张热度图,用热度来指示待检测的目标的位置和覆盖的区域。在目标所处的区域内显示较高的热度,而在背景区域显示较低的热度,这也可以看成是对图像上的每一个像素点都进行了分类,这个点是否位于待检测的目标上。