2月28日计算机视觉应用的关键组件之一是卷积神经网络
CNN由深度学习先驱Yann LeCun在 1980 年代发明,是一种神经网络,可有效捕捉多维空间中的模式。这使得 CNN 尤其适用于图像,尽管它们也用于处理其他类型的数据。(为了专注于视觉数据,我们将在本文中将卷积神经网络视为二维的。)
每个卷积神经网络都由一个或多个卷积层组成,这是一个从输入图像中提取有意义值的软件组件。每个卷积层都由几个过滤器组成,正方形矩阵在图像上滑动并记录不同位置的像素值的加权和。每个过滤器都有不同的值,并从输入图像中提取不同的特征。卷积层的输出是一组“特征图”。
当堆叠在一起时,卷积层可以检测视觉模式的层次结构。例如,较低的层将为垂直和水平边缘、角落和其他简单模式生成特征图。下一层可以检测更复杂的图案,例如网格和圆形。随着您深入网络,这些层将检测复杂的对象,例如汽车、房屋、树木和人。
大多数卷积神经网络使用池化层来逐渐减小其特征图的大小并保留最突出的部分。Max-pooling 是目前 CNN 中使用的主要池化层类型,将最大值保留在一块像素中。例如,如果您使用大小为 2 的池化层,它将从前一层生成的特征图中获取 2×2 像素的补丁,并保持最高值。此操作将地图大小减半并保留最相关的特征。池化层使 CNN 能够概括其能力,并且对图像中对象的位移不太敏感。
最后,卷积层的输出被展平为一个单维矩阵,该矩阵是图像中包含的特征的数值表示。然后将该矩阵输入一系列“完全连接”的人工神经元层,这些层将特征映射到网络预期的输出类型。
卷积神经网络最基本的任务是图像分类,其中网络将图像作为输入并返回一个值列表,这些值表示图像属于几个类别之一的概率。例如,假设您想训练一个神经网络来检测流行的开源数据集ImageNet中包含的所有 1,000 类对象。在这种情况下,您的输出层将有 1,000 个数字输出,每个数字输出都包含图像属于这些类别之一的概率。
您始终可以从头开始创建和测试自己的卷积神经网络。但大多数机器学习研究人员和开发人员都使用几个久经考验的卷积神经网络之一,例如 AlexNet、VGG16 和 ResNet-50。