计算机视觉依赖于几种基础算法,这些算法解决了诸如图像分类、对象检测和特征提取等任务。 这些算法分为三大类:传统方法、基于深度学习的方法和混合技术。 每种方法都有其独特的优势,并且适用于特定的使用案例,具体取决于诸如计算资源、准确性需求和实时要求等因素。
深度学习兴起之前开发的传统算法侧重于手工特征提取。 示例包括 SIFT(尺度不变特征变换)和 SURF(加速鲁棒特征),它们识别和匹配图像中的关键点,以用于诸如全景拼接或对象识别之类的任务。 用于人脸检测的 Viola-Jones 算法采用 Haar 类特征和 AdaBoost 来有效地实时检测对象。 HOG(定向梯度直方图)是另一种经典方法,通常与 SVM 结合使用,用于行人检测。 诸如 Canny 或 Sobel 滤波器之类的边缘检测算法也是基础,有助于勾勒图像中的形状。 虽然这些方法如今不太占主导地位,但它们在资源受限的环境中或标记训练数据稀缺时仍然有用。
基于深度学习的算法,尤其是 卷积神经网络 (CNN),通过自动执行特征学习,彻底改变了计算机视觉。 诸如 AlexNet、VGG 和 ResNet 之类的架构擅长图像分类,而 YOLO(You Only Look Once)和 Faster R-CNN 则在实时对象检测中占据主导地位。 对于分割任务,U-Net 和 Mask R-CNN 被广泛采用,以在精细的层面上标记像素。 生成对抗网络 (GAN) 能够实现图像合成和增强,例如创建逼真的人脸或恢复旧照片。 最近,视觉 Transformer (ViT) 通过将自注意力机制应用于图像补丁,挑战了 CNN,并在分类中取得了最先进的结果。 这些模型需要大量的计算能力,但为复杂的任务提供了卓越的准确性。
现代方法通常将传统思想与深度学习相结合。 例如,DETR(检测 Transformer)将 Transformer 与 CNN 集成在一起,用于端到端对象检测,从而消除了手动锚框。 EfficientNet 优化了模型缩放以平衡准确性和计算成本,从而使在边缘设备上进行部署成为现实。 诸如 SLAM(同步定位与地图构建)之类的混合技术将传感器数据与视觉算法融合在一起,用于机器人技术和 AR/VR 应用。 如今,开发人员通常会利用来自 PyTorch 或 TensorFlow 之类的框架的预训练模型,针对特定任务对其进行微调。 了解这些算法的权衡取舍(例如速度与准确性或数据要求)有助于为给定的问题选择正确的工具。