卷积神经网络

卷积神经网络(CNN)

£可爱£侵袭症+ 提交于 2020-01-11 15:39:45
模仿人眼的一个局部相关性、局部感受的机制(感受野),提出的网络叫做卷积神经网络,每次感受一个小的方块(视野),窗口方块移动时,权值是共享的。 卷积神经网络中的权值共享,类似于滤波操作,就是整张图片在使用同一个卷积核内的参数,比如一个3×3×1的卷积核,这个卷积核9个参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数,这大大减少了卷积核中的参数量,此外因为权值共享后意味着每个卷积和只能提取到一种特征,为了增加cnn的表达能力,当然需要多个核。 常见卷积操作和概念 1. upsample(向上采样) from torch . nn import functional as F # ( 1 , 16 , 14 , 14 ) - - > ( 1 , 16 , 28 , 28 ) out = F . interpolate ( x , scale_factor = 2 , mode = 'nearest' ) 2. pooling层(池化) 下采样:略 3. BatchNorm 目的:避免出现梯度离散的现象 操作:通过feature scaling将特征数据进行归一化缩放,对于[b,c,h,w]的batch数据,将生成[c]维的数据,可以用在image Normalization和Batch Normalization中 优点:收敛更快;更好的性能;更具有鲁棒性 算法步骤:

卷积神经网络提取特征并用于SVM

拥有回忆 提交于 2020-01-11 00:16:00
目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个。图片大小为16x16。要求必须使用SVM作为二分类的分类器。 本文重点是如何使用卷积神经网络(CNN)来提取手写数字图片特征,主要想看如何提取特征的请直接看源代码部分的94行左右,只要对tensorflow有一点了解就可以看懂。在最后会有完整的源代码、处理后数据的分享链接。转载请保留原文链接,谢谢。 UCI手写数字的数据集 源数据下载: http://oddmqitza.bkt.clouddn.com/archivetempsemeion.data 其中前256维为16x16的图片,后10维为one hot编码的标签。即0010000000代表2,1000000000代表0. 组合成图片大约是这样的: 卷积和池化形象理解 卷积 池化 仔细的看,慢慢想就能明白CNN提取特征的思想巧妙之处。 能明白这两点,剩下的东西就和普通的神经网络区别不大了。 为什么要用CNN提取特征? 1.由于卷积和池化计算的性质,使得图像中的平移部分对于最后的特征向量是没有影响的。从这一角度说,提取到的特征更不容易过拟合。而且由于平移不变性,所以平移字符进行变造是无意义的,省去了再对样本进行变造的过程。 2.CNN抽取出的特征要比简单的投影、方向,重心都要更科学。不会让特征提取成为最后提高准确率的瓶颈、天花板 3.可以利用不同的卷积

1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习

六眼飞鱼酱① 提交于 2020-01-09 18:49:30
ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构 本文翻译自 ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks , 原作者保留版权 卷积神经网络在视觉识别任务上的表现令人称奇。好的CNN网络是带有上百万参数和许多隐含层的“庞然怪物”。事实上,一个不好的经验规则是:网络越深,效果越好。AlexNet,VGG,Inception和ResNet是最近一些流行的CNN网络。为什么这些网络表现如此之好?它们是如何设计出来的?为什么它们设计成那样的结构?回答这些问题并不简单,但是这里我们试着去探讨上面的一些问题。网络结构设计是一个复杂的过程,需要花点时间去学习,甚至更长时间去自己动手实验。首先,我们先来讨论一个基本问题: 为什么CNN模型战胜了传统的计算机视觉方法? 图像分类指的是给定一个图片将其分类成预先定义好的几个类别之一。图像分类的传统流程涉及两个模块: 特征提取 和 分类 。 特征提取 指的是从原始像素点中提取更高级的特征,这些特征能捕捉到各个类别间的区别。这种特征提取是使用无监督方式,从像素点中提取信息时没有用到图像的类别标签。常用的传统特征包括GIST, HOG, SIFT, LBP等。特征提取之后

第40月第9天 卷积神经网络 人脸识别

