计算机视觉技术从起步阶段发展至今,已经成为各种应用中不可或缺的一部分。它不仅存在于手机的摄像头中,用于人脸识别,还应用于自动驾驶汽车中识别交通信号、标志和行人,以及在工业机器人中监测问题和导航避障。
计算机视觉的主要目标是使计算机能够像人类一样,甚至超越人类地理解和解释世界。这项技术经常使用C++、Python和MATLAB等编程语言。它是增强现实技术的重要组成部分。要学习计算机视觉,需要掌握的工具包括OpenCV、TensorFlow、GPU、YOLO、Keras等。计算机视觉领域涵盖了数字信号处理、神经科学、图像处理、模式识别、机器学习(ML)、机器人技术和人工智能(AI)等多个领域的知识。
在深入探讨“计算机视觉流程”的结构之前,先来理解一下计算机视觉究竟是什么。计算机视觉是一门让计算机理解并标记图像中存在内容的学科。例如,观察下面的图像:
服装、鞋类和手提包
从上述图像中,解释什么是连衣裙或鞋子,对于从未见过服装的人来说并不容易。计算机视觉面临的问题也是如此。为了解决这个问题,需要使用大量的服装、鞋子和手提包的图片,并告诉计算机这些图片是什么,然后让计算机自己找出区分连衣裙、鞋子、衬衫和手提包的模式。
计算机视觉的应用已经广泛地扩展到各个领域。以下是一些例子:
计算机视觉流程:
计算机视觉流程是大多数计算机视觉应用将经历的一系列步骤。许多视觉应用从获取图像和数据开始,然后处理这些数据,执行一些分析和识别步骤,最后执行一个动作。
一般流程如下所示:
主要步骤或第一步是关于数据标准化的。让来了解一下数据标准化。
数据标准化:
预处理图像是关于标准化输入图像,以便可以继续沿着流程前进,并以相同的方式分析图像。在机器学习任务中,预处理步骤通常是最重要的之一。
例如,假设创建了一个简单的算法来区分红玫瑰和其他花卉:
简单分类算法
该算法计算给定图像中的红色像素数量,如果红色像素足够多,它就将其分类为红玫瑰。在这个例子中,只是提取颜色特征。
注意:
如果图像的大小不同,甚至裁剪方式不同,那么这种计数策略很可能会失败!因此,在图像沿着流程前进之前,对图像进行预处理以使其标准化是至关重要的。
将图像视为数值数据:
图像中的每个像素只是一个数值,也可以改变这些像素值。可以将每个像素值乘以一个标量来改变图像的亮度,可以将每个像素值向右移动,等等。
将图像视为数值网格是许多图像处理技术的基础。大多数颜色和形状转换都是通过数学上对图像进行操作,逐像素地改变它来完成的。
训练神经网络:
X = 输入
a = 激活函数
W = 卷积神经网络中的权重
J = 损失函数
Alpha = 学习率
y = 真实值
y' = 预测值
k = 迭代次数