在这篇文章中我将介绍ResNet和FPN这两个深度学习中重要的技术。
一、ResNet-50/101
首先我们先来看ResNet技术:
1.1 概述
ResNet技术是基于残差学习,引入Bottleneck技术以及Shortcut Connection技术,而去解决神经网络中的退化问题。
1.2 主要思想
在这个技术中,主要有三种思想,即残差映射、Bottleneck结构以及通道调整。
残差映射:
首先我们知道残差就是指预期输出与实际输出之间的差值,如果用x表示实际输出,H(x)表示预期输出,那么可以得到残差的表达式为:
而残差映射就是指通过跳跃连接(Skip Connection)将输入 x 直接传递到后续层,并与经过神经网络层后的结果相加的过程。
Bottleneck结构:
所谓Bottleneck结构就是指这样的三个过程,首先是1*1卷积降维,然后通过3*3卷积特征提取,最后进行1*1卷积升维。我们可以这样理解,就是我们要开着载货卡车通过安检,为了正常和较快的通过,我们首先卸下一部分的货物,然后对于其中关键货物进行安检,最后安检完成后重新载货出发。
通道调整:
是解决残差块的输入与输出通道数不一致问题的关键技术。当输入特征图(Input)和残差函数(Residual Function)的输出特征图通道数不同时,无法直接通过跳跃连接(Skip Connection)相加,此时需要通过通道调整使二者的维度匹配。其中常用的有两种方法,分别为1*1卷积以及补0操作。
1.3 组成
ResNet的组成有五个阶段,分别为:Conv1、Conv2、Conv3、Conv4、Conv5。其中Conv1是进行卷积以及池化操作,另外四个阶段都是Bottleneck模块。
其中根据Conv4阶段中Bottleneck模块数量的差异分为50层的网络和101层网络,所以得名ResNet-50/101。
二、FPN
2.1 概述
所谓FPN就是基于多尺度融合去构建特征金字塔。其中,它是基于多个层次的,具体有三个层次,分别为:自顶向下、自底向上以及横向连接。这三种层次可以带来不同的好处,分别为保留空间细节、将深层语义信息传递到浅层以及将语义,定位信息融合。
2.2 结构
如果我们把FPN分为两个部分,那么分别就是主干部分以及特征金字塔部分。
其中在主干部分,它是依靠刚才所说的ResNet的,即采用ResNet作为主干网络(如ResNet-50/101),通过逐阶段下采样生成多尺度特征图。
然后在特征金字塔部分,这部分主要有三小部分,先是P5生成,即从主干网络的最高层特征C5出发,通过 1×1卷积 调整通道数(例如将2048→256),生成初始的 P5;
然后是逐层采样,通过自顶向下(P5→P4→P3→P2)逐级上采样,并与主干网络的同尺度特征融合;
最后是最终优化部分,即对每个融合后的特征图(P5~P2)施加 3×3卷积。