卷积

卷积神经网络

不想你离开。 提交于 2020-03-16 00:09:38
本文转自 http://www.36dsj.com/archives/24006?utm_source=open-open C-层: 卷积层(Convolutional layer ) S-层: 子采样层(Subsampling layer ) 每层包含多个特征平面(Feature Map) 其中的卷积核是需要训练的,卷积层的特点是:特征增强 (映射效果), 降低噪声,平移不变性 CNN功能特性:局部特征提取(感受野,相对位置)(每一个神经元从上一层的局部接受域得到突触输人,因而迫使它提取局部特征。一旦一个特征被提取出来,只要它相对于其他特征的位置被近似地保留下来,它的精确位置就变得没有那么重要了); 特征映射(共享权值、抗变形)(网络的每一个计算层都是由多个特征映射组成的,每个特征映射都是平面形式的。平面中单独的神经元在约束下共享相同的突触权值集,这种结构形式具有如下的有益效果:a.平移不变性。b.自由参数数量的缩减(通过权值共享实现)。), 子采样(分辨率降低,变形敏感度下降)(每个卷积层跟着一个实现局部平均和子抽样的计算层,由此特征映射的分辨率降低。这种操作具有使特征映射的输出对平移和其他形式的变形的敏感度下降的作用。) 自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda

sp4.1 Foundations of Convolutional Neural Networks CNN

江枫思渺然 提交于 2020-03-15 13:13:31
一般情况下 一张分辨率高点的图片就是1000*1000*3维的放在矩阵里3百万啊一列 假设第一层隐藏单元是1000个 那么就是1000*3百万的矩阵 太大了 w1就是3百万 (1000隐藏层,1000*1000*3 输入层)=30亿个参数 所以就要用到卷积了 w*x 1边缘检测:别忘了一般都是低层次到高层次检测的 边缘到整体的 比如下图照片 先检测竖线 再水平线 垂直边缘检测: 比如现在给一个灰度图像 一层的6*6现在利用一个过滤器或者叫kernel检测竖线进行卷积运算 *就是卷积元素符号 对应相乘即可 然后蓝色块右移依次计算 然后还是从左边下移一格 可视化一下:灰白之间就是垂直边缘 加个绝对值也可以 可以可视理解一下 第一个例子 过滤器是个垂直检测边缘的 他和第一个3*3 的相乘 出来是0 移动一列 再乘是30 也就说明了 第一个里面没边缘 第二个里有边缘 很多种过滤器:这里过滤器怎样设置也有争论 甚至直接把过滤器当作要求的参数 反向传播学习出来 变一变可能识别出70度的直线 倾斜的直线 上面卷积的缺点 1会导致图像越来越小 2中间的点会重复多次采集 而旁边的点比如四个角的点 只被采集了一次 利用Padding:在处理之前在图像外围再加一层或者几层填充 有点像前端里的padding 用f*f大小过滤器进行卷积 得到就是n-f+1 * n-f+1的阵 是越来越小了

Pytorch1.0入门实战二:LeNet、AleNet、VGG、GoogLeNet、ResNet模型详解

别说谁变了你拦得住时间么 提交于 2020-03-13 11:34:46
LeNet   1998年, LeCun提出了第一个真正的卷积神经网络,也是整个神经网络的开山之作,称为 LeNet,现在主要指的是 LeNet5或 LeNet-5,如图1.1所示。它的主要特征是将卷积层和下采样层相结合作为网络的基本机构,如果不计输入层,该模型共 7层,包括 2个卷积层, 2个下采样层, 3个全连接层。 图1.1   注:由于在接入全连接层时,要将池化层的输出转换成全连接层需要的维度,因此,必须清晰的知道全连接层前feature map的大小。卷积层与池化层输出的图像大小,其计算如图 1.2所示。 图1.2   本次利用 pytorch实现整个 LeNet模型,图中的 Subsampling层即可看作如今的池化层,最后一层(输出层)也当作全连接层进行处理。 1 import torch as torch 2 import torch.nn as nn 3 class LeNet(nn.Module): 4 def __init__(self): 5 super(LeNet,self).__init__() 6 layer1 = nn.Sequential() 7 layer1.add_module('conv1',nn.Conv2d(1,6,5)) 8 layer1.add_module('pool1',nn.MaxPool2d(2,2)) 9 self

Milvus实战 | 轻松搭建以图搜图系统

