深度为R-r的井底离散数学r(R)是什么意思思

后使用快捷导航没有帐号?
Deep Learning in R · R语言深度学习
查看: 21717|
评论: 0|原作者: 统计咨询(译)|来自: 统计咨询
摘要: 深度学习是机器学习领域的一大热点,它可以对极度非线性的数据(包括图像等)进行建模。在过去的几年,深度学习在各应用领域展现了惊人的发展势头(Wikipedia 2016a)。其中包括图像和声音识别、无人驾驶、自然语言处理 ...
本文译自日OKSANA KUTKINA和STEFAN FEUERRIEGEL在R Blog上发表的《Deep Learning in R》,英文原文链接:http://www.rblog.uni-freiburg.de//deep-learning-in-r/Introduction &是领域的一大热点,它可以对极度非线性的数据(包括图像等)进行建模。在过去的几年,深度学习在各应用领域展现了惊人的发展势头(Wikipedia 2016a)。其中包括图像和声音识别、无人驾驶、自然语言处理等。有趣的是,深度学习有关的大部分的数学原理早在几十年前就存在了。然而,它的潜能是通过近期的一些领域的应用才得以有效的解放(Nair and Hinton 2010; Srivastava et al. 2014)。过去,由于梯度下降及过度拟合的问题,人工是很难实现的。如今,通过不同的激活函数、正则化、大量的训练数据集可以解决上述的问题。比如,利用互联网可以获取大量的有标签或无标签的数据。另外,GPUs和GPGPUs(通用计算)使得计算过程更快,成本更低。当前,深度学习在几乎所有的机器学习任务中表现出良好的性能,特别适合于复杂的、多层次的数据。最基本的就是通过人工神经网络模型处理极度非线性的数据,而这些数据通常是多层面的、非线性的、具有特殊结构的。典型的深度神经网络如下图。深度学习的成功使得大量的编程语言有关深度学习的资源应运而生。其中包括Caffee、Theano、Torch、Tensor Flow等。本文将对几个深度学习相关的R包进行介绍和比较。Packages for deep learning in R &因其简便灵活、可视化功能强大等在统计学家和数据挖掘分析师中深受欢迎。随着深度学习的发展,一系列深度学习的R包也出来了。我们将介绍MXNetR、darch、deepnet、H2O、deepr等五个主要的R包。下表展示的是几个R包的异同。Package “MXNetR”MXNetR是基于C语言的MXNet库的一个几口。它可以进行前馈神经网络和卷积神经网络(MXNetR 2016a)。也允许我们自定义模型。该R包分为CPU和GPU两个版本,前者通过R软件可以直接安装,而后者需要继续第三方的一些库如cuDNN等(MXNetR 2016b)。前馈神经网络例子①通过封装的函数实现:model &- mx.mlp(train.x, train.y, hidden_node=c(128,64), out_node=2, activation="relu", out_activation="softmax",num.round=100, array.batch.size=15, learning.rate=0.07, momentum=0.9, device=mx.cpu())②通过自定义模型实现:data &- mx.symbol.Variable("data") fc1 &- mx.symbol.FullyConnected(data, num_hidden=128) act1 &- mx.symbol.Activation(fc1, name="relu1", act_type="relu") fc2 &- mx.symbol.FullyConnected(act1, name="fc2", num_hidden=64) act2 &- mx.symbol.Activation(fc2, name="relu2", act_type="relu") fc3 &- mx.symbol.FullyConnected(act2, name="fc3", num_hidden=2) lro &- mx.symbol.SoftmaxOutput(fc3, name="sm")model2 &- mx.model.FeedForward.create(lro, X=train.x, y=train.y, ctx=mx.cpu(), num.round=100, array.batch.size=15, learning.rate=0.07, momentum=0.9)可见,MXNetR通过mx.mlp函数可以快速设计标准的模型,也可以通过自定义参数实现同样的功能。Package “darch”darch(2015)可以实现深度信念网络和限制玻尔兹曼机模型。它还可以进行微调反馈和选择性的前训练。深度信念网络的例子darch &&- darch(train.x, train.y, rbm.numEpochs = 0, rbm.batchSize = 100, rbm.trainOutputLayer = F, layers = c(784,100,10), darch.batchSize = 100, darch.learnRate = 2, darch.retainData = F, darch.numEpochs = 20)总的来说,darch的基本使用非常简单,它只使用一个函数对网络进行训练,但是这也限制了它进行更加深入的深度信念网络学习,因为往往需要更多的训练。Package “deepnet”deepnet(2015)是一个相对较小而强大的包。nn.train()函数可以实现前反馈神经网络模型,dbn.dnn.train()可以初始化深度信念模型的权重,rbm.train()可以实现限制玻尔兹曼机模型,sae.dnn.train()可以实现堆叠自动编码器模型。前反馈神经网络的例子nn.train(x, y, initW=NULL, initB=NULL, hidden=c(50,20), activationfun="sigm", learningrate=0.8, momentum=0.5, learningrate_scale=1, output="sigm", numepochs=3, batchsize=100, hidden_dropout=0, visible_dropout=0)总之,deepnet是一个轻量级的,设定少数的参数,却能实现多数的模型。Package “H2O”H2O(2015)原来是一个可以利用分布式计算机系统的开源软件平台。它是基于语言搭建的,要求版的JVM和JDK(https://www.java.com/en/download/)。该R包提供了很多语言的接口,并且源于云端服务的设计(Candel et al. 2015)。深度自动编码器的例子anomaly_model &- h2o.deeplearning( & x = names(train), & training_frame = train, & activation = "Tanh", & autoencoder = TRUE, & hidden = c(50,20,50), & sparse = TRUE, & l1 = 1e-4, & epochs = 100)总之,H2O是一个高度用户有好的R包,可以实现前馈神经网络和深度自动编码器,还支持分布式计算,甚至提供网络接口。Package “deepr”deepr(2015)自身其实并不能实现深度学习的,当初是由于H2O包在CRAN上不可用时作为弥补的。所以它只是引用了H2O和deepnet的某些函数。Comparison of Packages &我们将从易用性、灵活性、易安装性、并行运算支持性、超参数选择性等几方面进行比较。借助常用的数据集Iris、MNIST、Forest Cover Type等为用户提供合适的R包提供参考。INSTALLATION通过CRAN安装R包是非常简便的。但是以上某些R包需要第三方库的支持。比如,H2O要求版的Java和JDK。由于darch允许使用GPU,所以darch要基于gputools包,而且它只支持和MacOS系统;MXNetR默认是不开放GPU功能的,因为它基于的cuDNN存在版权的问题,所以GPU版本要求Rtools和C++软件来支持封装来自CUDA SDK和cuDNN的代码。FLEXIBILITY在灵活性方便,MXNetR应该是排在第一位的。由于它分层定义模型的特点,无需设置大量的参数就可以实现不同的模型。在我们看来,H2O和darch应该是排在第二位的。H2O主要关注前反馈神经网络和深度自动编码器,而darch则关注限制玻尔兹曼机和深度信念网络。两个包都提供了很多可调整的参数。deepnet是一个相对轻量级的包,主要的优点在于可以拟合多种不同的模型。但是我们不推荐日常使用非GPU版本的deepnet对较大的数据进行分析,因为相对较少的参数使它不能微调至理想的模型。EASE-OF-USEH2O和MXNetR因其速度和易用性而出色的。MXNetR不要求对数据进行预处理;而H2O通过as.h2o()函数将数据转换为H2O对象。两个包都提供模型检验的工具。deepnet通常把标签作为单特征编码矩阵,这就要求很多的数据初始化工作,因为很多数据集的类储存为向量的格式。但是它不会报告这个初始化工作的过程。另外,deepnet也缺乏模型检验的工具。相反,darch有一个很清晰而且详细的输出。PARALLELIZATION深度学习之所以成为趋势得力于它可以处理大数据集。所以,如果R包可以支持并行运算,对于深度学习将会是极大的帮助。下表展示的是几个R包对并行运算的支持性。CHOICE OF PARAMETERS另一个重要的方面是超参数的选择性。H2O采用一种全自动的前神经元调整学习算法使其能够很快的收敛。它也可以通过交叉验证和区域搜寻的方法来优化参数以及模型筛选。MXNetR会给出每次迭代的训练正确性,darch会给出每次建模的误差。这都允许我们手动的选择不同的参数,由于训练过程可以根据迭代的结果提前终止,而无需等到算法收敛。相反,deepnet没有在训练结束之前给出任何信息,导致参数选择非常具有挑战性。Conclusion &通过上面的介绍和分析,我们可知:当前版本的deepnet能够实现较大的模型,但在速度和用户友好方面欠佳,也未能支持参数的调整。H2O和MXNetR,相对来说,提供了用户友好的体验。两者都提供参数调整的参考,训练时间快,而且通常能得到比较好的结果。H2O更适合集群运算的环境,数据分析师可以通过直接的管道进行数据挖掘和探索。当我门更加关注灵活性和模型设计方面,MXNetR将会是最合适的选择。它提供了直观的符号工具使我们方便进行自定义。另外,它可以在个人电脑上使用多核CPU/GPU进行优化。darch提供了少数但专注于深度信念网络的函数。总之,R语言可以很好地进行深度学习。H20和MXnetR可以说是R用户强大的深度学习工具,Caffe和TorchIn等更多的接口将会涌现。尽管与其他编程语言相比,R语言在深度学习方面还不是很有优势,但我们相信,超越肯定在不久的将来!欢迎加入本站公开兴趣群商业智能与数据分析群兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识QQ群:
上一篇:下一篇:
dataguru.cn All Right Reserved.当前位置:
>>>假设地球是一半径为R、质量分布均匀的球体.一矿井深度为h,已知质..
假设地球是一半径为R、质量分布均匀的球体.一矿井深度为h,已知质量分布均匀的球壳对壳内物体的引力为零.矿井底部和地面处的重力加速度大小之比为(  )A.RR-hB.R-hRC.(R-hR)2D.(RR-h)2
题型:单选题难度:偏易来源:浦东新区一模
矿井底部和地面处的角速度相等,根据a=ω2r得矿井底部和地面处的重力加速度大小之比R-hR故选B
马上分享给同学
据魔方格专家权威分析,试题“假设地球是一半径为R、质量分布均匀的球体.一矿井深度为h,已知质..”主要考查你对&&万有引力定律的其他应用&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
万有引力定律的其他应用
万有引力定律的其他应用:
万有引力定律:(G=6.67×10-11 N·m2/kg2),万有引力定律在天文学中的应用:1、计算天体的质量和密度;2、人造地球卫星、地球同步卫星、近地卫星;3、发现未知天体;4、分析重力加速度g随离地面高度h的变化情况;①物体的重力随地面高度h的变化情况:物体的重力近似地球对物体的吸引力,即近似等于,可见物体的重力随h的增大而减小,由G=mg得g随h的增大而减小。②在地球表面(忽略地球自转影响):(g为地球表面重力加速度,r为地球半径)。③当物体位于地面以下时,所受重力也比地面要小,物体越接近地心,重力越小,物体在地心时,其重力为零。5、双星问题:天文学上把两颗相距比较近,又与其他星体距离比较远的星体叫做双星。双星的间距是一定的,它们绕二者连线上的同一点分别做圆周运动,角速度相等。以下图为例由以上各式解得:6、黄金代换公式:GM=gR2。
发现相似题
与“假设地球是一半径为R、质量分布均匀的球体.一矿井深度为h,已知质..”考查相似的试题有:
16703191715300724147836152285357584你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
一直很困惑没搞明白,是不是说根据你送入的图片的最短边大小,与这个600做比较。其中根据一定的步长来生成图像金字塔?
通过代码的解读发现,如果输入的图片大小是640*480的图片作为输入,the shortest side 是600的话,则600/480 = 1.25, 640*1.25 = 800. 640*480的图片将会resize成800 * 600的大小。多尺度也是相同操作。
code里面设置600和1000是考虑GPU显存的大小来设置的
要回复问题请先或
计算机视觉 深度学习
浏览: 1203
关注: 2 人object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。
object detection技术的演进:RCNN-&SppNET-&Fast-RCNN-&Faster-RCNN
从图像识别的任务说起这里有一个图像任务:既要把图中的物体识别出来,又要用方框框出它的位置。
上面的任务用专业的说法就是:图像识别+定位图像识别(classification):输入:图片输出:物体的类别评估方法:准确率
定位(localization):输入:图片输出:方框在图片中的位置(x,y,w,h)评估方法:检测评价函数 intersection-over-union ( IOU )
卷积神经网络CNN已经帮我们完成了图像识别(判定是猫还是狗)的任务了,我们只需要添加一些额外的功能来完成定位任务即可。
定位的问题的解决思路有哪些?思路一:看做回归问题看做回归问题,我们需要预测出(x,y,w,h)四个参数的值,从而得出方框的位置。
步骤1:  o 先解决简单问题, 搭一个识别图像的神经网络  o 在AlexNet VGG GoogleLenet上fine-tuning一下
步骤2:  o 在上述神经网络的尾部展开(也就说CNN前面保持不变,我们对CNN的结尾处作出改进:加了两个头:“分类头”和“回归头”)  o 成为classification + regression模式
步骤3:  o Regression那个部分用欧氏距离损失  o 使用SGD训练
步骤4:  o 预测阶段把2个头部拼上  o 完成不同的功能
这里需要进行两次fine-tuning第一次在ALexNet上做,第二次将头部改成regression head,前面不变,做一次fine-tuning
Regression的部分加在哪?
有两种处理方法:  o 加在最后一个卷积层后面(如VGG)  o 加在最后一个全连接层后面(如R-CNN)
regression太难做了,应想方设法转换为classification问题。regression的训练参数收敛的时间要长得多,所以上面的网络采取了用classification的网络来计算出网络共同部分的连接权值。
思路二:取图像窗口  o 还是刚才的classification + regression思路  o 咱们取不同的大小的“框”  o 让框出现在不同的位置,得出这个框的判定得分  o 取得分最高的那个框
左上角的黑框:得分0.5 右上角的黑框:得分0.75
左下角的黑框:得分0.6 右下角的黑框:得分0.8
根据得分的高低,我们选择了右下角的黑框作为目标位置的预测。注:有的时候也会选择得分最高的两个框,然后取两框的交集作为最终的位置预测。
疑惑:框要取多大?取不同的框,依次从左上角扫到右下角。非常粗暴啊。
总结一下思路:对一张图片,用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN,然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。
这方法实在太耗时间了,做个优化。原来网络是这样的:
优化成这样:把全连接层改为卷积层,这样可以提提速。
物体检测(Object Detection)当图像有很多物体怎么办的?难度可是一下暴增啊。
那任务就变成了:多物体识别+定位多个物体那把这个任务看做分类问题?
看成分类问题有何不妥?  o 你需要找很多位置, 给很多个不同大小的框  o 你还需要对框内的图像分类  o 当然, 如果你的GPU很强大, 恩, 那加油做吧…
看做classification, 有没有办法优化下?我可不想试那么多框那么多位置啊!有人想到一个好方法:找出可能含有物体的框(也就是候选框,比如选1000个候选框),这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。
大牛们发明好多选定候选框的方法,比如EdgeBoxes和Selective Search。以下是各种选定候选框的方法的性能对比。
有一个很大的疑惑,提取候选框用到的算法“选择性搜索”到底怎么选出这些候选框的呢?那个就得好好看看它的论文了,这里就不介绍了。
R-CNN横空出世基于以上的思路,RCNN的出现了。
步骤一:训练(或者下载)一个分类模型(比如AlexNet) 步骤二:对该模型做fine-tuning  o 将分类数从1000改为20  o 去掉最后一个全连接层
步骤三:特征提取  o 提取图像的所有候选框(选择性搜索)  o 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative比如下图,就是狗分类的SVM
步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。
RCNN的进化中SPP Net的思想对其贡献很大,这里也简单介绍一下SPP Net。
SPP NetSPP:Spatial Pyramid Pooling(空间金字塔池化)它的特点有两个:
1.结合空间金字塔方法实现CNNs的对尺度输入。一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。
如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
2.只对原图提取一次卷积特征在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
Fast R-CNNSPP Net真是个好方法,R-CNN的进阶版Fast R-CNN就是在RCNN的基础上采纳了SPP Net方法,对RCNN作了改进,使得性能进一步提高。
R-CNN与Fast RCNN的区别有哪些呢?先说RCNN的缺点:即使使用了selective search等预处理步骤来提取潜在的bounding box作为输入,但是RCNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。
大牛提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。另外,之前RCNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression,而在Fast-RCNN中,作者巧妙的把bbox regression放进了神经网络内部,与region分类和并成为了一个multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal+CNN这一框架实时检测的希望,原来多类检测真的可以在保证准确率的同时提升处理速度,也为后来的Faster-RCNN做下了铺垫。
画一画重点:R-CNN有一些相当大的缺点(把这些缺点都改掉了,就成了Fast R-CNN)。大缺点:由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。解决:共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征
原来的方法:许多候选框(比如两千个)--&CNN--&得到每个候选框的特征--&分类+回归现在的方法:一张完整图片--&CNN--&得到每张候选框的特征--&分类+回归
所以容易看见,Fast RCNN相对于RCNN的提速原因就在于:不过不像RCNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。
在性能上提升也是相当明显的:
Faster R-CNNFast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。做这样的任务的神经网络叫做Region Proposal Network(RPN)。
具体做法:  o 将RPN放在最后一个卷积层的后面  o RPN直接训练得到候选区域
RPN简介:  o 在feature map上滑动窗口  o 建一个神经网络用于物体分类+框位置的回归  o 滑动窗口的位置提供了物体的大体位置信息  o 框的回归提供了框更精确的位置
一种网络,四个损失函数;  o RPN calssification(anchor good.bad)  o RPN regression(anchor-&propoasal)  o Fast R-CNN classification(over classes)  o Fast R-CNN regression(proposal -&box)
Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高。
最后总结一下各大算法的步骤:RCNN  1. 在图像中确定约个候选框 (使用选择性搜索)  2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取&  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   4. 对于属于某一特征的候选框,用回归器进一步调整其位置
Fast RCNN  1. 在图像中确定约个候选框 (使用选择性搜索)  2. 对整张图片输进CNN,得到feature map  3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层  4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   5. 对于属于某一特征的候选框,用回归器进一步调整其位置
Faster RCNN  1. 对整张图片输进CNN,得到feature map  2. 卷积特征输入到RPN,得到候选框的特征信息  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   4. 对于属于某一特征的候选框,用回归器进一步调整其位置
总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目标检测的流程变得越来越精简,精度越来越高,速度也越来越快。可以说基于region proposal的R-CNN系列目标检测方法是当前目标检测技术领域最主要的一个分支。
阅读(...) 评论()基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN_Linux编程_Linux公社-Linux系统门户网站
你好,游客
基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
来源:Linux社区&
作者:skyfsm
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。
object detection技术的演进:RCNN-&SppNET-&Fast-RCNN-&Faster-RCNN
从图像识别的任务说起这里有一个图像任务:既要把图中的物体识别出来,又要用方框框出它的位置。
上面的任务用专业的说法就是:图像识别+定位图像识别(classification):输入:图片输出:物体的类别评估方法:准确率
定位(localization):输入:图片输出:方框在图片中的位置(x,y,w,h)评估方法:检测评价函数 intersection-over-union ( IOU )
卷积神经网络CNN已经帮我们完成了图像识别(判定是猫还是狗)的任务了,我们只需要添加一些额外的功能来完成定位任务即可。
定位的问题的解决思路有哪些?思路一:看做回归问题看做回归问题,我们需要预测出(x,y,w,h)四个参数的值,从而得出方框的位置。
步骤1:  & 先解决简单问题, 搭一个识别图像的神经网络  & 在AlexNet VGG GoogleLenet上fine-tuning一下
步骤2:  & 在上述神经网络的尾部展开(也就说CNN前面保持不变,我们对CNN的结尾处作出改进:加了两个头:&分类头&和&回归头&)  & 成为classification + regression模式
步骤3:  & Regression那个部分用欧氏距离损失  & 使用SGD训练
步骤4:  & 预测阶段把2个头部拼上  & 完成不同的功能
这里需要进行两次fine-tuning第一次在ALexNet上做,第二次将头部改成regression head,前面不变,做一次fine-tuning
Regression的部分加在哪?
有两种处理方法:  & 加在最后一个卷积层后面(如VGG)  & 加在最后一个全连接层后面(如R-CNN)
regression太难做了,应想方设法转换为classification问题。regression的训练参数收敛的时间要长得多,所以上面的网络采取了用classification的网络来计算出网络共同部分的连接权值。
思路二:取图像窗口  & 还是刚才的classification + regression思路  & 咱们取不同的大小的&框&  & 让框出现在不同的位置,得出这个框的判定得分  & 取得分最高的那个框
左上角的黑框:得分0.5右上角的黑框:得分0.75
左下角的黑框:得分0.6右下角的黑框:得分0.8
根据得分的高低,我们选择了右下角的黑框作为目标位置的预测。注:有的时候也会选择得分最高的两个框,然后取两框的交集作为最终的位置预测。
疑惑:框要取多大?取不同的框,依次从左上角扫到右下角。非常粗暴啊。
总结一下思路:对一张图片,用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN,然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。
这方法实在太耗时间了,做个优化。原来网络是这样的:
优化成这样:把全连接层改为卷积层,这样可以提提速。
物体检测(Object Detection)当图像有很多物体怎么办的?难度可是一下暴增啊。
那任务就变成了:多物体识别+定位多个物体那把这个任务看做分类问题?
看成分类问题有何不妥?  & 你需要找很多位置, 给很多个不同大小的框  & 你还需要对框内的图像分类  & 当然, 如果你的GPU很强大, 恩, 那加油做吧&
看做classification, 有没有办法优化下?我可不想试那么多框那么多位置啊!有人想到一个好方法:找出可能含有物体的框(也就是候选框,比如选1000个候选框),这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。
大牛们发明好多选定候选框的方法,比如EdgeBoxes和Selective Search。以下是各种选定候选框的方法的性能对比。
有一个很大的疑惑,提取候选框用到的算法&选择性搜索&到底怎么选出这些候选框的呢?那个就得好好看看它的论文了,这里就不介绍了。
R-CNN横空出世基于以上的思路,RCNN的出现了。
步骤一:训练(或者下载)一个分类模型(比如AlexNet)步骤二:对该模型做fine-tuning  & 将分类数从1000改为20  & 去掉最后一个全连接层
步骤三:特征提取  & 提取图像的所有候选框(选择性搜索)  & 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative比如下图,就是狗分类的SVM
步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。
RCNN的进化中SPP Net的思想对其贡献很大,这里也简单介绍一下SPP Net。
SPP NetSPP:Spatial Pyramid Pooling(空间金字塔池化)它的特点有两个:
1.结合空间金字塔方法实现CNNs的对尺度输入。一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。
如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
2.只对原图提取一次卷积特征在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
Fast R-CNNSPP Net真是个好方法,R-CNN的进阶版Fast R-CNN就是在RCNN的基础上采纳了SPP Net方法,对RCNN作了改进,使得性能进一步提高。
R-CNN与Fast RCNN的区别有哪些呢?先说RCNN的缺点:即使使用了selective search等预处理步骤来提取潜在的bounding box作为输入,但是RCNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。
大牛提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。另外,之前RCNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression,而在Fast-RCNN中,作者巧妙的把bbox regression放进了神经网络内部,与region分类和并成为了一个multi-task模型,实际实验也证??,这两个任务能够共享卷积特征,并相互促进。Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal+CNN这一框架实时检测的希望,原来多类检测真的可以在保证准确率的同时提升处理速度,也为后来的Faster-RCNN做下了铺垫。
画一画重点:R-CNN有一些相当大的缺点(把这些缺点都改掉了,就成了Fast R-CNN)。大缺点:由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。解决:共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征
原来的方法:许多候选框(比如两千个)--&CNN--&得到每个候选框的特征--&分类+回归现在的方法:一张完整图片--&CNN--&得到每张候选框的特征--&分类+回归
所以容易看见,Fast RCNN相对于RCNN的提速原因就在于:不过不像RCNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。
在性能上提升也是相当明显的:
Faster R-CNNFast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。做这样的任务的神经网络叫做Region Proposal Network(RPN)。
具体做法:  & 将RPN放在最后一个卷积层的后面  & RPN直接训练得到候选区域
RPN简介:  & 在feature map上滑动窗口  & 建一个神经网络用于物体分类+框位置的回归  & 滑动窗口的位置提供了物体的大体位置信息  & 框的回归提供了框更精确的位置
一种网络,四个损失函数;  & RPN calssification(anchor good.bad)  & RPN regression(anchor-&propoasal)  & Fast R-CNN classification(over classes)  & Fast R-CNN regression(proposal -&box)
Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高。
最后总结一下各大算法的步骤:RCNN  1. 在图像中确定约个候选框 (使用选择性搜索)  2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取&  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   4. 对于属于某一特征的候选框,用回归器进一步调整其位置
Fast RCNN  1. 在图像中确定约个候选框 (使用选择性搜索)  2. 对整张图片输进CNN,得到feature map  3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层  4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   5. 对于属于某一特征的候选框,用回归器进一步调整其位置
Faster RCNN  1. 对整张图片输进CNN,得到feature map  2. 卷积特征输入到RPN,得到候选框的特征信息  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类   4. 对于属于某一特征的候选框,用回归器进一步调整其位置
总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目标检测的流程变得越来越精简,精度越来越高,速度也越来越快。可以说基于region proposal的R-CNN系列目标检测方法是当前目标检测技术领域最主要的一个分支。
本文永久更新链接地址:
相关资讯 & & &
& (04月14日)
& (03月26日)
& (04月27日)
& (03月28日)
& (12/18/:19)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 R//r 的文章

 

随机推荐