卷积神经网络

AlexNet、ResNet 到 Mask RCNN

匿名 (未验证) 提交于 2019-12-03 00:18:01
新智元编译 最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。 我感觉每当计算机视觉识别方面有什么惊人的突破发生了,都得有人再讲一遍是怎么回事。这就是我做这个图表的原因。它试图用最简洁的语言和最有吸引力的方式讲述物体识别的现代史。故事开始于2012年AlexNet赢得了ILSVRC(ImageNet大规模视觉识别挑战赛)。信息图由2页组成,第1页总结了重要的概念,第2页则勾画了历史。每一个图解都是重新设计的,以便更加一致和容易理解。所有参考文献都是精挑细选的,以便读者能够知道从哪里找到有关细节的解释。 计算机视觉6大关键技术 图像分类:根据图像的主要内容进行分类。数据集:MNIST,CIFAR,ImageNet物体定位:预测包含主要物体的图像区域,以便识别区域中的物体。数据集:ImageNet物体识别:定位并分类图像中出现的所有物体。这一过程通常包括:划出区域然后对其中的物体进行分类。数据集:PASCAL,COCO语义分割:把图像中的每一个像素分到其所属物体类别,在样例中如人类、绵羊和草地。数据集:PASCAL,COCO实例分割:把图像中的每一个像素分到其物体类别和所属物体实例

使用mxnet实现卷积神经网络LeNet

匿名 (未验证) 提交于 2019-12-03 00:11:01
LeNet是一个早期用来识别手写数字的卷积神经网络,这个名字来源于LeNet论文的第一作者Yann LeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的成果,这个尊基性的工作第一次将卷积神经网络推上舞台 上图就是LeNet模型,下面将对每层参数进行说明 假设输入层数据shape=(32,32) 卷积核大小: kernel_size=(5,5) 步幅:stride = 1 输出通道为6 可训练参数为: (5 * 5 + 1) * 6 激活函数:采用relu 输入层数据经过C1卷积层后将得到feature maps形状(6 * 28 * 28),注:28 = 32 -5 + 1 池化层(Max Pooling)窗口形状均为2 2,步幅度为2,输出feature maps为(6 14 * 14),6为feature map的数量 卷积核大小: kernel_size=(5,5) 步幅:stride = 1 输出通道为16 激活函数:采用relu得到feature maps为(16 * 10 * 10),(10*10)为每个feature map形状,16为feature map数量 池化层(Max Pooling)窗口形状依然均为2 2,步幅度为2,输出feature maps为(16 5 * 5),16为feature map的数量

卷积神经网络概念

匿名 (未验证) 提交于 2019-12-03 00:08:02
卷积神经网络   卷积神经网络(CNN)是深度学习的代表算法之一 。具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络” 。 随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于 计算机视觉 、 自然语言处理 等领域 。   卷积是通过两个函数 f,g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分的面积。数学定义公式:   事实上,在卷积网络上使用的离散卷积,也就是不连续的,它是一种运算方式,也就是按照卷积核,将输入对应位置的数据进行加权和运算,接下来结合卷积核的概念,就会很好理解了。 卷积神经网络最重要的两个知识点就是 卷积核 和 卷积神经网络的结构 卷积核 卷积核定义 卷积操作 深度 步幅 零填充 卷积神经网络的结构 输入层 INPUT 卷积层 CONV 激活函数层 RELU 池化层 POOL 全连接层 FC 卷积核    卷积核的定义 :对于输入图像中的一部分区域,进行加权平均的处理,其中这个过程的权重,由一个函数定义,这个函数就是卷积核。 如下图彩色图像有RGB三个色值通道,分别表示红、绿、蓝,每个通道内的像素可以用一个像下图右边的二维数组表示,数值代表0-255之间的像素值。假设一张900*600的彩色的图片,计算机里面可以用 (900*600*3)的数组表示。

【深度学习】经典的卷积神经网络(GoogLeNet)

匿名 (未验证) 提交于 2019-12-02 23:55:01
回顾 简单的浅层神经网络,如三层的卷积神经网络等,在层数比较少的时候,有时候效果往往并没有那么好,在实验过程中发现,当尝试增加网络的层数,或者增加每一层网络的神经元个数的时候,对准确率有一定的提升,简单的说就是增加网络的深度与宽度,但这样做有两个明显的 缺点 : 更深更宽的网络意味着更多的参数,提高了模型的复杂度,从而大大增加过拟合的风险,尤其在训练数据不是那么多或者某个label训练数据不足的情况下更容易发生; 增加计算资源的消耗,实际情况下,不管是因为数据稀疏还是扩充的网络结构利用不充分(比如很多权重接近0),都会导致大量计算的浪费。 解决以上两个问题的基本方法是将全连接或卷积连接改为稀疏连接。不管从生物的角度还是机器学习的角度,稀疏性都有良好的表现,如AlexNet网络提出的Dropout网络以及ReLU激活函数,其本质就是利用稀疏性提高模型泛化性(但需要计算的参数没变少)。 简单解释下稀疏性,当整个特征空间是非线性甚至不连续时: 学好局部空间的特征集更能提升性能,类似于Maxout网络中使用多个局部线性函数的组合来拟合非线性函数的思想; 假设整个特征空间由N个不连续局部特征空间集合组成,任意一个样本会被映射到这N个空间中并激活/不激活相应特征维度,如果用C1表示某类样本被激活的特征维度集合,用C2表示另一类样本的特征维度集合,当数据量不够大时

