精华内容
下载资源
问答
  • 这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,...

    一、前言

    这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征。这个概括可能有点抽象,我尽量在下面描述细致一些,但如果要更深入了解整个过程的原理,需要去了解DeepLearning。

    这篇文章会涉及到卷积的原理与图像特征提取的一般概念,并详细描述卷积神经网络的实现。但是由于精力有限,没有对人类视觉的分层以及机器学习等原理有进一步介绍,后面会在深度学习相关文章中展开描述。

    二、卷积

    卷积是分析数学中一种很重要的运算,其实是一个很简单的概念,但是很多做图像处理的人对这个概念都解释不清,为了简单起见,这里面我们只介绍离散形式的卷积,那么在图像上,对图像用一个卷积核进行卷积运算,实际上是一个滤波的过程。我们先看一下卷积的基本数学表示:

    f(x,y)w(x,y)=s=aat=bbw(s,t)f(xs,yt)f(x,y)∘w(x,y)=∑s=−aa∑t=−bbw(s,t)f(x−s,y−t)

    其中I=f(x,y)I=f(x,y)是一个图像,f(x,y)f(x,y)是图像I上面xxyy列上点的灰度值。而w(x,y)w(x,y)有太多名字叫了,滤波器、卷积核、响应函数等等,而aabb定义了卷积核即w(x,y)w(x,y)的大小。

    从上面的式子中,可以很明显的看到,卷积实际上是提供了一个权重模板,这个模板在图像上滑动,并将中心依次与图像中每一个像素对齐,然后对这个模板覆盖的所有像素进行加权,并将结果作为这个卷积核在图像上该点的响应。所以从整个卷积运算我们可以看到以下几点:

    1)卷积是一种线性运算

    2)卷积核的大小,定义了图像中任何一点参与运算的邻域的大小。

    3)卷积核上的权值大小说明了对应的邻域点对最后结果的贡献能力,权重越大,贡献能力越大。

    4)卷积核沿着图像所有像素移动并计算响应,会得到一个和原图像等大图像。

    5)在处理边缘上点时,卷积核会覆盖到图像外层没有定义的点,这时候有几种方法设定这些没有定义的点,可以用内层像素镜像复制,也可以全设置为0。

    image

    三、卷积特征层

    其实图像特征提取在博客里的一些其他文章都有提过,这里我想说一下图像特征提取与卷积的关系。其实大部分的图像特征提取都依赖于卷积运算,比如显著的边缘特征就是用各种梯度卷积算子对图像进行滤波的结果。一个图像里目标特征主要体现在像素与周围像素之间形成的关系,这些邻域像素关系形成了线条、角点、轮廓等。而卷积运算正是这种用邻域点按一定权重去重新定义该点值的运算。

    水平梯度的卷积算子:

    image

    竖直梯度的卷积算子:

    image

    根据深度学习关于人的视觉分层的理论,人的视觉对目标的辨识是分层的,低层会提取一些边缘特征,然后高一些层次进行形状或目标的认知,更高层的会分析一些运动和行为。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。

    而深度学习就是通过这种分层的自动特征提取来达到目标分类,先构建一些基本的特征层,然后用这些基础特征去构建更高层的抽象,更精准的分类特征。

    那整个卷积神经网络的结构也就很容易理解了,它在普通的多层神经网络的前面加了2层特征层,这两层特征层是通过权重可调整的卷积运算实现的。

    四、卷积神经网络

    在原来的多层神经网络结构中,每一层的所有结点会按照连续线的权重向前计算,成为下一层结点的输出。而每一条权重连结线都彼此不同,互不共享。每一个下一层结点的值与前一层所有结点都相关。

    与普通多层神经网络不同的是,卷积神经网络里,有特征抽取层与降维层,这些层的结点连结是部分连接且,一幅特征图由一个卷积核生成,这一幅特征图上的所有结点共享这一组卷积核的参数。

    这里我们设计一个5层的卷积神经网络,一个输入层,一个输出层,2个特征提取层,一个全连接的隐藏层。下面详细说明每一层的设计思路。

    image

    在一般的介绍卷积神经网络的文章中你可能会看到在特征层之间还有2层降维层,在这里我们将卷积与降维同步进行,只用在卷积运算时,遍历图像中像素时按步长间隔遍历即可。

    输入层:普通的多层神经网络,第一层就是特征向量。一般图像经过人为的特征挑选,通过特征函数计算得到特征向量,并作为神经网络的输入。而卷积神经网络的输出层则为整个图像,如上图示例29*29,那么我们可以将图像按列展开,形成841个结点。而第一层的结点向前没有任何的连结线。

    第1层:第1层是特征层,它是由6个卷积模板与第一层的图像做卷积形成的6幅13*13的图像。也就是说这一层中我们算上一个偏置权重,一共有只有(5*5+1)*6=156权重参数,但是,第二层的结点是将6张图像按列展开,即有6*13*13=1014个结点。

    而第2层构建的真正难点在于,连结线的设定,当前层的结点并不是与前一层的所有结点相连,而是只与25邻域点连接,所以第二层一定有(25+1)*13*13*6=26364条连线,但是这些连结线共享了156个权值。按前面多层网络C++的设计中,每个连线对象有2个成员,一个是权重的索引,一个是上一层结点的索引,所以这里面要正确的设置好每个连线的索引值,这也是卷积神经网络与一般全连结层的区别。

    第2层:第2层也是特征层,它是由50个特征图像组成,每个特征图像是5*5的大小,这个特征图像上的每一点都是由前一层6张特征图像中每个图像取25个邻域点最后在一起加权而成,所以每个点也就是一个结点有(5*5+1)*6=156个连结线,那么当前层一共有5*5*50=1250个结点,所以一共有195000个权重连结线,但是只有(5*5+1)*6*50=7800个权重参数,每个权重连结线的值都可以在7800个权重参数数组中找到索引。

    所以第3层的关键也是,如何建立好每根连结线的权重索引与与前一层连结的结点的索引。

    第3层:和普通多神经网络没有区别了,是一个隐藏层,有100个结点构成,每个结点与上一层中1250个结点相联,共有125100个权重与125100个连结线。

    第4层:输出层,它个结点个数与分类数目有关,假设这里我们设置为10类,则输出层为10个结点,相应的期望值的设置在多层神经网络里已经介绍过了,每个输出结点与上面隐藏层的100个结点相连,共有(100+1)*10=1010条连结线,1010个权重。

    从上面可以看出,卷积神经网络的核心在于卷积层的创建,所以在设计CNNLayer类的时候,需要两种创建网络层的成员函数,一个用于创建普通的全连接层,一个用于创建卷积层。

     1 class CNNlayer
     2 {
     3 private:
     4     CNNlayer* preLayer;
     5     vector<CNNneural> m_neurals;
     6     vector<double> m_weights;
     7 public:
     8     CNNlayer(){ preLayer = nullptr; }
     9     // 创建卷积层
    10     void createConvLayer(unsigned curNumberOfNeurals, unsigned preNumberOfNeurals, unsigned preNumberOfFeatMaps, unsigned curNumberOfFeatMaps);
    11     // 创建 普通层
    12     void createLayer(unsigned curNumberOfNeurals,unsigned preNumberOfNeurals);
    13     void backPropagate(vector<double>& dErrWrtDxn, vector<double>& dErrWrtDxnm, double eta);
    14 };

     

    创建普通层,在前面介绍的多层神经网络中已经给出过代码,它接收两个参数,一个是前面一层结点数,一个是当前层结点数。

    而卷积层的创建则复杂的多,所有连结线的索引值的确定需要对整个网络有较清楚的了解。这里设计的createConvLayer函数,它接收4个参数,分别对应,当前层结点数,前一层结点数,前一层特征图的个数和当前层特征图像的个数。

    下面是C++代码,要理解这一部分可以会稍有点难度,因为特征图实际中都被按列展开了,所以邻域这个概念会比较抽象,我们考虑把特征图像还原,从图像的角度去考虑。

     1 void CNNlayer::createConvLayer
     2 (unsigned curNumberOfNeurals, unsigned preNumberOfNeurals, unsigned preNumberOfFeatMaps, unsigned curNumberOfFeatMaps)
     3 {
     4     // 前一层和当前层特征图的结点数
     5     unsigned preImgSize = preNumberOfNeurals / preNumberOfFeatMaps;
     6     unsigned curImgSize = curNumberOfNeurals / curNumberOfFeatMaps;
     7 
     8     // 初始化权重
     9     unsigned numberOfWeights = preNumberOfFeatMaps*curNumberOfFeatMaps*(5 * 5 + 1);
    10     for (unsigned i = 0; i != numberOfWeights; i++)
    11     {
    12         m_weights.push_back(0.05*rand() / RAND_MAX);
    13     }
    14     // 建立所有连结线
    15 
    16     for (unsigned i = 0; i != curNumberOfFeatMaps; i++)
    17     {
    18         unsigned imgRow = sqrt(preImgSize);  //上一层特征图像的大小 ,imgRow=imgCol
    19         //  间隙2进行取样,邻域周围25个点
    20         for (int c = 2; c < imgRow-2; c= c+ 2)
    21         {
    22             for (int r = 2; r < imgRow-2; r =r + 2)
    23             {
    24                 CNNneural neural;
    25                 for (unsigned k = 0; k != preNumberOfNeurals; k++)
    26                 {
    27                     for (int kk = 0; kk < (5*5+1); kk ++)
    28                     {
    29                         CNNconnection connection;
    30                         // 权重的索引
    31                         connection.weightIdx = i*(curNumberOfFeatMaps*(5 * 5 + 1)) + k*(5 * 5 + 1) + kk;
    32                         // 结点的索引
    33                         connection.neuralIdx = k*preImgSize + c*imgRow + r;
    34                         neural.m_connections.push_back(connection);
    35                     }
    36                     m_neurals.push_back(neural);
    37                 }
    38             }
    39         }
    40     }
    41 }

     

    五、训练与识别

    整个网络结构搭建好以后,训练只用按照多层神经网络那样训练即可,其中的权值更新策略都是一致的。所以总体来说,卷积神经网络与普通的多层神经网络,就是结构上不同。卷积神经网络多了特征提取层与降维层,他们之间结点的连结方式是部分连结,多个连结线共享权重。而多层神经网络前后两层之间结点是全连结。除了这以外,权值更新、训练、识别都是一致的。

    训练得到一组权值,也就是说在这组权值下网络可以更好的提取图像特征用于分类识别。

    关于源码的问题:个人非常不推荐直接用别人的源码,所以我的博客里所有文章不会给出整个工程的源码,但是会给出一些核心函数的代码,如果你仔细阅读文章,一定能够很好的理解算法的核心思想。尝试着去自己实现,会对你的理解更有帮助。有什么疑问可以直接在下面留言。


    转自:http://www.cnblogs.com/ronny/p/ann_03.html



    展开全文
  • 这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,...

    一、前言

    这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征。这个概括可能有点抽象,我尽量在下面描述细致一些,但如果要更深入了解整个过程的原理,需要去了解DeepLearning。

    这篇文章会涉及到卷积的原理与图像特征提取的一般概念,并详细描述卷积神经网络的实现。但是由于精力有限,没有对人类视觉的分层以及机器学习等原理有进一步介绍,后面会在深度学习相关文章中展开描述。

    二、卷积

    卷积是分析数学中一种很重要的运算,其实是一个很简单的概念,但是很多做图像处理的人对这个概念都解释不清,为了简单起见,这里面我们只介绍离散形式的卷积,那么在图像上,对图像用一个卷积核进行卷积运算,实际上是一个滤波的过程。我们先看一下卷积的基本数学表示:

     

    f(x,y)w(x,y)=s=aat=bbw(s,t)f(xs,yt)f(x,y)∘w(x,y)=∑s=−aa∑t=−bbw(s,t)f(x−s,y−t)

     

    其中I=f(x,y)I=f(x,y)是一个图像,f(x,y)f(x,y)是图像I上面xx行yy列上点的灰度值。而w(x,y)w(x,y)有太多名字叫了,滤波器、卷积核、响应函数等等,而aa和bb定义了卷积核即w(x,y)w(x,y)的大小。

    从上面的式子中,可以很明显的看到,卷积实际上是提供了一个权重模板,这个模板在图像上滑动,并将中心依次与图像中每一个像素对齐,然后对这个模板覆盖的所有像素进行加权,并将结果作为这个卷积核在图像上该点的响应。所以从整个卷积运算我们可以看到以下几点:

    1)卷积是一种线性运算

    2)卷积核的大小,定义了图像中任何一点参与运算的邻域的大小。

    3)卷积核上的权值大小说明了对应的邻域点对最后结果的贡献能力,权重越大,贡献能力越大。

    4)卷积核沿着图像所有像素移动并计算响应,会得到一个和原图像等大图像。

    5)在处理边缘上点时,卷积核会覆盖到图像外层没有定义的点,这时候有几种方法设定这些没有定义的点,可以用内层像素镜像复制,也可以全设置为0。

    image

    三、卷积特征层

    其实图像特征提取在博客里的一些其他文章都有提过,这里我想说一下图像特征提取与卷积的关系。其实大部分的图像特征提取都依赖于卷积运算,比如显著的边缘特征就是用各种梯度卷积算子对图像进行滤波的结果。一个图像里目标特征主要体现在像素与周围像素之间形成的关系,这些邻域像素关系形成了线条、角点、轮廓等。而卷积运算正是这种用邻域点按一定权重去重新定义该点值的运算。

    水平梯度的卷积算子:

    image

    竖直梯度的卷积算子:

    image

    根据深度学习关于人的视觉分层的理论,人的视觉对目标的辨识是分层的,低层会提取一些边缘特征,然后高一些层次进行形状或目标的认知,更高层的会分析一些运动和行为。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。

    而深度学习就是通过这种分层的自动特征提取来达到目标分类,先构建一些基本的特征层,然后用这些基础特征去构建更高层的抽象,更精准的分类特征。

    那整个卷积神经网络的结构也就很容易理解了,它在普通的多层神经网络的前面加了2层特征层,这两层特征层是通过权重可调整的卷积运算实现的。

    四、卷积神经网络

    在原来的多层神经网络结构中,每一层的所有结点会按照连续线的权重向前计算,成为下一层结点的输出。而每一条权重连结线都彼此不同,互不共享。每一个下一层结点的值与前一层所有结点都相关。

    与普通多层神经网络不同的是,卷积神经网络里,有特征抽取层与降维层,这些层的结点连结是部分连接且,一幅特征图由一个卷积核生成,这一幅特征图上的所有结点共享这一组卷积核的参数。

    这里我们设计一个5层的卷积神经网络,一个输入层,一个输出层,2个特征提取层,一个全连接的隐藏层。下面详细说明每一层的设计思路。

    image

    在一般的介绍卷积神经网络的文章中你可能会看到在特征层之间还有2层降维层,在这里我们将卷积与降维同步进行,只用在卷积运算时,遍历图像中像素时按步长间隔遍历即可。

    输入层:普通的多层神经网络,第一层就是特征向量。一般图像经过人为的特征挑选,通过特征函数计算得到特征向量,并作为神经网络的输入。而卷积神经网络的输出层则为整个图像,如上图示例29*29,那么我们可以将图像按列展开,形成841个结点。而第一层的结点向前没有任何的连结线。

    第1层:第1层是特征层,它是由6个卷积模板与第一层的图像做卷积形成的6幅13*13的图像。也就是说这一层中我们算上一个偏置权重,一共有只有(5*5+1)*6=156权重参数,但是,第二层的结点是将6张图像按列展开,即有6*13*13=1014个结点。

    而第2层构建的真正难点在于,连结线的设定,当前层的结点并不是与前一层的所有结点相连,而是只与25邻域点连接,所以第二层一定有(25+1)*13*13*6=26364条连线,但是这些连结线共享了156个权值。按前面多层网络C++的设计中,每个连线对象有2个成员,一个是权重的索引,一个是上一层结点的索引,所以这里面要正确的设置好每个连线的索引值,这也是卷积神经网络与一般全连结层的区别。

    第2层:第2层也是特征层,它是由50个特征图像组成,每个特征图像是5*5的大小,这个特征图像上的每一点都是由前一层6张特征图像中每个图像取25个邻域点最后在一起加权而成,所以每个点也就是一个结点有(5*5+1)*6=156个连结线,那么当前层一共有5*5*50=1250个结点,所以一共有195000个权重连结线,但是只有(5*5+1)*6*50=7800个权重参数,每个权重连结线的值都可以在7800个权重参数数组中找到索引。

    所以第3层的关键也是,如何建立好每根连结线的权重索引与与前一层连结的结点的索引。

    第3层:和普通多神经网络没有区别了,是一个隐藏层,有100个结点构成,每个结点与上一层中1250个结点相联,共有125100个权重与125100个连结线。

    第4层:输出层,它个结点个数与分类数目有关,假设这里我们设置为10类,则输出层为10个结点,相应的期望值的设置在多层神经网络里已经介绍过了,每个输出结点与上面隐藏层的100个结点相连,共有(100+1)*10=1010条连结线,1010个权重。

    从上面可以看出,卷积神经网络的核心在于卷积层的创建,所以在设计CNNLayer类的时候,需要两种创建网络层的成员函数,一个用于创建普通的全连接层,一个用于创建卷积层。

     1 class CNNlayer
     2 {
     3 private:
     4     CNNlayer* preLayer;
     5     vector<CNNneural> m_neurals;
     6     vector<double> m_weights;
     7 public:
     8     CNNlayer(){ preLayer = nullptr; }
     9     // 创建卷积层
    10     void createConvLayer(unsigned curNumberOfNeurals, unsigned preNumberOfNeurals, unsigned preNumberOfFeatMaps, unsigned curNumberOfFeatMaps);
    11     // 创建 普通层
    12     void createLayer(unsigned curNumberOfNeurals,unsigned preNumberOfNeurals);
    13     void backPropagate(vector<double>& dErrWrtDxn, vector<double>& dErrWrtDxnm, double eta);
    14 };

     

    创建普通层,在前面介绍的多层神经网络中已经给出过代码,它接收两个参数,一个是前面一层结点数,一个是当前层结点数。

    而卷积层的创建则复杂的多,所有连结线的索引值的确定需要对整个网络有较清楚的了解。这里设计的createConvLayer函数,它接收4个参数,分别对应,当前层结点数,前一层结点数,前一层特征图的个数和当前层特征图像的个数。

    下面是C++代码,要理解这一部分可以会稍有点难度,因为特征图实际中都被按列展开了,所以邻域这个概念会比较抽象,我们考虑把特征图像还原,从图像的角度去考虑。

     1 void CNNlayer::createConvLayer
     2 (unsigned curNumberOfNeurals, unsigned preNumberOfNeurals, unsigned preNumberOfFeatMaps, unsigned curNumberOfFeatMaps)
     3 {
     4     // 前一层和当前层特征图的结点数
     5     unsigned preImgSize = preNumberOfNeurals / preNumberOfFeatMaps;
     6     unsigned curImgSize = curNumberOfNeurals / curNumberOfFeatMaps;
     7 
     8     // 初始化权重
     9     unsigned numberOfWeights = preNumberOfFeatMaps*curNumberOfFeatMaps*(5 * 5 + 1);
    10     for (unsigned i = 0; i != numberOfWeights; i++)
    11     {
    12         m_weights.push_back(0.05*rand() / RAND_MAX);
    13     }
    14     // 建立所有连结线
    15 
    16     for (unsigned i = 0; i != curNumberOfFeatMaps; i++)
    17     {
    18         unsigned imgRow = sqrt(preImgSize);  //上一层特征图像的大小 ,imgRow=imgCol
    19         //  间隙2进行取样,邻域周围25个点
    20         for (int c = 2; c < imgRow-2; c= c+ 2)
    21         {
    22             for (int r = 2; r < imgRow-2; r =r + 2)
    23             {
    24                 CNNneural neural;
    25                 for (unsigned k = 0; k != preNumberOfNeurals; k++)
    26                 {
    27                     for (int kk = 0; kk < (5*5+1); kk ++)
    28                     {
    29                         CNNconnection connection;
    30                         // 权重的索引
    31                         connection.weightIdx = i*(curNumberOfFeatMaps*(5 * 5 + 1)) + k*(5 * 5 + 1) + kk;
    32                         // 结点的索引
    33                         connection.neuralIdx = k*preImgSize + c*imgRow + r;
    34                         neural.m_connections.push_back(connection);
    35                     }
    36                     m_neurals.push_back(neural);
    37                 }
    38             }
    39         }
    40     }
    41 }

     

    五、训练与识别

    整个网络结构搭建好以后,训练只用按照多层神经网络那样训练即可,其中的权值更新策略都是一致的。所以总体来说,卷积神经网络与普通的多层神经网络,就是结构上不同。卷积神经网络多了特征提取层与降维层,他们之间结点的连结方式是部分连结,多个连结线共享权重。而多层神经网络前后两层之间结点是全连结。除了这以外,权值更新、训练、识别都是一致的。

    训练得到一组权值,也就是说在这组权值下网络可以更好的提取图像特征用于分类识别。

    关于源码的问题:个人非常不推荐直接用别人的源码,所以我的博客里所有文章不会给出整个工程的源码,但是会给出一些核心函数的代码,如果你仔细阅读文章,一定能够很好的理解算法的核心思想。尝试着去自己实现,会对你的理解更有帮助。有什么疑问可以直接在下面留言。

     

    from: http://www.cnblogs.com/ronny/p/ann_03.html

    展开全文
  • 利用多层卷积神经网络(CNN)特征的互补优势 进行图像检索 本文原网址为:http://www.sciencedirect.com/science/article/pii/S0925231216314734 翻译不当之处请多多指正 摘要:深度卷积神经网络已经证明了图像分类...

    利用多层卷积神经网络(CNN)特征的互补优势

    进行图像检索

    本文原网址为:http://www.sciencedirect.com/science/article/pii/S0925231216314734

    翻译不当之处请多多指正

    摘要:深度卷积神经网络已经证明了图像分类的突破精度。从CNN学到的一系列特征提取器已经用于其他计算机视觉任务。然而,CNN不同层次的特征旨在编码不同层次的信息。高层特征更关注语义信息,更少关注细节信息,而低层特征包含更多细节信息,但与背景混乱和语义歧义问题相关。我们建议以简单但有效的方式利用不同层次的互补优势。一个映射函数被设计来突出低层相似性的有效性,当在相似的语义下测量查询图像和它最近的邻居之间的细粒度的相似性时。大量的实验表明,我们的方法可以在流行的检索基准上获得有竞争力的表现。大量的实验表明,该方法优于单层提取的特征及其直接拼接。同时,我们的方法在流行的检索基准上达到了有竞争力的表现。

     

    1.介绍

       

        最近,深度卷积神经网络(CNN)在图像分类任务中取得了最先进的性能。随着CNN的重生,一系列从低级到高级的特征提取器可以从大规模的训练数据中以端到端的方式自动学习。一些作品表明,这些学习的特征提取器可以成功地转移到其他计算机视觉任务。作为一个热门的研究课题,基于内容的图像检索(CBIR)也可以利用CNN激活作为图像的通用表示。在本文中,我们试图根据不同层的CNN激活图的互补性来获得更好的检索性能。

    CBIR总是依赖描述符表示图像的能力。强大的手工描述符可以捕捉对象的局部特征,如SIFT。大多数现有的方法对这些基于梯度的特征进行编码以克服语义上的差距,诸如词干(BoW),Fisher矢量(FV)或向量局部聚合描述符(VLAD)及其变体。但是,这些编码方法还远没有捕捉到高级语义信息。

        当预先训练好的CNN应用于CBIR时,选择较高层的特征地图来呈现整个图像。在最近的研究结果中,下层的特征图可以在实例级图像检索中获得更好的结果。实际上,不同层次的特征地图从输入图像中提取不同层次的信息。图1说明了一些与CNN学习的一些滤波器的最高激活相对应的补丁。低层特征的维度倾向于以相似的简单模式响应补丁,并且具有更多的模糊性。较高层的特征图更关注语义信息,而较少关于图像的细节信息,因为较高层更接近具有分类标签的最后一层。下层的特征映射包含了更多的图像结构信息,但是背景杂乱和语义歧义的问题更为突出。尽管下层的特征映射与手工特征具有相似的语义差异,但下层的特征提取器可以捕获局部模式来描述实例级别的细节。

     

    1. CNN特征来自不同卷积层的采样维数最高的补丁。每行显示相应维度中具有最大激活的补丁。所有的补丁都是从oxford 5K数据集中采样的。

     

        高层特征用于度量语义相似度,低层特征用于度量细粒度相似度。给出一个简单易懂的例子,当查询图像是一个建筑物时,高层相似性捕捉到的图像包含一个建筑物,而低层相似性则捕获同一个从属同类实体的建筑物。显然,低层和高层特征的互补性可以提高查询图像与其他候选图像之间的相似性度量。一些现有的方法试图利用多尺度无序汇集来进行CNN激活。例如,CNN特征分别从不同层次提取和编码,然后将这些不同层次的聚合特征进行连接以测量图像。但直接拼接不能充分利用高层和低层特征的互补性。高层特征可以搜索具有相似语义的候选图像的集合作为查询图像,但是它不足以描述细粒度的细节。因此,高层相似性会削弱低层相似性的有效性,当最近邻居之间的细粒度差别被区分时,语义相似。

        在本文中,我们建议以一种简单而有效的方式利用不同层次的CNN特征的更多互补优势。我们的方法试图突出低层相似性的有效性,当查询图像和最近的邻居之间的细粒度的相似性与相似的语义。换句话说,低层特征用于细化高层特征的排序结果,而不是直接连接多个层。如图2所示,高层特征不足以描述细节信息,而低层特征则来自背景混乱和语义歧义。以直接拼接的方式,由于高层相似度的影响,低层相似度在区分细粒度差异方面不起重要作用。使用映射函数,我们的方法利用低层特征来测量查询图像与具有相同语义的最近邻居之间的细粒度相似性。在实验中,我们证明了我们的方法比单层功能,多层连接以及其他基于手工特征的方法更好。

     

     

    2.不同CNN特征搜索的排名结果。从上到下,各行显示了高层特征,低层特征,直接拼接和我们的方法的排序结果。从fc1层提取高层特征,从conv4层提取低层特征,直接拼接,我们的方法使用这两个层。绿色边框表示正面候选图像,而红色边框表示错误候选图像。查询图像和候选图像均从Oxford 5K数据集中采样。(对于这个图例中对颜色的引用的解释,读者可以参考这篇文章的web版本。

     

    2.相关工作

         

        传统的CBIR方法依靠强大的手工功能和有效的编码方法。在过去的几十年里,基于Bag-of-WordsBoW)的方法[9,18]被认为是最先进的。基于SIFT [8]等强大的局部不变特征,BoW可以很好地表示图像的缩放,平移,旋转等变化。作为BoW的替代,矢量局部聚合描述符(VLAD)[11]被提出来捕获一个紧凑的图像表示,取得了很好的结果。后来,可以使用一些额外的技术来进一步提高VLAD的性能,如内部归一化[13],幂律归一化[14],单调平方根[19]等等。 Multi-VLAD [13]构建了多级VLAD描述符,并将其匹配以提高定位精度,其中利用RootSIFT提高检索任务的性能。Covariant-VLAD(CVLAD)[14]也使用RootSIFT,并应用幂律归一化来更新VLAD描述符的各个组件。

         其他整体特征编码更多的全球空间信息,其中费舍尔矢量(FV)是这类最知名的描述符。FV也有很多变种。例如,由于FV的密度,采用了一些立式二进制编码技术,并引入了一个简单的规范化过程来提高检索的准确性。考虑到FV的维数降低,利用ImageNet来发现有辨识性的低维子空间,其中一个隐含单元层和一个分类器输出层被添加到FV之上。尽管隐藏层的低维激活被用作图像检索的描述符,但是表示仍然基于手工特征(SIFT和局部颜色直方图),而不是从CNN中的输入图像中学习的特征映射。

        受到图像分类成功的启发,CNN的特征提取器也被应用于其他识别任务。 DeCAF [21]首先发布了这样的特征提取器以及所有相关的网络参数。由于低层不太可能包含丰富的语义信息,因此只评估来自最后卷积层和前两个完全连接层的特征提取器。一些像素标记任务试图通过连接来自不同层的特征提取器(例如对象分割[22,23]和边界检测[24])来利用语义信息来丰富像素表示。这些任务结合了高层和低层的特点,取得了很好的效果。       

     

          OverFeat [25]首先研究了CNN特征在图像检索任务中的应用,其中最后一层的特征没有超越基于SIFT的BoW和VLAD编码方法。神经编码[15]检查高层的神经元激活的图像检索,其中前两个完全连接层和最后一个池层分别用于评估。虽然再培训CNN的特征要素可以取得很好的表现,但是收集培训样本和再培训阶段需要大量的人力和计算资源。 MOP-CNN [17]从VLAD的不同层面提取聚合特征,其中一个完全连接层和两个合并层被预先选择。低层特征提取器可以在实例级图像检索上表现更好。这一观察结果得到了许多鼓舞人心的实验结果的进一步证实和扩展[16],其中分别从OxordNet [2]和GoogLeNet [3]提取的所有卷积层被评估。显然,不同层面的重点是从图像中提取不同的信息,低层和高层的互补性可以进一步改善图像检索任务。

     

    3方法

     

        为了描述图像,需要将卷积图层的激活图聚合成一个特征向量。本文中,完全连接层的特征是对应层的输出,卷积层的特征是聚合特征。特别的是,相似度是用余弦距离来度量的,因此单层相似度的范围是[0,1]。

     

    3.1 使用多层特征的相似性

     

       在现有的方法中,特征拼接S的相似性是作为不同层的总和而得到的:

     

         其中C层被选择来测量相似度,并且Si是两个图像之间的第i个选择层的相似度。

        为了突出低层特征,我们设计了一个映射函数fi,我们的方法的相似性可以概括为:

     

     

        映射函数fi被设计为:

     

        其中ti是第i个选定图层的相似度阈值,p的范围是(0,1)。

        有了这个设计的功能,我们的目标是削弱范围[ti,1]之间的相似性之间的差异。考虑到两层相结合,区域[ti,1]的高层相似度的有效性将会减弱,低层相似度可以更好地区分细粒度的区分。在实际实验中,较高层使用较低的阈值,即t1≤...≤ti≤...≤tC,最低层的阈值tC设置为1。

     

    3.2 分析映射函数

     

         fi的图可以解释这个看似复杂的函数,如图3(a)所示。映射函数被设计用于减少大于阈值ti的相似度之间的差异。指数p控制弱化的程度。特别是,当p设置为0时,我们的方法将转化为使用低层相似度对高层次排名结果进行重新排序。当p被设置为1或者ti被设置为1时,直接使用第i层的相似性,并且将我们的方法直接转换为连接不同层。

     

        图3(a)示出了具有固定t和不同p的映射函数的图。(b)-(d)分别显示Oxford 5K,Holiday和UKB不同场合的表演。(更好地看颜色)。(对于本图中对颜色的引用的解释,读者可参考本文的网页版本。)

       显然,方程(3)是挖掘不同层次互补优势的关键。为了避免一个特别的问题,我们试图设置固定的阈值t和p。为了便于解释,我们使用两层(fc2和conv4)来分析fc2层的阈值t和指数p的影响。如前所述,最低层的阈值t被设置为1,因此conv4的相似性被直接使用。在这种情况下,映射函数只适用于fc2层的相似性。特别地,曲线显示当fc2层的t被设置为1时直接级联的性能。

        图3(b)-(d)显示了不同设置的结果,这说明映射函数可以利用更多的互补优势。尽管不同的设置会导致改进差异,但大多数设置都会改善三个数据集。同时,各种数据集的参数t和p达到最好的改善是相似的。其中t被设置为0.2并且p被设置为0.45。所提出的方法不会导致临时问题。参数设置的细节将在下面的实验中介绍。

     

    4 初步

     

    4.1 单层功能

     

        我们以ImageNet ILSVRC 2012为例,对CNN进行了训练。该网络的结构由Krizhevsky等人提出,其中包含5个卷积层和3个全连通层。所有图层的设置与[1]相同,除非不使用局部对比度归一化图层,因为它们已被证明对ImageNet分类没有帮助。在下面的章节中,fci表示第i个完全连接层,convi表示第i个卷积层。在实验中,我们选择了三个卷积层(conv3,conv4和conv5)和两个完全连接层(fc1和fc2)来测量图像之间的相似度。

        如前所述,完全连接层的输出直接被提取为特征。我们将卷积层的输出作为一组局部特征提取出来,并用超过4 M个特征的近似k-means(AKM)[27]对视觉词进行训练。然后采用BoW对卷积图的输出进行编码,作为图像的通用表示。

     

    4.2 基准的细节

     

        我们在三个众所周知的图像检索基准上展示了我们的方法:Oxford 5K[27],Holiday[28]和UKB[29]。

           Oxford 5K是牛津大厦的数据集,包含5062张对应于牛津大地标的照片。对应于11个地标的图像被手动注释。提供了平均分布在这11个地标上的55个保留查询。

           Holiday是INRIA假期数据集,其包括基于相同场景或对象的对应于500个组的1491个假期照片。来自每个组的一个图像用作查询。

           UKB是肯塔基大学的基准数据集,其中包括10,200个2550个物体的室内照片(每个物体4张照片)。每个图像用于查询数据集的其余部分。按照常规设置,将Oxford 5 K和Holiday的表现报告为所提供查询的平均平均精度(mAP)。UKB的性能被报告为在前4个结果中的同一对象图像的平均数量,并且是在0和4之间的数字。特别地,所有图像的较短边被调整为256。

     

    5实验

     

    5.1 使用单层功能的结果

       为了便于比较,我们报告了从CNN提取的单层特征的性能。表1显示了三个基准的结果比较。对于Oxford 5 K,Holiday和UKB,视觉词的数量分别设置为50K,100K和100K。

     

        由于查询图像是类别级别类似的,并且fc特征不足以描述精细信息,因此conv图层可以胜过Oxford 5K上的fc图层。尽管Holiday和UKB数据集也旨在解决实例级图像检索的任务,但查询图像属于各种类别。因此,具有语义信息的fc特征可以在这两个数据集上获得更好的性能。

     

    5.2  比较两层的不同组合

     

        我们从测试两层的组合开始验证映射函数的有效性。我们的方法旨在利用不同层次之间的互补性,即高层和低层细粒度相似度的语义相似度,从而提取来自fc层的高层特征和来自conv层的低层特征。为了公平的比较,对于两层的所有组合,我们设置t1=0.2,p1=0.45和t2=1。

       表2报告了在三个基准测试中的fc层和conv层之间的组合的性能,其中我们的方法优于直接级联方法。在某种程度上,组合的性能是由单层决定的。例如,fc2层一般优于fc1层,与fc2层的组合可以达到更好的性能。在Oxford 5K中,conv4达到竞争表现,与它的组合可以胜过其他组合。

     

     

    5.3  比较不同的三层组合

     

        在这个实验中,图像相似度是通过三层来测量的,因此我们需要为最上面两层设置两组参数。对于第一层,我们设置t1 = 0.2,p1 = 0.45,设置两层组合。对于第二层,我们设置t2=0.4和p2=0.45。同样,我们设置t3=1为底层。

       基于上述分析和结果,层组合的性能是由单层决定的。我们选择fc2层作为高层,因为与fc2的双层组合优于fc1的组合。因此,我们测试与fc2层的三层组合。表3报告了性能,其中我们的方法也优于直接级联方法。

     

     

        显然,三层结合可以达到更好的性能。但从三层结合到两层结合的改进,比单层到两层结合的改进少。为了分析这个问题,我们测试了两个conv层的组合。性能报告见表4,其中参数设置在第5.2节。比较表2和表4可以看出,从单层到双层的组合改进效果不如从单层到高层和低层组合的改进。例如,fc2和conv3的层次组合在Oxford 5K数据集中从0.488(fc2)提高到0.562,而conv4和conv3的层组合达到0.560(conv4)到0.563的改进。从单一的转换层到两个转换层的改进是很小的,这也导致从两层组合到三层组合的小改进。如前所述,conv层提取本地信息,而fc层代表全局信息。虽然不同的层次往往对不同层次的信息进行编码,但是各个层次之间的信息差异要比conv层次和fc层次之间的信息差异要小。fc层与conv层的互补性较强,fc层与conv层的双层组合可以得到显着的改善。

     

     

     

    5.4 最先进的预训练模型的融合策略

     

        在这一部分,我们尝试引入最先进的CNN模型来展示我们方法的推广。为此,我们在多层融合策略中采用了预先训练的VGG-16模型[2],以使结果更具说服力。测试VGG-16的所有层组合是非常耗时的,因为有13个卷积层和3个完全连接的层。因此,我们还选择两个完全连接的层(fc1和fc2)和三个卷积层(c3_1,c4_1和c5_1)来测量图像之间的相似度。

        表5报告了三个基准的VGG-16的单层结果。 表6报告了fc层和conv层之间的组合的性能。对于VGG-16的三层组合,我们选择fc1层作为高层,因为与fc1的两层组合优于与emphfc2的组合。因此,我们用fc1层测试三层组合,表7报告了fc1层和两个conv层之间的组合的性能。考虑表5-7,当采用预先训练的VGG-16模型时,所提出的方法也得出类似的结论。

     

     

     

    5.5 比较最先进的方法

     

        作为我们实验的最后部分,我们将我们的方法与在图像检索任务上执行的最新方法进行比较。为了验证我们的方法,我们使用两个CNN模型:我们训练的AlexNet和预先训练的VGG-16。对于我们训练的AlexNet,我们利用fc2和conv4的两层结合以及fc2,conv5和conv4的三层结合,其中参数设置遵循5.2和5.3。对于预训练的VGG-16,我们利用两个fcl和c5_1的三层组合以及fcl,c5_1和c4_1的三层组合。表8报告了三个数据集上图像检索的性能,其中上半部分显示了基于手工特征的方法(从Sparse-编码特征到费舍尔+颜色)和底部显示了基于CNN特征的方法(从神经编码到我们的方法)的结果。

     

     

        毫无疑问,我们的方法胜过了所有以前使用手工特征的方法,这证实了CNN特征在CBIR任务上可以更好地工作。我们的方法也明显优于使用预选的单层CNN特征(表示为神经编码)的方法和使用三层(表示为MOP-CNN)的直接级联的方法。特别是从不同尺度上提取特征,并选取性能最好的图层。我们的方法从单一尺度提取特征,并在牛津5K数据集上获得有竞争力的表现。需要指出的是,一些基于CNN特征的方法引入了空间信息并取得了很大的改善,如空间搜索。我们的方法展示了高层和低层之间的互补性,并提出了映射函数来提升性能。 同样,我们相信我们的方法的性能将进一步改善使用空间信息。

     

    6.结论

        

        受到CNN成功启发,我们提出进一步提高不同层次互补信息的图像检索性能。初步结果证明了我们的方法在测量CBIR相似性方面的有效性。 我们今后的工作包含两部分。一方面,我们会进一步改进我们的方法。如前所述,组合的性能是由单层性能决定的。其他方法可以用来编码卷积层的特征,例如VLAD。同时,我们的方法可以应用于更强大的网络,如VGGNet和GooLeNet。另一方面,我们将探索检索性能和存储空间之间的权衡,并试图改进我们的方法的一般性。例如,卷积层的聚合特征需要被压缩成低维表示。

    展开全文
  • 卷积神经网络

    2020-08-10 23:55:49
    CNN即Convolutional Neural Network,也就是卷积神经网络,可以认为它是一种特殊的多层感知器或是深层神经网络。最早的卷积神经网络模型被认为是1979年日本学者 Fukushima 提出的神经认知机模型,而真正的现代卷积...

    1. 什么是CNN?

    CNN即Convolutional Neural Network,也就是卷积神经网络,可以认为它是一种特殊的多层感知器或是深层神经网络。最早的卷积神经网络模型被认为是1979年日本学者 Fukushima 提出的神经认知机模型,而真正的现代卷积神经网络的基础模型是1998 年,LeCun 等人将卷积层和下采样层相结合而提出的LeNet模型。在此之后,CNN演化产生了许多不同类型的网络模型。(下图源自《深度学习:卷积神经网络从入门到精通》)
    图1

    2. CNN的组件

    一个卷积神经网络通常由输入层(Input Layer)多个隐藏层(Hidden Layer)、**输出层(Output Layer)**构成。

    隐藏层通常又包括卷积层(Convolutional Layer)激活函数(Activation Function)池化层(Pooling、Sub-sampling Layer)全连接层(Fully Connected Layer)、归一化层(Normalization Layer) 等。

    (1). 卷积层

    卷积层的作用是对该层的输入进行卷积,从而实现特征提取,目前通常会使用多个卷积层来获取更高层次的特征。
    对于整个卷积神经网络而言,卷积层是CNN的核心部分,其参数由一组可学习的滤波器(filter)或内核(kernels)组成,它们具有小的局部感受野,卷积操作即局部感受野的实现,需要注意的是,感受野的深度需要与输入图像的深度保持一致。
    图2
    对于输入为3232332*32*3,其中3为深度,滤波器(感受野)为5535*5*3,它的深度与输入图像保持相同,经过卷积后可以得到2828128*28*1的特征图,图中右侧是通过两个filter得到的两个特征图(feature maps)
    当然在实际的网络中通常包含多个卷积层:
    图3

    (2). 激活函数

    激活层主要是把卷积层输出结果做非线性映射,因为线性模型具有一定的局限性,通过加入激活函数,可以引入非线性的因素。常用的激活函数有ReLU、sigmoid、tanh、LeakyReLU等。CNN采用的激活函数一般为ReLU(The Rectified Linear Unit,修正线性单元),它是Alex在2012年提出的一种新的激活函数,该函数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题,它的特点是收敛快,求梯度简单,但较脆弱。
    关于激活函数的更详细内容可参考:https://blog.csdn.net/zong596568821xp/article/details/80459968

    (3). 池化层

    池化操作也被称为是下采样,一般包括:

    • 均值池化(meaning pooling)
      计算图像区域的平均值作为该区域池化后的值
    • 最大池化(max pooling)
      选图像区域的最大值作为该区域池化后的值。

    还有其他一些类型,如高斯池化、可训练池化、重叠池化、空金字塔池化等。
    池化层可以压缩输入的特征图,在使得特征图变小的同时简化网络计算的复杂度,同时可以压缩特征,提取到更主要的特征,可以理解为减小数据处理量同时保留有用信息。
    图4
    上图是一个最大池化的过程,输入图像为444*4,filter为222*2,步长为2,那么池化后的图像大小为222*2

    (4). 全连接层

    顾名思义,全连接层即连接经过多次卷积和池化操作所得到的全部高级特征,将输出值送给分类器(如softmax分类器)。

    (5). 输出层

    输出层输出对结果的预测值,一般会加一个softmax层。
    下图是一个完整的网络结构(图片参考自(2)中的blog):
    图5

    3. CNN的特点

    1. 局部感知
      即局部感受野,每次卷积核只是覆盖掉图像的一小部分像素,得到的特征为局部特征,也就是局部感知,这表明CNN是一个从局部到整体的过程,全连接层实现了这一步骤。
    2. 权重共享
      所谓的权重共享即不同的图像或者同一张图像共用一个卷积核,减少重复的卷积核,这是因为同一张图像当中可能会出现相同的特征,共享卷积核能够进一步减少权值参数,简化计算量。
    3. 多卷积核
      这一特点使得我们可以获得多个不同的特征,每一个卷积核对应了一个特征,在卷积层中使用多个卷积核便可以得到更多的不同的feature maps,进而提高预测结果的准确性。

    4. 小结

    CNN最早在Yann LeCun的论文《Gradient-Based Learning Applied to Document Recognition》中得到介绍。
    该论文以及CNN后期演化的其他模型如AlexNet、VGGNet等,原文分享给大家~
    链接:https://pan.baidu.com/s/1Zvsbc4Nj0CiFj6WcBuTlcw
    密码:kkxx

    文中如果有不恰当的地方~
    还请大家批评指正q(≧▽≦q)~

    展开全文
  • 展开全部一、计算方法不同1、前馈神经网络:一种最简单的神经网络,各神e68a8462616964757a686964616f31333431356638经元分层...3、卷积神经网络:包含卷积计算且具有深度结构的前馈神经网络。二、用途不同1、前馈神...
  • 卷积神经网络

    2018-05-26 21:16:39
     第二章阐述了几种多层神经网络 ,并介绍当前计算机视觉领域应用中最成功的卷积结 构;  第三章具体介绍了标准卷积神经网络中的各构成组件 ,并从生物学和理论两个角度分 析不同组件的设计方案 ;  第四章讨论...
  • 本文首先概述了卷积神经网络的发展历史,然后分别描述了神经元模型、多层感知器的结构。接着,详细分析了卷积神经网络的结构,包括卷积层、取样层、全连接层,它们发挥着不同的作用。然后,讨论了网中网结构、空间...
  • 卷积神经网络CNN

    2017-03-19 11:59:36
    这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,...
  • 基于卷积神经网络多层特征融合和稀疏表示的表情识别,孙悦,杨勇,卷积神经网络浅层特征含有很多图像细节信息,深层特征含有更多抽象特征,为了充分利用不同层次特征的细节信息和抽象信息,将浅层
  • CNN 卷积神经网络

    2019-03-24 22:53:15
    卷积神经网络是一种特殊的多层神经网络。像几乎所有其他神经网络一样,它们使用反向传播算法的版本进行训练。它们的不同之处在于架构。 卷积神经网络旨在通过最少的预处理直接从像素图像识别视觉图案。 它们可以识别...
  • 卷积神经网络( Convolutional Neural Network, CNN):是一种常见的深度学习架构,受生物自然视觉认知机制(动物视觉皮层细胞负责检测光学信号)启发而来,是一种特殊的多层前馈神经网络。它的人工神经元可以响应一部分...
  • 与传统卷积神经网络(CNN)不同,L-MFCNN将多个浅层中间卷积层特征输出与最后卷积层特征输出相结合,融合多层卷积层的特征,不仅利用了深层卷积的整体语义信息,还考虑了浅层卷积的细节局部纹理信息,使得性别识别...
  • 卷积神经网络入门

    千次阅读 2016-11-02 10:28:00
    这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,...
  • 多层卷积网络以及通道变化问题

    千次阅读 2019-03-13 20:25:58
    在提取图片上的一只小猫,用卷积神经网络进行提取时,卷积神经网络先提取图片上不同方向的直线和拐角;接着组合成高阶特征,比如三角形,正方形等;再接着抽象组合成眼睛,鼻子,嘴巴等五官;最后将五官组合成一张脸...
  • 典型的卷积神经网络 LeNet-5 AlexNet Inception网络 Inception网络 在卷积网络中,如何设置卷积层的卷积核大小是十分关键的问题 Inception网络尝试多种不同卷积核 最后给堆叠起来 使用多层的小...
  • 卷积神经网络在本质上也是一个多层复合函数,但和普通神经网络不同的是它的某些权重参数是共享的,另外一个特点是它使用了池化层。训练时依然采用了反向传播算法,求解的问题不是凸优化问题。   和全连接神经网络...
  • CNN-卷积神经网络

    2020-03-12 17:37:19
    卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型或类似于人工神经网络多层感知器,常用来分析视觉图像。 卷积神经网络 CNN的每一层都由大量节点组织,每一个节点是一个神经元 CNN的输入...
  • 卷积神经网络直观解释

    千次阅读 2016-08-30 11:26:41
    卷积神经网络直观解释 ================== ---------- 什么是卷积神经网络? ------------- 在模式识别的传统模型中,利用手工设计的特征提取器从输入中提取相关信息,消除无关变量。一个...
  • LeNet -5 卷积神经网络的网络结构

    千次阅读 2015-11-23 14:50:32
    卷积神经网络是一种特殊的多层神经网络,像其它的神经网络一样,卷积神经网络也使用一种反向传播算法来进行训练,不同之处在于网络的结构。卷积神经网络的网络连接具有局部连接、参数共享的特点。局部连接是相对于...
  • 卷积神经网络(CNN)

    2019-07-23 19:59:21
    卷积神经网络(CNN)是一个多层神经网络,每层由多个二维平面组成,其中每个平面由多个独立神经元组成。 1.卷积神经网络结构 (1)输入层:将每个像素代表一个特征节点输入到网络中 (2)卷积层:卷积运算的主要...
  • 该文首先概述了卷积神经网络的发展历史,然后分别描述了神经元模型、多层感知器的结构.接着,详细分析了卷积神经网络的结构,包括卷积层、池化层、全连接层,它们发挥着不同的作用.然后,讨论了网中网模型、空间变换网络...
  • 初识CNN卷积神经网络

    2018-08-16 23:41:40
    卷积神经网络(Convolutional Neural Networks)本质上是一个多层感知机,其成功的关键在于它所采用的局部连接和共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。   实现...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 168
精华内容 67
关键字:

多层神经网络卷积不同