经典网络解析

一、零散知识点

(1)神经网络:就是一个巨大的复合函数!!!

(2)维度是指各个方向的数据,降维可以是各个方向上数据的简化。

(3)卷积函数用来降维和提取特征!!!

(4)趋势,用1*1卷积核代替全连接层,因为全连接层参数太多。

(5)浅层卷积后像素较高能够提取细小的细节,深层能够提取深层语义信息。

(6) 输入图像归一化之后可以防止梯度爆炸。 normal_a=tf.nn.local_response_normalization(a,2,0,1,1) ,

tf.layers.batch_normalization(data, 其他参数)

(7)神经网路中的超参数主要包括1. 学习率,2. 正则化参数,3. 神经网络的层数,4. 每一个隐层中神经元的个数 ,5. 学习的回合数,6. 小批量数据 minibatchminibatch 的大小,7. 输出神经元的编码方式,8. 代价函数的选择,9. 权重初始化的方法,10. 神经元激活函数的种类,11.参加训练模型数据的规模这十一类超参数。学层个回训初激

(8)超参:是机器学习在学习之前预先设置好的参数,而非通过训练得到的参数。

二、常见神经网络

1. LeNet模型

有两个卷积、池化层(average池化)。两个全连接层,第一层全连接500神经元再接激活函数,第二层为10个神经元,得到十维特征向量,送入softmax函数进行分类。

2. AlexNet模型

参数配置

Input:224x224x3=150528
CNN1: 96个11x11x3的卷积核,
节点数量为:55x55x48x2=290400
参数数量:11x11x3x96+96=34944
CNN2: 256个5x5x48卷积核,
节点数量为:27x27x128x2=186624
参数数量:(5x5x48x128+128)x2=307456
CNN3: 384个3x3x256卷积核,
节点数量为:13x13x192x2=64896
参数数量:3x3x256x384+384=885120
CNN4: 384个3x3x192卷积核,
节点数量为:13x13x192x2=64896
参数数量:(3x3x192x192+192)x2=663936
CNN5: 256个3x3x192卷积核,
节点数量为:13x13x128x2=43264
参数数量:(3x3x192x128+128)x2=442624
FC1:
节点数量:4096
参数数量:(6x6x128x2)x4096+4096=37752832
FC2:
节点数量:4096
参数数量:4096x4096+4096=16781312
FC2:
节点数量:4096
参数数量:4096x1000+1000=4097000

(1)使用ReLU作为激活函数,解决了深度网络的梯度消失问题。

(2)使用dropout方法随机忽略一些神经元,防止过拟合。

(3)使用LRN(局部正规化)对神经元建立竞争机制,淘汰反馈较小的神经元,加大反馈大的神经元,增加了泛化能力。

(4)用MAX池化,防止了avg池化模糊。

(5)运用GPU增加了并行计算能力。

3. VGG模型

在这里插入图片描述

5层卷积-池化层(卷积核为3*3,步长为1,填充为1),3层全连接层,最后一层为softmax层。

4. 残差网络Resnet

随着模型层数的增加,一些训练不好的层对整体效果产生负影响,模型效果反而没有上升,所以我们需要在深层模型时能够筛选训练较好的层留下来!!!

在这里插入图片描述

解决网络退化的问题:当模型x层通过两层计算后,如果这两层的loss一直无法降低,那么就通过同等映射将x层的信息直接加到两层后面,然后将两层的权重设置为0,这样至少有个x层保底,模型不会越学越差!!!

5. R-CNN模型

利用选择性搜索算法提取大约2000个候选区,将每个候选区送到CNN进行特征提取,然后将提取的特征送入svm进行目标和背景二分类。再利用回归算法进行边框回归。

缺点:每个候选区都要经过CNN的重复特征提取大约花费47秒,选择性搜索方法生成候选区需要花费2秒 。并且三个模块(提取、分类、回归)是分别训练,占用空间大。

6. Fast-RCNN

在这里插入图片描述

