卷积神经网络

动手学PyTorch | (19) 二维卷积层

…衆ロ難τιáo~ 提交于 2019-12-08 14:54:39
卷积神经⽹络(convolutional neural network)是含有卷积层(convolutional layer)的神经⽹络。 本章中介绍的卷积神经网络均使⽤最常⻅的二维卷积层。它有高和宽两个空间维度,常⽤来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。 目录 1. 二维互相关运算 2. 二维卷积层 3. 图像中物体边缘检测 4. 通过数据学习核数组 5. 互相关运算和卷积运算 6. 特征图和感受野 7. 小结 1. 二维互相关运算 虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关(cross- correlation)运算。在⼆维卷积层中,⼀个二维输⼊数组和⼀个⼆维核(kernel)数组通过互相关运算输出⼀个二维数组。 我们用⼀个具体例子来解释二维互相关运算的含义。如下图所示,输⼊是⼀个⾼和宽均为3的⼆维数组。我们把该数组的形状记为3x3或(3,3).核数组的高和宽分别为2.该数组在卷积计算中⼜称卷积核或过滤器(filter)。卷积核窗口(⼜称卷积窗⼝)的形状取决于卷积核的⾼和宽,即2x2.下图中的阴影部分为第一个输出元素及其计算所使⽤的输⼊和核数组元素:0x0+1x1+3x2+4x3 = 19. 在⼆维互相关运算中,卷积窗口从输⼊数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动

动手学PyTorch | (24) VGGNet

烂漫一生 提交于 2019-12-08 14:48:02
AlexNet在LeNet的基础上增加了3个卷积层。但AlexNet作者对它们的卷积窗口、输出通道数和构造顺序均做了⼤量的调整。虽然AlexNet指明了深度卷积神经网络可以取得出色的结果,但并没有提供简单的规则以指导后来的研究者如何设计新的网络。我们将在后续⼏节里介绍几种不同的深度⽹络设计思路。 本节介绍VGG,它的名字来源于论⽂作者所在的实验室Visual Geometry Group 。VGG提出了 可以通过􏰀重复使用简单的基础块来构建深度模型的思路。 目录 1. VGG块 2. VGG网络 3. 获取数据和训练模型 4. 小结 1. VGG块 VGG块的组成规律是:连续使⽤数个相同的填充为1、窗⼝形状为3*3的卷积层后接上⼀个步幅为2、窗⼝形状为2*2的最大池化层。卷积层保持输⼊的⾼和宽不变,而池化层则对其减半。我们使⽤vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量和输入输出通道数. 对于给定的感受野􏰁(与输出有关的输入图⽚的局部⼤小),采用堆积的小卷积核优于采用⼤的卷积核,因为可以增加网络深度来保证学习更复杂的模式,⽽且代价还比较小(参数更少)。例如,在 VGG中,使⽤了3个3x3卷积核来代替7x7卷积核,使⽤了2个3x3卷积核来代替5*5卷积核,这样做的主要⽬的是在保证具有相同感知􏰁的条件下,提升了⽹络的深度,在一定程度上提升了神经⽹络的效果。

动手学PyTorch | (23) AlexNet

孤人 提交于 2019-12-08 14:46:53
在LeNet提出后的将近20年里,神经⽹络⼀度被其他机器学习⽅法超越,如支持向量机。虽然LeNet可以在早期的⼩数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意。⼀⽅面,神经⽹络计算复杂。虽然20世纪90年代也有过⼀一些针对神经网络的加速硬件,但并没有像之后GPU那样⼤量普及。因此,训练⼀个多通道、多层和有大量参数的卷积神经网络在当年很难完成。另⼀方面,当年研究者还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域,导致复杂的神经网络的训练通常较困难。 我们在上一节看到,神经网络可以直接基于图像的原始像素进行分类。这种称为端到端(end-to- end)的⽅法节省了很多中间步骤。然而,在很长⼀段时间里更流行的是研究者通过勤劳与智慧所设计并⽣成的⼿工特征(特征工程)。这类图像分类研究的主要流程是: 1)获取图像数据集 2)使用已有的特征提取函数生成图像的特征 3)使用机器学习模型对图像的特征分类 当时认为的机器学习部分仅限最后这一步。如果那时候跟机器学习研究者交谈,他们会认为机器学习既􏰁重要又优美。优雅的定理证明了许多分类器的性质。机器学习领域生机勃勃、严谨⽽且极其有用。然而,如果跟计算机视觉研究者交谈,则是另外⼀一幅景象。他们会告诉你图像识别⾥“不可告⼈”的现实是:计算机视觉流程中真正􏰁重要的是数据和特征。也就是说,使用较⼲净的数据集和较有效的特征甚⾄

