机器视觉

CV · CNN · Detection · Segmentation

问题定义

机器视觉使计算机能够理解和解释图像/视频内容。核心问题包括:图像分类与识别、目标检测与定位、语义/实例分割、姿态估计、场景理解与三维重建。

核心算法

卷积神经网络 (CNN)

卷积层提取空间特征,池化层降维,全连接层分类。LeNet、AlexNet 开创深度学习视觉应用;ResNet 通过残差连接解决梯度消失;EfficientNet 通过复合缩放平衡精度与效率。

卷积操作:y[i,j] = Σ_m Σ_n x[i+m, j+n] × k[m,n]
ResNet 残差:y = F(x) + x(恒等快捷连接)

目标检测

两阶段方法(Faster R-CNN)先提取候选框再分类;单阶段方法(YOLO、SSD)直接回归边界框与类别。

YOLO 损失 = Σ_i (box_i^conf × Σ_c (p_i(c) - p*_i(c))²) + λ_coord Σ_i box_i^coord + ...
其中 p_i(c) 为类别概率,box_i 为边界框回归参数

图像分割

语义分割(FPN、DeepLabv3+)逐像素分类;实例分割(Mask R-CNN)在检测基础上增加分割分支。

FCN 输出:对于 H×W 的输入图像,输出 H×W×C 的像素级分类结果
DeepLabv3+ 使用空洞空间金字塔池化 (ASPP) 捕获多尺度上下文

Transformer in Vision

ViT 将图像划分为 patch 后用 Transformer 处理;DETR 基于 Transformer 实现端到端检测。

ViT: 将图像划分为 N 个 patch,展平后通过线性投影得到嵌入向量
Attention: 每个 patch 与所有其他 patch 计算自注意力,捕获全局依赖

算法复杂度分析

模型/操作 时间复杂度 空间复杂度 备注
卷积层 (Conv) O(H × W × C_in × C_out × K²) O(C_in × C_out × K²) H×W 为输出尺寸,K 为卷积核大小
ResNet-50 O(N × 3.8 GFLOPs) O(25.6M 参数) ImageNet 预训练模型
YOLOv8-m O(N × 78.7 GFLOPs) O(25.9M 参数) 实时检测,mAP 50.2%
Faster R-CNN O(N × 180 GFLOPs) O(60M 参数) 两阶段检测,精度高
ViT-B/16 O(N² × d + N × d²) O(N² + d²) N 为 patch 数,d 为隐层维度

工程实践指南

数据准备

模型选择

部署优化

常见问题与解决

开源项目

OpenCV

最广泛使用的计算机视觉库,提供图像处理、特征提取、相机标定、目标跟踪等基础功能,支持 C++/Python/Java。

YOLOv8

Ultralytics 开发的实时目标检测模型,提供检测、分割、分类多任务支持,精度与速度兼顾,配套 Python 库和标注工具。

Detectron2

Meta 开源的检测与分割框架,基于 PyTorch 实现,支持 Mask R-CNN、Cascade R-CNN、RetinaNet 等模型。

TorchVision

PyTorch 官方视觉库,提供常用数据集、预训练模型、数据变换工具,是 CV 研究的基础设施。

参考文献