我的未来我决定 提交于 2020-03-12 22:13:06
当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。 Milvus 作为一款针对海量特征向量的相似性检索引擎,旨在助力分析日益庞大的非结构化数据,挖掘其背后蕴含的巨大价值。为了让 Milvus 能够应用于相似图片检索的场景,我们基于 Milvus 和图片特征提取模型 VGG 设计了一个以图搜图系统。 正文分为数据准备、系统概览、 VGG 模型、API 介绍、镜像构建、系统部署、界面展示七个部分。数据准备章节介绍以图搜图系统的数据支持情况。系统概览章节展示系统的整体架构。VGG 模型章节介绍了 VGG 的结构、特点、块结构以及权重参数。API 介绍章节介绍系统的五个基础功能 API 的工作原理。镜像构建章节介绍如何通过源代码构建客户端和服务器端的 docker 镜像。系统部署章节展示如何三步搭建系统。界面展示章节会展示系统的搜索界面。 1. 数据准备 本文以 PASCAL VOC 图片集为例搭建了一个以图搜图的端到端解决方案,该图片集包含 17,125 张图片,涵盖 20 个目录:人类;动物(鸟、猫、牛、狗、马、羊);交通工具(飞机、自行车、船、公共汽车、小轿车、摩托车、火车);室内(瓶子、椅子、餐桌、盆栽植物、沙发、电视)。

模型压缩--概述

我只是一个虾纸丫 提交于 2020-03-12 18:50:45
目前在深度学习领域分类两个派别,一派为学院派,研究强大、复杂的模型网络和实验方法,为了追求更高的性能;另一派为工程派,旨在将算法更稳定、高效的落地在硬件平台上,效率是其追求的目标。复杂的模型固然具有更好的性能,但是高额的存储空间、计算资源消耗是使其难以有效的应用在各硬件平台上的重要原因。 工业层面 当前各大互联网公司都开始注意深度学习模型在工业上的落地。模型压缩工具开始在各家的生产工具中进入主流,并且各家也开源了对应的工具。具体如下: 百度PaddleSlim : https://github.com/PaddlePaddle/PaddleSlim 基于百度PaddlePaddle的一个模型压缩工具。提供量化、蒸馏、剪枝、模型结构搜索、硬件延时搜索等功能。功能强大、接口比较简单,对熟悉paddle的开发者比较友好。 腾讯Pocketflow: https://github.com/Tencent/PocketFlow 腾讯基于 TensorFlow开发的一个模型压缩工具,功能有限,很久没更新 微软NNI: https://github.com/microsoft/nni 微软的模型压缩,网络结构搜索,网络剪裁工具。相对来说,功能比较完善,支持多个平台。 谷歌 auto-sklearn : https://github.com/keras-team/autokeras

翻译与学习:基于深度卷积神经网络的ImageNet分类器

末鹿安然 提交于 2020-03-12 17:09:11
基于卷积神经网络的ImageNet分类器 作者: Alex Krizhevsky-多伦多大学(加拿大) Ilye Sutskever-多伦多大学 Geoffrey E. Hinton-多伦多大学 摘要 我们训练了一个大型的深度卷积神经网络去将2010年ILSVRC挑战杯包含的120万高分辨率图像分类成1000种不同的类别。在测试数据方面,我们取得了远超过去最佳水平的效果,分别为17%和37.5%的top-5和top-1错误率。有着6000万参数和65万神经元的神经网络由5个部分连接Max池化层的卷积层和3个全连接层连带着1000路softmax组成。为了加快训练速度。我们采用非饱和神经元和一个高效的卷积操作的GPU执行器。为了降低全连接层的过拟合,我们采用了一项近期发展的已被证明有效的名为dropout的正则化方法。 1 引言 解决物体识别的最新方法必不可少的使用机器学习方法。为了提高他们的表现,我们可以收集更大的数据集,训练更有效的模型,并且使用更先进的技术去阻止过拟合。直到近期,有标识的图像数据集相当的小——大约数万张图片的状况才改变。简单的识别任务能够被有效的解决好在这一规模的数据集上,特别是如果他们采用了数据增强。例如,MNIST数字识别任务的最新错误率(0.3%)已接近人类表现。但现实场景中的对象表现出相当大的变异性,所以为了学习识别它们,使用更大的训练集是非常必要的

tiled卷积神经网络(tiled CNN)

