卷积神经网络

卷积神经网络之图像

拈花ヽ惹草 提交于 2020-02-18 07:21:34
**今天,我们来正式讲计算机视觉里面一个非常非常广泛的网络,叫做 卷积神经网络 ,可以说卷积神经网络是现在计算机视觉的一个核心的概念,再讲卷积神经网络用于图片处理之前, 首先我们来看一下图片是怎么表示的? 我们现在来看一个Minist的图片, 我们之前已经接触过了,他是一个28行乘以28列的一个这样的数据,我们用一个矩阵来表示这个矩阵的每一个元素,要么是零,要么是一。然后这个矩阵的每一个元素代表了当前这个像素点的一个数值,因为当前的minist他是一个黑白图片,因此我们只使用了一张这样的值来表达。每一张表的这个点表达了这个图片的灰度值,他是从0到255的这样一个数值,我们也可以把它变换到一个0到1的范围之内,就比如说,0代表是全白,1代表的是全黑,因此他就变成了一个0到1的,这样的浮点数数组,我们在做Deep Learning的时候,一般的是使用0到1的这个范围,但是数据存储的时候,他可能会存储到0-255,因此我们把它加载进来的时候会把它除以一个255,这样的分数会使得它的范围变到0到1的这个区间。 自然界更常见的是彩色的图片对于彩色的图片,我们如果忽略他的α通道的话,那就是一个rgb的数值,因此,我们使用三张表了存储,每一张表存储了这张图片的RGB三个通道的每个数值,每个数值也是0到255或者是0到1以后我们讲的图片都是归一化成0到1的这个区间来看, 在表达一张彩色图片的时候

Task05:卷积神经网络基础;leNet;卷积神经网络进阶 学习笔记

江枫思渺然 提交于 2020-02-17 11:36:56
卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充、步幅、输入通道和输出通道的含义。 二维卷积层 本节介绍的是最常见的二维卷积层,常用于处理图像数据。 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。图1展示了一个互相关运算的例子,阴影部分分别是输入的第一个计算区域、核数组以及对应的输出。 下面我们用corr2d函数实现二维互相关运算,它接受输入数组X与核数组K,并输出数组Y。 import torch import torch.nn as nn def corr2d(X, K): H, W = X.shape h, w = K.shape Y = torch.zeros(H - h + 1, W - w + 1) for i in range(Y.shape[0]): for j in range(Y.shape[1]): Y[i, j] = (X[i: i + h, j: j + w] * K).sum() return Y 构造上图中的输入数组X

你不得不了解的深度学习知识(一)

自古美人都是妖i 提交于 2020-02-15 14:08:34
你不得不了解的深度学习知识(一) 1 深度学习 深度学习是机器学习的一个分支(最重要的分支) 机器学习是人工智能的一个分支 (1)大白话解释深度学习 假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。 那么,计算机该如何使用这个庞大的水管网络来学习识字呢? 比如,当计算机看到一张写有“田”字的图片,就简单将组成这张图片的所有数字(在计算机里,图片的每个颜色点都是用“0”和“1”组成的数字来表示的)全都变成信息的水流,从入口灌进水管网络。 我们预先在水管网络的每个出口都插一块字牌,对应于每一个我们想让计算机认识的汉字。这时,因为输入的是“田”这个汉字,等水流流过整个水管网络,计算机就会跑到管道出口位置去看一看,是不是标记由“田”字的管道出口流出来的水流最多。如果是这样,就说明这个管道网络符合要求。如果不是这样,就调节水管网络里的每一个流量调节阀,让“田”字出口“流出”的水最多。 这下

卷积神经网络(一)——基础知识

為{幸葍}努か 提交于 2020-02-15 06:04:38
(一)卷积神经网络基础知识 (1) 卷积神经网络基本结构 卷积神经网络(Convolutional Neural Networks,CNN)是一类特殊的人工神经网络,其最主要的特点就是卷积运算。卷积其实就是一种效果的叠加。CNN 目前在图像相关任务上有很好的效果。如图像分类、语音分割、图像检索、目标检测等计算机视觉问题。 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像、音频等数据,通过卷积操作、池化操作、非线性激活函数等一系列操作的层层堆叠。目的是将高层语义信息逐层抽象出来,这一过程就是前向传播的过程。 卷积神经网络的组成部分 CNN层次结构 作用 输入层 网络原始输入,可以是原始或预处理后的像素矩阵 卷积层 参数共享、局部连接,利用平移不变性从全局特征图提取局部特征 激活层 将卷积层的输出结果进行非线性映射 池化层 进一步对特征进行筛选,可有效的减少网络所需的参数量 全连接层 将多维特征展平为2维特征,通常低维度特征对应任务的学习目标 1、输入层 输入的图片一般包含RGB三个通道,是一个由长宽分别为H和W组成的3维像素值矩阵H W 3(图片默认的是通道是H W C,在处理的时候一般要将通道转换为C H W ),卷积网络会将输入层的数据传递到一系列卷积、池化等曹操做进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。若指定输入层接收到的图像个数为N