深度学习网络设计:十大拍案叫绝的卷积设计操作

丶灬走出姿态 提交于 2019-12-08 03:11:21
卷积的十大拍案叫绝的操作 一、卷积只能在同一组进行吗?– Group convolution Group convolution 分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。 AlexNet 分组卷积的思想影响比较深远,当前一些轻量级的SOTA(State Of The Art)网络,都用到了分组卷积的操作,以节省计算量。但题主有个疑问是,如果分组卷积是分在不同GPU上的话,每个GPU的计算量就降低到 1/groups,但如果依然在同一个GPU上计算,最终整体的计算量是否不变?找了pytorch上有关组卷积操作的介绍,望读者解答我的疑问。 pytroch github EDIT: 关于这个问题,知乎用户朋友 @蔡冠羽 提出了他的见解: 我感觉group conv本身应该就大大减少了参数,比如当input channel为256,output channel也为256,kernel size为3*3,不做group conv参数为256*3*3*256,若group为8,每个group的input channel和output channel均为32,参数为8*32*3*3*32,是原来的八分之一。这是我的理解。

深度学习暑期学校(加拿大、蒙特利尔,2016.8.1-7)

半世苍凉 提交于 2019-12-08 00:21:00
learning to see.pdf @lutingting 2016-11-04 16:15 字数 10899 阅读 4087 SIFT特征提取及匹配 数字图像处理 图像特征提取 SIFT特征提取及匹配 1.SIFT(Scale-invariant feature transform)算子的核心思想 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析 例子1 例子2 现实生活中的例子 2.2 SIFT中的尺度空间的概念 3.SIFT特征提取 3.1 尺度空间极值检测 3.1.1 尺度空间的建立(高斯金字塔的建立) 3.1.2 图像差分高斯金字塔(DoG)的建立 3.1.3 尺度空间中特征点的检测(DoG中极值点的检测) 3.2 关键点位置及尺度确定 3.3 关键点方向确定 3.4 特征向量生成 4.SIFT特征的匹配 5.下面是一些参考程序 5.1 5.2 1.SIFT(Scale-invariant feature transform)算子的核心思想 利用不同尺度的高斯核函数对图像进行平滑,即构造图像的尺度空间 比较不同尺度平滑后的图像差别,在某局部范围内,差别最大或者差别最小的像素点就是特征明显的点 由于SIFT特征的检测方式,使得它具有: 尺度不变性:在尺度空间内进行的特征点检测 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析

CNN神经网络一维卷积和二维卷积

牧云@^-^@ 提交于 2019-12-07 15:27:27
一维卷积只在一个维度上进行卷积操作,而二维卷积会在二个维度上同时进行卷积操作。 转载自: https://www.cnblogs.com/LXP-Never/p/10763804.html 一维卷积:tf.layers.conv1d() 一维卷积常用于序列数据,如自然语言处理领域。 tf.layers.conv1d( inputs, filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True, kernel_initializer=None, bias_initializer=tf.zeros_initializer(), kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, trainable=True, name=None, reuse=None ) 参数: [1] inputs :张量数据输入,一般是[batch, width, length] filters :整数,输出空间的维度,可以理解为卷积核

卷积神经网络基础

落花浮王杯 提交于 2019-12-06 14:58:49
https://www.cnblogs.com/wj-1314/p/9754072.html 激活函数:常用的激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者ReLU常见于卷积层 在卷积神经网络中,激活函数一般用ReLU(The Rectified Linear Unit,修正线性单元) 收敛快,求梯度简单。 计max(0,T),就是如果这个数是正的就原样输出,如果这个数是负数,就输出0 深度神经网络: 卷积、激活函数、池化组合在一起,是下面这样: 然后多经过几次这个过程就是深度神经网络 全连接层(Fully connected layers): 全连接层在整个卷积神经网络中是个分类器,在通过卷积、激活函数、池化等深度网络后,再经过全连接层对结果进行识别分类。 首先将经过卷积、激活函数、池化的深度网络后的结果串起来,如下图所示: 在利用该模型进行结果识别时,根据刚才提到的模型训练得出来的权重,以及经过前面的卷积、激活函数、池化等深度网络计算出来的结果,进行加权求和,得到各个结果的预测值,然后取值最大的作为识别的结果(如下图,最后计算出来字母X的识别值为0.92,字母O的识别值为0.51,则结果判定为X) 卷积神经网络主要由两部分组成,一部分是特征提取(卷积、激活函数、池化),另一部分是分类识别(全连接层)