倾然丶 夕夏残阳落幕 提交于 2020-01-09 11:18:18
1. 卷积神经网络的基本原理以及几个核心概念都介绍完了。接下来我们进入人脸识别的环节,总体分为四步:第一步就是人脸边框检测,第二步就是图像校准,第三步是图像转向量,第四步是向量对比。 第一步人脸边框检测。一张图片上,有可能不止一张脸,而是有多张脸。不管有多少张脸,我们先把符合人脸特征的边框找到,并且把边框给截取出来。 怎么截取?定位。就是根据人脸特征来进行定位,就像刚刚所说的,如果某个位置有一只眼睛,其对称的地方也有一只眼睛,那(机器)就能找到眼部位置,进而也能找到眼角部分。在人脸识别中,边框特征范围非常重要,因为机器依靠这些,就可以划出完整的脸部位置。机器可以参照的主要特征之一是下巴,因为嘴角可以张开或者合闭,但是下巴一般不会有太大变动。第二个是眉毛——找到眼睛了,眉毛就好找了。第三个是鼻梁、鼻尖,上、下嘴唇。 将这些特征都找到后,就要找到脸的边框——可能为方脸、瓜子脸以及圆脸,机器会在脸部边框上生成一些点,之后使用图形边框(如圆边框)去进行对比,发现差了一点,它就会不停调整系数,直到完全符合。 但截取时,脸附近需要留出一定距离,不能完全按照边框去截取,例如,上图中的头发部分,(人)可能戴了帽子,因此机器就不能进行完全截取,而是在周围留出一定空间,再把图片截取出来。如果一张脸有多个点,那就截出多个人脸的边框。 第二步就是校准图像。这个概念其实跟计算机处理数据的思路一致

#ICCV2019论文阅读#Fully_convolutional_Features

ⅰ亾dé卋堺 提交于 2020-01-09 00:02:44
一 知识背景 3D scan&cloud points(点 云)patch-based features,fully convolutional network, deep metric learning, sparse tensors,sparse convolutions, hard negetive-mining, contrastive loss, triplet loss, batch normalization... 1.cloud points(点云)   “在 逆向工程 中通过测量仪器得到的产品外观表面的点数据集合也称之为点云,通常使用三维坐标测量机所得到的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用 三维激光扫描仪 或照相式扫描仪得到的点云,点数量比较大并且比较密集,叫密集点云, 点云是在和目标表面特性的海量点集合。根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity)。根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB)。 结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。在获取物体表面每个采样点的空间坐标后,得到的是一个点的集合,称之为“点云”(Point Cloud)。点云的格式:; *.pts; *.asc ; *.dat; *

AlexNet卷积神经网络

徘徊边缘 提交于 2020-01-08 02:06:24
译者按: 祖师爷Hinton 带领的小组经典之作,深度学习开山祖师 Hinton率领的谷歌团队多次夺冠 ,主力成员为 hinton 在多伦多大学的学生 Alex Krizhevsky , Ilya Sutskever , 因此他们的解决方案也叫alexnet , 这篇文章是hinton大神团队的代表性之作,CNN (卷积神经网络)已经成为图像识别处理的标准,alexnet作为CNN的代表性方案基础,开创性的GPU计算卷积 , 仿生视觉细胞的局部感受野等手段解决了图像处理的难题, 和同期的VGG、ResNet、GoogleNet等比肩,使得图像识别成为了人工智能的最成功领域。 ImageNet是一个计算机视觉系统识别项目,缔造者为斯坦福大学教授李飞飞 ,是目前图像识别最大的数据库。是美国斯坦福的计算机科学家,模拟人类的识别系统建立的。能够从图片识别物体。ImageNetLSVRC图像识别大赛素有国际“计算机视觉奥林匹克“之称。数据集包含大约1000多万张各种图片,被分为1000个分类,参赛者训练分类器,在测试数据上取得最高辨识正确率者为优胜。 原文地址: http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks 作者 : University of

inception-v1,v2,v3,v4----论文笔记

元气小坏坏 提交于 2020-01-06 21:49:28
inception-v1,v2,v3,v4----论文笔记 inception的四篇论文地址: Going deeper with convolutions:https://arxiv.org/pdf/1409.4842.pdf Batch Normalization: https://arxiv.org/pdf/1502.03167.pdf Rethinking the Inception Architecture for Computer Vision:https://arxiv.org/pdf/1512.00567.pdf Inception-v4, Inception-ResNet: https://arxiv.org/pdf/1602.07261.pdf Inception-v1 在这篇轮文之前,卷积神经网络的性能提高都是依赖于提高网络的深度和宽度,而这篇论文是从网络结构上入手,改变了网络结构,所以个人认为,这篇论文价值很大。 该论文的主要贡献:提出了inception的卷积网络结构。 从以下三个方面简单介绍这篇论文:为什么提出Inception,Inception结构,Inception作用 为什么提出Inception 提高网络最简单粗暴的方法就是提高网络的深度和宽度,即增加隐层和以及各层神经元数目。但这种简单粗暴的方法存在一些问题: 会导致更大的参数空间

