cnn深度学习

R-CNN , Fast R-CNN , Faster R-CNN原理及区别

為{幸葍}努か 提交于 2019-12-18 12:44:24
github博客传送门 csdn博客传送门 ==RCNN== 1、生成候选区域 使用Selective Search(选择性搜索)方法对一张图像生成约2000-3000个候选区域,基本思路如下: (1)使用一种过分割手段,将图像分割成小区域 (2)查看现有小区域,合并可能性最高的两个区域,重复直到整张图像合并成一个区域位置。优先合并以下区域: 颜色(颜色直方图)相近的 纹理(梯度直方图)相近的 合并后总面积小的 合并后,总面积在其BBOX中所占比例大的 在合并时须保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其它小区域,保证合并后形状规则。 (3)输出所有曾经存在过的区域,即所谓候选区域 2、特征提取 使用深度网络提取特征之前,首先把候选区域归一化成同一尺寸227×227。 使用CNN模型进行训练,例如AlexNet,一般会略作简化。 3、类别判断 对每一类目标,使用一个线性SVM二类分类器进行判别。 输入为深度网络(如上图的AlexNet)输出的4096维特征,输出是否属于此类。 4、位置精修 目标检测的衡量标准是重叠面积:许多看似准确的检测结果,往往因为候选框不够准确, 重叠面积很小,故需要一个位置精修步骤,对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。 ==Fast R-CNN== Fast R-CNN主要解决R-CNN的以下问题: 1、训练

CNN - 卷积神经网络

﹥>﹥吖頭↗ 提交于 2019-12-18 02:47:56
例: 卷积公式: 卷积和卷积没有什么特别的关系,只是计算步骤比较像,成为卷积神经网络名字的由来。 感受野: 单个感觉神经元的感受野是感觉空间的特定区域(如体表或视野),在这个区域内,刺激会改变神经元的放电。 卷积神经网络的感受野 卷积神经网络的基本结构 卷积神经网络的组成部分 卷积层+ReLU(Convolution) 池化层(Pooling) 全连接层(Full-connected) 卷积层 不同过滤器可检测不同特征。 卷积运算(二维): 卷积步长(stride): 滑动滤波器时每次移动的像素点个数 边缘扩充(addpad) : Full: 刚开始相交进行卷积 Same:输入和输出保持不变的卷积 Valid: 在图像内进行卷积 如果我们有一个𝑛×𝑛的图像,使用𝑓×𝑓的卷积核进行卷积操作,在进行卷积操作之前我们在图像周围填充𝑝层数据,步幅为s。输出的维度为: 深度(卷积核个数): 一个卷积层通常包含多个尺寸一致的卷积核 卷积核参数:可以通过训练得出 浅层卷积层:提取的是图像基本特征,如边缘、方向和纹理等特征 深层卷积层:提取的是图像高阶特征,出现了高层语义模式, 如“车轮”、“人脸”等特征 激活函数 Sigmoid激活函数 求导: ReLu激活函数 池化层 池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化(max-pooling)和均值池化(average

CNN初探

冷暖自知 提交于 2019-12-18 02:07:08
前言 https://www.cnblogs.com/fydeblog/p/7450413.html 这篇博客主要讲解卷积神经网络(CNN)的历史、模块、特点和架构等等 1. CNN历史 CNN最早可以追溯到1968Hubel和Wiesel的论文,这篇论文讲述猫和猴的视觉皮层含有对视野的小区域单独反应的神经元,如果眼睛没有移动,则视觉刺激影响单个神经元的视觉空间区域被称为其 感受野 (Receptive Field)。相邻细胞具有相似和重叠的感受野。感受野大小和位置在皮层之间系统地变化,形成完整的视觉空间图。这个为CNN的局部感知奠定了一个基础。 然后是1980年, 神经感知机 (neocognitron)的提出,标志了第一个初始的卷积神经网络的诞生,也是感受野概念在人工神经网络领域的首次应用,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理。 在然后1988年, 时不变神经网络 (Shift-invariant neural network)的提出,将卷积神经网络的功能进行了一次提高,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。 卷积神经网络的前馈架构在 神经抽象金字塔 (Neural abstraction pyramid)中被横向和反馈连接扩展。所产生的复现卷积网络允许灵活地并入情景信息以迭代地解决局部模糊

论文阅读笔记:ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks!

戏子无情 提交于 2019-12-15 07:02:24
ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks! 文章目录 一. 摘要 二. 研究背景 三. 相关工作 3.1. 非对称卷积 3.2. CNN架构中的中性结构 四. 本文方法 4.1. 公式 4.2. 利用卷积的可加性 4.3. ACB不增加任何推理时间开销 五. 实验部分 六. 代码实现 参考文献 本文文章来自ICCV2019: 通过非对称卷积块增强CNN的核骨架。论文地址: https://arxiv.org/abs/1908.03930v1 代码开源在: https://github.com/ShawnDing1994/ACN 本文主要内容来自: 3×3卷积+1×3卷积+3×1卷积=白给的精度提升! 一. 摘要 由于在给定的应用环境中设计合适的卷积神经网络(CNN)结构需要 大量的人工工作 或 大量的GPU资源消耗 ,研究界正在寻找网络结构无关的CNN结构,这种结构可以很容易地插入到多个成熟的体系结构中,以提高我们实际应用程序的性能。 我们提出了 非对称卷积块 (ACB)作为CNN的构造块,它使用一维非对称卷积核来增强方形卷积核,我们用ACBs代替标准的方形卷积核来构造一个非堆成卷积网络ACNet,该网络可以训练到更高的精度。训练后

R-CNN、Fast R-CNN,Faster R-CNN

 ̄綄美尐妖づ 提交于 2019-12-11 09:02:52
最近正要看Contextual Action Recognition with R*CNN,学习基于动态图像图像的行为识别,所以要恶补下它所需要的知识。 也就是目标检测常见的几种算法。 1、首先目标检测是什么? 在给定的图片中找到物体的所在位置,并且分辨出物体的类别。这实际上是两个任务。 图像识别:image ----> cat/dog 图像定位:image ---->(x,y,w,h) 2、实现目标检测的几种方法: 1)传统的目标检测方法 大概思路是:采用classification和regression相结合的方式,对一张图片,用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN,然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。 问题:基于滑动窗口的选择策略没有针对性,窗口冗余,时间复杂度高 检测多个物体很难进行。 2)候选区域+深度学习分类 R-CNN 为了防止基于滑动窗口的选择策略没有针对性,我们可以实现在途中找出目标可能出现的位置(利用颜色,纹理,边缘等等),即候选区域。 简要步骤: (1) 输入测试图像 (2) 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal (3) 因为取出的区域大小各自不同

