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