卷积神经网络

R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3

夙愿已清 提交于 2019-12-02 17:05:59
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理。本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析。 目标检测可以理解为是物体识别和物体定位的综合,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置。 为了完成这两个任务,目标检测模型分为两类。一类是two-stage,将物体识别和物体定位分为两个步骤,分别完成,这一类的典型代表是R-CNN, fast R-CNN, faster-RCNN家族。他们识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景。为了解决这一问题,另一类方式出现了,称为one-stage, 典型代表是Yolo, SSD, YoloV2, YoloV3等。他们识别速度很快,可以达到实时性要求,而且准确率也基本能达到faster R-CNN的水平。下面针对这几种模型进行详细的分析。 2 R-CNN 2014年R-CNN算法被提出,基本奠定了two-stage方式在目标检测领域的应用。它的算法结构如下图 算法步骤如下 获取输入的原始图片 使用选择性搜索算法(selective search)评估相邻图像之间的相似度,把相似度高的进行合并,并对合并后的区块打分,选出感兴趣区域的候选框,也就是子图。这一步大约需要选出2000个子图。 分别对子图使用卷积神经网络

torch_07_卷积神经网络案例分析

北慕城南 提交于 2019-12-02 16:39:19
1. LeNet(1998) 1 """ 2 note: 3 LeNet: 4 输入体:32*32*1 5 卷积核:5*5 6 步长:1 7 填充:无 8 池化:2*2 9 代码旁边的注释:卷积或者池化后的数据的尺寸 10 """ 11 import torch 12 import torch.nn as nn 13 14 15 class LeNet(nn.Module): 16 def __init__(self): 17 super(LeNet,self).__init__() 18 layer1 = nn.Sequential() 19 layer1.add_module('conv1',nn.Conv2d(1,6,5,1,padding=0))# 没有填充 ,b,6,28*28 20 layer1.add_module('pool1',nn.MaxPool2d(2,2)) # 6,14*14 (28-2)/2+1 = 14 21 self.layer1= layer1 22 23 layer2 = nn.Sequential() 24 layer2.add_module('conv2', nn.Conv2d(6, 16, 5, 1, padding=0)) # 没有填充 b,16,10*10 25 layer2.add_module('pool2', nn

卷积神经网络的计算

拈花ヽ惹草 提交于 2019-12-02 15:55:57
转自:https://zhuanlan.zhihu.com/p/63174774 1. 卷积 卷积神经网络中的卷积是指定义好卷积核(kernel),并对图像(或者特征图,feature map)进行滑动匹配,即对应位置相乘再相加。其特点就在于能够捕捉局部的空间特征。具体过程如下图所示: 图1-二维卷积过程示例 每一个卷积核对应于一种特征提取的范式,不同的卷积核对应于不同的特征提取器,如下图所示: 图2-卷积特征提取示例 卷积操作的参数包括卷积核大小(kernel size)、步长(stride)以及边缘填充(padding)三个参数。此外对于同一步的卷积操作,可以使用多个卷积核,就能得到多张特征图。 卷积核大小 :即卷积核的尺寸,通常都是正方形。上图中的大小就是3*3; 步长 :卷积过程中每次滑动的距离。如上图中就是步长为1,步长成倍的增加,卷积后的特征大小就会成倍的减小。 边缘填充 :为了在调整卷积后特征的大小,会在边缘填充来补齐,通常填充值为0,且上下左右对称; 卷积后的特征图大小可由下面公式进行计算,这里卷积后尺寸大小为 , 表示输入特征图大小: 为了方便理解,这里举个栗子。对于输入维度为(255,255,3)的RGB图像,采用卷积核大小3 * 3 * 3进行卷积,步长为2,边缘填充为1,卷积核的个数为16。那么得到的相应的输出特征图大小为(255-3+4)/2+1 =

卷积神经网络

