多路深度摄像头骨架点可用于3D采集,3D重建,3D目标跟踪和3D动作捕捉。多路深度摄像头骨架点是指它们位于被拍摄物体表面的虚拟3D点。使用多个深度摄像机,可以同时获取不同深度摄像头的每个骨架点的3D坐标,从而构建出精确的3D重建。多路深度摄像头骨架点还可以用于3D目标跟踪,例如通过跟踪深度摄像头捕捉到的物体体
对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得。
R-CNN的意思就是Region based,主要思路就是根据一张图像,提取多个region,再将每个Region输入CNN来进行特征的提取。因此RCNN就可以分为 Region proposals , Feature extraction 两个主要部分,提取的特征就可以输入任意一个分类器来进行分类。 模型的流程图如下:
在训练的时候,首先使用的是已经训练好的CNN网络作为特征提取器,但是由于预训练是在分类数据集上,因此在应用到检测之前要做finetune。也就是说,为了将用ImageNet数据集训练的网络应用到新的任务(检测),新的数据集(region)上,作者将原来的CNN最后的1000类的fc层,更改为了 层, 代表待检测的物体的类别数。然后,对于所有的region,如果它和ground truth的重叠率大于,就认为是正类。 对于分类器的训练,作者发现选择多大的IoU来区分正类和负类非常关键。并且,对于每一类,都会训练一个分类器。
框的回归非常重要,在对每一个region proposal使用分类器进行打分评价之后,作者使用一个回归器来预测一个新的框作为结果。这个回归器使用的特征是从CNN中提取的特征。回归器的训练中,输入是 region proposal 的 和ground truth的 ,目标是学习一种变换,使得region proposal通过该变换能够接近ground truth。同时,希望这种变换拥有尺度不变性,也就是说尺度变化的话,变换不会改变。 如下图所示,每一个regressor会学习一组参数,特征输入是pool 5的特征输出,拟合的目标是 。
Fast-RCNN 主要解决的问题是在RCNN中对于每一个region proposal都进行特征提取,会产生非常多的冗余计算,因此可以先对一张图像进行特征提取,再根据region proposal在相应的特征上进行划分得到对应region的特征(映射关系)。 这样便可以实现共享计算提高速度,但是与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,如下图:
RoI pooling的方法很简单,类似于空间金字塔pooling,它将proposal部分对应卷积层输出的特征(称之为RoI,因为用于做pooling的特征是 region of interest,也就是我们感兴趣的区域)划分成 块,然后对每一块求最大值,最终得到了一个 的特征图。可以看出,它只是空间金字塔pooling的一部分。 但是SPP-nets的空间金字塔也是可以求导的,那么它到底不好在哪里呢?因为当每一个RoI都可能来源于不同的图像的时候(R-CNN和SPPnets的训练策略是从一个batch的不同图像中,分别挑选一个proposal region),SPPNets的训练非常地低效,这种低效来源于在SPPnets的训练中,每个RoI的感受野都非常地大,很可能对应了原图的整个图像,因此,得到的特征也几乎对应了整张图像,所以输入的图像也就很大。 为了提高效率,Fast-RCNN首先选取 个图像,再从每个图像上选择 个RoI,这样的效率就比从每个图像提取一个RoI提高了 倍。
为了将分类和框回归结合起来,作者采用了多任务的loss,来进行联合的训练。具体来说就是将分类的loss和框回归的loss结合起来。网络的设计上非常直接,就是将RoI得到的特征接几个FC层后,分别接不同的输出层。对应于分类部分,特征会接一个softmax输出,用于分类,对于框回归部分,会接一个输出4维特征的输出层,然后分别计算loss,用于反向传播。loss的公式如下:
回归的target可以参考前面的R-CNN部分。
notes
为什么比fast还fast呢?主要原因是在这篇论文中提出了一个新的层:RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。 RPN的目的:
为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为 ,输入后会映射(用 的卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用 的卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:
在每一个滑动窗口(可以参考 ),为了考虑到尽可能多的框的情况,作者设计了anchors来作为region proposal。anchors就是对于每一个滑动窗口的中心位置,在该位置对应的原图位置的基础上,按照不同的尺度,长宽比例框出 个不同的区域。然后根据这些anchors对应的原始图像位置以及区域,和ground truth,就可以给每一个滑动窗口的每一个anchor进行标记,也就是赋予label,满足一定条件标记为正类(比如和ground truth重叠大于一个值),一定条件为负类。对于正类,就可以根据ground truth和该anchor对应的原图的区域之间的变换关系(参考前面的R-CNN的框回归),得到回归器中的目标,用于训练。也就是论文中的loss function部分:
自然地,也就要求RPN的两个并联的FC层一个输出2k个值用于表示这k个anchor对应的区域的正类,负类的概率,另一个输出4k个值,用于表示框回归的变换的预测值。
对于整个网络的训练,作者采用了一种叫做 4-step Alternating Training 的方法。具体可以参考论文。
与之前的检测任务稍有不同,mask r-cnn的任务是做instance segmentation。因此,它需要对每一个像素点进行分类。 与Faster R-CNN不同,Faster R-CNN对每一个候选框产生两个输出,一个是类别,一个是bounding box的offset。Mask R-CNN新增加了一个输出,作为物体的mask。这个mask类似于ps中的蒙版。
与Faster R-CNN类似的是,Mask R-CNN同样采用RPN来进行Region Proposal。但是在之后,对于每一个RoI,mask r-cnn还输出了一个二值化的mask。
不像类别,框回归,输出都可以是一个向量,mask必须保持一定的空间信息。因此,作者采用FCN来从每个RoI中预测一个 的mask。
由于属于像素级别的预测问题,就需要RoI能够在进行特征提取的时候保持住空间信息,至少在像素级别上能够对应起来。因此,传统的取最大值的方法就显得不合适。 RoI Pooling,经历了两个量化的过程: 第一个:从roi proposal到feature map的映射过程。 第二个:从feature map划分成7*7的bin,每个bin使用max pooling。
为此,作者使用了RoIAlign。如下图
为了避免上面提到的量化过程
可以参考
作者使用ResNet作为基础的特征提取的网络。 对于预测类别,回归框,mask的网络使用如下图结构:
整体看完这几篇大佬的论文,虽说没有弄清楚每一个实现细节,但是大体上了解了算法的思路。可以看出,出发点都源于深度神经网络在特征提取上的卓越能力,因此一众大神试图将这种能力应用在检测问题中。从R-CNN中简单地用于特征提取,到为了提高速度减少计算的Fast R-CNN,再到为了将region proposal集成进入整个模型中,并且利用GPU加速的RPN,也就是Faster R-CNN。再到为了应用于instance segmentation任务中,设计的RoIAlign和mask。包括bounding box regression,pooling层的设计,训练方法的选择,loss的设计等等细节,无一不体现了大师们的思考和创造力。 可能在我们这些“拿来”者的眼中,这些方法都显得“理所应当”和巧妙,好用,但是,它们背后隐藏的选择和这些选择的思考却更值得我们学习。 以及,对待每一个问题,如何设计出合理的解决方案,以及方案的效率,通用性,更是应该我们努力的方向。
原文: Scalable Object Detection using Deep Neural Networks——学术范 最近,深度卷积神经网络在许多图像识别基准上取得了最先进的性能,包括ImageNet大规模视觉识别挑战(ILSVRC-2012)。在定位子任务中获胜的模型是一个网络,它预测了图像中每个对象类别的单个边界框和置信度得分。这样的模型捕获了围绕对象的整幅图像上下文,但如果不天真地复制每个实例的输出数量,就无法处理图像中同一对象的多个实例。在这篇论文中提出了一个显著性启发的神经网络检测模型,它预测了一组与类无关的边界框,每个框有一个分数,对应于它包含任何感兴趣的对象的可能性。该模型自然地为每个类处理数量可变的实例,并允许在网络的最高级别上进行跨类泛化。 目标检测是计算机视觉的基本任务之一。一个解决这个问题的通用范例是训练在子图像上操作的对象检测器,并在所有的场所和尺度上以详尽的方式应用这些检测器。这一范例被成功地应用于经过区别训练的可变形零件模型(DPM)中,以实现检测任务的最新结果。对所有可能位置和尺度的穷举搜索带来了计算上的挑战。随着类数量的增加,这个挑战变得更加困难,因为大多数方法都训练每个类单独的检测器。为了解决这个问题,人们提出了多种方法,从检测器级联到使用分割提出少量的对象假设。 关于对象检测的文献非常多,在本节中,我们将重点讨论利用类不可知思想和解决可伸缩性的方法。 许多提出的检测方法都是基于基于部件的模型,最近由于有区别学习和精心设计的特征,已经取得了令人印象深刻的性能。然而,这些方法依赖于在多个尺度上详尽地应用零件模板,这是非常昂贵的。此外,它们在类的数量上是可伸缩的,这对像ImageNet这样的现代数据集来说是一个挑战。 为了解决前一个问题,Lampert等人使用分支绑定策略来避免计算所有可能的对象位置。为了解决后一个问题,Song et al.使用了一个低维部件基,在所有对象类中共享。基于哈希算法的零件检测也取得了良好的结果。 另一种不同的工作,与我们的工作更接近,是基于对象可以本地化的想法,而不必知道它们的类。其中一些方法建立在自底向上无阶级分割[9]的基础上。通过这种方式得到的片段可以使用自上而下的反馈进行评分。基于同样的动机,Alexe等人使用一种廉价的分类器对对象假设是否为对象进行评分,并以这种方式减少了后续检测步骤的位置数量。这些方法可以被认为是多层模型,分割作为第一层,分割分类作为后续层。尽管它们编码了已证明的感知原理,但我们将表明,有更深入的模型,充分学习可以导致更好的结果。 最后,我们利用了DeepLearning的最新进展,最引人注目的是Krizhevsky等人的工作。我们将他们的边界盒回归检测方法扩展到以可扩展的方式处理多个对象的情况。然而,基于dnn的回归已经被Szegedy等人应用到对象掩模中。最后一种方法实现了最先进的检测性能,但由于单个掩模回归的成本,不能扩展到多个类。 我们的目标是通过预测一组表示潜在对象的边界盒来实现一种与类无关的可扩展对象检测。更准确地说,我们使用了深度神经网络(DNN),它输出固定数量的包围盒。此外,它为每个盒子输出一个分数,表示这个盒子包含一个对象的网络信任度。 为了形式化上述思想,我们将i-thobject框及其相关的置信度编码为最后一网层的节点值: Bounding box: 我们将每个框的左上角和右下角坐标编码为四个节点值,可以写成vectorli∈R4。这些坐标是归一化的w. r. t.图像尺寸,以实现图像绝对尺寸的不变性。每个归一化坐标是由最后一层的线性变换产生的。 Confidence: 置信度:包含一个对象的盒子的置信度得分被编码为单个节点valueci∈[0,1]。这个值是通过最后一个隐藏层的线性变换产生的,后面跟着一个sigmoid。 我们可以组合边界盒位置sli,i∈{1,…K}为一个线性层。同样,我们可以将所有置信区间ci,i∈{1,…K}作为一个s型层的输出。这两个输出层都连接到最后一个隐藏层 在推理时,我们的算法生成kbound盒。在我们的实验中,我们使用ek = 100和K= 200。如果需要,我们可以使用置信分数和非最大抑制在推理时获得较少数量的高置信框。这些盒子应该代表对象。因此,它们可以通过后续的分类器进行分类,实现目标检测。由于盒子的数量非常少,我们可以提供强大的分类器。在我们的实验中,我们使用另一个dnn进行分类。 我们训练一个DNN来预测每个训练图像的边界框及其置信度得分,以便得分最高的框与图像的groundtruth对象框很好地匹配。假设对于一个特定的训练例子,对象被标记为boundingboxesgj,j∈{1,…,M}。在实践中,pre- dictionary的数量远远大于groundtruthboxm的数量。因此,我们试图只优化与地面真实最匹配的预测框子集。我们优化他们的位置,以提高他们的匹配度,最大化他们的信心。与此同时,我们将剩余预测的置信度最小化,这被认为不能很好地定位真实对象。为了达到上述目的,我们为每个训练实例制定一个分配问题。Wexij∈{0,1}表示赋值:xij= 1,如果第i个预测被赋值给第j个真对象。这项任务的目标可以表示为 其中,我们使用标准化边界框坐标之间的el2距离来量化边界框之间的不同。此外,我们希望根据分配x优化盒子的可信度。最大化指定预测的置信度可以表示为 最终的损失目标结合了匹配损失和信心损失 受式1的约束。α平衡了不同损失条款的贡献。 对于每个训练例子,我们通过解决一个最佳的赋值x*的预测到真实的盒子 约束执行赋值解决方案。这是二部匹配的一种变体,是一种多项式复杂度匹配。在我们的应用程序中,匹配是非常便宜的——每幅图像中标记的对象的数量少于一打,而且在大多数情况下只有很少的对象被标记。然后,通过反向传播优化网络参数。例如,反向传播算法的一阶导数计算w、r、t、l和c 尽管上述定义的损失在原则上是足够的,但三次修改使其有可能更快地达到更好的准确性。第一个修改是对地面真实位置进行聚类,并找到这样的聚类/质心,我们可以使用这些聚类/质心作为每个预测位置的先验。因此,鼓励学习算法为每个预测位置学习一个残差到一个先验。 第二个修改涉及到在匹配过程中使用这些先验:不是将N个groundtruth位置与K个预测进行匹配,而是在K个先验和groundtruth之间找到最佳匹配。一旦匹配完成,就会像之前一样计算目标的置信度。此外,位置预测损失也不变:对于任何一对匹配的(目标,预测)位置,其损失定义为groundtruth和对应于匹配先验的坐标之间的差值。我们把使用先验匹配称为先验匹配,并假设它促进了预测的多样化。 需要注意的是,尽管我们以一种与类无关的方式定义了我们的方法,但我们可以将它应用于预测特定类的对象盒。要做到这一点,我们只需要在类的边框上训练我们的模型。此外,我们可以预测每个类的kbox。不幸的是,这个模型的参数数量会随着类的数量线性增长。此外,在一个典型的设置中,给定类的对象数量相对较少,这些参数中的大多数会看到很少有相应梯度贡献的训练示例。因此,我们认为我们的两步过程——首先本地化,然后识别——是一个更好的选择,因为它允许使用少量参数利用同一图像中多个对象类型的数据 我们使用的本地化和分类模型的网络架构与[10]使用的网络架构相同。我们使用Adagrad来控制学习速率衰减,128的小批量,以及使用多个相同的网络副本进行并行分布式训练,从而实现更快的收敛。如前所述,我们在定位损失中使用先验——这些是使用训练集上的均值来计算的。我们还使用α = 来平衡局部化和置信度损失。定位器可以输出用于推断的种植区以外的坐标。坐标被映射和截断到最后的图像区域。另外,使用非最大抑制对盒进行修剪,Jaccard相似度阈值为。然后,我们的第二个模型将每个边界框分类为感兴趣的对象或“背景”。为了训练我们的定位器网络,我们从训练集中生成了大约3000万幅图像,并对训练集中的每幅图像应用以下步骤。最后,样品被打乱。为了训练我们的本地化网络,我们通过对训练集中的每一幅图像应用以下步骤,从训练集中生成了大约3000万幅图像。对于每幅图像,我们生成相同数量的平方样本,使样本总数大约为1000万。对于每幅图像,样本被桶状填充,这样,对于0 - 5%、5 - 15%、15 - 50%、50 - 100%范围内的每个比例,都有相同数量的样本,其中被包围框覆盖的比例在给定范围内。训练集和我们大多数超参数的选择是基于过去使用非公开数据集的经验。在下面的实验中,我们没有探索任何非标准数据生成或正则化选项。在所有的实验中,所有的超参数都是通过对训练集。 Pascal Visual Object Classes (VOC)挑战是最常用的对象检测算法基准。它主要由复杂的场景图像组成,其中包含了20种不同的对象类别的边界框。在我们的评估中,我们关注的是2007版VOC,为此发布了一个测试集。我们通过培训VOC 2012展示了结果,其中包含了大约。11000张图片。我们训练了一个100框的定位器和一个基于深度网络的分类器。 我们在一个由1000万作物组成的数据集上训练分类器,该数据集重叠的对象至少为 jaccard重叠相似度。这些作物被标记为20个VOC对象类中的一个。•2000万负作物与任何物体盒最多有个Jaccard相似度。这些作物被贴上特殊的“背景”类标签。体系结构和超参数的选择遵循。 在第一轮中,定位器模型应用于图像中最大-最小中心方形作物。作物的大小调整到网络输入大小is220×220。单次通过这个网络,我们就可以得到上百个候选日期框。在对重叠阈值为的非最大抑制后,保留评分最高的前10个检测项,并通过21路分类器模型分别通过网络进行分类。最终的检测分数是给定盒子的定位分数乘以分类器在作物周围的最大方形区域上评估的分数的乘积。这些分数通过评估,并用于计算精确查全曲线。 首先,我们分析了本地化器在隔离状态下的性能。我们给出了被检测对象的数量,正如Pascal检测标准所定义的那样,与生成的包围框的数量相对比。在图1中,我们展示了使用VOC2012进行训练所获得的结果。此外,我们通过使用图像的最大中心面积(max-center square crop)作为输入以及使用两个尺度(second scale)来给出结果:最大中心面积(max-center crop)的第二个尺度(select3×3windows的大小为图像大小的60%)正如我们所看到的,当使用10个边界框的预算时,我们可以用第一个模型本地化的对象,用第二个模型本地化48%的对象。这显示出比其他报告的结果更好的性能,例如对象度算法达到42%[1]。此外,这个图表显示了在不同分辨率下观察图像的重要性。虽然我们的算法通过使用最大中心作物获得了大量的对象,但当使用更高分辨率的图像作物时,我们获得了额外的提升。进一步,我们用21-way分类器对生成的包围盒进行分类,如上所述。表1列出了VOC 2007的平均精度(APs)。达到的平均AP是,与先进水平相当。注意,我们的运行时间复杂度非常低——我们只使用top10框。示例检测和全精度召回曲线分别如图2和图3所示。值得注意的是,可视化检测是通过仅使用最大中心方形图像裁剪,即使用全图像获得的。然而,我们设法获得了相对较小的对象,例如第二行和第二列的船,以及第三行和第三列的羊。 在本工作中,我们提出了一种新的方法来定位图像中的对象,该方法可以预测多个边界框的时间。该方法使用深度卷积神经网络作为基本特征提取和学习模型。它制定了一个能够利用可变数量的groundtruth位置的多箱定位成本。在“一个类一个箱”方法的情况下,对1000个盒子进行非max-suppression,使用与给定图像中感兴趣的DeepMulti-Box方法相同的准则,并学习在未见图像中预测这些位置。 我们在VOC2007和ILSVRC-2012这两个具有挑战性的基准上给出了结果,在这两个基准上,所提出的方法具有竞争力。此外,该方法能够很好地预测后续分类器将探测到的位置。我们的结果表明,deepmultibox的方法是可扩展的,甚至可以在两个数据集之间泛化,就能够预测感兴趣的定位,甚至对于它没有训练的类别。此外,它能够捕获同一类物体的多种情况,这是旨在更好地理解图像的算法的一个重要特征。 在未来,我们希望能够将定位和识别路径折叠到一个单一的网络中,这样我们就能够在一个通过网络的一次性前馈中提取位置和类标签信息。即使在其当前状态下,双通道过程(本地化网络之后是分类网络)也会产生5-10个网络评估,每个评估的速度大约为1个CPU-sec(现代机器)。重要的是,这个数字并不与要识别的类的数量成线性关系,这使得所提出的方法与类似dpm的方法非常有竞争力。
多路深度摄像头的骨架点一般包括人脸、手势、行为、行为检测等。通过骨架点,可以帮助用户实时跟踪不同物体的位置,并检测对象的特定行为,比如眨眼和点头等。
本文适合刚入门物体检测的人群学习,不涉及公式推理。 相比于图像分类,图像中物体检测是计算机视觉中一个更加复杂的问题,因为图像分类只需要判断出图像属于哪一类就行,而在物体检测中,图像里可能有多个物体,我们需要对所有物体进行种类判别和位置确定,所以比图像分类更具有挑战性,应用于物体检测的深度学习模型也会更加复杂。本文将会着重介绍几种基于深度学习的物体检测方法。待识别的物体有20类: person bird, cat, cow, dog, horse, sheep aeroplane, bicycle, boat, bus, car, motorbike, train bottle, chair, dining table, potted plant, sofa, tv/monitor Detection Label (Ground truth)格式: 提交结果文件格式: 有YOLO、SSD、rcnn、fast rcnn及faster rcnn等 注:后边部分内容会对算法进行详细介绍 针对单个物体实例而言,通常由于图像采集过程中光照条件、拍摄视角、距离的不同,物体自身的非刚体形变以及其他物体的部分遮挡使得物体实例的表观特征产生很大的变化,给视觉识别算法带来了极大的困难。 属于同一类的物体表观特征差别比较大,其原因有前面提到的各种实例层次的变化,但这里更强调的是类内不同实例的差别,例如图 3(a)所示,同样是椅子,外观却是千差万别;其次是类间模糊性,即不同类的物体实例具有一定的相似性,如图 3(b)所示,左边的是一只狼,右边的是一只哈士奇,但我们从外观上却很难分开二者;再次是背景的干扰,在实际场景下,物体不可能出现在一个非常干净的背景下,往往相反,背景可能是非常复杂的、对我们感兴趣的物体存在干扰的,这使得识别问题的难度大大加大。 困难与挑战与图像的视觉语义相关,这个层次的困难往往非常难以处理,特别是对现在的计算机视觉理论水平而言。一个典型的问题称为多重稳定性。如图所示,图 3(c)左边既可以看成是两个面对面的人,也可以看成是一个燃烧的蜡烛;右边则同时可以解释为兔子或者小鸭。同样的图像,不同的解释,这既与人的观察视角、关注点等物理条件有关,也与人的性格、经历等有关,而这恰恰是视觉识别系统难以很好处理的部分。 bounding box:矩形框 SPP:Spatial Pyramid Pooling SVM:支持向量机 RPN:Region Proposal Network区域检测模块主要处理图像检测区域窗口的问题。根据获得区域待检测窗口方法的不同,物体检测方法大致可分为稠密检测窗提取(蛮力搜索)和稀疏检测窗两类方法。稠密检测窗提取方法,比如滑动窗法,相对比较简单,它是通过使用训练好的模板在输入图像的多个尺度上图像金字塔上进行滑动扫描,通过确定最大响应位置找到目标物体的矩形窗口。稀疏检测窗提取方法,则一般利用某些先验或其他图像任务的结果,选择最有可能成为物体的检测窗口,比如选择性搜方法,对图像分割的结果进行利用,通过区域融合生产目标检测窗。(算法具体内容自行了解,比如边缘盒算法,选择性算法) 这是最重要和最关键的步骤,传统的特征提取方法,比如HOG、SIFT特征,通过计算图像局部区域的梯度特征,得到图像边缘或角点特征。相比现在深度学习的提取特征方法,这些方法都是根据图像的某些性质通过人工设计相应的特征。缺点很明显,第一人工设计很麻烦,第二很具有局限性,特征提取不够完整,而深度卷积神经网络就可以客服这些不足。 分类器模块是物体图像检测与分类系统的结果输出,用于评价整个检测系统的性能。在模式识别和机器学习领域中,常用的分类器包括:逻辑回归、softmax、SVM、ada-boost等。在深度学习模型中一般采用SVM和softmax。 暂时略 既然传统的物体检测方法局限性很大,此时随着深度学习的发展,基于深度学习的物体检测算法R-CNN横空出世了。 Fast-RCNN主要贡献在于对R-CNN进行加速,只有速度够快,才能做到实时处理。那么Fast-RCNN是改进了R-CNN哪些地方提高了处理速度呢? SPP: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和之后的层。节省了大量的计算时间。 Fast-RCNN正是通过融合了SPP的设计(这一层称之为ROI Pooling),有了以上这两个优点,使得Fast-RCNN比R-CNN快多了。 原来的方法:许多候选框(比如两千个)-->CNN(两千次卷积)-->得到每个候选框的特征(不同尺度特征图不行)-->分类+回归 现在的方法:一张完整图片-->CNN(一次卷积)-->得到每张候选框的特征(可以不同尺度特征图不行,因为这里加了一层SSP net 称之为ROI Pooling)-->分类+回归 其还有个贡献是多任务Loss层:将分类和边框回归进行合并(又一个开创性的思路),通过多任务Loss层进一步整合深度网络,统一了训练过程,从而提高了算法准确度。 Fast-RCNN虽然加快了不少速度,但是其选择性搜索,找出所有的候选框,这个也非常耗时,于是有人就在Fast-RCNN的基础上解决了这个问题,提出了更快的Faster-RCNN。 Faster-RCNN特点(创新点):候选框提取不一定要在原图上做,特征图上同样可以,在低分辨率上做意味着计算量减小。 那么怎么在特征图上做候选框提取呢:于是有人提出了用神经网络去做,加入一个边缘提取的神经网络,称之为Region Proposal Network(RPN)。 具体加入方法: • 将RPN放在最后一个卷积层的后面 • RPN训练好后能使用其直接得到候选区域 暂时略 1. . 2. . 3. . 4.黄凯奇,任伟强,谭铁牛.图像物体分类与检测算法综述,中国科学院自动化研究所模式识别国家重点实验室智能感知与计算研究中心,12(36),2013:1225-1240. 5.夏源.基于深度学习的图像物体检测与分类,北京邮电大学,2016. 6. 7. 8.
1、机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。 2、深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。 3、机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。 拓展资料: 1、机器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。传统的机器学习算法在指纹识别、基于Haar的人脸检测、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。 2、最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法和激活函数等方面做出相应的调整。其实有不少想法早年间也曾有过,但由于当时训练数据量不足、计算能力落后,因此最终的效果不尽如人意。深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。
机器学习是一bai种实现人工智能的du方法,深度学习是一种实现机器学习的技术
首先要明确移动端使用深度学习的问题所在:内存、运行速率以及代码体积。知道这些就可以思考这些问题了。
【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强大性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了很多目标检测算法。 【嵌牛鼻子】计算机视觉 【嵌牛提问】如何理解目标检测算法——OverFeat 【嵌牛正文】 一、深度学习的典型目标检测算法 深度学习目标检测算法主要分为 双阶段检测算法 和 单阶段检测算法 ,如图1所示。双阶段目标检测算法先对图像提取候选框,然后基于候选区域做二次修正得到检测结果,检测精度较高,但检测速度较慢;单阶段目标验测算法直接对图像进行计算生成检测结果,检测速度快,但检测精度低。 1、双阶段目标检测算法 双阶段目标检测方法主要通过选择性搜索(Selective Search)或者Edge Boxes等算法对输入图像选取可能包含检测目标的候选区域(Region Proposal),再对候选区域进行分类和位置回归以得到检测结果。 OverFeat 算法 《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》 Sermanet 等改进AlexNet 提出 OverFeat 算法。该算法结合AlexNet通过多尺度滑动窗口实现特征提取功能,并且共享特征提取层,应用于图像分类、定位和目标检测等任务。 关键技术: 1、FCN( 全卷积神经网络 ) 对于一个各层参数结构都设计好的网络模型,要求输入图片的尺寸是固定的(例如,Alexnet要求输入图片的尺寸为227px*227px)。如果输入一张500*500的图片,希望模型仍然可以一直前向传导,即一个已经设计完毕的网络,可以输入任意大小的图片,这就是FCN。 FCN的思想在于: 1、从卷积层到全连接层,看成是对一整张图片的卷积层运算。 2、从全连接层到全连接层,看成是采用1*1大小的卷积核,进行卷积层运算。如上图所示,绿色部分代表卷积核大小。假设一个CNN模型,其输入图片大小是14*14,通过第一层卷积后得到10*10大小的图片,然后接着通过池化得到了5*5大小的图片。像但是对于像素值为5*5的图片到像素值为1*1的图片的过程中: (1)传统的CNN:如果从以前的角度进行理解的话,那么这个过程就是全连接层,我们会把这个5*5大小的图片,展平成为一维向量进行计算。 (2)FCN:FCN并不是把5*5的图片展平成一维向量再进行计算,而是直接采用5*5的卷积核,对一整张图片进行卷积运算。 二者本质上是相同的,只是角度不同,FCN把这个过程当成了对一整张特征图进行卷积,同样,后面的全连接层也是把它当做是以1*1大小的卷积核进行卷积运算。 当输入一张任意大小的图片,就需要利用以上所述的网络,例如输入一张像素为16*16的图片:根据上图,该网络最后的输出是一张2*2的图片。可见采用FCN网络可以输入任意大小的图片。同时需要注意的是网络最后输出的图片大小不在是一个1*1大小的图片,而是一个与输入图片大小息息相关的一张图片。 Overfeat就是把采用FCN的思想把全连接层看成了卷积层,在网络测试阶段可以输入任意大小的图片。 2、offset max-pooling 简单起见,不用二维的图像作为例子,而是采用一维作为示例: 如上图所示,在X轴上有20个神经元,并且选择池化size=3的非重叠池化,那么根据之前所学的方法应该是:对上面的20个神经元,从1位置开始进行分组,每3个连续的神经元为一组,然后计算每组的最大值(最大池化),19、20号神经元将被丢弃,如下图所示: 或者可以在20号神经元后面,添加一个数值为0的神经元编号21,与19、20成为一组,这样可以分成7组:[1,2,3],[4,5,6]……, [16,17,18],[19,20,21],最后计算每组的最大值。 如果只分6组,除了以1作为初始位置进行连续组合之外,也可以从位置2或者3开始进行组合。也就是说其实有3种池化组合方法: A、△=0分组:[1,2,3],[4,5,6]……,[16,17,18]; B、△=1分组:[2,3,4],[5,6,7]……,[17,18,19]; C、△=2分组:[3,4,5],[6,7,8]……,[18,19,20]; 对应图片如下: 以往的CNN中,一般只用△=0的情况,得到池化结果后,就送入了下一层。但是该文献的方法是,把上面的△=0、△=1、△=2的三种组合方式的池化结果,分别送入网络的下一层。这样的话,网络在最后输出的时候,就会出现3种预测结果了。 前面所述是一维的情况,如果是2维图片的话,那么(△x,△y)就会有9种取值情况(3*3);如果我们在做图片分类的时候,在网络的某一个池化层加入了这种offset 池化方法,然后把这9种池化结果,分别送入后面的网络层,最后的图片分类输出结果就可以得到9个预测结果(每个类别都可以得到9种概率值,然后我们对每个类别的9种概率,取其最大值,做为此类别的预测概率值)。 算法原理: 文献中的算法,就是把这两种思想结合起来,形成了文献最后测试阶段的算法。 1、论文的网络架构与训练阶段 (1)网络架构 对于网络的结构,文献给出了两个版本——快速版、精确版,一个精度比较高但速度慢;另外一个精度虽然低但是速度快。下面是高精度版本的网络结构表相关参数: 表格参数说明: 网络输入:图片大小为221px*221px; 网络结构方面基本上和AlexNet相同,使用了ReLU激活,最大池化。不同之处在于:(a)作者没有使用局部响应归一化层;(b)然后也没有采用重叠池化的方法;(c)在第一层卷积层,stride作者是选择了2,这个与AlexNet不同(AlexNet选择的跨步是4,在网络中,如果stride选择比较大得话,虽然可以减少网络层数,提高速度,但是却会降低精度)。 需要注意的是把f7这一层,看成是卷积核大小为5*5的卷积层,总之就是需要把网络看成前面所述的FCN模型,去除了全连接层的概念,因为在测试阶段可不是仅仅输入221*221这样大小的图片,在测试阶段要输入各种大小的图片,具体请看后面测试阶段的讲解。 (2)网络训练 训练输入:对于每张原图片为256*256,然后进行随机裁剪为221*221的大小作为CNN输入,进行训练。 优化求解参数设置:训练的min-batchs选择128,权重初始化选择高斯分布的随机初始化: 然后采用随机梯度下降法,进行优化更新,动量项参数大小选择,L2权重衰减系数大小选择10-5次方。学习率初始化值为,根据迭代次数的增加,每隔几十次的迭代后,就把学习率的大小减小一半。 然后就是DropOut,这个只有在最后的两个全连接层,才采用dropout,dropout比率选择。 2、网络测试阶段 在Alexnet的文献中,预测方法是输入一张图片256*256,然后进行multi-view裁剪,也就是从图片的四个角进行裁剪,还有就是一图片的中心进行裁剪,这样可以裁剪到5张224*224的图片。然后把原图片水平翻转一下,再用同样的方式进行裁剪,又可以裁剪到5张图片。把这10张图片作为输入,分别进行预测分类,在后在softmax的最后一层,求取个各类的总概率,求取平均值。 然而Alexnet这种预测方法存在两个问题: 一方面这样的裁剪方式,把图片的很多区域都给忽略了,这样的裁剪方式,刚好把图片物体的一部分给裁剪掉了; 另一方面,裁剪窗口重叠存在很多冗余的计算,像上面要分别把10张图片送入网络,可见测试阶段的计算量还是较大的。 Overfeat算法: 训练完上面所说的网络之后,在测试阶段不再是用一张221*221大小的图片了作为网络的输入,而是用了6张大小都不相同的图片,也就是所谓的多尺度输入预测,如下表格所示: 当网络前向传导到layer 5的时候,就利用了前面所述的FCN、offset pooling这两种思想的相结合。现以输入一张图片为例(6张图片的计算方法都相同),讲解layer 5后面的整体过程,具体流程示意图如下: 步骤一: 对于某个尺度的图片,经过前五层的卷积后得到特征图。上图中特征图的分辨率是20x23,256个通道。 步骤二: 对于该特征图,重复多次使用非重叠的池化,每次池化的偏置不同,有行偏置和列偏置。上图中偏置池化3次,偏置分别为为(0,1,2)。这就是offset pooling,也被称为fine stride。offset pooling得到的特征图的维度为6x7x3x3xD,其中6x7是特征图的分辨率,3x3是偏置池化的次数,D是通道数。上图中是以1维显示的。 步骤三: 池化后得到的特征图将被送入分类器。 步骤四: 分类器的输入是的5x5xD,输出是C(类别数)维向量。但是offset pooling后得到的特征图并不是5x5xD,比如上图中的特征图大小为6x7xD,因此分类器以滑动窗口的方式应用在特征图上,每个滑动窗口经过分类器输出一个C维向量。比如上图中输入的6x7xD的特征图最终得到2x3xC的输出,其中2x3是滑动窗口的个数。 步骤五: 而2x3xC只是一组偏置池化的输出,总的输出为2x3x3x3xC,将输出的张量reshape,得到6x9xC输出张量。最终输出分类张量为3d张量,即两个分辨率维度 x C维。 然后需要在后面把它们拉成一维向量,这样在一个尺度上,可以得到一个C*N个预测值矩阵,每一列就表示图片属于某一类别的概率值,并且求取每一列的最大值,作为本尺度的每个类别的概率值。 最后一共用了6种不同尺度(文献使用了12张,另外6张是水平翻转的图片)进行做预测,然后把这六种尺度结果再做一个平均,作为最最后的结果。 从上面过程可以看到整个网络分成两部分:layer 1~5这五层称之为特征提取层;layer 6~output称之为分类层。 六、定位任务 用于定位任务的时候,就把分类层(上面的layer 6~output)给重新设计一下,把分类改成回归问题,然后在各种不同尺度上训练预测物体的bounding box。
目标检测论文整理最近开始看一些object detection的文章,顺便整理一下思路。排版比较乱,而且几乎所有图片都是应用的博客或论文,如有侵权请联系我。文章阅读路线参考目前已完成的文章如下,后续还会继续补充(其中加粗的为精读文章):RCNNOverfeatMR-CNNSPPNetFast RCNNA Fast RCNNFaster RCNNFPNR-FCNMask RCNNYOLOYOLO 9000YOLO v3SSDDSSDR-SSDRetinaNet(focal loss)DSODCascade R-CNN(待续)吐槽一下,博客园的markdown竟然没有补齐功能,我还是先在本地补全再传上来吧。。。RCNN之前的故事Histogram of Gradient (HOG) 特征在深度学习应用之前,图像的特征是人工定义的具有鲁棒性的特征,如SIFT,HOG等,下面简要介绍一下HOG。8x8像素框内计算方向梯度直方图:HOG Pyramid特征金字塔,对于不同大小的物体进行适应,设计尺度不变性特征HOG特征 -> SVM分类DPM模型 Deformable Part Model加组件组合的HOG特征, 组件间计算弹性得分,优化可变形参数如果没有弹性距离,就是BoW (Bag of Word)模型, 问题很大, 位置全部丢失:n个组件的DPM计算流程:Selective Search 思想过分割后基于颜色纹理等相似度合并,然后,过分割、分层合并、建议区域排序基于Selective Search + DPM/HoG + SVM的物体识别此时的框架就是RCNN的雏形,因为DPM就是基本由RBG和他导师主导,所以大神就是大神。AlexNet的图像分类(深度学习登场)2012年AlexNet赢得LSVRC的ImageNet分类竞赛。深度CNN结构用来图像特征提取。bounding-box regression 框回归BBR 在DPM时代就和SVM分类结合,一般直接使用线性回归,或者和SVR结合RCNN: Rich feature hierarchies for accurate object detection and semantic segmentationRCNN作为深度学习用于目标检测的开山之作,可以看出是基于Selective Search + DPM/HoG + SVM框架,只不过将是将手工特征转变为CNN提取特征,本文主要贡献如下:CNN用于object detection解决数据集不足的问题主要流程如下:regional preposals(selective research)CNN feature extractionSVM ClassificationNMSbounding-box regression(BBR)为啥能work?优秀的目标检测框架,region proposal 和 regression offset降低了目标检测的难度,强大的CNN特征提取器,代替传统的已经到瓶颈的手工特征迁移训练降低了对数据集的要求MR-CNN:Object detection via a multi-region & semantic segmentation-aware CNN modelMulti-Region的提出, 开始对Box进一步做文章, 相当于对Box进一步做增强,希望改进增强后的效果,主要改善了部分重叠交叉的情况。特征拼接后使得空间变大,再使用SVM处理, 效果和R-CNN基本类似.OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks不得不说虽然OverFeat在但是比赛成绩不是太好,但是它的思想还是很有启发性的。OverFeat直接抛弃了Selective Search,采用CNN上slide windows来进行框推荐,并且把Bounding box Regression整合一起使用全连接层搞定, 解决了后面一端的问题(取代了SVM分类器和BBR线性回归器),这个思想影响了后来的Fast RCNN。是第一个End to End 的目标检测模型,模型虽然简陋,但是可以验证网络强大的拟合能力注意整合目标检测的各项功能(分类,回归)。亮点:先用CNN得到feature map再做slide windows推荐区域,避免了特征重复计算。设计了End to End模型,方便优化和加快检测速度设计全卷积网络,并进行多尺度图像训练maxpool offset(没有Fast RCNN的ROI Pooling自然)为啥能work?可以看出OverFeat将不同的两个问题物体分类和位置回归采用了两个分支网络,共用前面的CNN特征表述,而CNN提取的特征正如OverFeat所言,是一种类似于SIFT,HOG等人工描述子的一种稳定的描述子(底层抽象),可以用于构建不同的任务(高层表述),也就是模型为什么能work的原因。SPPNetR-CNN和Overfeat都存在部分多尺度,重叠效果的问题。 某种意义上, 应对了HoG特征, 这样对于物体来说类似BoW模型, 我们知道DPM里面,是带有组件空间分布的弹性得分的, 另外也有HoG Pyramid的思想。 如何把Pyramid思想和空间限制得分加入改善多尺度和重叠的效果呢? MR-CNN里面尝试了区域增强, Overfeat里面尝试了多尺度输入。 但是效果都一般。 这里我们介绍另外一个技术Spatial Pyramid Matching, SPM,是采用了空间尺度金字塔的特点。和R-CNN相比做到了先特征后区域, 和Overfeat相比自带Multi-Scale。SPP pooling layer 的优势:解决了卷积层到全连接层需要固定图片大小的问题,方便多尺度训练。能够对于任意大小的输入产生固定的输出,这样使得一幅图片的多个region proposal提取一次特征成为可能。进一步强调了CNN特征计算前移, 区域处理后移的思想, 极大节省计算量也能看出文章还是强调用CNN做特征的提取,还是用的BBR和SVM完成回归和分类的问题Fast RCNN可以看出Fast RCNN结合了OverFeat和Sppnet的实现,打通了高层表述和底层特征之间的联系主要流程:任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;在任意size图片上采用selective search算法提取约2k个建议框;根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征框【深度和特征图一致】,并在RoI池化层中将每个特征框池化到H×W【VGG-16网络是7×7】的size;固定H×W【VGG-16网络是7×7】大小的特征框经过全连接层得到固定大小的特征向量;将上一步所得特征向量经由各自的全连接层【由SVD分解实现(全连接层加速)】,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框其中ROI POOL层是将每一个候选框映射到feature map上得到的特征框经池化到固定的大小,其次用了SVD近似求解实现全连接层加速。这里需要注意的一点,作者在文中说道即使进行多尺度训练,map只有微小的提升,scale对Fast RCNN的影响并不是很大,反而在测试时需要构建图像金字塔使得检测效率降低。这也为下一步的多尺度改进埋下了伏笔。为啥能更好的work?也是结合了OverFeat的和SPPnet的work,同时规范了正负样本的判定(之前由于SVM和CNN对区域样本的阈值划分不同而无法统一网络,当然这只是其中的一个原因。更多的估计是作者当时没想到),将网络的特征抽取和分类回归统一到了一个网络中。A Fast RCNN: Hard Positive Generation via Adversary for Object Detection这篇论文是对,CMU与rbg的online hard example mining(OHEM)改进,hard example mining是一个针对目标检测的难例挖掘的过程,这是一个更充分利用数据集的过程。实际上在RCNN训练SVM时就已经用到,但是OHEM强调的是online,即如何在训练过程中选择样本。同期还有S-OHEM的改进。而随着但是GAN的火热,A-Fast-RCNN尝试生成hard example(使用对抗网络生成有遮挡和有形变的两种特征,分别对应网络ASDN和ASTN)结论如下:ASTN 和 随机抖动(random jittering)做了对比,发现使用AlexNet,mAP分别是和,使用VGG16,mAP分别是和,ASTN 的表现都比比随机抖动效果好。作者又和OHEM对比,在VOC 2007数据集上,本文方法略好( vs. ),而在VOC 2012数据集上,OHEM更好( vs. )。gan用于目标检测还没有很好的idea,这篇论文相当于抛砖引玉了。同时需要注意的一个问题,网络对于比较多的遮挡和形变情况识别情况更好;但是对于正常目标的特征抽象能力下降,所以有时候创造难例也要注意样本的数量。下面是一些由于遮挡原因造成的误判。Faster RCNN:Towards Real-Time Object Detection with Region Proposal Networks这篇文章标志着two-stage目标检测的相对成熟,其主要改进是对候选区域的改进,将候选区域推荐整合进了网络中。结合后面的一系列文章,可以马后炮一下它的缺点:虽然Faster RCNN已经共享了绝大部分卷积层运算,但是RoI之后还有部分ConvNet的计算,有没有可能把ROI之上的计算进一步前移? 请看R-FCNFaster RCNN还是没有很好的解决多尺度问题,如何解决,请看FPNYOLO:You Only Look Once作者的论文简直是一股论文界的泥石流,作者本身是一个喜欢粉红小马的大叔,萌萌哒。实际上YOLO一直发展到v3都是简单粗暴的目标检测方法,虽然学术界模型繁杂多样,但是在实际应用工业应用上YOLO绝对是一个首选的推荐。YOLO v1版本现在看来真是简单粗暴,也印证了网络抽象的强大之处。可以看出作者没有受到太多前辈的影响,将对象检测重新定义为单个回归问题,直接从图像像素到边界框坐标和类概率(当然这也是一个缺少坐标约束也是一个缺点)。YOLO的明显缺点,如多尺度问题,密集物体,检测框耦合,直接回归坐标等在yolo 9000中也做了比较好的改进。SSD:Single Shot MultiBox DetectorSSD作为one stage的代表模型之一,省去了判断推荐候选区域的步骤(实际上可以认为one-stage就是以feature map cell来抽象代替ROI Pooling功能) ,虽然SSD和Faster RCNN在Anchor box上一脉相承,但是Faster RCNN却还是有一个推荐候选区域(含有物体的区域)的监督部分(注意后面其实也是整合到了最终Loss中),因此one-stage优势是更快,而含有区域推荐的two-stage目前是更加准确一些。(更看好one-stage,其实区域推荐不太符合视觉系统,但是可以简化目标检测问题),主要贡献:用多尺度feature map来预测,也生成了更多的default box检测框对每一类对象产生分数(低耦合,对比yolo)缺点:底层feature map高级语义不足 (FPN)正负样本影响 (focal loss)feature map抽象分类和回归任务只用了两个卷积核抽象性不足(DSSD)为啥能更好的工作?SSD的出现对多尺度目标检测有了突破性进展,利用卷积层的天然金字塔形状,设定roi scale让底层学习小物体识别,顶层学习大物体识别FPN:feature pyramid networksSSD网络引入了多尺度feature map,效果显著。那Faster RCNN自然也不能落后,如何在Faster RCNN中引入多尺度呢?自然有FPN结构同时FPN也指出了SSD因为底层语义不足导致无法作为目标检测的feature map注意原图的候选框在Faster RCNN中只固定映射到同一个ROI Pooling中,而现在如果某个anchor和一个给定的ground truth有最高的IOU或者和任意一个Ground truth的IOU都大于,则是正样本。如果一个anchor和任意一个ground truth的IOU都小于,则为负样本。本文算法在小物体检测上的提升是比较明显的,另外作者强调这些实验并没有采用其他的提升方法(比如增加数据集,迭代回归,hard negative mining),因此能达到这样的结果实属不易。DSSD:Deconvolutional Single Shot Detector一个SSD上移植FPN的典型例子,作者主要有一下改动:将FPN的Upsampling变成deconv复杂了高层表述分支(分类,回归)网络的复杂度R-SSD:Enhancement of SSD by concatenating feature maps for object detection本文着重讨论了不同特征图之间的融合对SSD的影响(水论文三大法宝),这篇论文创新点不是太多,就不说了DSOD: Learning Deeply Supervised Object Detectors from Scratch这篇文章的亮点:提出来了不需要预训练的网络模型DSOD实际上是densenet思想+SSD,只不过并不是在base model中采用densenet,而是密集连接提取default dox的层,这样有一个好处:通过更少的连接路径,loss能够更直接的监督前面基础层的优化,这实际上是DSOD能够直接训练也能取得很好效果的最主要原因,另外,SSD和Faster RCNN直接训练无法取得很好的效果果然还是因为网络太深(Loss监督不到)或者网络太复杂。Dense Prediction Structure 也是参考的densenetstem能保留更多的信息,好吧,这也行,但是对效果还是有提升的。YOLO 9000:Better, Faster, Stronger很喜欢这个作者的论文风格,要是大家都这么写也会少一点套路,多一点真诚。。。。文章针对yolo做了较多的实验和改进,简单粗暴的列出每项改进提升的map。这个建议详细的看论文。下面列举几个亮点:如何用结合分类的数据集训练检测的网络来获得更好的鲁棒性将全连接层改为卷积层并结合了细粒度信息(passthrough layer)Multi-Scale TraningDimension Clustersdarknet-19更少的参数Direct locaion prediction对offset进行约束R-FCN:Object Detection via Region-based Fully Convolutional Networks本文提出了一个问题,base CNN网络是为分类而设计的(pooling 实际上是反应了位置的不变性,我一张人脸图片只要存在鼻子,两只眼睛,分类网络就认为它是人脸,这也就是Geoffrey Hinton 在Capsule中吐槽卷积的缺陷),而目标检测则要求对目标的平移做出准确响应。Faster RCNN是通过ROI pooling让其网络学习位置可变得能力的,再次之前的base CNN还是分类的结构,之前讲过R-FCN将Faster RCNN ROI提取出来的部分的卷积计算共享了,那共享的分类和回归功能的卷积一定在划分ROI之前,那么问题来了,如何设计让卷积对位置敏感?主要贡献:将用来回归位置和类别的卷积前置共享计算,提高了速度。巧妙设计score map(feature map)的意义(感觉设计思想和yolo v1最后的全连接层一样),让其何以获得位置信息,之后在经过ROI pooling和vote得到结果为啥能work?实际上rfcn的feature map设计表达目标检测问题的方式更加抽象(ROI pool前的feature map中每一个cell的channel代表定义都很明确),loss在监督该层时更能通过论文中关于ROI pool和vote设计,在不同的channel上获得高的响应,这种设计方式可能更好优化(这个是需要大量的实验得出的结论),至于前面的resnet-base 自然是抽象监督,我们本身是无法理解的,只是作为fintuning。实际上fpn的loss监督也是非常浅和明确的,感觉这种可以理解的优化模块设计比较能work。Focal Loss: Focal Loss for Dense Object Detection这篇文章实际上提供了另外一个角度,之前一直认为Single stage detector结果不够好的原因是使用的feature不够准确(使用一个位置上的feature),所以需要Roi Pooling这样的feature aggregation办法得到更准确的表示。但是这篇文章基本否认了这个观点,提出Single stage detector不好的原因完全在于:极度不平衡的正负样本比例: anchor近似于sliding window的方式会使正负样本接近1000:1,而且绝大部分负样本都是easy example,这就导致下面一个问题:gradient被easy example dominant的问题:往往这些easy example虽然loss很低,但由于数 量众多,对于loss依旧有很大贡献,从而导致收敛到不够好的一个结果。所以作者的解决方案也很直接:直接按照loss decay掉那些easy example的权重,这样使训练更加bias到更有意义的样本中去。很直接地,如下图所示:实验中作者比较了已有的各种样本选择方式:按照class比例加权重:最常用处理类别不平衡问题的方式OHEM:只保留loss最高的那些样本,完全忽略掉简单样本OHEM+按class比例sample:在前者基础上,再保证正负样本的比例(1:3)Focal loss各种吊打这三种方式,coco上AP的提升都在3个点左右,非常显著。值得注意的是,3的结果比2要更差,其实这也表明,其实正负样本不平衡不是最核心的因素,而是由这个因素导出的easy example dominant的问题。RetinaNet 结构如下实际上就是SSD+FPN的改进版
论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation 提出时间:2014年 论文地址: 针对问题: 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。 创新点: RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。 参考博客: 。 论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 提出时间:2014年 论文地址: 针对问题: 该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。 创新点: 在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。 参考博客: 论文题目:Scalable Object Detection using Deep Neural Networks 提出时间:2014年 论文地址: 针对问题: 既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。 创新点: 本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。 参考博客: 论文题目:DeepBox: Learning Objectness with Convolutional Networks 提出时间:2015年ICCV 论文地址: 主要针对的问题: 本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。创新点: 本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。 参考博客: 论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection 提出时间:2015年ICCV 论文地址: 主要针对的问题: 对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢? 创新点: 通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。 参考博客: 论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 提出时间:2014年 论文地址: 针对问题: 如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。创新点: 作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。 参考博客 : 论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model 提出时间:2015年 论文地址: 针对问题: 既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。创新点: 作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。 参考博客 : 论文题目:Fast-RCNN 提出时间:2015年 论文地址: 针对问题: RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢? 创新点: 作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。 参考博客 : 论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers 提出时间:2015年 论文地址: 主要针对的问题: 本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。 创新点: 作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。 论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 提出时间:2015年NIPS 论文地址: 主要针对的问题: 由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢? 创新点: 将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。 参考博客 :
论文查重系统的规则:
1、知网论文查重系统,是目前市面上最先进的模糊算法,如果论文的整体结构或格式被打乱,那有可能会导致同一篇文章,第一次检测到的和第二次检测标记重复的内容不一致,或者是第一次查核从检测没有被标记为红色内容的部分,在第二次查重检测的时候,被标记为重复内容。
因此,论文内容和论文的格式非常重要,如果你对论文的重复内容进行降重修改,那不要修改论文的原始大纲和结构。
2.如果是整篇论文上传查核检测,那系统会自动给将,文章目录信息自动是被。然后,系统将会对每章内容进行查重比对。每个单独部分内容都会比对,然后逐一进行检测,最终生成一篇论文查重报告,被标记为红色字体部分的内容就是严重重复的内容。
3.中国知网为检查系统的敏感性设定了一个门槛。 门槛是5%。 它在段落中衡量。 少于5%的剽窃或引用无法被发现。这种情况在大的段落中或小句情况下很常见。 例如:如果测试段落1有10,000个单词,则不会检测到对单个500字或更少的文章的引用。
实际上这里也告诉同学们一个修改的方法,就是对段落抄袭千万不要选一篇文章来引用,尽可能多地选择文章,以及剪掉几句话。这不会被检测到。
4.如何判断检测论文的抄袭?知网论文检测的条件是连续13个字相似或剽窃将标记为红色,但必须满足3个先决条件:即引用或剽窃的A文献中的词语数量 并能在每个测试部分都能实现。超过5%就被检测为红色。
5.知网检测系统会自动识别参考文献,参考文献不参与文本检测。另外,它被删除。在知网测试报告中,参考文件以灰色显示,说明未参与测试。当然,如果参考格式完全正确,这将被自动排除。否则,引用将作为文本进行测试导致参考文献全部标红。结果增高!
6.知网的论文检查整个上传,PDF或Word格式可能会影响测试结果。由于上传PDF检测,PDF将具有比Word更多的文本转换过程。这个过程可能会破坏你原来正确的目录和参考格式。特别是那些英文目录和大多数英文参考文献,英文字符数很高。如果英语被标记为红色,则总体结果将大大增加。
7.对于论文引用而言,如果你引用了他人的内容,那就要用引用符号进行相应的标注。如果引用没有进行标注,那系统会自动查重比对,这样可能会导致论文的重复率增加,所以,合理的引用他内容是非常有必要的。
运动目标的检测的其主要目的是 获取目标对象的运动参数(位置、速度、加速度等)及运动轨迹 ,通过进一步分析处理,实现对目标行为更高层级上的理解。 运动目标检测技术目的是 从序列图像中将变化区域从背景图像中提取出来 ,常用于视频监视、图像压缩、三维重构、异常检测等。
运动目标检测主流方法有帧差法、背景差法、光流法等。光流法源于 仿生学 思想,更贴近于直觉,大量昆虫的视觉机理便是基于光流法。 二十世纪五十年代心理学家Gibson在他的著作“The Perception of Visual World”中首次提出了以心理学实验为基础的光流法基本概念,而直到八十年代才由Horn、Kanade、Lucash和Schunck创造性地将灰度与二维速度场相联系,引入光流约束方程的算法,对光流计算做了奠基性的工作。
光流(optical flow):由于目标对象或者摄像机的移动造成的图像对象在连续两帧图像中的移动。
通俗说,对于一个图片序列,把每张图像每个像素在连续帧之间的运动速度和方向( 某像素点在连续两帧上的位移矢量 )找出来就是光流场。
第t帧的时A点的位置是(x1, y1),第t+1帧时A点位置是(x2,y2),则像素点A的位移矢量:(ux, vy) = (x2, y2) - (x1,y1)
如何知道第t+1帧的时候A点的位置涉及到不同的光流计算方法,主要有四种:基于梯度的方法、基于匹配的方法、基于能量的方法、基于相位的方法。
光流法依赖于三个假设:
根据所形成的光流场中 二维矢量的疏密程度 ,光流法可分为稠密光流与稀疏光流。
稀疏光流只对有 明显特征的组点 (如角点)进行跟踪,计算开销小。
(1)calcOpticalFlowPyrLK 基于金字塔LK光流算法,计算某些点集的稀疏光流。 参考论文《Pyramidal Implementation of the Lucas Kanade Feature TrackerDescription of the algorithm》 (2)calcOpticalFlowFarneback 基于Gunnar Farneback 的算法计算稠密光流。 参考论文《Two-Frame Motion Estimation Based on PolynomialExpansion》 (3)CalcOpticalFlowBM 通过块匹配的方法来计算光流 (4)CalcOpticalFlowHS 基于Horn-Schunck 的算法计算稠密光流。 参考论文《Determining Optical Flow》 (5)calcOpticalFlowSF 论文《SimpleFlow: A Non-iterative, Sublinear Optical FlowAlgo》的实现
PaperFree论文查重软件通过海量数据库对提交论文进行对比分析,基于大数据指纹比对算法,相比常规比对速度提升10倍,在保证查重质量的情况下,几秒钟就可以出查重结果,准确地查到论文中的潜在抄袭和不当引用。
1、论文包含目录、摘要、正文、参考文献、附录,检测内容根据学校的要求来提交,目录和参考文献格式正确被系统识别到了的话系统是不参与检测,所以目录和参考文献的格式一定要正确;2、论文检测系统是以“连续13个字重复”做为识别标准。如果找不到连续13个字与别人的文章相同,就检测不到重复。3、检测查重报告解读,全文标明引文中标黄色的文字代表这段话被判断为“引用”,标红色的文字代表这段话被判断为“涉嫌剽窃”。4、论文重复率要求:本科院校一般是15%-30%之间;硕博要求一般是5%-10%,所以同学们在查重前咨询下学校的要求,这样才能够有把握。 5、检测系统多少还是会有一点浮动,同学为了保险起见提交到学校之前用定稿系统检测一遍比学校要求底个5%最为保险6、知网查重价格和次数都有一定的限制,同学在初稿检测的时候可以用paperfree系统检测,这个系统有免费检测的次数,关键是方便修改。
深度学习论文投稿需要提供实验数据。论文是需要实验数据作为基础的,论文的一切实验数据都必须是真实的,否则没有意义。
黑烟抓拍是一套集视频采集,车辆检测,黑烟尾气抓拍及录像,GPS定位,智能分析为一体的取证执法系统。系统可对黑烟车实时监测,智能取证预警,实现快速执法,广泛应用于黑烟车监管。黑烟车是大气污染的重要原因之一在移动源污染排放贡献中,黑烟车氮氧化物的排放量。占机动车排放总量的,颗粒物占到总量的99%以上,是大气污染的重要原因之一。
黑烟车智能监控系统是一种固定安装于龙门架或L杆上,对道路上行驶的车辆进行在线监控,且能自动判别清洁车辆和冒黑烟车辆的智能系统。该系统对冒黑烟车视为“异常情况”,并能自动筛选、报警和传输。
产品特色技术领先黑烟识别准确率业界领先,运用了人工智能深度学习算法,且准确率随着数据量的增加而不断提升。 现阶段黑烟车识别成功率白天可达92%以上边缘技术、前端分析,识别过程对网络要求不高 安装便捷、建设成本低支持4G/5G传输,安装便捷,机动灵活,想安装在哪便可安装在哪系统将预警照片和视频段推送至后台,非实时将视频流传后端,相比网络专线,大幅降低建设和运营费用使用简单可视化界面,界面友好操作简单。
在学术界中,诚实和透明是非常重要的,因此大部分深度学习论文的实验数据都应该是真实可靠的。为了确保数据的真实性,研究人员应该遵循一系列共同约定的实践,比如采用一些常见的数据集,如MNIST、CIFAR、ImageNet等,或者充分公开数据集来源和预处理方法,在论文中详细描述实验步骤和参数设置,并允许其他人重复实验来验证其结果。而这些步骤在学术界中也经常被称为“实验复现”。但是,也存在一些在实验数据上作弊或篡改数据的行为。一些研究人员可能会使用实验结果的最佳情况,而隐藏失败的实验结果,或者通过微调模型或其他方式来优化结果。这种行为是不道德的,也违反了学术界的伦理道德。总的来说,在学术界中,大部分深度学习论文的实验数据都是真实可靠的,但仍需保持警惕,判断这些数据的可靠性需要综合考虑多种因素。