问题定义
机器视觉使计算机能够理解和解释图像/视频内容。核心问题包括:图像分类与识别、目标检测与定位、语义/实例分割、姿态估计、场景理解与三维重建。
核心算法
卷积神经网络 (CNN)
卷积层提取空间特征,池化层降维,全连接层分类。LeNet、AlexNet 开创深度学习视觉应用;ResNet 通过残差连接解决梯度消失;EfficientNet 通过复合缩放平衡精度与效率。
卷积操作:y[i,j] = Σ_m Σ_n x[i+m, j+n] × k[m,n]
ResNet 残差:y = F(x) + x(恒等快捷连接)
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 为边界框回归参数
其中 p_i(c) 为类别概率,box_i 为边界框回归参数
图像分割
语义分割(FPN、DeepLabv3+)逐像素分类;实例分割(Mask R-CNN)在检测基础上增加分割分支。
FCN 输出:对于 H×W 的输入图像,输出 H×W×C 的像素级分类结果
DeepLabv3+ 使用空洞空间金字塔池化 (ASPP) 捕获多尺度上下文
DeepLabv3+ 使用空洞空间金字塔池化 (ASPP) 捕获多尺度上下文
Transformer in Vision
ViT 将图像划分为 patch 后用 Transformer 处理;DETR 基于 Transformer 实现端到端检测。
ViT: 将图像划分为 N 个 patch,展平后通过线性投影得到嵌入向量
Attention: 每个 patch 与所有其他 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 为隐层维度 |
工程实践指南
数据准备
- 数据采集:确保光照、角度、遮挡等场景多样性;工业场景注意缺陷样本稀少问题
- 数据增强:几何变换(翻转、旋转、裁剪)、色彩变换(亮度、对比度)、MixUp、CutMix
- 标注质量:边界框贴合目标、分割掩码精确、标注一致性检查
模型选择
- 实时检测:YOLOv8、YOLOv10(高 FPS),优先考虑移动端部署用 YOLOv8n
- 高精度:Faster R-CNN、Cascade R-CNN,适合对精度要求高的场景
- 分割任务:Mask R-CNN(实例分割)、DeepLabv3+(语义分割)
- 资源受限:EfficientNet-B0~B3、MobileNetV3,通过知识蒸馏进一步压缩
部署优化
- 模型量化:FP16 量化几乎无损,INT8 量化需校准数据集,INT4 仅适用于特定场景
- 推理加速:TensorRT(NVIDIA)、OpenVINO(Intel)、ONNX Runtime(跨平台)
- 边缘部署:NCNN、MNN、TNN 等移动端框架;Raspberry Pi + EdgeTPU 组合
- 批处理:动态批大小、连续 batching 提高 GPU 利用率
常见问题与解决
- 小目标检测:使用 FPN 特征金字塔、SPP/PAN 多尺度融合、增大输入分辨率
- 类别不平衡:Focal Loss、类别权重采样、OHEM 等困难样本挖掘
- 过拟合:正则化、数据增强、预训练+微调、Early Stopping
- 域偏移:Domain Adaptation、无监督微调、风格迁移
开源项目
OpenCV
最广泛使用的计算机视觉库,提供图像处理、特征提取、相机标定、目标跟踪等基础功能,支持 C++/Python/Java。
YOLOv8
Ultralytics 开发的实时目标检测模型,提供检测、分割、分类多任务支持,精度与速度兼顾,配套 Python 库和标注工具。
Detectron2
Meta 开源的检测与分割框架,基于 PyTorch 实现,支持 Mask R-CNN、Cascade R-CNN、RetinaNet 等模型。
TorchVision
PyTorch 官方视觉库,提供常用数据集、预训练模型、数据变换工具,是 CV 研究的基础设施。
参考文献
- Deep Residual Learning for Image Recognition. He et al., 2016 (ResNet)
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Ren et al., 2015
- YOLOv3: An Incremental Improvement. Redmon et al., 2018
- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. Dosovitskiy et al., 2021 (ViT)
- Mask R-CNN. He et al., 2017