ObjectDetection101:本文带你了解深度学习框架下的物体检测,不乏有趣的问题。我们最感兴趣的问题之一是目标检测。与其他机器视觉问题一样,目标检测尚未被公认为完美的解决方案。在进入目标检测之前,让我们快速回顾一下该领域的一些常见问题。1.目标检测与其他计算机视觉问题图像分类在计算机视觉领域,最著名的问题是图像分类。图像分类是将图像分类为多个类别之一。ImageNet是学术界使用的最大数据集之一,由数百万张分类图像组成,其中一些用于ImageNet大规模视觉识别挑战赛(ILSVRC)。在过去的几年里,解决分类问题的模型已经发展出超越人类的识别能力,因此分类问题实际上已经得到解决。然而,图像分类问题有许多挑战,伴随着许多关于如何解决这些问题的文献和未解决问题的讨论。图像分类示例1.目标定位类似于图像分类。目标定位就是找到单个目标在图像中的位置。目标定位示例目标定位在现实生活中应用广泛,例如智能裁剪(通过定位目标的位置,识别出图像中需要裁剪的位置),或者进行常规的目标提取进行进一步处理。结合图像分类技术,不仅可以定位目标,还可以对物体进行分类。2.实例分割比目标检测更进一步。我们不仅要找到图片中的物体,还要找到检测到的物体对应的像素编码。我们将此问题称为实例分割或对象分割。3.目标检测在迭代处理定位和图像分类问题时,我们仍然需要同时对多个目标进行检测和分类。对象检测是在图像中查找和分类可变数量对象的过程。重要的区别是“变量”部分。与图像分类问题不同的是,由于每张图片要检测的目标数量不同,因此目标检测的输出长度是可变的。在这篇文章中,我们将详细介绍一些实际应用,讨论对象检测作为机器学习问题的主要难点,以及深度学习在过去几年中如何应用于对象检测。目标检测示例二、实际案例在Tryolabs中,我们专注于利用现有的机器学习方法来解决业务问题,所以虽然热衷于机器学习的科研问题,但最终还是要回到实际应用中去。尽管对象检测在行业中有些新鲜,但它已经有许多有用且有趣的应用程序。1.人脸检测自20世纪中叶以来,傻瓜相机开始使用更高效的自动对焦来检测人脸。虽然这是一个相对简单的目标检测应用,但该方法同样适用于其他类型的目标检测,我们将在后面介绍。2.计数计数是一个简单但经常被忽视的物体检测问题。对人、车、花甚至微生物进行计数是现实世界的要求,并且在大多数基于图像的系统中都有使用。近年来,随着监控视频设备的不断涌现,利用机器视觉将原始图像转换为结构化数据的需求越来越大。3.视觉搜索引擎***我们最喜欢的例子之一是Pinterest的视觉搜索引擎。他们将对象检测作为索引图像内容过程的一部分。例如,您可以在不同的上下文中找到特定的钱包。这比GoogleImage的反向搜索引擎仅查找相似图像更强大。Figure1图1:相似性查找:我们应用对象检测方法来定位包或鞋等产品。在这张图片中,用户可以点击图片中的目标对象来查找相似的商品。4.航拍图像分析在这个廉价无人机和卫星时代,我们可以从空中获得关于地球的最多数据。如今,越来越多的公司开始使用行星或笛卡尔实验室提供的卫星图像,应用目标检测来统计汽车、树木和船只的数量。这些举措为我们带来了高质量的数据,这在以前是不可能的。一些公司正在使用无人机摄像头对难以到达的地方进行自动检查(例如BetterView)或使用对象检测方法进行整体分析(例如TensorFlight)。此外,一些公司已经实现了无需人工干预的自动场景检测和位置识别。使用TensorFlight实现汽车、树木和行人的识别3.目标检测中的问题和挑战现在,让我们开始了解目标检测中的主要问题。1.对象的数量不确定前面我们提到了对象的数量是可变的,但是并没有解释为什么会出现问题。在训练机器学习模型时,您通常需要将数据表示为固定长度的向量。如果在训练前图像中的物体数量未知,那么模型的输出数量也是未知的。因此,一些增加模型复杂度的预处理是必要的。在传统方法中,可以使用滑动窗口函数计算输出的数量,从而为不同位置生成固定大小的特征窗口。做出预测后,一些预测被丢弃,一些被合并到最终结果中。滑动窗口示例2.不同大小的对象另一个挑战是处理不同大小的对象。面对一个简单的分类问题,您的期望是对覆盖尽可能多的图像的对象进行分类。在某些情况下,您要识别的对象可能只有几十个像素大小(或原始图片的一小部分)。过去通过使用不同大小的滑动窗口来解决这个问题,这种方法简单但效率低下。3.建模第三个挑战是同时解决目标定位和图像分类这两个问题。我们如何将这两种不同类型的需求合并到一个模型中?在深入研究深度学习以及如何应对这些挑战之前,让我们快速了解一些经典的检测方法。4.检测方法1.传统方法这里我们将重点介绍两种目前仍被广泛使用的最先进的模型。第一个是PaulViola和MichaelJones在2001年的论文《Robust Real-time Object Detection》中提出的Viola-Jones框架。该方法快速且相对简单,可以在低处理傻瓜相机上实现实时面部识别。我们不打算深入探讨它是如何工作和训练的,但一般来说,该算法的工作原理是使用Haar特征生成许多(可能数千个)简单的二元分类器。这些分类器通过多尺度级联滑动窗口进行评估,如果遇到错误的分类结果,该窗口会提前终止。另一种传统方法是使用方向梯度直方图(HOG)特征和支持向量机进行分类。这种方法仍然需要多尺度滑动窗口,虽然它的性能优于Viola-Jones,但速度要慢得多。2.深度学习方法在机器学习领域,深度学习一直是老大,尤其是在计算机视觉领域。在图像分类任务上,深度学习完全战胜了其他传统模型。同样,在物体检测方面,深度学习也代表了当前的state-of-art。看完本文,你应该对我们面临的挑战和解决方案有了一定的了解。接下来,我们将概述过去几年深度学习方法的发展。OverFeat是NYU(纽约大学)于2013年提出的,是最早使用深度学习进行目标检测的方法之一。他们提出了一种使用卷积神经网络(CNN)来处理多尺度滑动窗口的算法。(1)OverFeatNYU(纽约大学)在2013年提出的OverFeat是最早使用深度学习进行目标检测的方法之一。他们提出了一种使用卷积神经网络(CNN)来处理多尺度滑动窗口的算法。(2)在R-CNNoverFeat提出后不久,加州大学伯克利分校的RossGirshick及其同事发表了ReginswithCNNfeatures的方法,简称R-CNN,在物体识别挑战上有50%的提升.他们提出了一种对象检测的三步法:使用区域建议方法(最近的方法是“选择性搜索”)提取可能的对象使用CNN从每个区域提取特征使用支持向量机(SVM)区域对每个区域进行分类R-CNN架构Girshick、Ross等。“用于准确对象检测和语义分割的丰富特征层次结构。”2014.R-CNN虽然可以取得很好的识别效果,但是在训练中存在很多问题。为了训练模型,首先需要为训练数据集生成候选区域,然后对每个区域应用CNN特征提取(对于Pascal2012数据集通常需要处理200GB的数据),最后训练支持向量机分类器。(3)FastR-CNNR-CNN提出后不久,扩展了一个完全使用深度学习的版本——仅仅一年后,RossGirshick(目前在微软研究中心)发表了FastR-CNN。与R-CNN类似,FastR-CNN仍然使用SelectiveSearch来生成候选区域,但不同于之前提取所有候选区域然后使用支持向量机分类器的FastR-CNN,FastR-CNN使用CNN对整张图片进行分类然后使用具有集中特征图的感兴趣区域(RoI),以及用于分类和回归的前向传播网络。这种方法不仅速度更快,而且有Rol集中层和全连接层,使得模型从头到尾都可导,更容易训练。FastR-CNN最大的缺点是该模型仍然依赖于SelectiveSearch(或其他区域候选算法),这成为使用该方法进行推理时的瓶颈。FastR-CNNGirshick,罗斯。《FastR-CNN》2015.(4)在FastR-CNN提出YOLO后不久,JosephRedmon(与Girshick等人合着)发表了YouOnlyLookOnce:Unified,Real-TimeObjectDetection(YOLO)这张纸。YOLO提出了一种兼具准确率和速度的简单卷积神经网络,最终实现了实时物体检测。YOLO架构Redmon,Joseph,etal.“你只看一次:统一的实时对象检测。”2016.(5)FasterR-CNN接下来,任少卿(仍与Girshick合着,目前在Facebook研究中心)发表了FasterR-CNN,R-CNN的第三次迭代。FasterR-CNN添加了一个RegionProposalNetwork(RPN)来尝试去除对SelectiveSearch算法的依赖,这使得模型能够端到端地得到充分训练。我们暂时不会深入探讨RPN是如何工作的细节,但抽象地说,它根据称为“objectness”的分数输出对象。在Rol集中层和全连接层中使用这些对象来实现分类目标。FasterR-CNN架构Ren,Shaoqing,etal.“更快的R-CNN:使用区域建议网络进行实时对象检测。”2015.(6)SSD和R-FCN***,有两篇论文不允许不提:SingleShotDetector(SSD)和Region-basedFullyConvolutionalNetworks(R-FCN)。前者使用基于YOLO的多尺寸卷积特征图来提高结果和速度。后者基于FasterR-CNN的架构,但只使用了卷积网络。五、数据集的重要性数据集在研究中起着非常重要的作用,但其重要性往往被低估。每发布一个新的数据集,就会发表论文,并在此基础上对新的模型进行对比改进,让不可能成为可能。不幸的是,我们还没有足够的数据集来进行对象检测。生成数据既困难又昂贵,拥有良好数据库的公司通常不愿发布其数据,而学校也无法访问良好的数据集。话虽如此,我们确实有一些不错的公共数据可用,下面的列表是当前可用的主要数据。6.结语***在目标检测领域,无论是行业应用还是新算法,还有很多未知领域值得我们去探索。虽然本文只是对目标检测做了一个简单的概述,但我们仍然希望它能帮助您对目标检测领域有一个初步的了解,为您的进一步学习打下基础。原文:https://tryolabs.com/blog/2017/08/30/object-detection-an-overview-in-the-age-of-deep-learning/【本文为专栏组织原文翻译大数据文摘微信公众号《大数据文摘(id:BigDataDigest)》】点此查看作者更多好文