卷积神经的这些坑你都踩过吗?

匿名 (未验证) 提交于 2019-12-02 23:38:02
AlexNet 卷积架构 ,包括 我们会发现模型的准确率正稳定提升。 但是现在这些提升并不仅仅来源于 架构的修正 ,还来源于训练过程的改进:包括 损失函数的优化、数据预处理方法的提炼和最优化方法的提升等 。在过去几年中,卷积网络与图像分割出现大量的改进,但大多数在文献中只作为实现细节而简要提及,而其它还有一些技巧甚至只能在源代码中找到。 论文:Bag of Tricks for Image Classification with Convolutional Neural Networks 摘要:在本文中,我们将测试一系列的微调方法,并通过控制变量实验评估它们对最终准确率的影响。我们将展示通过组合不同的微调方法,我们可以显著地改善多种 CNN 模型。 2 训练过程 目前我们基本上都用小批量 SGD 或其变体训练神经网络,Algorithm 1 展示了 SGD 的模版过程。利用广泛使用的 ResNet 实现作为我们的基线,训练过程主要分为以下六个步骤: 随机采样一张图片,并解码为 32 位的原始像素浮点值,每一个像素值的取值范围为 [0, 255]。 随机以 [3/4, 4/3] 为长宽比、[8%, 100%] 为比例裁减矩形区域,然后再缩放为 224*224 的方图。 以 0.5 的概率随机水平翻转图像。 从均匀分布 [0.6, 1.4] 中抽取系数,并用于缩放色调和明亮度等。

卷积神经网络实战(一) mnist 手写数字预测

匿名 (未验证) 提交于 2019-12-02 23:35:02
学了这么久机器学习和深度学习,应该来个小项目练练手。 于是选择了最经典的数据集MNIST来锻炼下自己卷积神经网络的熟练度。 我采用了比较简单的结构,没有用强大的GooLeNet(…实则是电脑带不动),两个卷积层加一个最大池化层,然后加一个大小为64的全连接层,最后是softmax输出。其实这个结构也是看了n遍了,这次来手写一下代码,顺便熟悉熟悉tensorflow的函数。 话不多说,上代码(python 3.7) import tensorflow as tf import numpy as np def reset_graph(seed=42):#设置一下随机数种子 tf.reset_default_graph() tf.set_random_seed(seed) np.random.seed(seed) height = 28 #长 width = 28 #宽 channels = 1 #通道数为1 n_inputs = height * width #图片大小为784像素 conv1_fmaps = 32 #卷积核的数量 conv1_ksize = 3 #卷积核的大小 conv1_stride = 1 #第一卷积层步长为1 conv1_pad = "SAME" #padding采用same conv2_fmaps = 64 #64个卷积核 conv2_ksize = 3

情感分析

▼魔方 西西 提交于 2019-12-02 23:34:06
情感分析 本教程源代码目录在 book/understand_sentiment ,初次使用请您参考 Book文档使用说明 。 # 背景介绍 在自然语言处理中,情感分析一般是指判断一段文本所表达的情绪状态。其中,一段文本可以是一个句子,一个段落或一个文档。情绪状态可以是两类,如(正面,负面),(高兴,悲伤);也可以是三类,如(积极,消极,中性)等等。情感分析的应用场景十分广泛,如把用户在购物网站(亚马逊、天猫、淘宝等)、旅游网站、电影评论网站上发表的评论分成正面评论和负面评论;或为了分析用户对于某一产品的整体使用感受,抓取产品的用户评论并进行情感分析等等。表格1展示了对电影评论进行情感分析的例子: 电影评论 类别 在冯小刚这几年的电影里,算最好的一部的了 正面 很不好看,好像一个地方台的电视剧 负面 圆方镜头全程炫技,色调背景美则美矣,但剧情拖沓,口音不伦不类,一直努力却始终无法入戏 负面 剧情四星。但是圆镜视角加上婺源的风景整个非常有中国写意山水画的感觉,看得实在太舒服了。。 正面 表格 1 电影评论情感分析 在自然语言处理中,情感分析属于典型的文本分类问题,即把需要进行情感分析的文本划分为其所属类别。文本分类涉及文本表示和分类方法两个问题。在深度学习的方法出现之前,主流的文本表示方法为词袋模型BOW(bag of words),话题模型等等;分类方法有SVM(support

