深度学习在视觉感知中的运用(1)

来源:互联网 发布:韩顺平php视频下载 编辑:程序博客网 时间:2024/05/29 13:53

1.由于cpu的运算能力增强,硬件逐渐变廉价,以及深度学习算法的大量编写及完善,我们,如今可以将深度学习在视觉感知与识别中使用


在学习深度学习之前,需要理解以下几个算法

(1)convolutional neural networks 卷积神经网络

(2)restricted boltzman machines 限制玻尔兹曼机

(3)autoencoder 自编码网络

(4)spare coding 稀疏编码


2.1.1

介绍几种不同的卷积方法

1.基于CNN(卷积神经网络)的方法 AlexNet,Clarifai,SPP,VGG,GoogleNet

2.基于RBM(限制玻尔兹曼机)的方法  deep belief networks, deep olzmann machines,deep energy models

3.基于Autoencoder(自编码网络)的方法 sparse autoencoder,denoising autoencoder ,conractive autoencoder

4.基于 sparse coding(稀疏编码)的方法。。。



并且需要了解深度学习在图像识别的几个应用

(1)image classification 图像级别分类

(2)object detection 目标检测

(3)image retrieval 图像检索

(4)semantic segmentation 语义分割

(5)human pose estimation 人体姿势识别


2.几个名词的解释

(1)卷积神经网络

卷积神经网络是高度使用并且有效的训练方式,在大多数的机器视觉应用中都有使用。

首先 网络分为三层

1.卷积层 2.池化层 3.全连接层

每一次有不同的用处


其次 神经网络通常是两个阶段的反复迭代,即forward stage和 backward stage

forward stage 通常用于利用参数在每一层重现一张图片,然后预测每一张图在输出阶段的损失情况

backward stage 是用于在基于损失的情况下,利用链接规则计算每个参数的梯度


卷积层,使用各种函数来讲整个图片等价划分为相同的的中间映射特征,生成各种特征映射。

卷积有三个优点:

(1)相同特征映射中的共享机制减少了参数使用的数量

(2)相邻像素之间的相互相关性

(3)对象位置不变性

有些优秀的针对CNN的改进算法

NIN可以将传统的神经网络的卷积层变化为大量微型的感知器组成的一层并用这种多层的非线性感知层,组成一个非线性的神经网络。这个改进能大量改进该神经网络。


池化层,一般池化层都在卷积层之后,用于压缩图片和减小计算量

一般方法为最大池化,平均池化,选择池化,还有金字塔池化,就是多种池化大小并行得到的池化方式,但是这种池化的结果可能会导致计算数据集变多吧(一般都使用max pooling最大池化)


全连接层

该层是调节参数最多的一层,参数调用大概占90%左右,其功能与传统神经网络相似。其实卷积神经网咯就是按照传统神经网络将全局相关性的识别转变成为了局部相关性的识别。在通过进行了卷积与池化的过程之后,在保留了大部分有用信息的前提下,再交给传统神经网1网络用于识别。所谓的卷积和池化只是一种降低计算量的方法。

传统神经网络所做的工作就是,讲神经网络推进到具有预定义长度的向量之中。

接下来,我们可以有两种方法去做

1.将该矢量用数字量化并且进行图像分类

2.将其作为特征向量进行后续处理。

由于全连接层具有大量的优秀参数,一般不会修改完全连接层的结构,但是由于它的参数是针对指定物体进行设计的,则该连接层可以用于迁移学习,即修改卷积与池化层,保留全连接层,用于识别新的图片(但是识别的图片分类可能大致相同,因为全连接层的参数没有改变)



2.1.2 训练策略

与浅层学习相比,深度学习的优点是可以构建一个深层次的架构去学习一个较为抽象的项目。然而,大量的参数输入也可能导致另外一个错误,那就是过度拟合。过度拟合可能造成对训练数据拟合度较高,但是对测试数据拟合度较差。因此,我们设计了多种算法,用于解决过度拟合的问题。例如,stochastic pooling(随机池化)

1.dropout 

dropout方法适用于训练数据较少的情况。因为训练数据较少,较为容易找到这样一个函数,使这个函数能高度拟合当前的训练集(数据太少了)。因此提出了一种dropout的方法,用于减少过度拟合。其主要思想是在模型训练的过程中,让网络某些隐含层节点的权重不工作。但是这些隐藏的节点权重又保存下来了。这样下一次有可能重新加入工作了(这样我感觉是暂缓隐含节点的更新速度?不更新就可以预防过度拟合?觉得大概是能延迟拟合的时间,在这个时间段拟合程度还不是很高,但是改变不了大局吧。小修小补。)

方法是设计概率p,将实验数据按照1-p的概率将隐含层的数据丢弃不用,但是保留其权重,让其下次可以使用。bp更新其权值时,不再更新与其相关的权值。

其公式是

r = m.* a(Wv)

变化结果 = 01列向量 与 一个函数a相乘 ,该函数a是一个满足a(0) = 0的函数,意思就是满足某些条件时会放弃部分数据集更新。(输出集)


2.dropconnect

这里是将输入集按照1-p的概率将数据放弃更新。(输入集)


鉴于文章内容太多,明天再继续。