特征和分类器——《卷积神经网络与计算机视觉》读书笔记

若如初见. 提交于 2019-12-06 14:14:47
  特征提取和分类是典型计算机视觉系统的两个关键阶段。视觉系统的准确性、稳健性和效率很大程度上取决于图像特征和分类器的质量。特征提取方法可以分为两个不同的类别,即基于手工的方法和基于特征学习的方法。分类器可以分为两组,即浅层模型和深层模型。   特征是任何独特的方面或特性,用于解决与特定应用相关的计算任务。n个特征的组合可以表示为n维向量,称为特征向量。特征向量的质量取决于其区分不同类别的图像样本的能力。良好的特征应该是信息丰富的,不受噪声和一系列变换的影响,并且计算快速。   分类是现代计算机视觉和模式识别的核心。分类器的任务是使用特征向量对图像或感兴趣区域(ROI)划分类别。分类任务的困难程度取决于来自相同类别图像的特征值的可变性,以及相对于来自不同类别图像的特征值的差异性。但是,由于噪声(以阴影、遮挡、透视扭曲等形式),异常值(例如,“建筑”类别的图像可能包含人),模糊性(例如 ,相同的矩形形状可以对应于桌子或建筑物窗户),缺少标签,仅有小训练样本可用,以及训练数据样本中的正负覆盖的不平衡。因此,设计分类器做出决策是一项具有挑战性的任务。    传统特征描述符:传统(手工设计)特征提取方法分为两大类:全局和局部。全局特征提取方法定义了一组有效描述整个图像的全局特征,因此,形状细节被忽略。全局特征也不适用于识别部分遮挡的对象。另一方面,局部特征提取方法提取关键点周围的局部区域

图像风格迁移原理

拥有回忆 提交于 2019-12-06 13:09:05
所谓 图像风格迁移 ,是指利用算法学习著名画作的风格,然后再把这种风格应用到另外一张图片上的技术。著名的图像处理应用Prisma是利用风格迁移技术,普通用户的照片自动变换为具有艺术家风格的图片。 一、图像风格迁移的原理 1、原始图像风格迁移的原理   在学习原始的图像风格迁移之前,可以在先看看ImageNet图像识别模型VGGNet( 微调(Fine-tune)原理 )。事实上,可以这样理解VGGNet的结构:前面的卷积层是从图像中提取“特征”,而后面的全连接层把图片的“特征”转换为类别概率。其中,VGGNet中的浅层(如conv1_1,conv1_2),提取的特征往往是比较简单的(如检测点、线、亮度),VGGNet中的深层(如conv5_1,conv5_2),提取的特征往往比较复杂(如有无人脸或某种特定物体)。   VGGNet本意是输入图像,提取特征,并输出图像类别。图像风格迁移正好与其相反, 输入的是特征,输出对应这种特征的图片 ,如下图所示:       具体来说,风格迁移使 用卷积层的中间特征还原出对应这种特征的原始图像 。如下图所示,先选取一幅原始图像,经过VGGNet计算后得到各个卷积层的特征。接下来,根据这些卷积层的特征,还原出对应这种特征的原始图像。       下面的a、b、c、d、e分别为使用conv1_2、conv2_2、conv3_2、conv4_2

树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning

…衆ロ難τιáo~ 提交于 2019-12-06 09:46:39
树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning 2018-04-17 08:32:39 看_这是一群菜鸟 阅读数 1906 收藏 更多 分类专栏: 论文解读 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_24305433/article/details/79856672 一、简介: 学习深度学习的人都知道,深度学习有一个严重的问题——“灾难性遗忘”,即一旦使用新的数据集去训练已有的模型,该模型将会失去对原数据集识别的能力。为解决这一问题,本文作者提出了树卷积神经网络 Tree-CNN ,通过先将物体分为几个大类,然后再将将各个大类依次进行划分,就行树一样不断的开枝散叶,最终叶节点得到的类别就是我们最终所要识别的类别。 二、网络结构及学习策略 1、网络结构 Tree-CNN模型借鉴了层分类器,树卷积神经网络由节点构成,和数据结构中的树一样,每个节点都有自己的ID、父亲(Parent)及孩子(Children),网(Net,处理图像的卷积神经网络),LT("Labels Transform"小编理解的就是每个节点所对应的标签,对于根节点和枝节点来说