传统的残差网络,由于多了左边的卷积,导致像素不同,无法直接BP。而Fishnet的可以。
Figure2是FishNet的整体架构(鱼型,左边是尾巴右边是头),Tail、Body、Head。主要讲三部分的类型、作用。
- Tail是尾巴,由CNN(resNet组成)
- Body由上采样、提取blocks组成,用于细化来自tail和body的特征
- Head由下采样、提取blocks组成,用于保存、细化来自t、b、h的特征。
- 在head最后一个卷积层中,被提取的特征将被用于目标任务。
Stage:文章将不同resolution的特征图处理过程,看做不同阶段,ID不同。
- 56*56:ID1
- 28*28:ID2
而在body处也是用ID1、ID2。resolution与ID编号称反比,resolution变小,ID变大
重点:feature3:t、b、h三部分之间的互相作用
首先,这些箭头很重要。从左到右分别是特征传递,正则化连接(ReLu等函数?),下采样及特征提取,上采样及特征细化,级联(直接串联?)C:通道数;H,W:高宽;k:通道减少;
我们可以看到从tail到body到head,所有特征都保存在head。(蓝->蓝橙黄->蓝橙黄绿)
3.1feature refinement(特征细化)
UR-block
和
分别代表tail和body在阶段(stage)s的的第一层的输出特征。
Nt和Nb代表tail和body部分的阶段数。特征级联通过
来表示。
代表residual block从tail到body传输的特征
,
代表从上一阶段的fish body细化的特征。下一阶段的输出
会从
和
中细化,如下所示
其中,代表上采样函数。作为总结,UR-block级联特征通过公式7,并且在公式6中细化,然后再在公式5中上采样,来获取
。公式6的
代表从特征
中提取信息。通过卷积层来实现
。类似于下式的residual操作。通过bottlenek residual 单元(3个CONV)
式6中的信道约简函数可以写作:
这里的表示有着cin通道的输入特征图,hatx表示有着cout通道的输出特征图,且有这关系cin/cout=k,所以等式中x(k*n+j)表示按照输入与输出的比例关系对输入的特征进行了一个分组,每个输出的通道只和其中的一组k个输入有关,是其中一组的加和。
例如:将4通道变2通道
x={x(1),x(2),x(3),x(4)},目标=[
];
则k= 4 / 2 =2;n={1,2};
=
x(k*n+j)=x(2*1+0)+x(2*1+1)
=
x(k*n+j)=x(2*2+0)+x(2*2+1)
DR-block(下采样和细化block)
和URblock很像。具体就是一个concatenation和一个M卷积;然后相加。down()用的是2*2的maxpooling,步长为2