为何深度学习没有取代传统的计算机视觉?

摘要: 深度学习大潮为何淹没传统的计算机视觉技术?听听大牛怎么说~算法

clipboard.png
这篇文章是受到论坛中常常出现的问题所创做的:网络

深度学习是否能够取代传统的计算机视觉?

这明显是一个很好的问题,深度学习(DL)已经完全改变了计算机视觉(CV)和人工智能。许多曾经看起来不可能解决的问题都解决了,机器得到比人类更好的结果。图像分类可能就是最好的例子。工具

但深度学习仍然只是解决计算机视觉领域内问题的工具之一。它并非解决该全部问题的万能药。在这篇文章中,我想详细说明这一点。也就是说,我想阐述一下为何传统的计算机视觉技术仍然很是有用。性能

我将把这篇文章分红如下部分:学习

  • 深度学习须要大数据。
  • 深度学习有时是过拟合的。
  • 传统的计算机视觉知识能够将帮助你进行深度学习。

但在我讨论这些论点以前,我认为有必要首先详细解释什么是“传统的计算机视觉”、深度学习是什么以及它为何如此有破坏力。大数据

背景知识

在进行深度学习以前,若是你有诸如图像分类之类的任务,这时你须要执行一个称为特征提取的步骤,特征提取是很是“有趣的”。我这篇文章中将要提到一些传统的计算机视觉技术(包括诸如边缘检测,角点检测,物体检测等等)。阿里云

在使用这些技术时,例如在特征提取和图像分类方面,咱们想的是从一类对象(例如椅子,马等)的图像中提取尽量多的特征,并将这些特征视为一种“定义”(被称为“袋”)的对象。而后,你会在其余图像中搜索这些“定义”。若是一个袋子中的大量特征位于另外一个图像中,则该图像被分类为包含该特定对象(即椅子,马等)。人工智能

这种图像分类特征提取方法的难点在于,你必须选择在每一个给定图像中查找哪些特征。当你尝试分类的类别数量开始增长,例如10或20时,这会变得很麻烦而且变得几乎不可能。你是否寻找边缘?纹理信息?使用不一样类型的功能能够更好地描述不一样类别的对象。若是你选择使用许多特征,则必须处理大量参数,全部这些参数都必须由你进行微调。spa

那么,深度学习介绍了端到端的学习概念,其中(简而言之)机器被告知要针对每一个特定类别的对象学习要寻找什么。它为每一个对象提供了最具描述性和显着的特征。换句话说,神经网络已经被告知发现图像类别中的底层模式。翻译

所以,经过端到端的学习,你再也不须要手动决定使用传统计算机视觉技术来描述你的特征。有线杂志这样说道:

例如,若是你想教一个神经网络来识别一只猫,那么你不要告诉它寻找胡须,耳朵,毛皮和眼睛。你只须要展现成千上万张猫的照片,最终就能解决问题。若是它将狐狸误分类为猫,你不须要重写代码,你只须要作的是继续训练。

下面的图片描绘了特征提取(使用传统的方法)和端到端学习之间的差别:
clipboard.png
因此,这是整篇文章的背景。接下来,让咱们来看看为何传统的计算机视觉仍然是必要的,有益的。

深度学习须要大数据

首先,深度学习须要数据,不少不少的数据。上面提到的那些著名的图像分类模型都是在大数据集上进行训练的,这些用于训练的数据集的前三名是:

ImageNet——包含 1000个对象类别/类的 150万个图像。
上下文中的Microsoft通用对象(COCO)——250万个图像,91个对象类别。
PASCAL VOC数据集 ——500K图像,20个对象类别。
比通常图像分类更容易的任务不须要这么多的数据,但你仍然须要不少数据。若是你没法得到那么多的数据,你根本不知道会发生什么?(确实也有一些技巧能够提升你的训练数据量,但这些是人为的方法)。

没有充足的数据,训练出来的模型通常表现都很差,由于一台机器没有洞察能力,它不能在没有看到数据的状况下归纳它看到的东西。

对于你来讲,看到训练好的模型而且手动调整一些东西太困难了,由于深度学习模型里面有数百万个参数,其中每一个参数在训练过程当中都会被调整。从某种意义上说,深度学习模式是一个黑匣子。

传统的计算机视觉为你提供了充分的透明度,使你可以更好地评估和判断你的解决方案是否能够在训练环境以外进行工做。你能够深刻了解算法中存在的问题,若是有任何不妥,你能够很容易地弄清楚在哪里以及须要调整什么。

深度学习有时会发生过分拟合:

这多是我支持传统计算机视觉技术研究的最佳理由。训练深度神经网络须要很长时间,你须要专用硬件(例如,高性能GPU),在很长的时间内训练最新的最早进的图像分类模型。

此外,若是你的训练模型表现不佳,会发生什么?你必须返回并用不一样的训练参数重作整个过程,并且这个过程有时可能重复数百次。

但有时候这些都是没必要要的,由于有时传统的CV技术能够比DL更有效地解决问题,而且代码行数更少。例如,我曾经参与过一个项目,以检测经过传送带的每一个锡罐是否有红色的勺子。如今,你能够训练一个深度神经网络来检测勺子,或者你能够对红色上编写简单的颜色阈值算法(红色的某个范围内的任何像素都是白色的,每一个其余像素是黑色的),而后计算你有多少白色像素。

了解传统的计算机视觉可能会为你节省大量时间和减小一些没必要要的麻烦。

传统的计算机视觉将提升你的深度学习技能:

理解传统的计算机视觉实际上能够帮助你更好地进行深度学习。

例如,计算机视觉中使用的最多见的神经网络是卷积神经网络。但什么是卷积?它其实是一种普遍使用的图像处理技术(例如参见Sobel边缘检测)。了解这能够帮助你了解你的神经网络作了什么,所以能够更好地设计和调整你尝试解决的任务。

而后还有一件事叫作预处理。这是常常对你提供的模型的数据进行准备以进行训练。这些预处理步骤主要经过传统的计算机视觉技术来完成。例如,若是你没有足够的训练数据,则能够执行称为数据增长的任务。数据增长能够包括对训练集中的图像执行随机旋转,移位,剪切等,以建立“新”图像。经过执行这些计算机视觉操做,你能够大大增长你拥有的训练数据量。

结论:

在这篇文章中,我解释了为何深度学习没有取代传统的计算机视觉技术,为何后者仍应该学习。首先,我发现了DL常常须要大量数据才能执行的问题。其次,深度学习对于特定任务来讲可能会出现过分拟合现象。在这样的任务中,标准的计算机视觉能够比DL更有效地解决问题,而且代码行数更少。第三,认识传统的计算机视觉实际上可让你更好地进行深度学习。这是由于你能够更好地了解DL到底正在作什么,而且你能够执行某些预处理步骤来改善DL结果。

简而言之,深度学习只是计算机视觉的工具,固然不是万能药。不要只用它,由于它如今是新潮。传统的计算机视觉技术仍然很是有用,知道它们能够为你节省时间和解决许多麻烦。

本文由阿里云云栖社区组织翻译。

文章原标题《Why Deep Learning Has Not Superseded Traditional Computer Vision》

做者:Zbigniew

更为详细的内容,请查看原文

相关文章
相关标签/搜索