卷积神经网络

【深度学习】卷积神经网络CNN基本原理

╄→гoц情女王★ 提交于 2019-11-28 15:21:06
为什么要用卷积神经网络? 传统神经网络的劣势 我们知道,图像是由一个个像素点构成,每个像素点有三个通道,分别代表RGB颜色,那么,如果一个图像的尺寸是(28,28,1),即代表这个图像的是一个长宽均为28,channel为1的图像(channel也叫depth,此处1代表灰色图像)。如果使用全连接的网络结构,即网络中的神经与与相邻层上的每个神经元均连接,那就意味着我们的网络有28 * 28 =784个神经元,hidden层采用了15个神经元,那么简单计算一下,我们需要的参数个数(w和b)就有:784*15*10+15+10=117625个,这个参数太多了,随便进行一次反向传播计算量都是巨大的,从计算资源和调参的角度都不建议用传统的神经网络。 卷积神经网络是什么? 三个基本层 卷积层(Convolutional Layer) 我们用传统的三层神经网络需要大量的参数,原因在于每个神经元都和相邻层的神经元相连接,但是思考一下,这种连接方式是必须的吗?全连接层的方式对于图像数据来说似乎显得不这么友好,因为图像本身具有“二维空间特征”,通俗点说就是局部特性。譬如我们看一张猫的图片,可能看到猫的眼镜或者嘴巴就知道这是张猫片,而不需要说每个部分都看完了才知道,啊,原来这个是猫啊。所以如果我们可以用某种方式对一张图片的某个典型特征识别,那么这张图片的类别也就知道了。这个时候就产生了卷积的概念

Fast R-CNN论文解读

妖精的绣舞 提交于 2019-11-28 14:05:19
论文链接: https://arxiv.org/abs/1504.08083 代码链接: https://github.com/rbgirshick/fast-rcnn . Abstract 这篇论文提出了一种基于卷积神经网络做目标检测的算法——Fast R-CNN,它是建立在之前R-CNN的基础上使用深度卷积神经网络进行高效的目标检测。Fast R-CNN做了几点创新来提高训练和测试阶段的速度,同时提高了检测的准确率。 Fast R-CNN使用的是VGG16网络,训练速度比R-CNN快了9倍,测试速度快了213倍,并且在PASCAL VOC 2012上实现了更高的map; 与SSPnet相比,Fast R-CNN训练速度快了3倍,测试速度快了10倍,并且准确率更高; 1. Introduction 目前深度神经网络已经极大的提高了图形分类和目标检测的精度,与图像分类相比,目标检测明显更为复杂,现在的方法在训练网络时会分多个阶段,这样会导致训练和运行时间过长。 目前检测有两个最基本的挑战: 如何产生候选框; 候选框只是提供了一个粗略的定位范围,所以需要进一步的修正才可以得到更精确的定位,这意味着我们的方法需要在速度、精度和简单性之间做权衡; 在本片论文中,我们简化了训练过程,提出了以一种单阶段的训练算法——分类和边框回归的loss合并,梯度回传。 1.1 R-CNN and

Convolutional Neural Networks

梦想与她 提交于 2019-11-28 13:23:30
原文引用 https://www.dazhuanlan.com/2019/08/25/5d625a7694a88/ Convolutional Neural Networks 白雪峰 — xfbai@mtlab.hit.edu.cn. 这是一篇关于CNN的总结 Outline CNN栗子镇楼 What is CNN 什么是卷积 什么是池化 Why CNN 对CNN的其他一些理解 CNN实现(接口) 1. CNN栗子(A Beginning Glimpse of CNN) (1)Modern CNN since Yann LeCun (2) 2. What is CNN? 神经网络?卷积? 2.1 什么是卷积? 卷积的定义: 其连续的定义为: $(f g)(n) = int_{ - infty }^{ + infty } {f(t)g(n-t)dt}$ 其离散的定义为: $(f g)(n) = sum_{t = - infty} ^{ + infty } {f(t)g(n-t)}$ 特点:  2.2 离散卷积的栗子: 丢骰子,两个骰子加起来要等于4的概率是多少? $(f*g)(4) = sum_{m = 1} ^{ 3 } {f(m)g(4-m)}$ a. 二维离散的卷积: $(f g)(m,n) = sumlimits {k=0}^{2}sumlimits {h=0}^{2}f(h

