如今,CV确实在很多不同的领域都取得了不俗的表现。但是,不清楚 CV 算法是什么。
有哪些当今常用并取得最先进性能的 CV 算法示例?
如今,CV确实在很多不同的领域都取得了不俗的表现。但是,不清楚 CV 算法是什么。
有哪些当今常用并取得最先进性能的 CV 算法示例?
有许多用于不同目的的计算机视觉 (CV) 算法和模型。所以,当然,我不能一一列举,但我可以根据我的经验和知识列举其中一些。当然,这个答案只会让您了解解决 CV 任务时会发现的算法或模型类型。
例如,有一些算法用于提取关键点和描述符(通常统称为特征),尽管描述符是实际的特征向量,而关键点是实际的特征,而在深度学习中,关键点和描述符之间的这种区别并不甚至存在,AFAIK)从图像,即特征提取算法,如SIFT、BRISK、FREAK、SURF 或 ORB。还有边缘和角落检测器。例如,Harris 角点检测器是一个非常有名的角点检测器。
如今,卷积神经网络(CNN) 在许多情况下基本上取代了所有这些算法,尤其是在有足够数据可用的情况下。CNN 不是从图像中提取典型特征(例如角点),而是通过考虑训练数据中的信息(可能也包括角点!)来提取对解决您想要解决的任务最有用的特征。因此,CNN 通常被称为数据驱动的特征提取器。有不同类型的 CNN。例如,为语义分割(这是一个 CV 任务/问题)而设计的 CNN,如u-net,或为实例分割而设计的 CNN ,如mask R-CNN.
还有一些算法可用于对特征进行归一化,例如bag-of-features算法,可用于创建固定大小的特征向量。这对于基于内容的图像检索等任务特别有用。
还有许多其他算法可以被视为 CV 算法或用于解决 CV 任务。例如,RanSaC是一种非常通用的算法,用于在存在异常值的情况下将模型拟合到数据,可用于拟合将一个图像的像素转换为另一个坐标的单应性(通常用于将平面转换为其他平面的矩阵)另一个图像的系统。这对于模板匹配(这是另一个 CV 任务)很有用,您希望在另一个目标图像中找到模板图像。这与对象检测非常相似。
还有许多图像处理算法和技术在计算机视觉中大量使用。例如,所有可用于平滑、模糊或去噪图像的滤波器(如高斯、中值、双边、非局部均值等)。如今,一些深度学习技术也取代了其中一些过滤器和图像处理技术,例如去噪自动编码器。
所有这些算法和模型都有一些共同点:它们用于处理图像和/或从图像中获取低级或高级信息。它们中的大多数通常用于从图像中提取特征(即图像中以某种方式相关的区域),以便以后可以用于训练分类器或回归器以执行某种任务(例如,查找和区分物体,例如图像中的人、汽车、狗等)。分类器/回归器通常是机器学习 (ML) 模型,例如 SVM 或全连接神经网络,但 CV 和 ML 之间存在高度重叠,因为一些 ML 工具用于解决 CV 任务(例如图像分类)。
计算机视觉是一个广阔的领域,除了深度学习占主导地位之外,还有很多很多其他算法在学术界和工业界都得到了广泛的应用。
对于图像分类/物体识别等任务,典型的范例是一些 CNN 架构,例如 ResNet 或 VGG。有很多工作可以扩展和改进 CNN,但这些年来基本架构并没有真正改变。有趣的是,有一些工作将更复杂的归纳偏差/不变量编码到深度学习建模过程中,例如空间变换器网络和组等变网络。解决此类问题的更经典的视觉方法通常包括计算某种形式的手工特征(HOG、LBP),以及训练任何现成的分类器。
对于目标检测,多年来事实上的 Viola-Jones 是性能和速度的结合(尽管当时有更准确的系统,但速度较慢)。最近,目标检测一直由深度学习主导,其架构包括 SSD、YOLO、所有 RCNN 变体等。
与对象检测相关的一个问题是分割。深度学习再次在该领域占据主导地位,使用 Mask RCNN 等算法。然而,存在许多其他方法并看到了一些用途,例如超像素(例如 SLIC)、分水岭和归一化切割。
对于图像搜索等问题,Fisher 向量和 VLAD(根据 SIFT 或 SURF 等图像描述符计算)等视觉方法仍然具有竞争力。然而,CNN 的特征也在这个领域得到了应用。
对于视频分析,CNN(通常是 3D CNN)很受欢迎。然而,他们经常利用其他视觉技术,如光流。最流行的光流算法是 Brox、TVL-1、KLT 和 Farneback。不过,最近有一些尝试使用深度学习来实际学习光流的方法。
具有如此多不同应用的一组总体技术是兴趣点检测器、图像描述符和特征编码技术。兴趣点检测器尝试定位图像或视频中的兴趣点,流行的检测器包括 Harris、FAST 和 MSER。图像描述符用于描述这些兴趣点。示例描述符包括 SIFT、SURF、KAZE 和 ORB。描述符本身可用于做各种事情,例如使用 RANSAC 算法估计单应性(用于全景和相机稳定等应用)。然而,描述符也可以被编码并汇集到一个固定长度的特征向量中,作为图像的表示。这种编码最常见的方法是特征包/视觉词包。这是基于 K-means 的。然而,
自监督和半监督学习现在在学术界也很流行,旨在充分利用大量未标记的数据。在计算机视觉环境中,流行的技术包括 MoCo 和 SimCLR,但几乎每周都会发布新方法!
计算机视觉中的另一个问题领域是生成/合成图像的能力。这并不是计算机视觉所独有的,但常见的算法是变分自动编码器 (VAE) 和生成对抗网络 (GAN)。