1、ResNet(残差网络)
残差网络就是加一个直连,在两个卷积操作中加入一个直连,这样操作优点在于求导操的时候,阻止了梯度消失(怎么加?注意这里的直连不是拼接,卷积操作后要保证与原始输入通道一致,然后对应位置相加)。
残差网络是基于vgg19,vgg19=2conv+2conv+4conv+4conv+4conv+3fcl,
34层的残差网络=1conv+6conv+8conv+12conv+6conv+1fcl(取消池化,取消全连接,两个卷积组成一个直连模块)
ResNet残差网络往更深的层次去走?(1*1卷积)
先通过1*1卷积降维,最后通过1*1卷积进行升维,以前说过哈,卷积核的默认通道是输入数据的通道。
原始参数:3*3*256(一个卷积核参数)*256 + 3*3*256*256=1179648
优化参数:1*1*256*64+3*3*64*64+1*1*64*256=69632(将近17倍)
2、InveptionV4
说明:InceptionV4是没有残差网络思想的,Inception ResNet V1和Inception ResNet V2是有残差思想的,这三个网络都是在InceptionV3的基础上进行改进的。
①Inception ResNet V1
在V3的基础上,引入了残差思想。V3中使用的InceptionA、InceptionB、InceptionC三种组件(池化是最大池化),ReductionA和ReductionB组件相当于是池化操作。引入残差思想不是在组件上直接添加直连即可。注意在原始组件上进行了调整。没有那么多分枝了,因为直连本身包含了丰富的特征信息。也取消了poling操作,最后都是用了一个1*1卷积,保证输出与直连的特征维度相同H(x)=F(x)+x(也就是使F(x)进行一次维度变化能够和x直接拼接)(注意这里的直连不是通道拼接,相加操作),stem预处理也和V3有一点点变化,无非就是卷积核的数量和卷积池化的个数(图中若有V则是没有Padding操作,反之即有)。
②Inception-Resnet-v2(在V1的基础上优化了stem组件,增加了通道数)
③InceptionV4(可以看出,V4没有直连,在V3的基础上微调了组件,修改了池化方式,stem组件增加了通道数量,注意:V3和V4、ResNetV1、ResNetV2中的每个组件的卷积核个数各不相同,V3和V4的Inception组件相同,ResNetV1和ResNetV2的Inception组件相同)
总结:4个网络的共同点是ReductionA/B结构(相当于池化操作)都是共用的。V3和V4的Inception组件结构是相同的,区别在于组件池化方式不同,还有就是预处理Stem不同。Inception-ResNet-V1和Inception-ResNet-V2的Inception组件结构也是相同的。
V3:先经过Stem,再通过三种Inception组件(最大池化)(V3)
Inception-ResNet-V1:没有优化Stem,经过三种微调Inception组件(没有池化)(直连)
Inception-ResNet-V2:(增加通道数:卷积+池化),经过三种微调Inception组件(没有池化)(优化Stem+直连)
V4:优化了Stem(增加通道数:卷积+池化),再通过三种Inception组件(平均池化)(优化Stem+优化组件,没有直连)
3、ResNeXt网络
以前的网络是深度、宽度,这里优化基数。(将卷积核进行分组,形成32个并行分组,思路来源AlexNet)
思路:就是通道分组,ResNet是64个1*1*256的卷积核,ResNeXt是32组,每一组是4个1*1*256的卷积核。
(输入:256通道) | ResNet | ResNeXt |
第一步卷积核降维: | 64个1*1*256卷积核 输出:64通道 参数量1*1*256*64=16384 | 32组,每组4个1*1*256卷积核 输出:128通道 参数量:1*1*256*4*32=32768 |
第二步卷积操作 | 64个3*3*64卷积核 输出:64通道 参数量3*3*64*64= 36864 | 32组,每组4个3*3*4卷积核 输出:128通道 参数量:3*3*4*4*32=4608 |
第二步卷积升维 | 256个1*1*64卷积核 输出:256通道 参数量1*1*64*256=16384 | 32组,每组256个1*1*4卷积核 输出:256通道 参数量:1*1*4*256*32=32768 |
PK | 参数量:69632 | 参数量:70144 |
优点是开始通道数增加,中间卷积核参数少,最后都是256通道,加法运算,不是拼接(InceptionResNetV1和InceptionResNetV2在直连操作时也是做加法运算,不是拼接),同等参数规模下,增加结构,提高模型的表达能力。