读入一张图像,一路送入CNN进行特征提取,输出特征图,另一路通过选择性搜索生成大约2000个候选区 (r, c, h, w) 。把候选区的坐标系映射到特征图上,再把候选区窗口框起来的各个特征图输入到RoIPooling,得到固定7*7大小的输出。再经过两个全连接得到特征,将IOU>=0.5的候选区使用softmax分类,使用平滑的L1-loss进行窗口回归。

在这里插入图片描述

我们有一个8$ 8 大 小 的 特 征 图 , 一 个 ( 0 , 3 ) , ( 7 , 8 ) 候 选 框 , 以 及 输 出 大 小 为 2 8大小的特征图,一个(0,3),(7,8)候选框,以及输出大小为2 80378)2$2。

找到候选框在特征图上面的投影位置(左上角,右下角坐标):(0,3),(7,8)。将其划分为(2$$2)个sections(因为输出大小为22),再对每个section进行max池化。

7. Faster-RCNN

在这里插入图片描述

在Faster RCNN卷积层中对所有的卷积都做了扩边处理(pad=1),再做3x3卷积后输出MxN,不改变输入和输出矩阵大小。经过4个pooling之后,输出特征图为原图像的 1 16 \frac{1}{16} 161,这样就能将特征图与原图相对应。

区域生成网络 Region Proposal Networks(RPN):卷积后的特征图,每个点设置9个锚点(进行多尺度检测),上面一条通过softmax对锚点进行目标和背景分类,下面一条用于计算对于各个锚点的边框偏移量,以获得精准的候选区域。 最后的Proposal层将前面两个结果结合候选区域特征图,同时剔除太小和超出边界的候选框。再将候选特征图送入全连接层进行分类和回归。

8. YOLOV1模型

在这里插入图片描述

给定一个输入图像,将图像缩放到448×448,然后将图像划分成7×7的网格。对于每个网格可以预测2个bbox,每个box包含(x,y,w,h,置信度)5个预测量(x,y为物体中心点相对于各子位置的偏移量,置信度为物体置信概率(0或1)与IOU的乘积),以及20个类别概率,总共输出7×7×(2×5+20)=1470个张量。根据上一步可以预测出7×7×2=98个目标窗口,再通过NMS去除冗余窗口即可得到最终结果。然后将最终结果进行回归,损失函数有三部分:(x,y)坐标的误差+交并比误差+分类误差。

9. YOLOV2模型

流程:

第一阶段:现在ImageNet分类数据集上训练Darknet-19,此时模型输入为224×224,共训练160轮。

第二阶段:将网络输入调整为448×448,继续在ImageNet分类数据集上训练细调模型,共10轮, 此时分类模型top-1准确率为76.5%,而top-5准确度为93.3%

第三阶段:修改Darknet-19分类模型为检测模型,并在检测数据集上继续细调网络。

改进:

(1)在每个卷积层后加BN(批量正则化)层,BN层能提升模型收敛速度,防止模型过拟合与梯度弥散。

(2)高分辨率分类器。YOLO网络在ImageNet上面预训练的时候采用224×224的输入,但是在预测的时候却是448×448的输入,这会导致检测模型的时候不适应图像分辨率的改变。而YOLOv2则将预训练分成两步:先224×224的输入从头开始训练160个批次,然后再在ImageNet数据集上将输入调整到448×448训练10个批次。最后再将模型用于检测。

(3)利用锚点预测边界框。YOLOv1利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLOv2去掉了YOLOv1中的全连接层,使用Anchor Boxes预测边界框。由于图片中的物体都倾向于出现在图片的中心位置,为了使特征图正好有中心位置进行预测,所以使用416×416的输入,最后得到13×13的特征图,然后每个特征图预测5个anchor boxes。

(4)YOLOv2采用Darknet-19,包括19个卷积层和5个max pooling层,主要采用3×3卷积和1×1卷积,这里1×1卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用BN层以加快模型收敛同时防止过拟合。最终采用global avg pool 做预测。

优点:

YOLOv2较多使用了3×3卷积核,在每次池化后操作后把通道数翻倍。网络使用了全局平均池化,把1×1卷积核置于3×3卷积核之间,用来压缩特征。也用了batch normalization稳定模型训练。