风流意气都作罢 提交于 2020-03-12 04:27:45
这个结构是10年Quoc V.Le等人提出的,这里的tiled,按照 Lecun的解释是Locally-connect non shared.即是局部连接,而且不是共享的,这是针对于权重来说的。本文翻译如有错误,还望指正,谢谢!!这篇论文是10年的,相比较来说四年的东西,比较旧了,可是这个tcnn在ng的ufldl最后也有提及(只有目录部分,ng没写完),而且也算是个cnn的变化,不过看效果没有获得the state of art。因为在cifar-10数据集上当前的效果都达到了91%,而且NIN结构也很不错(还没看)。 Tiled convolutional neural networks 摘要 :卷积神经网络(cnn)已经成功的应用于许多的任务上,比如数字或者对象识别。使用卷积(tied)权重显然可以大幅度的减少所需要学习的参数的数量,并且可以使得在这个结构中能够硬编码(估计就是结构自身所特有的属性的意思吧)平移不变性。在本文中,我们考虑学习不变性的问题,而不是只依赖于硬编码。我们提出了tiled卷积神经网络,它通过使用一个tied权重的规则‘tiled’模式(个人理解就是在卷积上加个tiled规则),即不需要毗邻的隐藏单元共享同样的权重,而是隐藏单元之间距离k步远的单元有tied权重。通过在邻居单元上进行池化,这个结果能够去学习复杂的不变性(例如缩放和旋转不变性

经典卷积神经网络笔记-VGG16

…衆ロ難τιáo~ 提交于 2020-03-12 02:48:38
VGG16论文链接: https://arxiv.org/abs/1409.1556 收录于ICLR2015 网络结构和配置: 作者在这篇论文中主要探讨的是使用非常小的卷积核(3*3)来增加卷积神经网络的深度对于性能有很大的提升。如Table 1所示,作者设置了A-E五种卷积神经网络配置来探讨深度对于性能的影响。 结构D和E 就是我们熟知的VGG16(13个卷积层+3个全连接层)和VGG19(16个卷积层+3个全连接层)。PS:层数是没有包含maxpool的 这些网络都遵循一种通用的设计,输入到网络的是一个固定大小的224*224的RGB图像,所做的唯一预处理是从每个像素减去基于训练集的平均RGB值。图像通过一系列的卷积层时,全部使用3*3大小的卷积核。只有在配置C中,作者使用了1*1的卷积核,这可以被看作是输入通道的线性映射(接着是非线性)。卷积的步长均为1,padding也为1。每个网络配置都是5个最大池化层,最大池化的窗口大小为2*2,步长为2。 卷积层之后是三个完全连接(FC)层:前两层有4096个通道,第三个层执行的是1000路ILSVRC分类,因此包含1000个通道(每个类一个)。最后一层是softmax层。在A-E所有网络中,全连接层的配置是相同的。 所有的隐藏层都用 Relu 方法进行校正,只有结构A-LRN包含Local Response

卷积核与特征提取

試著忘記壹切 提交于 2020-03-11 19:55:34
原文地址: https://www.cnblogs.com/zongfa/p/9130167.html 线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。 对图像和滤波矩阵进行逐个元素相乘再求和的操作就相当于将一个二维的函数移动到另一个二维函数的所有位置,这个操作就叫卷积或者协相关。卷积和协相关的差别是,卷积需要先对滤波矩阵进行180的翻转,但如果矩阵是对称的,那么两者就没有什么差别了。 Correlation 和 Convolution可以说是图像处理最基本的操作,但却非常有用。这两个操作有两个非常关键的特点:它们是线性的,而且具有平移不变性shift-invariant。平移不变性指我们在图像的每个位置都执行相同的操作。线性指这个操作是线性的,也就是我们用每个像素的邻域的线性组合来代替这个像素。这两个属性使得这个操作非常简单,因为线性操作是最简单的,然后在所有地方都做同样的操作就更简单了。 实际上,在信号处理领域,卷积有广泛的意义,而且有其严格的数学定义,但在这里不关注这个。

CNN中的卷积和反卷积

做~自己de王妃 提交于 2020-03-11 13:14:46
原文链接:https://blog.csdn.net/sinat_29957455/article/details/85558870 前言 卷积 和 反卷积 在CNN中经常被用到,想要彻底搞懂并不是那么容易。本文主要分三个部分来讲解卷积和反卷积,分别包括 概念 、 工作过程 、 代码示例 ,其中代码实践部分主结合TensorFlow框架来进行实践。给大家介绍一个 卷积过程的可视化工具 ,这个项目是github上面的一个开源项目。 卷积和反卷积 卷积(Convolutional) :卷积在图像处理领域被广泛的应用,像 滤波 、 边缘检测 、 图片锐化 等,都是通过不同的卷积核来实现的。在卷积神经网络中通过卷积操作可以提取图片中的特征,低层的卷积层可以提取到图片的一些 边缘 、 线条 、 角 等特征,高层的卷积能够从低层的卷积层中学到更复杂的特征,从而实现到图片的分类和识别。 反卷积 :反卷积也被称为 转置卷积 ,反卷积其实就是卷积的逆过程。大家可能对于反卷积的认识有一个误区,以为通过反卷积就可以获取到经过卷积之前的图片, 实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸 。那么到底反卷积有什么作用呢? 通过反卷积可以用来可视化卷积的过程,反卷积在GAN等领域中有着大量的应用。 工作过程 卷积 上图展示了一个卷积的过程, 其中蓝色的图片(4*4