Deeplearning之CNN类型总结

经典网络、深度网络、目标识别网络

Posted by Yunlongs on September 21, 2019

Deeplearning之CNN类型总结

一.经典网络

1. LeNet-5

性质

  • 针对灰度图片训练的,所以图片的大小只有32×32×1
  • 包含大约6w个参数
  • 现在一般使用 ReLU 作为激活函数,输出层一般选择 softmax。

2. AlexNet

性质

  • 约6000w个参数
  • 激活函数为 RELU

3. VGG-16

性质:

  • 简化了神经网络结构,1.38亿个参数
  • 网络结构非常规整,卷积层大小都为3×3,且逐步将通道数扩大一倍;池化层大小都为2×2,用来逐步缩小图像尺寸一倍。
  • VGG-16中的16代表,可以训练的层数为16层(卷积层+FC层+softmax层)
  • 缺点是,需要训练的特征数量非常巨大

二.深度卷积网络

1. 残差网络(ResNet-50)

残差单元示意图:

上图中上方的线,可以称作为神经网络层的跳跃连接,此模块可以被称为残差块,作用为弱化每层之间的强联系,建立隔层之间的联系,这样能够很有效的将之前层的信息继续传递下去。

a[l]a[l+2]之间隔层联系的表达式为: a[l+2]=g(z[l+2]+a[l))

一般RetNet的网络结构如图:

ResNet-50的网络结构如图:

其中“ID BLOCK”为“Identity block”,意味着和前一个卷积层结构一样。

其详细的结构如下:

  • 阶段一
    • 卷积层,大小为7×7的64个filters,strides=(2,2)
    • 最大池层,大小为3×3,strides=(2,2)
  • 阶段二
    • 3层卷积层,大小为3×3,每一层filters的数量分别为[64,64,256]
    • 2个ID BLOCK,规模和前一卷积块一样
  • 阶段三
    • 三层卷积层,大小为3×3,strides=(2,2),每一层的filters的数量分别为[128,128,512]
    • 3个ID BLOCK,规模和前一卷积块一样
  • 阶段四
    • 三层卷积层,大小为3×3,strides=(2,2),每一层的filteres的数量分别为[256,256,1024]
    • 5个ID BLOCK,规模和前一卷积块一样
  • 阶段五
    • 三层卷积层,大小为3×3,strides=(2,2),每一层的filters的数量分别为[512,512,2048]
    • 2个ID BLOCK,规模和前一卷积块一样

为什么残差网络可以很深? a[l+2]=g(z[l+2]+a[l))=g(W[l+2]a[l+1]+b[l+2]+a[l]) 观察上式,当我们进行L2正则化时,权值W[l+2]会变得非常得小,在深层网络很容易发生梯度消失问题,这就使得层次越深,训练效果越不好。我们现在可以直接假设发生了梯度消失,即W[l+2]0,b[l+2]0,此时[l+2]层的激活值为g(a[l])非负。相当于直接忽略了之后的这两层神经层。这样看似很深的神经网络,由于许多Residual blocks的存在,弱化削减了某些神经层之间的联系,实现隔层线性传递,而不是一味追求非线性关系,模型本身也就能“容忍”更深层的神经网络了。


若残差块中的a[l]a[l+2]的维度不同,怎么办?

    1. padding补0
    1. 引入矩阵Wsa[l]相乘,使其维度与a[l+2]一致
    • Ws作为学习参数,通过模型训练得到
    • 固定Ws的值,不够补0

2.谷歌 Inception

Inception单元如图:

基本思想: 适用多个不同尺寸或者不同类型的filters,进行same填充,将每一类过滤器的卷积结果叠加起来,由神经网络来决定使用那些filters,并学习得到最好的参数。

性质:

  • 不需要人工来确定卷积层中的 过滤器类型,和是否需要创建卷积层或者池化层。
  • 所有的filters都需要进行same填充
  • 计算量巨大,可以使用1×1的卷积进行减少计算量

目标检测

1. YoLo算法

首先将图像划分为3×319×19的网格,每一个网格的标签集为y=[pc,bx,by,bh,bw,c1,c2,c3] 再加上2个锚盒时,每个网格会有两个标签集或者说,这两个标签集的连接。

如果要训练一个输入为100×100的网络,先将输入图像经过普通的卷积神经网络,例如卷积层、池化层等,最后映射到3×3×2×8或者3×3×16的输出尺寸。其中每个3×3的小方格都对应输入图像相对应位置的网格的标签。

最后再运用非极大值抑制算法来获得最好的定位框。

优点:

  • 并没有在3×3网格上跑9次算法,而是单次卷积实现,但在处理这3×3计算中很多计算步骤是共享的,所以这个算法效率很高
  • 显式地输出边界框坐标,可以具有任意宽高比,并且能输出更精确的坐标,不会受到滑动窗口分类器的步长大小限制
  • 因为是卷积实现,运行速度非常快,可以达到实时识别

2.R-CNN算法

R-CNN算法首先使用K-Means聚类算法,对图像进行聚类处理,在每个色块上进行处理,然后再分类。

缺点:

  • 算法运行速度很慢,每次分类前都需要对图像进行处理。

Fast R-CNN Fast R-CNN算法基本上是R-CNN算法,最初的算法是逐一对区域分类,快速R-CNN用的是滑动窗法的一个卷积实现,显著提升了R-CNN的速度,问题是得到候选区域的聚类步骤仍然非常缓慢

Faster R-CNN 更快的R-CNN算法(Faster R-CNN),使用的是卷积神经网络,而不是更传统的分割算法来获得候选区域色块,比Fast R-CNN算法快得多。 不过大多数更快R-CNN的算法实现还是比YOLO算法慢很多


0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!