SPP结构主要学自该博客:深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测
FNC
FNC主要做的是基于像素的图像分割预测。其做法是先按照传统的CNN结构得到feature map,将传统的全连接层替换成相应的卷积层。如最后一层特征图尺寸为 5∗5∗512 5 ∗ 5 ∗ 512 ,对应的全连接层的尺寸为4096,则需要 5∗5∗512∗4096 5 ∗ 5 ∗ 512 ∗ 4096 个参数,将该参数变成卷积核,kernel size 为5*5,input channels 为512, output channels 为4096,依此将传统的带有卷积层和全连接层的网络变成全连接神经网络。
FNC的一个好处是它的输入可以是任意大小的。传统的CNN结构是在最后一个特征图的全连接层是需要固定大小的,比如上面的
5∗5∗512∗4096
5
∗
5
∗
512
∗
4096
这里就确定了最后的特征图尺寸是
5∗5∗512
5
∗
5
∗
512
。传统网络如果想要任意输入,就需要用一个类似SPP(Spatial Pyramid Pooling)的结构。该结构的大概过程就是通过不同层级(大小)的网格划分图片,在每个网格中做Pooling操作,再将每个网格得出来的值叠起来得到一个固定长度的向量,进入我们的全连接层。
SPP的工作流程图大概如上,该例图将图片分成3层,第一层用 4∗4 4 ∗ 4 的网格划分,第二层用 2∗2 2 ∗ 2 的网格划分,第三层把整个图片分为1块。则共有 16+4+1=21 16 + 4 + 1 = 21 个网格块,通过对每个网格块进行Pooling操作可以得到21个输出可以用于全连接层。我们可以通过增加层级,以及改变每层的网格数得到不一样的input channels。
U-Net
该网络初始用于医疗图像领域,目的是获得图像的边缘。
图中,蓝色代表卷积和激活函数,灰色代表复制,红色代表下采样,绿色代表上采样。