10. YOLOV3模型

在这里插入图片描述

YOLOv3将输入图像分成S×S个格子,每个格子预测B个bounding box,每个bounding box预测内容包括:(x, y, w, h,Confidence Score,C个类别的概率),因此YOLOv3输出层的channel数为B×(5 + C)。YOLOv3的loss函数也有三部分组成:Location误差,Confidence误差和分类误差。用逻辑回归替代softmax作为分类器。

(1)特征提取网络。YOLOv3使用 DarkNet53作为特征提取网络:DarkNet53 基本采用了全卷积网络,用步长为2的卷积操作替代了池化层,同时添加了Residual单元,避免在网络层数过深时发生梯度弥散。

(2)特征融合层。为了解决之前YOLO版本对小目标不敏感的问题,YOLOv3采用了3个不同尺度的特征图来进行目标检测,分别为13×13,26×26,52×52,用来检测大、中、小三种目标。特征融合层选取DarkNet产出的三种尺度特征图作为输入,借鉴了FPN(feature pyramid networks)的思想,通过一系列的卷积层和上采样对各尺度的特征图进行融合,实现多尺度检测 ,增强了对小物体的检测能力。

YOLOV3网络结构:

YOLOV3先将图片划分为S×S的网格,每个网格有3个预测框。每个预测框拥有五个预测量和对于各个类别的概率值。如果物体中心落日了一个网格,那么这个网格就负债预测这个物体。通过IOU和非极大值抑制选出最终预测的预测框。DarkNet53为全卷积层网络结构,没有使用全连接层,用strip为2的卷积层代替池化层来进行下采样。采用特征金字塔结构来增强对不同大小物体的检测能力,同时当前层的特征图进行上采样后与上一层的特征图融合实现对尺度检测。 使用了残差结构, 在之前学习的特征的基础上添加某些特征,来获得更好的特征。H(x)=F(x)+x,其中x是开始时的传入特征,而F(x)就是对x进行的填补与增加,成为残差。因此学习的目标就从学习完整的信息,变成学习残差了。

三、光学字符识别

1. CRNN-CTC

在这里插入图片描述

将图片上的文字看成一个整体,然后以weight来划分时间序列。

(1)在进入网络之前,所有的图像需要缩放到相同的高度。然后通过标准CNN模型(去除全连接层)中的卷积层和最大池化层来构造卷积层的组件。这样的组件用于从输入图像中提取序列特征表示。

(2)CTC是一种Loss计算方法,用CTC代替Softmax Loss,训练样本无需对齐。CTC特点:引入blank字符,解决有些位置没有字符的问题。

一般情况下对一张图像中的文字进行识别需要以下步骤:

  1. 定位文稿中的图片,表格,文字区域,区分文字段落(版面分析)
  2. 进行文本行识别(识别)
  3. 使用NLP相关算法对文字识别结果进行矫正(后处理)
# tensorflow实现CTC接口
tf.nn.ctc_loss(
    labels,
    inputs,
    sequence_length,
    preprocess_collapse_repeated=False,
    ctc_merge_repeated=True,
    ignore_longer_outputs_than_inputs=False,
    time_major=True)

四、NLP

1. TextCNN模型

在这里插入图片描述

TextCNN图1
TextCNN擅长捕获短序列信息,多个尺寸卷积核相当于获取一定范围的词关系。

NLP中输入层的"image"是一个由词向量拼成的等长词矩阵。卷积核的宽和该词向量维度相同,且卷积核只会在高度方向移动。一个卷积核对于一个句子卷积后得到的结果是一个vector。通过不同的卷积核尺寸来捕获纵向差异信息,也就是在一个句子中不同范围的词出现会带来什么信息,类似N-Gram的关键信息。每个卷积核有相同尺寸的多个卷积核,多个卷积核就能学习到多个不同的特征信息, 进行特征互补。

卷积结果再经过时序最大池化操作后得到的就是一个值,所有值组成一个特征向量,作为最后一层softmax的输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值