计算机视觉实战路线
计算机视觉(Computer Vision, CV)研究如何让机器从图像和视频中提取信息。学习时应先掌握图像数据与评估方法,再进入分类、检测、分割、跟踪和视觉语言模型。
1. 任务地图
| 任务 | 输入 | 输出 | 典型应用 |
|---|---|---|---|
| 图像分类 | 单张图像 | 类别/概率 | 缺陷分类、场景识别 |
| 目标检测 | 图像 | 类别、边界框 | 车辆/行人检测 |
| 语义分割 | 图像 | 像素类别图 | 道路、天空、可行驶区域 |
| 实例分割 | 图像 | 每个实例的掩码 | 人群、零件计数 |
| 姿态估计 | 图像/视频 | 关键点 | 人体动作、机械臂 |
| 多目标跟踪 | 视频帧 | 跨帧目标 ID | 交通流分析 |
| OCR | 图像 | 文本及位置 | 仪表读数、票据识别 |
| 图文理解 | 图像+文本 | 对齐、描述、问答 | 图像检索、视觉助手 |
2. 核心知识
- 图像表示:像素、通道、分辨率、色彩空间、归一化。
- 卷积:局部感受野、权重共享、步长、填充、感受野。
- CNN:LeNet、AlexNet、VGG、ResNet、EfficientNet。
- 检测:Anchor-based、Anchor-free、Faster R-CNN、YOLO、DETR。
- 分割:FCN、U-Net、DeepLab、Mask R-CNN、SAM。
- Transformer:ViT、Swin Transformer、视觉语言对齐。
- 数据增强:裁剪、翻转、颜色扰动、MixUp、CutMix;增强必须符合任务语义。
卷积层输出尺寸(单维)常用公式:
其中 H 为输入尺寸,K 为卷积核,P 为 padding,S 为 stride,D 为 dilation。
3. 评估指标
- 分类:Accuracy、Precision、Recall、F1、混淆矩阵、Top-1/Top-5。
- 检测:IoU、Precision/Recall、AP、mAP;报告使用的 IoU 阈值与类别平均方式。
- 分割:mIoU、Dice、Pixel Accuracy;注意类别不平衡。
- 跟踪:MOTA、IDF1、HOTA;同时检查 ID Switch 和遮挡场景。
- 部署:端到端延迟、FPS、显存/内存、模型大小、功耗。
边界框 IoU:
高 mAP 不代表在关键场景一定可靠;应按光照、天气、遮挡、小目标、长尾类别分层评估。
4. 数据集入口
- MNIST:入门分类。
- CIFAR-10/100:小图像分类。
- ImageNet:大规模分类预训练与评估,需遵循访问和许可要求。
- COCO:检测、分割、关键点和图像描述。
- Pascal VOC:经典检测/分割。
- Open Images:大规模图像及标注。
- BDD100K:驾驶场景图像与视频任务。
- KITTI:自动驾驶视觉、深度和 3D 任务。
下载前确认数据集版本、许可、标注格式、训练/验证/测试划分和是否允许商业使用。
5. 开源项目与工具
- PyTorch:训练框架。
- timm:图像模型与训练组件。
- Ultralytics:YOLO 生态与视觉任务工具。
- MMDetection:检测算法工具箱。
- MMSegmentation:语义分割工具箱。
- Detectron2:检测与分割研究平台。
- Segment Anything:通用分割研究。
- OpenCV:图像处理与视觉基础工具。
6. 项目阶梯
- 分类基线:用 CIFAR-10 训练 ResNet,比较随机初始化与迁移学习。
- 目标检测:用 COCO 子集或自定义数据训练检测模型,检查标注质量和 mAP。
- 分割:用道路/工业缺陷图像训练 U-Net,分析小目标和类别不平衡。
- 视频跟踪:检测器结合跟踪器,统计 ID Switch 和遮挡恢复。
- 边缘部署:导出 ONNX,比较 FP32、FP16、INT8 的精度、延迟和资源占用。
每个项目都要保留数据说明、训练配置、指标、失败样本、模型许可证和可复现步骤。
7. 经典论文阅读顺序
- AlexNet:深度 CNN 在大规模图像分类中的突破。
- VGG:小卷积核堆叠。
- ResNet:残差连接。
- Faster R-CNN:区域提议与检测。
- U-Net:编码器-解码器分割结构。
- Vision Transformer:将 Transformer 用于图像识别。
- DETR:端到端目标检测。