CNN卷积神经网络相关(分类,backbone)
LeNet
卷积神经网络的里程碑。由2个卷积层、2个池化层和2个全连接层组成,卷积核大小是5 * 5,池化层大小为2 * 2,最后通过softmax输出。
AlexNet
卷积神经网络崛起之作。由5个卷积层和3个全连接层组成,输出为softmax。
贡献:
- ReLU 激活函数。极大缓解了梯度消失问题,速度也比之前的sigmoid函数和tanh函数快。
- 重叠池化(Overlapping Pooling)。AlexNet使用的是最大池化(Maxpooling),步长小于池化核,造成输出之间会有重叠和覆盖,可以提升特征的丰富性。
- Drupout。在训练时,Dropout随机忽略一部分神经元,使得这部分神经元在网络前向和反向传播时不可见。可以有效减少模型过拟合。
- 局部响应归一化(LRN)。通过LRN层对局部神经元的活动创建竞争机制,使得响应较大的神经元值变得更大,反馈较小的神经元得到抑制。增强了模型的泛化能力。
- 大数据与多GPU训练。数据才是原罪。
- 数据增强。对于图像数据,常见的变化包括裁剪、镜像、旋转、缩放、色彩光照变化(变化,加入噪点,RGB通道强度变化)等。
VGGNet
继承了AlexNet的特点,使用了小卷积核,从而追加网络深度,提升网络效果。
两个3 * 3卷积的卷积级联感受野相当于5 * 5卷积,三个3 * 3卷积级联感受野相当于7 * 7卷积。每个卷积层后面跟着非线性激活函数,这样既增加了非线性变化也减少了网络参数。
Inception
来自Google,Inception v1 又名GoogLeNet。Inception模块的设计,增加了网络的宽度。
Inception多条通路的设计,使用不同大小的滤波器对输入图进行卷积操作,并附加最大池化,最后子层的输出级联起来(filter concat),并传送至下一个Inception模块。
这样的设计,为了解决在一个图上信息差异,具有全局的信息使用大卷积,信息比较局部的信息使用小卷积,从而同时得到多种信息。
级联(filter concat)操作前提条件是特征图大小相同,只是通道方向进行追加。
为了降低参数,在使用3 * 3和5 * 5卷积层之前进行了1 * 1卷积层来降低通道数,称为瓶颈操作(Bottleneck)。
Inception v2借鉴了VGGNet的方法,对卷积进行分解,将5 * 5卷积拆分成两个3 * 3卷积,减少了训练参数,引入了更多非线性变换。Module A
更进一步,将nn的卷积拆分成1 * n,n * 1的卷积。这种非对称的卷积拆分。与之前的拆分为小卷积相比,效果更好,增加特征多样性。Module B
考虑到宽度,将Module A 和 B结合,单独输出13和3*1进行级联,以增加宽度。Module C
Inception v2认为瓶颈操作不应该出现在浅层,因此通过几个卷积层才将Module A。Module B。Module C模块串联。
另一项重大改进是使用了批归一化(Batch Normalizattion,BN)。网络中间特征也能保持特征分布均衡,加速模型收敛。防止过拟合的有效方法。可以减少Drupout的使用。
Inception v3整合了v2的所有改进,在原基础上使用了更大的分解的7*7卷积核。也使用了RMSProp优化器,在损失上增加了正则化项,防止网络对某一类过分过拟合。
Inception v4对浅层进行了设计,stem部分。对Inception A,B,C也进行了改进。网络中对下采样的处理由原来的池化,设计了降为模块。
ResNet
深度残差网络,是近年的开创性工作,使得上千层成为可能。减缓了之前由于网络太深造成的梯度消失问题。
每一个残差模块,由一系列层和一个捷径(shortcut)组成。这个捷径将输入特征图和经过一系列层的输出特征图连接到一起,对应元素位置进行加法运输,残差模块的输入输出特征的现状是一致的。
DenseNet
多层特征融合重用,保证浅层特征信息多次利用。密集连接模块(Dense Block),在模块中任意两层之间都有连接,BN + RuLU + 3 * 3 conv的组合,在通道上进行连接操作,因此特征图大小一致。
Dense Block之间由转换层连接,一般转换层由BN层,11的卷积层和22的平均池化层组成。
优点:1.解决了深层网络的梯度消失。2.加强了特征的传播。减少了模型参数。
缺点:内存消耗较大。耗时。
轻量级:
MobileNet
使用的是非常规的深度可分离卷积。是由一次逐通道卷积和一次逐点卷积组成。正常的一个卷积为(m,d,d),m为通道。逐通道卷积是(1,d,d), 一共由m个卷积进行卷积操作DWconv。逐点卷积就是1*1卷积conv,(m,1,1)。
MobileNet平衡了计算量,存储空间和准确率三个方面的要求。与vgg16相比,精度相差不大,但速度和运算量上要好很多。
ShuffleNet
使用分组逐点卷积(Gconv)来代替逐点卷积,将输入特征图分成若干组,卷积操作限制在每个组内,各自完成独立操作。然后进行通道重排(channel shuffle),分组后的输出重新排列。
分组数是超参,较大的分组数有利于网络编码更多的信息,提升模型识别效果。
shufflenet继承了深度残差网络(resnet),基于分组逐点卷积和通道重排进行了设计。设计了shufflenet卷积模块和降采样模块。
RNN循环神经网络
权值共享,短期记忆。当前使用在序列数据处理,如语音识别,面部人脸建模,看图说话,视频预测。
对于简单的循环网络,输入层到隐藏层的参数为权重矩阵U,隐藏层到输出层的参数为权重矩阵V,隐藏层到隐藏层之间的参数权重矩阵W(该权重共享),U处有一个偏置b,V处一个偏置c.
循环神经网络的参数学习,有两种方式:时间反向传播算法BPTT(先从最后一个时间节进行求导)和实时循环学习算法BTRL.
循环神经网络变种比较多,可以根据图看出不同的处理方式。
长期依赖问题,造成的梯度消失和梯度爆炸。目前解决方式,使用最多的,最好的策略是门控RNN。其中最著名的两个网络长短期记忆(LSTM)和基于门控循环单元(GRU)的网络。
双向RNN(Bi-RNN),通过提取过去和未来的信息,结合上下文信息,产生更精准的精度。在图像,语音和自然语言处理广泛应用。如视频动作检测。
序列到序列seq2seq,可变长度的序列。
主要包含两部分:
编码器(encoder)--输入RNN,通过RNN处理得到输入序列的隐藏单元状态,代表着输入序列的语义特征,“上下文”C。
解码器(decoder)--输出RNN,以固定长度的向量为条件,使用向量C作为约束,产生输出序列,并且上一时刻的输出作为下一时刻的输入,直到输出终止符。
注意力机制 将向量C变成一个长度可变的序列而不是一个定长的向量,引入了将序列C的元素与输出序列的元素关联匹配的注意力机制。
机器翻译: 通过注意力机制,输出序列的每个文字都得到一个“上下文”信息C,而不是只有一个了。这种方式的优点是在解码时,每一个时间步长产生的结果更有针对性,更好解码。
自注意力模型: 动态的生成不同的连接权重。可以作为卷积神经网络或循环神经网络中的一个模块来使用。
深度生成模型
概率生成模型,可分为 变分自编码(VAE)和生成对抗网络(GAN),GAN网络应用较广,图像合成,图像语义编辑,风格迁移,图像超分辨率等。
GAN网络由生成器G和判别器D构成(两个神经网络)。生成器G的目标是捕获真实数据的潜在发布,并生成新数据。判别器D是一个二分类,其目标是判别输入是来自真实数据还是新生成样本。
生成对抗网络典型模型:DCGAN、WGA、 LAPGAN
DCGAN(生成卷积生成对抗网络)。 开发人员给出的几点建议,判别器使用一个比生成器小的模型,因为生成器的任务更重。在判别器中使用Dropout,防止过拟合,使生成器生成奇怪的图像。较高的L2正则可以降低判别器的能力,使生成器的学习变得简单。
WGAN 基于DCGAN进行的优化,缓解了模型塌陷问题,质量更好。
LAPGAN 借鉴了拉普拉斯金字塔的方式,学习相邻层间的残差,从从粗到细地生成图像。
应用: 图像生成、图像转换。图像修复和超分辨率。视频预测。
深度强化学习RL
强化学习模型的结构包含两个部分:智能体(Agent)和环境(Environment). 智能体通过观察环境的状态(State)并获取反馈的奖励(Reward)来进行学习和决策,环境会受智能体的动作(Action)影响而改变状态,并反馈奖励
强化学习分类:基于值函数的强化学习,基于策略函数的强化学习,演员-评判家算法。
开创性深度强化学习,深度Q网络,基于值函数。
应用:机械臂抓取,自动驾驶汽车控制,机器人视觉自主导航等等。
计算机视觉CV
目标检测(Object Detection)
数据集: Pascal VOC,COCO, KITTI(自动驾驶三维目标检测)
基于区域的卷积神经网络目标检测: 生成预测框,然后对预测框进行分类,是两阶段的检测算法。
R-CNN:
- 生成候选区域(选择性搜索算法生成2000左右的候选区域)(RoI)
- 候选区域缩放到固定大小(缩到224 *224)
- 特征提取(使用CNN提取候选区域的特征,输出4096维特征)
- 候选区域分类(对2000多个的4096维特征向量进行分类,每个类别一个分类器)
- 非极大值抑制NMS
- 边界精调(使用线性回归器来精调边框位置,每个类别一个线性回归器)
优缺点:计算量大且冗余,候选框缩放造成失真,训练复杂。
SPP-Net:
空间金字塔池化(SPP)取代了原来的裁剪缩放操作,对候选区域窗口进行空间金字塔池化,取相同维度的特征。(提取多尺度特征,将窗口划分为4 * 4,2 * 2,1 * 1三种尺度块(block),每块进行Max pooling得到16 * 256,4 * 256,1 * 256,并将这些特征拼接起来,得到1 * 21 * 256的定长特征向量。
只进行了一次CNN提取特征,然后将特征与生成框进行映射,而不必每次都对候选框进行特征提取。
- 生成候选框(2000)
- 特征提取(CNN提取整个图特征)
- 空间池化采样(将所以特征图映射到特征图上,对每个窗口进行SPP操作),输出固定长度的特征到全连接层)
- 候选框分类
- 边界精调
- NMS
优缺点:提升了训练速度,但支持向量机和回归器依然是单独训练,且保存了大量特征。
Fast-RCNN:
使用神经网络进行分类和边界框精调代替了原来的支持向量机和线性回归器。参考SPP层提出了RoI Pooling,不仅能将选择搜索算法得到的候选框映射到特征图上,并且可以梯度回传到CNN。
RoI Pooling操作将候选区域映射到特征图上的区域称为兴趣区域(RoI),并且舍弃了多尺度特征,只将RoI划分为7 * 7的块后进行Max pooling,得到7 * 7 * 256的特征,并将这个特征送人全连接层。
全连接层分为分类分支和边界框预测分支。在分类分支,特征向量经过全连接层后接softmax进行K + 1分类,包含一个背景类。在边界框预测分支,只计算了K类RoI对应的边框值t=(x,y,w,h).
分类loss 使用softmax loss ,边框回归使用的 smooth L1. 构成了多任务损失函数。loss = softmax loss + smooth L1
- 生成候选框(2000)
- 特征提取(CNN)
- RoI pooling(将候选区域映射到特征图上的特征,通过RoI Pooling得到固定长度送人全连接层)
- 分类和边界精调
- NMS
Faster-RCNN:
为了解决选择性搜索算法的巨大耗时,提出了区域提名网络(RPN). 除了候选框生成外,其它仍然采样Fast RCNN的方式进行。第一次意义上实现了端到端检测训练的实现。
- 特征提取(使用CNN进行特征提取,将特征图分布送入RPN和目标分类回归子网)
- 生成候选框(RPN生成预测框,得分高的2000个候选框作为训练,300个作为预测)
- RoI Pooling(将生成的预测框映射到之前的特征图上,经过RoI Pooling得到固定长度特征送入全连接层)
4)分类和边框回归(经过两个全连接层后分别进行分类和边框预测) - NMS
RPN:
生成图像中的边界框,输出类别和对应的位置。因为只需判断目标是否存在于边界框中,只有两个类别,前景和背景。
Anchors(预先设计的框), 设置了k=9个边界框,其长宽比为1:1, 1:2, 2:1, 面积尺度为8,16,32.(此处为feature map面积尺度,映射到原图中为128,256,512,此次默认下采样为16倍,面积尺度也属于超参,自行计算修改,收敛会更快)
在提取后的H*W特征图的每个点上创建一个Anchor,并用卷积提取其窗口内的特征,输出为256维的向量,分别送人分类和回归分支(一个特征点有9个窗口,输出向量为9 * 256)。
在分类中,分为前景和背景两类(两类概率),因此k * 256(9 * 256)转换为2k个输出。
在回归中,k个边框对应的边界框左上角顶点的位置与边框大小(x, y, w, h),256维向量转换维4k个输出。
RPN输出所以的预测框的类别和位置后,需要根据真正的边界框来定义边界框的正负样本,以进行网络训练。预测框与真实框的IOU大于0.5的为正样本,大于0.1小于0.5的为负样本。
loss使用了和fast rcnn类似的损失函数,分类loss 使用softmax loss ,边框回归使用的 smooth L1. 构成了多任务损失函数。loss = softmax loss + smooth L1
基于回归的卷积神经网络目标检测: 从输入图像的位置上直接回归这个位置的分类和边框。一阶段的检测算法 通过感受野设置相关参数
YOLO:
- 缩放图像(将图像缩放至448 * 448,然后送人CNN)
- 预测边界框(将图像分割成S*S的网格,每个网格对应B个边界框,预测所以网格对应的边界框位置,并对网格内容进行分类)
- NMS
在YOLO算法中,输入图像被分割成S * S的网格,每个网格对应B个边界框,每个边界框包含5个参数,边界框的位置(x,y,w,h)和一个置信度。
此外还要进行网格中物品的分类,总共C个类别,则S*S的网格总共有S * S * (B * 5+C)的特征。
优缺点: 速度大大的加快,将图像分割S*S的网格,减低了检测精度,最多只能检测S * S * B个物品,同在一个格子中的小物品,也只能检出一个。
SSD:
- 缩放图像(缩放至300 * 300,并送人CNN)
- 特征提取(使用CNN提取特征,并且保留多尺度特征图)
- 预测边界框(对不同尺度的特征图,每个特征点都设置一组default box(类似Anchor,不同的面积和长宽比), 对每个default box进行分类和回归)
- NMS
使用VGG16, 通过对多尺度特征图,对不同尺度特征图使用不同的default box。如 38 * 38的特征图上,使用了4种不同的default box,共生成38 * 38 * 4个default box。
经过卷积产生38 * 38 * 4 * (4+C)维向量,4是边框位置和尺寸,C是类别数。(即每个类的4点信息)。最后,全部特征图一共产生(38 * 38 * 4 + 19 * 19 * 6 + 10 * 10 * 6 + 5 * 5 * 6 + 3 * 3 * 4 + 1 * 1 * 4)= 8732个box。
优缺点:在速度同样快速的情况下,精度也有了较大的提升,但是SSD需要人工设定default box的形状与面积,需要相当的经验才能取得好的效果。
语义分割(Semantic Segmentation)
像数级的分类,同一类使用相同颜色,而实例分割,则不仅将像数点进行标记,更对这一类的不同个体进行区分。FCN,SegNet,U-Net,DeepLab
全卷积神经网络(FCN)
FCN可以接受任意尺寸的输入图像,通过反卷积层对最后一个卷积层的特征图进行上采样,将它恢复到输入图像尺寸大小。
这样就可以对每一个像数产生一个预测,最后对上采样的特征图进行像数的分类。
以Alexnet为例,FCN是将其最后三层全连接层改为了卷积层,其卷积核大小为(256,1,1,4096).(4096,1,1,4096),(4096,1,1,1000),最后这层可以看作是所有类别的热力图,因为VOC有21类,所以将1000改为21(20+1)。
直接输出的结果是很粗糙的,细节不明显。因此,采用skip(跳跃)连接的方式,将之前的特征图融合起来,提高语义分割的准确率。
将不同池化层的结果进行上采样,然后结合这些结果来优化输出,分为FCN-32s,FCN-16s,FCN-8s三种。
FCN-32s 对conv7的特征图进行上采样,使它扩大32倍。
FCN-16s 由于conv7的输出维度是等于pool5的,而pool5的输出维度又是pool4输出的二分之一,因此现将conv7上采样扩大2倍,然后和pool4的输出进行融合,最后对融合之后的上采样扩大16倍,得到与原始图像相同的大小。
FCN-8s 同理,由于conv7的输出尺寸是pool3的输出尺寸的四分之一,pool4的输出又是pool3的二分之一,所以先将conv7的输出上采样4倍,然后将pool4的输出上采样2倍,得到和pool3一样的输出大小,最后将三个融合起来,再进行上采样8倍,得到和输入图像一样的大小。
SegNet
编码-解码结构的端到端语义分割网络
编码 正常的CNN操作
解码 对特征图上采样,后接卷积层增强特征,上采样的方法是反向的Max pooling操作,根据之前的max pooling时保留的位置信息,恢复其特征,其余补0.
类似Segnet这种编码-解码方法,还有DeconvNet(使用转置卷积来增强上采样后的特征)、U-Net(使用类似FCN的skip方式,将不同尺度的特征图结合进行语义分割)
DeepLab
全卷积网络+条件随机场(CRF)。
全卷积网络:去掉池化层,以避免池化层的下采样带来的信息丢失。将后续的卷积改为空洞卷积以增加卷积层的感受野。
条件随机场:在卷积网络进行了粗略的语义分割后,再使用全连接的条件随机场进行更精细的调整,卷积神经网络边界定位不准确的问题。
随着卷积神经网络版本的精度的提升,可以达到精细的结果,CRF的计算量比较大,将其去除。
DeepLab V3,其中的ASSP模块,结合不同尺度的卷积特征,并编码了全局内容的图像层特征,提升了分割效果。
自然语言处理NLP
包含语义理解和语义生成。语义理解有语音识别、词性标注、句法分析、机器翻译等。语义生成包含语音合成、对话生成等。
基本过程 获取语料、语料预处理、特征工程、任务建模。
获取语料 语言材料。可以自己爬取整理,也可以使用公开语料库。
语料预处理
清洗 将不感兴趣的噪点数据删除。类似爬取后多余的广告,文档中作者,出版社等信息。
分词 英文语言问题,是采用空格区分单词。而中文比较困难,现在也有很多基于统计的方法,对其进行分词。
词性标注(不是必须的) 根据上下文对每个单词贴上词性标签。在文本分类不需要考虑词性,但在情感分析、知识推理等问题需要考虑词性。
去停用词(不是必须的) 去除不需要的词,如标点符号,人称,语气等
特征工程 完成预处理后,需要将词表示成计算机容易处理的结构化数据。有两种表示:词袋模型和词向量。
词袋模型 不考虑词语在句子中的顺序,同一放在一个袋子中,词出现的次数作为训练分类器的特征。
词向量 one-hot 将来自词汇表的单词或者短语映射到实数向量。word2vec可以将文本内容处理简化为向量运算,其输出的词可以用来聚类、词性分析等任务,
任务建模 不同深度学习方法进行建模 RNN更适合其使用,通常是两种结合的方式进行,CNN进行特征提取,RNN进行上下文信息获取理解
文本分类 TextCNN
机器翻译 Seq2Seq架构的编码-解码形式,现在火热的transfomer
自动问答 Seq2Seq
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)