卷积神经网络反向传播理论推导

匿名 (未验证) 提交于 2019-12-02 23:34:01
本文首先简单介绍CNN的结构,并不作详细介绍,本文只要讲解CNN的反向传播,CNN的反向传播,其实并不是大多所说的和全连接的BP类似,CNN的全连接部分的BP是与它相同,但是CNN中卷积--池化、池化--卷积部分的BP是不一样的,仔细推导,还是有很多细节地方需要思考的,比如1、在前向传播的过程中,卷积层的输入,是通过卷积核与前一层的输出特征图卷积得来的,那么在反向传播的过程中该怎么处理?这个就与全连接神经网络不同了。2、由于在前向传播的时候,池化层会对前一层卷积层进行放缩,那么从池化层到卷积层BP的时候,小尺度的池化层怎么把误差反传到大尺度的卷积层(这里的大小是一般而言,卷积层一张特征图经池化之后尺度会变小)?这个就与全连接神经网络完全不同!3、公式推导中,或者某些库的函数实现过程中,卷积核为什么要翻转180度?ps.本文是根据汇报的PPT更改,里面有很多图和文字就直接截图了,里面的每一个公式都是我和F.Tao讨论和推导过的,如有错误欢迎指正。 如果你觉得这篇文章看起来稍微还有些吃力,或者想要系统地学习人工智能,那么推荐你去看床长人工智能教程。非常棒的大神之作,教程不仅通俗易懂,而且很风趣幽默。点击 这里 可以查看教程。 3D CNN ,为了更加详细说明每一层是什么,每一层那个是特征图,那些是神经元。 前向传播: 1、输入层到卷积层的前向传播 输入层到卷积层,采用的是局部连接

数字识别,神经网络

元气小坏坏 提交于 2019-12-02 23:29:07
来源:https://www.numpy.org.cn/deep/basics/fit_a_line.html 数字识别 本教程源代码目录在 book/recognize_digits ,初次使用请您参考 Book文档使用说明 。 # 说明: 硬件环境要求: 本文可支持在CPU、GPU下运行 Docker镜像支持的CUDA/cuDNN版本: 如果使用了Docker运行Book,请注意:这里所提供的默认镜像的GPU环境为 CUDA 8/cuDNN 5,对于NVIDIA Tesla V100等要求CUDA 9的 GPU,使用该镜像可能会运行失败。 文档和脚本中代码的一致性问题: 请注意:为使本文更加易读易用,我们拆分、调整了train.py的代码并放入本文。本文中代码与train.py的运行结果一致,可直接运行 train.py 进行验证。 # 背景介绍 当我们学习编程的时候,编写的第一个程序一般是实现打印"Hello World"。而机器学习(或深度学习)的入门教程,一般都是 MNIST 数据库上的手写识别问题。原因是手写识别属于典型的图像分类问题,比较简单,同时MNIST数据集也很完备。MNIST数据集作为一个简单的计算机视觉数据集,包含一系列如图1所示的手写数字图片和对应的标签。图片是28x28的像素矩阵,标签则对应着0~9的10个数字。每张图片都经过了大小归一化和居中处理。

图像分类

流过昼夜 提交于 2019-12-02 23:28:31
图像分类 本教程源代码目录在 book/image_classification ,初次使用请您参考 Book文档使用说明 。 # 说明: 1.硬件环境要求: 本文可支持在CPU、GPU下运行 2.Docker镜像支持的CUDA/cuDNN版本: 如果使用了Docker运行Book,请注意:这里所提供的默认镜像的GPU环境为 CUDA 8/cuDNN 5,对于NVIDIA Tesla V100等要求CUDA 9的 GPU,使用该镜像可能会运行失败。 3.文档和脚本中代码的一致性问题: 请注意:为使本文更加易读易用,我们拆分、调整了train.py的代码并放入本文。本文中代码与train.py的运行结果一致,可直接运行 train.py 进行验证。 # 背景介绍 图像相比文字能够提供更加生动、容易理解及更具艺术感的信息,是人们转递与交换信息的重要来源。在本教程中,我们专注于图像识别领域的一个重要问题,即图像分类。 图像分类是根据图像的语义信息将不同类别图像区分开来,是计算机视觉中重要的基本问题,也是图像检测、图像分割、物体跟踪、行为分析等其他高层视觉任务的基础。图像分类在很多领域有广泛应用,包括安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。 一般来说