CNN流程简述

一 、卷积

1 什么是图像卷积?

图像是一个二维的离散信号,对图像卷积,就是求卷积核作用在图像后得到的图像对于该卷积核的累加响应。 比如,Sobel算子可以得到图像的边缘。

2 为什么进行图像卷积?

我们人看到一幅图像,眨眼之间就知道图像中有什么,图像中的主体在干什么。但计算机不同,计算机看到的每一副图像都是一个数字矩阵。那我们怎么让计算机从一个个数字矩阵中得到有用的信息呢,比如边缘,角点?更甚一点,怎么让计算机理解图像呢?

对图像进行卷积,就是接近目标的第一步。

二 、一个简单的分类处理流程

在计算机真正理解图像之前,我们先让计算机知道一幅图像中是猫 ,另一副是狗 。我们以分类为例进行后续介绍。

分类问题,在机器学习中就是典型的监督学习问题。

这里,我按照cs231n上举的例子介绍一个简单的图像分类流程。 我们用曼哈顿或者欧氏距离加上最或者K近邻分类器分类器分类。

训练阶段

用最近邻分类器做分类时,训练阶段非常简单。我们只是读取图片,并记住每张图片的类标。

测试阶段

我们对每一张测试图像遍历整个样本集,找到和它最或者前K个相似的图像。

相似怎么度量?就是简单的用L1或L2距离。而整个过程中到底使用L1还是L2,是最近邻还是K近邻,K到底取多少?这些都是参数,也就是调参需要调的东西。

显然,用K近邻分类器的优点是训练阶段毫不费事,但是测试阶段随着样本集的增大可是要了命了。然而,CNN与之相反,它的训练过程较为漫长,而测试阶段时耗很少。

三 传统方法

这里,我介绍一个简单的猫狗分类任务。

假设,我们拿到了许多张猫和狗的图像。

训练阶段

1 首先进行一些简单的图像预处理,诸如平滑,去噪,光照归一化等等。

2 提取一些诸如SIFT, HOG, LBP特征。

2.5 这一步可有可无,就是对特征进行编码,比如常用BoW,FisherVector等。

3 将特征放到一个分类器,比如SVM,进行2分类,训练出最优分类面。 测试阶段

1,2 和训练阶段相同。 3 用刚才训练好的分类器做出决策。

但是,关键问题是:这些手工设计的特征,是不是真的对分类有利呢?可不可以让机器自己学习出对分类有利的特征呢?

我们引入卷积神经网络。

四 基于CNN的图像分类

我们第三部分介绍了传统方法下的图像分类流程:特征提取+特征表达+分类。而CNN将这些步骤合并到一个统一整体中(当然你也可以用CNN来提取特征用其他分类器训练分类)。

CNN自YannLecun的手写字符识别及AlexNet在ImageNet夺冠后声名大噪,广泛运用到很多图像分类的场景中。

4.1 卷积层 下面,我简单卷积层的相关知识。

4.1.1 权值共享和权值共享 CNN的局部连接和权值共享通过卷积核来实现,卷积核也就是“感受野”,感受野使得训练参数,训练复杂度大为减少。(具体怎么算可以参考LeNet5)

4.1.2 降采样 降采样主要体现在池化层,或称为降采样层中。使得特征映射的resolution再次减少。而不论是Pooling层还是卷积层,步长stride也是降采样的有力手段。

4.2 激活函数层 为什么要激活函数?为什么要非线性的激活函数? 因为没有激活函数,或者激活函数是线性的,就算你亿万层的神经网络相当于没有!!!

4.3 分类层 CNN分类中,常见的分类函数就是多项逻辑斯蒂回归模型,Softmax回归模型。它是基于概率的分类模型,利用最小化负对数似然函数来优化。

5 直观的理解 简单的概括就是CNN是一个层级递增的结构,像人理解文章一样,先逐字逐句,再段落大意,再全文的理解,CNN也是从像素,边缘,局部形状一直到整体形状的感知。 还有很多很有意思的工作,比如某些神经元只对某些图像特征感兴趣啊。。。。。。

链接:http://www.zhihu.com/question/39022858/answer/81312717

results matching ""

    No results matching ""