卷积神经网络

卷积神经网络之-NiN网络(Network In Network)

心已入冬 提交于 2020-01-27 03:54:35
更多内容请关注『 机器视觉 CV 』公众号 原文地址 简介 Network In Network 是发表于 2014 年 ICLR 的一篇 paper。当前被引了 3298 次。这篇文章采用较少参数就取得了 Alexnet 的效果,Alexnet 参数大小为 230M,而 Network In Network 仅为 29M,这篇 paper 主要两大亮点:mlpconv (multilayer perceptron,MLP,多层感知机)作为 "micro network"和 Global Average Pooling(全局平均池化)。论文地址: https://arxiv.org/abs/1312.4400 创新点 (1) mlpconv Layer 在介绍 mlpconv Layer 之前,我们先看看经典的 Linear Convolutional Layer(线性卷积层)是怎么进行操作的, ( i , j ) 是特征图中像素的位置索引,x_ij 表示像素值,而 k 用于特征图通道的索引,W 是参数,经过 WX 计算以后经过一个 relu 激活进行特征的抽象表示。 下面就介绍 mlpconv Layer 结构 i, j 表示像素下标,xi,j 表示像素值,wk,n 表示第 n 层卷积卷积参数。 以上结构可以进行跨通道的信息融合。MLP 的参数也可以使用 BP 算法训练,与

图像多分类——卷积神经网络

懵懂的女人 提交于 2020-01-26 14:38:45
例子参考: https://www.jiqizhixin.com/articles/2019-05-15-2 数据集: https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html 将获取到原始数据集,其中,有三个文件, Movie Poster Dataset是1980-2015年部分影片海报图片, Movie Poster Metadata是1980-2015年部分影片的数据详情,example: Readme则是对 Movie Poster Metadata文件里边的字段解释,在训练过程中只用到IMPId和 Genre(影片类型)。 步骤: 数据处理 获取到影片的类型对影片类型实现one-hot编码,如果是属于哪个类型,用1表示,其他为0,得到如下文件, 考虑到特征的相关性,删除影片比较少的类型列(将数量小于50的类型列进行删除),最终留下22个电影类型,如下: 将电影类型作为最终的结果值,然后加载图片: for i in tqdm(range(train.shape[0])): img = image.load_img('D:/aayu/实例/图像多分类/data/Images/'+train['ID'][i]+'.jpg',target_size=(400,400,3)) img = image.img

人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础

给你一囗甜甜゛ 提交于 2020-01-26 08:48:12
全连接 NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果 参数个数: ∑ \sum ∑ (前层 × 后层 + 后层) 一张分辨率仅仅是 28x28 的黑白图像,就有近 40 万个待优化的参数。现实生活中高分辨率的彩色图像,像素点更多,且为红绿蓝三通道信息。 待优化的参数过多,容易导致模型过拟合 。为避免这种现象,实际应用中一般不会将原始图片直接喂入全连接网络。 在实际应用中,会先对原始图像进行特征提取,把提取到的特征喂给全连接网络,再让全连接网络计算出分类评估值。 卷积是一种有效提取图片特征的方法。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值乘卷积核内相对应点的权重,然后求和,再加上偏置后,最后得到输出图片中的一个像素值。 例:上面是 5x5x1 的灰度图片,1 表示单通道,5x5 表示分辨率,共有 5 行 5列个灰度值。若用一个 3x3x1 的卷积核对此 5x5x1 的灰度图片进行卷积,偏置项b=1,则求卷积的计算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注意不要忘记加偏置 1)。 输出图片边长=(输入图片边长–卷积核长+1)/步长,此图为:(5 – 3 + 1)/ 1 = 3,输出图片是 3x3 的分辨率,用了 1 个卷积核,输出深度是

CNN学习笔记

