姓名:雷含笑;学号:21021210745;学院:电子工程学院
参考:https://zhuanlan.zhihu.com/p/31852747
【嵌牛导读】神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向——深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。在卷积神经网络(CNN)中,ResNet成为了近年来大热的模型。ResNet 网络是在2015年由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。
【嵌牛鼻子】神经网络 ResNet
【嵌牛提问】ResNet有哪些不同的模型
【嵌牛正文】
1.ResNet的网络结构
ResNet网络是参考了VGG19网络,在其基础上进行了修改,并通过短路机制加入了残差单元,如图所示。变化主要体现在ResNet直接使用stride=2的卷积做下采样,并且用global average pool层替换了全连接层。ResNet的一个重要设计原则是:当feature map大小降低一半时,feature map的数量增加一倍,这保持了网络层的复杂度。从图中可以看到,ResNet相比普通网络每两层间增加了短路机制,这就形成了残差学习,其中虚线表示feature map数量发生了改变。图展示的34-layer的ResNet,还可以构建更深的网络如表所示。从表中可以看到,对于18-layer和34-layer的ResNet,其进行的两层间的残差学习,当网络更深时,其进行的是三层间的残差学习,三层卷积核分别是1x1,3x3和1x1,一个值得注意的是隐含层的feature map数量是比较小的,并且是输出feature map数量的1/4。
下面我们再分析一下残差单元,ResNet使用两种残差单元,如图6所示。左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。有两种策略:(1)采用zero-padding增加维度,此时一般要先做一个downsamp,可以采用strde=2的pooling,这样不会增加参数;(2)采用新的映射(projection shortcut),一般采用1x1的卷积,这样会增加参数,也会增加计算量。短路连接除了直接使用恒等映射,当然都可以采用projection shortcut。
ResNet并不是一个固定层数的网络,而具有多种版本,有ResNet18、ResNet34、ResNet50、ResNet101、ResNet152。其中的数字18 50 101 等分别代表的是卷积层+全连接层的层数,并不是全部的层数,也不是单纯的卷积层的个数,其中激活层,BN层,池化层统统不包括在内。下表是各个resnet包含的层数,可以在表中查询相应的resnet包含的卷积层数。如表2,它们除了网络深度的不同,还有就是kernel的选择不一样。
以resnet50为例分析,其中conv1只包含一个卷积层,接下来是conv2,包含3个block,其中一个block就像图中的结构(1*1卷积+3*3卷积+1*1卷积)包含有三个卷积层,接下来的计算和上面一样,最后还有一个全连接层别忘了,所以总的计算方式就是(1+3*3+4*3+6*3+3*3+1)=50层
如下图所示,网络层越多,误差越小,但复杂度也随之上升。