基于深度模型的对象检测综述:Faster RCNN, R-FCN,以及SSD

喜你入骨 提交于 2019-12-10 09:47:33
基于深度模型的对象检测综述:RCNN,Fast RCNN,Faster ECNN, R-FCN,以及SSD1 XB D., xingbod@gmail.com 前言 随着自动驾驶汽车,智能视频监控,人脸检测和各种人员计数应用的兴起,对快速,准确的对象检测系统的需求日益增长。这些系统不仅涉及识别和分类图像中的每个对象,还涉及通过在图像周围绘制适当的边界框来对每个对象进行定位。与传统的计算机视觉的前身,图像分类相比,对象检测成为一项艰巨的任务。 但是,幸运的是,当前最成功的对象检测方法也是图像分类模型的扩展。Google Tensorflow 发布了新的对象检测API,附带了一些特定模型的结构和预训练模型(原论文请点击相应链接): Single Shot Multibox Detector (SSD) with MobileNets SSD with Inception V2 Region-Based Fully Convolutional Networks (R-FCN) with Resnet 101 Faster RCNN with Resnet 101 Faster RCNN with Inception Resnet v2 在本文,会简要介绍Faster R-CNN, R-FCN, and SSD。希望到本文结束时

Picking Deep Filter Responses for Fine-grained Image Recognition