旧时模样 提交于 2020-01-26 03:29:55
基于CS231N的学习整理: http://cs231n.github.io/convolutional-networks/ 卷积神经网络(CNN)与神经网络相比的优势: 1. 输入的是 图片 2. 减少网络中的参数数量(参数过多导致过拟合) 一。架构概述 Architecture Overview ConvNet将其神经元按照三个维度排列(width、height、depth),每一层都将三维输入转换为激活神经元三维输出。 二。卷积神经网络层 ConvNet Layers 构建卷积神经网络架构有如下三种主要层次:卷积层、池化层、全连接层 卷积过程以及各个层特点: a.输入层 Input Layer:保存原始像素值 b.卷积层 ConV Layer: 每个神经元都计算权重与连接到他们输入值体积的点积并输出。有参数和超参数。 c.线性整流层 ReLu Layer: 不改变体积 f(x)=max(0,x)。无参数,无超参数。 d.池化层 Pool Layer: 沿着空间维度(width、height)进行下采样。无参数,有超参数。 e.全连接层 FC Layer: 计算分类得分。有参数和超参数。 1. 卷积层Convolution Layer 局部连接(Local Connecting) ConV层将神经元与输入图片的局部区域相连接,每个神经元在空间上非常小但是会延申到整个输入的深度

论文介绍 -- ECO: Efficient Convolutional Network for Online Video Understanding

微笑、不失礼 提交于 2020-01-26 02:42:51
ECO: Efficient Convlutional Network for Online Video Understanding 这篇论文发表于2018年ECCV上。作者Mohammadreza Zolfaghari等人来自弗莱堡大学。这篇论文主要内容如下: 当前最先进的视频理解模型主要存在两个问题:1. 模型在做任务推理时只关注视频局部信息,忽略了横跨一定时间间隔的动作联系;2. 已有模型只在视频局部处理进行效率改进,但是视频整体的处理效率较低,无法用于快速的视频检索或者在线长期动作分类。这篇论文针对这两个问题,提出了高效的卷积网络用于视频分类和实时视频分类算法。模型结构本身整合了视频的长期信息,并利用了相邻帧存在大量冗余信息这一特点。它最快能在一秒时间内进行230段视频的动作分类和描述。这种方法在所有的数据集上取得了和当前最好模型相当的效果,同时在速度上快了10到80倍。 视频动作分类领域主要有三个数据集:Kinetics、ActivityNet和SomethingSomething。 模型宏观架构 由于相邻帧存在大量的信息冗余,因此该方法利用预训练好的2D卷积网络每隔一定时间只处理一帧视频。为了让卷积网络自身就能学习到长期的语义信息,作者采用3D卷积层来对按一定时间间隔提取出来的帧的集合进行特征提取。在具体训练模型时,视频被分成N小段 ,每小段时间长度相等

论文阅读与模型复现——HAN

↘锁芯ラ 提交于 2020-01-25 09:56:25
论文阅读 论文链接: https://arxiv.org/pdf/1903.07293.pdf tensorflow版代码Github链接: https://github.com/Jhy1993/HAN 介绍视频: https://www.bilibili.com/video/av53418944/ 参考博客: https://blog.csdn.net/yyl424525/article/details/103804574 文中提出了一种新的基于注意力机制的异质图神经网络 Heterogeneous Graph Attention Network(HAN),可以广泛地应用于异质图分析。注意力机制包括节点级注意力和语义级注意力。节点的注意力主要学习节点及其邻居节点间的权重,语义级的注意力是来学习基于不同meta-path的权重。最后,通过相应地聚合操作得到最终的节点表示。 ABSTRACT 最近,深度学习中最令人兴奋的进步之一是注意机制,它的巨大潜力在各个领域。 本文首先提出了一种基于层次注意的异构图神经网络,包括节点级注意和语义级注意。具体地说: 节点级注意旨在学习节点与其基于元路径的邻居之间的重要性 语义级注意能够学习不同元路径的重要性 通过从节点级和语义级两个层次上学习重要性,可以充分考虑节点和元路径的重要性。该模型通过对基于元路径的邻域特征进行分层聚合,生成节点嵌入。

Tensorflow 笔记-卷积神经网络

