CS231N-5-Convolutional Neural Networks

来源:互联网 发布:河南省公安厅网络 编辑:程序博客网 时间:2024/05/01 19:55

Preface

The title of the class.
上节课是神经网络的基本框架,一层层layer的堆积,每层都是简单的linear+RELU,这显然是不够的。在图像处理上,convolutional layer比较管用。

现在我们先介绍CNN的历史。忽略远古时期,直接看两篇标志性的论文。
1998年LeCun发表了bp算法在zipcode recognization上的应用。由于硬件资源和数据集,只是在zipcode上。不过算法本身已经成熟。
LeNet
这里写图片描述
2012年Alex发表了Imagenet的论文,标志着大数据GPU的CNN时代。simiar to Lecun, just scaled. with huge amounts of images by GPU.
AlexNet
这里写图片描述

CV的应用
这里写图片描述
这里写图片描述
这里写图片描述

注意CV的应用也是分级别的,有难易的。参照face++研究员所说,最简单的是classfication对象是整张照片,顺便实现retrieval图片检索;稍难的是detection对象是region,检测出照片中的主要物体;更难的是segmentation对象是pixel,对每个像素有个归属;最难的好像有几个版本,一是sequence对象是视频,建立在detection基础上动态一帧帧地检测物体的运动,从而实现自动驾驶,二是language对象是region和自然语言,建立在detection和NLP/RNN基础上,合成一句caption,三是生成图片,如GAN,要求逼真清晰,可以仿照真人的real-time表情合成表情包(iphone X),或者按照要求生成一段视频。

Process

正如之前说的,CS231N不数学,只是让你有个general idea,所以讲的比较粗略。

CNN是由若干层convolutional layer(with RELU/pooling)配上最后一层——全连接层fully connected(即为Wx+b得出最终的概率向量)。于是重点就是卷积层。

这是卷积层的构造。卷积的定义这里淡化了。filter是个depth喝Image相同的卷积核,和Image作卷积,通过slide over the spatial locations遍历整张图片(和一小块size相同的区域作卷积),得到一层薄薄的activation map。
这里写图片描述

于是一个filter形成一个平面activation map,多个filter就得到activation maps.

这里写图片描述

于是一个简单的CNN就搭好了。Image变为不同size的,根据filter的数量。

这里写图片描述

而CNN由浅入深的每一层提取的feature是从简单到复杂, low-level to high-level

这里写图片描述

Convolutional layer

有很多参数。

首先是stride步长。这是filter扫过image是遍历的间距,公式很容易推导。有时为了更好地处理edge,人为添加zero padding,这样就完整了。
这里写图片描述
这里写图片描述

简单的练习。每个filter是个3d的参数。然后加上Bias。
这里写图片描述
这里写图片描述

卷积层的所有参数都已列出。filter的体积和个数,bias,stride,pad。

这里写图片描述

Pooling layer

pooling是一种downsampling技术,为了保留关键值,也为了减少参数(更快,减少过拟合)。通常是Max pooling,至于average pooling被弃用,之前说过了。pooling的参数就是stride和filter,通常是2*2.
这里写图片描述
这里写图片描述
这里写图片描述

Fully Connected Layer

最后一层,输出概率向量。所有的架构都已清晰标明。
这里写图片描述

这里写图片描述