《Collaborative Spatioitemporal Feature Learning for Video Action Recognition》阅读

别等时光非礼了梦想. 提交于 2020-02-12 23:06:04
Collaborative Spatioitemporal Feature Learning for Video Action Recognition 用于行为识别的协同时空特征学习方法 keywords:时空特征的联合学习 和现有神经网网络的区别 现有神经网络: 现有神经网络要么分别学习时间特征和空间特征,要么不加控制的联合学习时间和空间特征 本文的神经网络:提出了一个对于神经网络新颖的操作,通过在可学习的参数上添加权重共享来约束时空特征的编码融合。 现在进行行为识别的神经网络,有两个问题仍未被解决: 1. 如何学习时间特征 2. 如何将空间特征和时间特征很好地结合起来 解决上述问题现在有以下几种尝试; 1. 设计时间特征并将时间和空间特征作为输入送到双流网络中 2. 3D卷及网络将时间特征和空间特征紧密纠缠,共同学习,因此时空特征可以直接从网络中学习到。 然而,3D卷积网络的大量参数和计算量限制了模型的性能。 本文提出了一种联合时空特征学习操作(CoST),可以在权重共享约束下联合学习时空特征。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CoST操作的具体步骤: 给出视频序列的3D向量,本文从不同角度将其分解为3个2D图像集合,然后用卷积操作分别对三个图像集合进行卷积

百度PaddlePaddle入门-11(网络结构)

萝らか妹 提交于 2020-02-10 18:41:41
前面使用与房价预测相同的简单神经网络解决手写数字识别问题,效果并不理想,原因有两点: 输入数据类型不同。房价预测的输入为离散一维数据。 房价预测使用全连接神经网络无法学习到图像二维数据中的空间信息 。 模型复杂度不够。因为手写数字识别任务涉及到图像信号,比房价预测任务更加复杂,模型的复杂度也会影响最终的效果,理论上复杂的模型能够表示更复杂的转换关系(从输入到输出)。 本节介绍两种常见的网络结构,全连接神经网络和卷积神经网络,观测卷积网络能否提升手写数字识别的训练效果。 在开始介绍网络结构前,复用上一节的数据处理代码,代码如下。 1 #数据处理部分之前的代码,保持不变 2 import os 3 import random 4 import paddle 5 import paddle.fluid as fluid 6 from paddle.fluid.dygraph.nn import Conv2D, Pool2D, FC 7 import numpy as np 8 import matplotlib.pyplot as plt 9 from PIL import Image 10 11 import gzip 12 import json 13 14 # 定义数据集读取器 15 def load_data(mode='train'): 16 17 # 数据文件 18

神经网络尺寸和参数量计算

十年热恋 提交于 2020-02-08 23:00:32
前言 这里写个参数计算,会借鉴各路大神的杰作,主要是整理一下怕自己以后忘了找起来麻烦 大部分引自https://blog.csdn.net/qian99/article/details/79008053 参数计算方法 首先是卷积层的计算 下面是一个32x32x3的输入,我们用5x5x3的滤波器去卷积 所以最后是5 5 3=75的一个参数量 那么最后的输出也是需要一个公式的,一般我们如果使用填充将不改变输出尺寸,而只改变滤波器数量。 那么如果不使用填充,则见下面的输出计算 如果上面我用了6个滤波器,那么输出为28x28x6,则参数量为5x5x3x6+6=456 对CNN而言,每个卷积层的参数量计算如下: 卷积和池化的输出计算 参数:W:宽; H:高; D:深度; K:卷积核的个数; F:卷积核的大小; S:步长; P:用0填充 卷积后输出 =[(输入大小 - 卷积核大小 + 2*P )/步长] + 1. (不能整除时,一般去掉小数部分取整,如4.5,则取4) 池化层的计算和卷积一样 来源: CSDN 作者: Nick_Dizzy 链接: https://blog.csdn.net/Nick_Dizzy/article/details/104228037

