人工智能视觉的演变
在深度学习出现之前,计算机视觉可以执行的任务非常有限,并且需要开发人员和人工操作人员进行大量的手工编码和工作。例如,如果要执行面部识别,则必须执行以下步骤:
创建数据库:你必须以特定格式捕获要跟踪的所有主题的单个图像。
注释图像:然后,对于每个单独的图像,你都必须输入几个关键数据点,例如眼睛之间的距离,鼻梁的宽度,上唇和鼻子之间的距离以及数十种定义独特特征的其他度量每个人。
捕获新图像:接下来,你必须捕获新图像,无论是照片还是视频内容。然后,你必须再次执行测量过程,在图像上标记关键点。你还必须考虑拍摄图像的角度。
经过所有这些手动工作,应用程序最终将能够将新图像中的测量结果与数据库中存储的测量结果进行比较,并告诉你它是否与它正在跟踪的任何配置文件相对应。实际上,涉及的自动化很少,大部分工作都是手动完成的。而且误差幅度仍然很大。
机器学习提供了解决计算机视觉问题的另一种方法。通过机器学习,开发人员不再需要将每个规则手动编码到他们的视觉应用程序中。相反,他们编写了“功能”,这些较小的应用程序可以检测图像中的特定图案。然后,他们使用统计学习算法(例如线性回归,逻辑回归,决策树或支持向量机(SVM))来检测模式,对图像进行分类并检测其中的对象。
机器学习帮助解决了许多传统软件开发工具和方法历来具有挑战性的问题。例如,几年前,机器学习工程师能够创建一种可以比人类专家更好地预测乳腺癌生存期的软件。但是,构建软件的功能需要数十名工程师和乳腺癌专家的努力,并且花费了大量的时间进行开发。
深度学习为进行机器学习提供了根本不同的方法。深度学习依赖于神经网络,这是一种通用功能,可以解决通过示例表示的任何问题。当你为神经网络提供特定类型数据的许多带标签的示例时,它将能够提取这些示例之间的常见模式并将其转换为数学方程式,从而有助于对将来的信息进行分类。
例如,使用深度学习创建面部识别应用程序只需要你开发或选择一种预先构建的算法,然后使用必须检测的人脸示例对其进行训练。给定足够的示例(大量示例),神经网络将能够检测面部,而无需进一步说明特征或测量。
深度学习是进行计算机视觉的一种非常有效的方法。在大多数情况下,创建良好的深度学习算法归结为收集大量带标签的训练数据并调整参数,例如神经网络和训练时期的类型和层数。与以前的机器学习类型相比,深度学习的开发和部署既简单又快速。
当前大多数计算机视觉应用程序(例如癌症检测,自动驾驶汽车和面部识别)都利用深度学习。由于可用性以及硬件和云计算资源的进步,深度学习和深度神经网络已从概念领域转变为实际应用。