风流意气都作罢 提交于 2020-01-25 08:43:45
参考链接 卷积 Convolutional 有效提取图片特征的方法。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值乘卷积核内相对应点的权重,然后求和,再加上偏置后,最后得到输出图片中的一个像素值。 一张分辨率仅仅是 28x28 的黑白图像,就有近 40 万个待优化的参数。现实生活中高分辨率的彩色图像,像素点更多,且为红绿蓝三通道信息。 待优化的参数过多,容易导致模型过拟合。为避免这种现象,实际应用中一般不会将原始图片直接喂入全连接网络。 在实际应用中,会先对原始图像进行特征提取,把提取到的特征喂给全连接网络,再让全连接网络计算出分类评估值。 来源: CSDN 作者: ATM006 链接: https://blog.csdn.net/orchidofocean/article/details/103747304

课程4-第一周-卷积神经网络(Convolutional Neural Networks)

£可爱£侵袭症+ 提交于 2020-01-25 02:33:28
1.1计算机视觉(Computer Vision) 问题分类: 图片分类(Image Classification); 目标检测(Object detection); 神经风格转换(Neural Style Transfer)。 挑战: 数据的输入可能会非常大 。例如一张 1000x1000x3 的图片,神经网络输入层的维度将高达三百万,使得网络权重 W 非常庞大。 后果: 1.经网络结构复杂,数据量相对较少,容易出现 过拟合 ; 2.所需内存和计算量巨大。 措施: 因此,一般的神经网络很难处理蕴含着大量数据的图像。解决这一问题的方法就是使用 卷积神经网络(Convolutional Neural Network, CNN) 。 1.2卷积运算(Convolutional Operation) 以以边缘检测为例,来解释卷积是怎样运算的。 边缘检测 垂直边缘(Vertical Edges)检测 水平边缘(Horizontal Edges)检测 图片的边缘检测可以通过与相应滤波器进行卷积来实现。 举例: 以垂直边缘检测为例,原始图片尺寸为 6x6,中间的矩阵被称作 滤波器(filter) ,尺寸为 3x3,卷积后得到的图片尺寸为 4x4,得到结果如下(数值表示灰度,以左上角和右下角的值为例): 可以看到,卷积运算的求解过程是从左到右,由上到下

卷积神经网络的进一步理解

邮差的信 提交于 2020-01-24 22:02:28
最近又再次学习了一些卷积神经网络,有了一些深层的理解 1、工具安装 安装tensorflow和keras又花了一番功夫,找到了一篇还不错的安装博客,链接如下: Anaconda下安装Tensorflow和Keras的安装教程 现在使用比较多 值得注意的是 我们使用anaconda进行安装,因为keras还需要这几个库的支持,然后再安装上面链接的那一篇博客安装。 pip install numpy pip install matplotlib pip install scipy pip install tensorflow pip install keras 2、理解和感悟 (1) 优化器Optimizer 其中,优化器有以下这些 深度学习——优化器算法Optimizer详解( BGD 、 SGD 、 MBGD 、 Momentum 、 NAG 、 Adagrad 、 Adadelta 、 RMSprop 、 Adam ) 当然比较常用的是SGD,即随机梯度下降算法。 随机梯度下降b站教程 (2)Alex经典cnn网络 AlexNet的整个网络结构就是由5个卷积层和3个全连接层组成的,深度总共8层 # 导包 import keras from keras . models import Sequential from keras . layers import Dense ,

PYTORCH多层卷积神经网络实现MNIST手写数字识别(python3.7)

a 夏天 提交于 2020-01-24 08:42:15
根据模式识别作业要求写的,总结了以下几点需要注意: 1.主程序段需要加上 # if name == ‘ main ’: # 否则当做模块调用时会直接将该文件重新跑一遍。 2.分类任务网络最后一个全连接层替换成1*1卷积层目前看来可以降低运算量,产生激活作用降低过拟合,训练效果改善明显。 3.添加Batch normalization效果不明显,可能是batch量过小,以后进一步学习和尝试group narmalization。 import time import torch import torch . nn as nn import torch . nn . functional as F import torchvision # torchvision 包收录了若干重要的公开数据集、网络模型和计算机视觉中的常用图像变换 import torchvision . transforms as transforms import cv2 time_start = time . time ( ) class ConvNet ( nn . Module ) : def __init__ ( self ) : super ( ConvNet , self ) . __init__ ( ) self . layer1 = nn . Sequential ( nn . Conv2d ( 1