半腔热情 提交于 2019-12-02 15:46:03
转自:https://zhuanlan.zhihu.com/p/27908027 【1】导论 首先最需要明确的一点就是,卷积神经网络,也就是convolutional neural networks (简称CNN),现在已经被用来应用于各个领域,物体分割啦,风格转换啦,自动上色啦blahblah,但是!!CNN真正能做的,只是起到一个特征提取器的作用!所以这些应用,都是建立在CNN对图像进行特征提取的基础上进行的。 拿到一张图片,要对它进行识别,最简单的栗子是,这张图是什么? 比如,我现在要训练一个最简单的CNN,用来识别一张图片里的字母是X还是O。 我们人眼一看,很简单嘛,明显就是X啊,但是计算机不知道,它不明白什么是X。所以我们给这张图片加一个标签,也就是俗称的Label,Label=X,就告诉了计算机这张图代表的是X。它就记住了X的长相。 但是并不是所有的X都长这样呀。比如说... 这四个都是X,但它们和之前那张X明显不一样,计算机没见过它们,又都不认识了。 (这里可以扯出机器学习中听起来很高冷的名词 “ 欠拟合 ”) 不认识了怎么办,当然是回忆看看是不是见过差不多的呀。这时候CNN要做的,就是如何提取内容为X的图片的特征。 我们都知道,图片在计算机内部以像素值的方式被存储,也就是说两张X在计算机看来,其实是这样子的。 其中1代表白色,-1代表黑色。

在深度学习中不得不掌握的数学知识

本秂侑毒 提交于 2019-12-02 14:57:14
1.标量,向量,矩阵和张量   标量其实就是一个独立存在的数。比如一个实数7就可以被看作是一个标量   向量指一列按顺序排列的元素,我们通常习惯用括号将这一列元素括起来,其中的每个元素都由一个索引值来唯一地确定其在向量中的位置,假设这个向量中的第1个元素是x1,它的索引值就是1,第2个元素是x2,它的索引值就是2,以此类推。向量还有一个特性就是向量中的不同数字还可以用于表示不同坐标轴上的坐标值。比如,我们可以把下面这个向量看作三个不同的坐标轴上的坐标值。   矩阵是一个二维数组结构,我们会用括号将其中的全部元素括起来。向量的索引值是一维的,而矩阵的索引值是二维的,所以在确定矩阵中的每个元素的位置时需要两个数字。比如,假设在一个矩阵的左上角存在一个元素x11,这个二维索引值代表矩阵中第一行和第一列交汇处的数字,所以前面一个数字1可以被定义为当前矩阵的行号,后面的一个数字1可以被定义为当前矩阵的列号。   张量:若数组的维度超过了二维,我们就可以用张量来表示,所以我们可以将张量理解为高维数组。同理,张量的索引值用两个维度的数字来表示已经不够了,其中的张量的索引值会随着张量维度的改变而改变。 2.解决欠拟合的三种方法   (1)增加特征项:在大多数情况下出现欠拟合是因为我们没有准确地把我数据的主要特征,所以我们可以尝试在模型中加入更多的和原始数据有重要相关性的特征来训练搭建的模型

关于卷积

一曲冷凌霜 提交于 2019-12-02 12:11:37
最近在看深度学习,其中有一个经典的神经网络叫卷积神经网络,这个“卷积”给我带来了很大的困惑,现在依旧有一些问题没有解决。 翻转卷积 未翻转卷积(互相关函数) 这是卷积的两种不同形式,但一般在应用中倾向于选择后者,因为深度学习中的卷积说白了就是想利用加权求和这个特性,下面有一个简单示例: 来源: https://blog.csdn.net/qq_44009891/article/details/102759630

Weighted ChannelDropoutfor Regularization of Deep Convolutional Neural Network论文记录