【feature extractor 系列文章3】VGGNet核心贡献解读

北城以北 提交于 2020-02-08 14:11:23
问题的提出:如何增加卷积神经网络的深度 【feature extractor 系列文章2】里介绍了ZFNet,该论文里面试图分析卷积层的作用,通过转置卷积对卷积层进行了可视化,使我们知道了随着层的增加,得到的特征越来越复杂,深层的卷积操作会将浅层的特征进行重组得到更接近object级别的特征。 这里就提出了一个问题:卷积层的深度应该多少合适呢?而且层数太少肯定不太好。 于是有了一个关键的问题: 怎样提高卷积网络的深度 。这与后面很多论文相关,也是阅读论文的关键。 本博客的主角——VGGNet——就是针对这个问题的。 问题的本质:为什么在这之前增加深度不可行 在介绍这篇论文关键点之前,我们需要明白为什么增加深度在这之前不太可行: 1. 增加深度,在卷积设置不变化的前提下参数则会增加很多。 2. 增加深度,可能会导致梯度消失。 VGGNet主要针对第二个问题,至于第二个问题我们后面会介绍到。我们说到第一个问题,显然VGGNet就是要改变卷积层的设置来减少参数。毕竟参数过多会有两个直接性的问题—— 过拟合的倾向和训练时间加长(参数变多导致计算量加大) 。 VGGNet 增加深度这个问题在VGGNet问题中就变成了尽量减少参数,进一步转变成了如何设置卷积层 在介绍之前,我们必须要介绍一下卷积层的基本概念: 1. 卷积核大小和卷积核数量的计算 2. 感受野的计算 3. 深度 我们倒着来说

卷积神经网络 处理文本:word2vec、TF-IDF、TextRank、字符卷积、词卷积、卷积神经网络文本分类模型的实现(Conv1D一维卷积、Conv2D二维卷积)

我与影子孤独终老i 提交于 2020-02-08 06:22:14
nltk 处理文本 注意力机制 SENet、CBAM 卷积神经网络 处理文本:word2vec、TF-IDF、TextRank、字符卷积、词卷积、卷积神经网络文本分类模型的实现(Conv1D一维卷积、Conv2D二维卷积) 反向传播、链式求导 梯度下降 最小二乘法(LS算法):实际为L2范数的一个具体应用(计算残差平方和) 线性回归 例子 ##### 文本分类使用的tools ##### import re import csv import tensorflow as tf #文本清理函数 def text_clearTitle_word2vec(text,n=12): text = text.lower() #将文本转化成小写 text = re.sub(r"[^a-z]"," ",text) #替换非标准字符,^是求反操作。 text = re.sub(r" +", " ", text) #替换多重空格 #text = re.sub(" ", "", text) #替换隔断空格 text = text.strip() #取出首尾空格 text = text + " eos" #添加结束符 text = text.split(" ") return text #将标签转为one-hot格式函数 def get_label_one_hot(list): values = np

你不得不了解的目标检测发展史

喜你入骨 提交于 2020-02-07 15:48:21
计算机视觉 计算机视觉中的三大类任务: 分类 Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标 定位 Location:解决“在哪里”的问题,即定位出这个目标的位置 检测 Detection:解决“是什么?在哪里”的问题,即定位出这个目标的位置并且知道目标物是什么 分割 Segmentation:分为实例分割和场景分割,解决“每一个像素属于哪个目标物或场景”的问题。 一、目标检测 目标检测可以理解为是物体识别和物体定位的综合,不仅仅要识别物体属于哪个分类,更重要的是得到物体在图片中的具体位置。 为了完成这两个任务,目标检测模型分为两类。一类是two-stage算法;一类是one-stage算法。对于two-stage检测方法来说,它先生成了可能包含物体的候选区域Region Proposal,然后对这个候选区域做进一步的分类和校准,得到最终的检测结果,代表方法有R-CNN系列方法。而对于one-stage检测算法直接给出最终的检测结果,没有经过生成候选区域的步骤,典型代表为YOLO和SSD。 目标检测算法的3个模块: 第一个是检测窗口的选择 ; 第二个是图像特征的提取 ; 第三个是分类器的设计 。 补充基础知识之检测窗口的选择 1.滑动窗口法 首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动