十年热恋 提交于 2019-12-09 15:19:48
Picking Deep Filter Responses for Fine-grained Image Recognition 为细粒度图像选择过滤器 abstract 细粒度识别是在大的种类中区分细的种类,比如传统的图像识别只是识别出图像中是猫是狗,细粒度识别是在狗中区别出是那种狗,比如是田园犬,还是萨摩耶,还是秋田狗等等。作者是基于两个步骤寻找深度过滤器,建立了一个框架。第一步是找到对特定模式有显著且一致响应的过滤器,并通过在新的正样本中挖掘和部件模型再培训之间的迭代交替学习一组部件检测器。第二步是通过Fisher向量的空间加权组合来汇集深度过滤响应。 Introduction 通常细粒度的识别都需要对图像有标注,这是一个浩大的工程,因此作者提出一种用于细粒度识别的 自动部件检测策略 ,它在培训和测试阶段都没有任何对象/部件级别的注释。这种自动部件检测策略主要有两个贡献:第一个提出了一种基于深度滤波器选择性的检测器学习初始化方法。之前的探测器很弱,而且大多数与我们的任务无关,因此提出一种深度过滤器。第二个是建议透过迭代式的每类别正样本挖掘和正则化的零件模型再训练来学习一组检测器。学习检测器倾向于发现有区别和一致的小块,这有助于基于部分的识别。 上面两张是经过特殊的过滤器过滤之后提取的特征,下面两张是没有特殊的过滤器提取的特征,可以发现用了特殊的过滤器的提取的特征更加明显

Bilinear CNN 《Bilinear CNNs for Fine-grained Visual Recognition》

假如想象 提交于 2019-12-06 21:13:41
Bilinear CNN 《Bilinear CNNs for Fine-grained Visual Recognition》 深度学习成功的一个重要精髓,就是将原本分散的处理过程,如特征提取,模型训练等,整合进了一个完整的系统,进行端到端的整体优化训练。不过,在以上所有的工作中,我们所看到的都是将卷积网络当做一个特征提取器,并未从整体上进行考虑。最近,T.-Y. Lin、A.RoyChowdhury等人设计了一种端到端的网络模型Bilinear CNN,在CUB200-2011数据集上取得了弱监督细粒度分类模型的最好分类准确度。 如下图所示,一个Bilinear模型Β由一个四元组组成:Β=(fA,fB,Ρ,C)。 其中,fA,fB代表特征提取函数,即图中的网络A、B;P是一个池化函数(Pooling Function);C则是分类函数。 特征提取函数f (•)的作用可以看作一个函数映射,f:LXI→RcXD将输入图像I与位置区域L映射为一个cXD 维的特征。 而两个特征提取函数的输出,可以通过一个双线性操作进行汇聚,得到最终的Bilinear特征。 其中池化函数 的作用是将所有位置的Bilinear特征汇聚成一个特征。 到此Bilinear向量即可表示该细粒度图像,后续则为经典的全连接层进行图像分类。 一种对Bilinear CNN模型的解释是,网络A的作用是对物体

学习CNN系列一:原理篇

限于喜欢 提交于 2019-12-06 03:35:39
CNN的发展历程:   1962年,卷积神经网络的研究起源于Hubel和Wiesel研究毛脑皮层的发现局部互连网络可以有效降低反馈神经网络的复杂性。   1980年,CNN的第一个实现网络:Fukushima为解决模式识别问题基于神经元间的局部连通性和图像的层次组织转而提出的新识别机。   1998年,第一个多层人工神经网络——LeNet5,也是第一个正式的CNN模型(LeCun,用于手写数字分类)。共7层:2个卷积层,2个池化层,3个全连接层,利用BP算法训练参数。   (之后十年停滞,一因BP算法训练计算量极大,硬件计算能力不足。二因浅层机器学习算法(如SVM)开始发展。)   2012年,AlexNet在ImageNet大赛上夺冠,掀起CNN学习热潮。AlexNet整体架构与LeNet-5相似,但是更深。在卷积层使用ReLU函数作为非线性激活函数,在全连接层使用Dropout机制来减少过拟合。   2014年,GooleNet在ImageNet夺冠,达到22层。主要创新在于Inception(核心结构),是一种网中网的结构,即原来的节点也是一个网络。   2015年,ResNet将网络做到152层,引入残差,解决了网络层比较深时无法训练的问题。   2016年,商汤做到了1207层的CNNM,是截止目前在ImageNet上最深的深度学习网络。 CNN与普通网络的区别:  

[转帖]CNN、RNN、DNN的一般解释

血红的双手。 提交于 2019-12-05 16:19:36
CNN、RNN、DNN的一般解释 https://www.jianshu.com/p/bab3bbddb06b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 0.0952017.10.16 19:10:36字数 3,145阅读 4,648 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别? 转自知乎 科言君 的回答 神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。 (扯一个不相关的:由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的,脑补一下科学家们扯着密密麻麻的导线的样子…) 但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”操作)。连异或都不能拟合,你还能指望这货有什么实际用途么o(╯□╰)o 随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)发明的多层感知机