会有一股神秘感。 提交于 2019-12-02 11:49:00
简介 近年来,卷积神经网络实现了很大的发展,这已经显著提升了很多不同应用的性能表现,深度卷积神经网络可以成功的原因很大程度是因为其多个非线性隐藏层的结构,其中包含了数以百万计的参数,因此可以学习输入和输出之间的关系。 作者观察提出了一种新的方法,称为加权信道丢失率(WCD)的正则化深卷积神经网络(CNN)。在一个卷积神经网络的卷积堆栈内,所有的通道都是由之前的层生成的,并会在下一层得到平等的对待,这样就产生了一个想法,这样的分布可能不是最优的,因为事实可能证明某些特征比其他特征更加的有用。 与全连接层中随机选择神经元设置为0的Dropout不同, WCD对卷积层堆栈中的通道进行操作 。具体来说, WCD包括两个步骤,即评级渠道和选择渠道,和三个模块,即全局平均池,加权随机选择和随机数生成器 。它根据激活的相对幅度对通道进行过滤选择,可以插入任意两个连续的层中,并可以进一步作为一种建模通道之间的依赖关系的特殊方法。 WCD是完全无参数的,仅在训练阶段部署,计算成本非常低。测试阶段的网络保持不变,因此根本不增加推理成本 。此外,当与现有的网络相结合时,它不需要在ImageNet上进行再训练,因此非常适合在小型数据集上应用。最后,使用VGGNet- 16、ResNet-101、incepee - v3的WCD在多个数据集上进行了实验评估。广泛的结果表明,WCD可以在基线上带来一致的改进。

CNN工作原理

主宰稳场 提交于 2019-12-02 11:33:50
卷积神经网络(Convolutional Neural Networks, CNN) b站视频(cnn工作原理) 1、用不同的卷积核对原图进行卷积运算可以提取出原图不同的特征,所以卷积核比如是原图中包含的特征。 2、polling=池化=下采样,用于把得到的feature map(原图和卷积核运算的结果)缩小,减少数据量,所以要牺牲部分信息 过程: (1)卷积核在原图上扫描(不用填充),得到的新矩阵叫feature map (2)池化 池化的两种方法:max polling(用的多),average polling。 来源: https://blog.csdn.net/qq_42111606/article/details/102756618

基于卷积神经网络和哈希的肺结节图像检索(笔记一)

痴心易碎 提交于 2019-12-02 11:30:04
CT图像的医学体征在识别良性和恶性肺部疾病以及协助医生进行病变诊断方面起着重要的作用。 肺结节的九种医学体征,包括细微,针刺,小叶,钙化,内部结构,边缘,球形,质地和恶性肿瘤。 整体流程:(1)通过卷积神经网络和主成分分析提取肺结节图像的语义特征,映射为紧凑的哈希码。 (2)该方法可以在数据库中快速识别出具有相同汉明距离的肺结节图像 来源: https://blog.csdn.net/qq_43459806/article/details/102654261

神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集)

China☆狼群 提交于 2019-12-02 11:16:29
神经网络学习小记录17——使用AlexNet分类模型训练自己的数据(猫狗数据集) 学习前言 什么是AlexNet模型 训练前准备 1、数据集处理 2、创建Keras的AlexNet模型 开始训练 1、训练的主函数 2、Keras数据生成器 3、主训练函数全部代码 训练结果 学习前言 最近在做实验室的工作,要用到分类模型,老板一星期催20次,我也是无语了,上有对策下有政策,在下先找个猫猫狗狗的数据集练练手,快乐极了。 什么是AlexNet模型 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。 如下是其网络的结构,现在看来还是比较简单的。 这是一个AlexNet的网络结构图,其实并不复杂,很好的反应了AlexNet的结构: 1、一张原始图片被resize到(224,224,3); 2、使用步长为4x4,大小为11的卷积核对图像进行卷积,输出的特征层为96层,输出的shape为(55,55,96); 3、使用步长为2的最大池化层进行池化,此时输出的shape为(27,27,96) 4、使用步长为1x1,大小为5的卷积核对图像进行卷积,输出的特征层为256层,输出的shape为(27,27