小白也能入门的深度学习

自闭症网瘾萝莉.ら 提交于 2020-01-06 05:42:38
卷积神经网络是近年来深度学习能在计算机视觉领域取得突破性成果的基石。它也逐渐在被其他诸如自然语言处理、推荐系统和语音识别等领域广泛使用。 一、卷积神经网络简介 卷积神经网络的结构:卷积层、池化层、全连接层。全连接层通常作为网络的最后几层,其中的每个神经元都与上层中的所有神经元相连,所以称之为全连接层。全连接层之前是若干对卷积层与池化层,卷积层与池化层一一对应,且卷积层在前,池化层在后。本质上卷积层与池化层作用是将原始的数据中的特征进行抽象,全连接层则利用这些抽象出来的特征对样本数据进行分类,并未样本打上标签。 卷积层与池化层是卷积神经网络的核心部分。 卷积层:由若干特征图构成,特征图由卷积核对输入数据卷积后得到,卷积核可被看做是一种对特定特征非常敏感的探测器。卷积核对输入数据卷积的过程就是,实际就是尝试发现输入数据中某个特征的过程。特征图会记录卷积核在原输入数据不同部分的激活程度(特征越契合,激活程度越高)。每个卷积核负责识别一种特定特征,卷积后将产生一张对应该特征的特征图,卷积层通常由若干个卷积核与之对应。 池化层的价值在于缩减输入数据的规模,比如将特征图中若干个激活值合并为新特征图中的一个激活值。合并方法很多,比如最大值合并、平均值合并和随机合并,采用何种方法根据业务来定。 二、卷积层 卷积核的宽和高,以及卷积核的个数由人工预定义得到。卷积核对什么特征敏感

卷积神经网络之ResNet网络模型学习

核能气质少年 提交于 2020-01-05 22:12:13
卷积神经网络之ResNet网络模型学习 参考文章网址:https://www.cnblogs.com/vincentqliu/p/7464918.html Deep Residual Learning for Image Recognition 微软亚洲研究院的何凯明等人 论文地址 https://arxiv.org/pdf/1512.03385v1.pdf Abstract 更深层次的神经网络训练更加困难。我们提出一个 Residual的学习框架来缓解训练的网比之前所使用的网络深得多。我们提供全面的经验证据显示这些残余网络更容易优化,并可以从显着增加的深度获得准确性。在ImageNet数据集上我们评估深度达152层残留网比VGG网[41]更深,但复杂度仍然较低。这些残留网络的集合实现了3.57%的误差在ImageNet测试集上。这个结果赢得了ILSVRC 2015分类任务第一名。 比赛总结ppt链接 http://image-net.org/challenges/talks/ilsvrc2015_deep_residual_learning_kaiminghe.pdf ICCV 2015 Tutorial on Tools for Efficient Object Detection链接 http://mp7.watson.ibm.com/ICCV2015

TensorFlow下利用MNIST训练模型识别手写数字

旧街凉风 提交于 2020-01-04 16:38:36
本文将参考 TensorFlow中文社区官方文档 使用mnist数据集训练一个多层卷积神经网络( LeNet5网络 ),并利用所训练的模型识别自己手写数字。 训练MNIST数据集,并保存训练模型 # Python3 # 使用LeNet5的七层卷积神经网络用于MNIST手写数字识别 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data", one_hot=True) # 为输入图像和目标输出类别创建节点 x = tf.placeholder(tf.float32, shape=[None, 784]) # 训练所需数据 占位符 y_ = tf.placeholder(tf.float32, shape=[None, 10]) # 训练所需标签数据 占位符 # *************** 构建多层卷积网络 *************** # # 权重、偏置、卷积及池化操作初始化,以避免在建立模型的时候反复做初始化操作 def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) # 取随机值