卷积神经网络概述

▼魔方 西西 提交于 2019-11-28 11:15:54
原文: http://blog.gqylpy.com/gqy/418 置顶:来自一名75后老程序员的武林秘籍——必读 (博主推荐) 来,先呈上武林秘籍链接: http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS! 可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人! 我相信看到这里的你,应该是个 IT

卷积神经网络实例---模型搭建、实时数据扩充、loss、acc曲线绘制

 ̄綄美尐妖づ 提交于 2019-11-28 10:40:06
用keras 实现cifar10 以下是代码 1 # -*- coding: utf-8 -*- 2 __author__ = ' Administrator ' 3 4 5 from keras.datasets import cifar10 6 from keras.utils import np_utils 7 from keras.models import Sequential 8 from keras.layers import Convolution2D, MaxPooling2D 9 from keras.layers import Dense, Dropout, Activation, Flatten 10 from keras.optimizers import SGD 11 from keras.preprocessing.image import ImageDataGenerator 12 import matplotlib.pyplot as plt 13 14 # 下载数据 15 (X_train, y_train), (X_test, y_test) = cifar10.load_data() 16 print ( ' X_train shape: ' , X_train.shape) 17 print (X_train.shape[2], '

4用于cifar10的卷积神经网络-4.4/4.5cifar10数据集读取和数据增强扩充(上/下)

岁酱吖の 提交于 2019-11-28 10:39:51
4用于cifar10的卷积神经网络-4.4/4.5cifar10数据集读取和数据增强扩充(上/下) 参考: https://github.com/tensorflow http://www.cs.toronto.edu/~kriz/cifar.html http://tensorflow.org/tutorials/deep_cnn/ https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10 #-*- coding:utf-8 -*- #实现简单卷积神经网络对MNIST数据集进行分类:conv2d + activation + pool + fc import csv import tensorflow as tf import os from tensorflow.examples.tutorials.mnist import input_data os.environ[ 'TF_CPP_MIN_LOG_LEVEL' ] = '2' import sys from six.moves import urllib import tarfile import cifar10_input # 设置算法超参数 learning_rate_init = 0.001 training_epochs = 1

数据增强在卷积神经网络中的应用

别说谁变了你拦得住时间么 提交于 2019-11-28 10:38:21
这一篇博客主要讨论在用卷积神经网络进行图像识别或者目标检测时的数据增强手段,并讨论其作用。 首先整理两篇比较有代表性的论文里的数据增强,再说说我自己工作中使用的数据增强,最后讨论这些数据增强的意义(我个人的理解)。 个人觉得,如果你的网络设置的没什么问题,代码也没写错,但是跑出来的效果不尽如人意,比如你希望有80%的准确率,但实际只有70%,那你就应该试一试数据增强,这绝对比你调模型的参数或者结构要有效得多。 而且在实际中,打标数据是很珍贵的,数量可能根本没有达到能够让你训练出一个满足要求的神经网络。这时候数据增强就会显得特别重要。 首先介绍的是2012年令深度学习大放异彩的alexnet中的数据增强,alexnet在2012年的imagenet大赛中获得了冠军,首次把深度学习使用到了图片分类领域,并取得极大成功。 alexnet的输入是一张224x224x3的图片,imagenet的原始图片大小是256x256x3的,作者做了如下数据增强: 训练:原来的图片是256x256,现在依次裁剪出224x224的图片,这样横向有256-224次移动,竖着也有这么多,再加上左右的翻转镜像,相当于把数据集扩大了(256-224)x(256-224)x2=2048倍。 预测:选择一张图片的四个角的224x224加上中间的224x224(加上左右镜像的)一共10张图片的平均值做结果。

