目标检测VS其他计算机视觉问题分类问题这或许是计算机视觉领域最大的问题。主要是指将一幅图像归入某一类。ImageNet是学术界最大的数据集之一,由数百万张分类图像组成(部分)用于年度ImageNet大规模视觉识别挑战赛(ILSVRC)。近年来,分类模型已经超越了人类的表现,所以这个问题基本上已经解决了。图像分类领域存在许多挑战,但也有许多文章描述已解决和未解决的挑战。分类示例对象定位与分类类似,定位问题是找到图像中单个对象的位置。目标示例目标在现实生活中很有用。例如,智能裁剪(根据对象所在的位置裁剪图像)甚至提取规则对象以使用不同的技术进一步处理它们。它可以与分类相结合,不仅可以定位对象,还可以对对象进行分类。实例分割比对象检测更进一步。我们不仅要在图像中找到对象,还要为每个检测到的对象找到像素级掩码。我们将此问题称为实例或对象分割。物体检测结合了定位和分类问题,最终我们需要同时对多个物体进行检测和分类。对象检测是对图像上可变数量的对象进行定位和分类的问题。重要的区别是“变量”部分。与分类问题相比,目标检测的输出数量是可变的,因为每张图像检测到的目标数量可能不同。在这篇文章中,我们将详细介绍目标检测的实际应用,它作为机器学习问题的主要问题是什么,以及解决这个问题的方法是如何在过去几年逐渐成为深度学习的。对象检测示例实际应用在Tryolabs,我们专注于应用最先进的机器学习技术来解决业务问题,因此尽管我们喜欢所有疯狂的机器学习研究问题,***我们更多地考虑实际应用问题.尽管对象检测在业界仍然是一种新工具,但已经有许多使用对象检测技术的实用且有趣的应用程序。人脸检测自2000年代中期以来,一些傻瓜相机已经包含人脸检测功能,以实现更高效的自动对焦。虽然这只是一种狭义的物体检测,但它使用的方法也适用于其他类型的物体,我们将在后面详细介绍。计数对象检测的一个非常简单但经常被忽视的用途是计数。统计人、车、花甚至微生物数量的能力应该是各种图像信息系统都具备的。随着最近视频监控设备的激增,使用计算机视觉方法将原始信息转换为结构化数据的机会难得。视觉搜索引擎我们都喜欢Pinterest视觉搜索引擎。他们使用对象检测技术作为系统的一部分来索引图像中的不同部分。这样,当你搜索一个特定的包时,你可以在不同的场景中搜索你想要的包的图片。此功能比GoogleImage的反向搜索引擎强大得多。相似图像:我们应用对象检测技术来定位包或鞋等产品。在这个例子中,用户可以点击一个自动标记的对象来查看类似的产品。航空影像分析以前从未有过廉价的无人机和(几乎)负担得起的卫星发射服务可用于如此多的地球鸟瞰图。公司已经在使用Planet和DescartesLabs等公司的卫星图像来应用物体检测技术来计算车辆、树木和船只的数量。它带来了以前不可能(或非常昂贵)的高质量图像,现在被越来越多的人使用。一些公司使用无人机自动勘测人类难以进入的区域(如Betterview),或使用物体检测技术进行一般分析(如TensorFlight)。除此之外,一些公司还使用这项技术在无需人工干预的情况下自动检测和定位问题。TensorFlight目标检测的问题和挑战让我们深入探讨目标检测的主要问题。可变数量的对象问题我们之前提到过图像中可变数量的对象,但我们忽略了为什么它会成为一个问题。在训练机器学习模型时,通常需要将数据表示为固定大小的向量。由于事先不知道图像中的对象数量,因此我们不知道正确的输出数量。正因为如此,我们需要进行一些后处理,这也增加了模型的复杂度。使用基于滑动窗口的方法解决了输出数量可变的问题,该方法在图像的不同位置获得滑动窗口的固定大小特征。在得到所有的预测后,一些滑动窗口被丢弃,一些被组合起来得到最终的输出。大小另一个大挑战是对象的大小不一致。在做简单分类的时候,我们希望能够对占图像比例最大的对象进行分类。另一方面,您要查找的对象可能只有几个像素大小(或只占原始图像的一小部分)。传统方法使用不同大小的滑动窗口来解决这个问题,简单但效率低下。该模型的第三个挑战是同时解决两个问题。我们如何将定位和分类这两种不同类型的问题最佳地组合到一个模型中?在继续深入学习以及如何应对这些挑战之前,让我们快速回顾一下经典方法。经典方法尽管近年来开发了许多不同类型的方法,但我们将主要介绍两种最好的方法(至今仍被广泛使用)。首先是PaulViola和MichaelJones在2001年的论文《鲁棒实时目标检测》中提出的ViolaJones框架。这种方法速度快,比较简单,所以傻瓜相机的人脸检测就采用这种算法,可以实现真实-计算量小的时间检测。我们不会介绍它如何工作以及如何训练它的低级细节,而是介绍它的高级算法。它通过使用Haar特征来产生多个(可能数千个)简单的二元分类器来工作。这些分类器通过级联的多尺度滑动窗口进行评估,在负分类的情况下,错误分类会被及时丢弃。另一种类似的经典方法是使用方向梯度直方图(HOG)作为特征,使用支持向量机(SVM)作为分类器。它仍然依赖于多尺度滑动窗口,虽然它比ViolaJones效果好得多,但也慢得多。深度学习方法众所周知,深度学习是机器学习领域真正的“游戏规则改变者”,尤其是在计算机视觉领域。与深度学习模型在图像分类任务上完全碾压其他经典模型类似,深度学习模型也是目标检测领域最好的方法。现在您对目标检测的挑战是什么以及如何解决这些挑战有了更直观的了解,我们将概述过去几年深度学习方法在目标检测领域的演变。OverFeat第一个将深度学习用于物体检测并取得长足进步的方法是纽约大学在2013年提出的Overfeat,他们提出了一种使用卷积神经网络(CNN)的多尺度滑动窗口算法。在Overfeat中提出R-CNN后不久,RossGirshick等人。来自加州大学伯克利分校发表了基于卷积神经网络特征的区域方法(RegionswithCNNfeatures,R-CNN),在目标检测竞赛中相比其他方法取得了50%的性能提升。他们提出了一种三阶段方法:使用区域建议算法(最新的选择性搜索算法)提取包含可能对象的区域使用CNN在每个区域上提取特征。使用支持向量机对区域进行分类。Girshick、罗斯等人。“用于准确对象检测和语义分割的丰富特征层次结构。”2014.虽然该方法取得了很好的效果,但在训练阶段存在很多问题。训练网络,首先生成训练数据集的候选区域,然后使用CNN为每个区域提取特征(对于Pascal2012训练数据集,通常需要生成大于200GB的中间文件),***训练SVM分类器。在FastR-CNN一年后,RossGirshick(微软亚洲研究院)发表了FastR-CNN,迅速演变成一种纯粹的深度学习方法。与R-CNN类似,也是使用selectivesearch来生成regionproposals,但与R-CNN不同的是,FastR-CNN是在整张图像上使用CNN提取特征,然后在特征图上使用区域兴趣池化(RegionofInterest,ROI),最后使用前馈神经网络进行分类和回归。这种方法不仅速度快,而且由于RoIpooling层和全连接层的存在,可以端到端的推导模型,训练起来也更容易。最大的缺点是该模型仍然依赖于选择性搜索(或其他区域候选算法),这已成为模型推理阶段的瓶颈。吉尔希克,罗斯。《FastR-CNN》2015.YOLO不久之后,JosephRedmon(Girshick也是合著者之一)发表了一篇论文,名为《你只用看一遍:统一框架的实时目标检测》(YouOnlyLookOnce:Unified,Real-TimeObjectDetection(YOLO))论文。YOLO提出了一种简单的卷积神经网络方法,取得了很好的效果,而且速度非常快,首次实现了实时物体检测。雷德蒙、约瑟夫等人。“你只看一次:统一的实时对象检测。”2016.FasterR-CNN随后,任少卿(Girshick也是合著者,现为Facebook研究院)发表了FasterR-CNN,这是R-CNN系列的第三代。FasterR-CNN添加了所谓的“RegioProosalNetwork(RPN)”,试图摆脱搜索选择算法,从而使模型能够端到端地得到充分训练。我们不会详细介绍RPN的工作原理,但简而言之,它所做的是根据“属于目标”的分数输出可能的目标。RoI池化层和全连接层使用这些对象进行分类。我们将在后续博客中详细介绍此结构。任少卿等。“更快的R-CNN:使用区域建议网络进行实时对象检测。”2015.SSD和R-FCN***,有两篇著名的paper,《单帧检测器》(SingleShotDetector,SSD),是在YOLO的基础上改进的,通过使用多尺度卷积特征图来达到更好的效果和速度,以及《基于区域的全卷积网络》(Region-basedFullyConvolutionalNetworks,R-FCN),它采用了FasterRCNN的架构,但只包含卷积网络。数据集的重要性数据集在研究中扮演着非常重要(有时被低估)的角色。每当一个新的数据集发布,新的论文接踵而至,新的模型相互比较,不断进步,将可能性推向极致。不幸的是,用于对象检测的数据集并不多。数据更难获得(也更昂贵),公司可能不愿意免费发布他们投资的产品,大学也没有资源。但是,仍然有一些很好的数据集。以下是一些主要的公共数据集:结论总之,目标检测领域有很多机会,无论是在未知应用中还是在提出新方法以推进该领域的最新技术水平方面。有效。尽管这只是对象检测的概述,但我希望它能让您对对象检测有一个基本的了解,从而引导您深入了解。在接下来的几周内,我们将针对对象检测框架、评估标准和训练模型方法的实现细节做一系列文章。我们还将尝试将过去的目标检测算法应用于其他问题。