全卷积神经网络图像分割(U-net)-keras实现

故事扮演 提交于 2019-11-28 10:36:44
最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用 keras 实现了,并且用了一个医学图像的数据集进行了图像分割。 全卷积神经网络 大名鼎鼎的FCN就不多做介绍了,这里有一篇很好的博文 http://www.cnblogs.com/gujianhan/p/6030639.html。 不过还是建议把论文读一下,这样才能加深理解。 医学图像分割框架 医学图像分割主要有两种框架,一个是基于CNN的,另一个就是基于FCN的。 基于CNN 的框架 这个想法也很简单,就是对图像的每一个像素点进行分类,在每一个像素点上取一个patch,当做一幅图像,输入神经网络进行训练,举个例子: 这是一篇发表在NIPS上的论文 Ciresan D, Giusti A, Gambardella L M, et al. Deep neural networks segment neuronal membranes in electron microscopy images[C]//Advances in neural information processing systems. 2012: 2843-2851. 这是一个二分类问题,把图像中所有label为0的点作为负样本,所有label为1的点作为正样本。

经典卷积神经网络 之 ZFNet

柔情痞子 提交于 2019-11-28 08:18:04
ZFNet 时间: 2013年 出处: Matthew D.Zeiler 和 Rob Fergus (纽约大学)2013年撰写的论文: Visualizing and Understanding Convolutional Networks 目的: AlexNet的提出使得大型卷积网络开始变得流行起来,但是人们对于CNN网络究竟为什么能表现这么好,以及怎么样能变得更好尚不清楚,因此为了针对上述两个问题,提出了一个新颖的可视化技术,“理解”中间的特征层和最后的分类器层,并且找到改进神经网络的结构的方法 做法: 使用反卷积(Deconvnet),可视化特征图(feature map) 通过Deconvnet技术,可视化Alex-net,并指出了Alex-net的一些不足,最后修改网络结构,使得分类结果提升 与AlexNet相比,前面的层使用了更小的卷积核和更小的步长,保留了更多特征 成就: ZFNet是2013年ILSVRC的冠军 贡献: CNN领域可视化理解的开山之作,作者通过可视化解释了为什么CNN有非常好的性能、如何提高CNN性能,然后进行调整网络,提高了精度 论文主要贡献如下: 特征可视化 使用反卷积,可视化feature map 通过feature map可以看出,特征分层次体系结构 前面的层学习的是物理轮廓、边缘、颜色、纹理等特征,后面的层学习的是和类别相关的抽象特征

ZFNet 论文笔记

旧时模样 提交于 2019-11-28 08:15:34
ZFNet: Visualizing and Understanding Convolutional Networks 摘要: 大型卷积网络模型在ImageNet分类任务上表现出非常好的性能 [AlexNet] 。但是却没有明确的认识,为什么性能如此优异,或者,性能还能怎么被提高。在本篇文章,我们解决了这两个问题。我们引入了一个神奇的可视化技术,它使我们能可视化网络中间的特征层和分类器的运算。作为一种诊断技术来使用,这些可视化允许我们去探究AlexNet的模型架构。我们同时实施了一个消融研究( ablation study )去发现不同模型层带来的性能提升。我们展示了我们的ImageNet上的AlexNet模型泛化的很好:当softmax分类器被重新训练后,它轻而易举地击败了当前Caltech-101和Caltech-256上的state of art结果。 消融研究 / ablation study:为了研究某一部件的作用,去掉该部件,观察网络性能及其他指标的变化,网络性能及其他指标的变化反应了改部件的作用。 为什么要进行反卷积: 为了解释卷积神经网络为什么有效,我们需要解释CNN的每一层学习到了什么东西。为了理解网络中间的每一层提取到了什么特征。文章中通过反卷积的方法,进行可视化。反卷积网络可以看成是卷积网络的逆过程。反卷积网络在文章《Adaptive