计算机视觉基础
如果你试过搭建一个能读车牌、或统计店里人数的系统,你就已经知道那个残酷的事实:计算机视觉是 20% 令人兴奋的模型,加上 80% 枯燥的管道。斯坦福 AI 指数的一份报告指出,图像分类在 ImageNet 这类标准基准上的错误率已经降到 1% 以下,但真实部署仍然因为光照、遮挡和标注错误而失败。这份指南带你走的是你真正需要的地基——而不是那些炒作——在你把钱砸进 GPU 或标注工具之前。
计算机视觉到底解决什么问题
计算机视觉是让机器能把图像和视频解读为有意义信息(而不仅是像素)的领域。任务可以归成几类,几乎覆盖所有商业应用:图像分类(这算缺陷还是不算)、目标检测(缺陷在哪、多大)、分割(每个目标具体属于哪些像素)、以及光学字符识别(从照片里读文字)。搞清楚你的问题属于哪一类,决定了你该选什么架构。如果你只想知道一张照片里有没有狗,分类就够了;如果你需要在人群里框出每只狗,你需要检测;如果你需要狗的轮廓去做背景抠图,你需要分割。我在生产里见过的几乎所有失败,都可以追溯到团队选错了任务类型,然后试图用其他类型来硬凑。

你不能跳过的图像数学
在神经网络看到任何图像之前,那张图像已经被转成一个数值数组。一张灰度照片变成 0 到 255 整数的二维网格;一张彩色照片变成三个这样的网格叠在一起,分别对应红、绿、蓝。因此,一张 1920x1080 的彩色图像,是一个 1080x1920x3 的张量,有超过六百万个数字。这就是为什么视觉模型比文本模型重得多——输入空间太大了。这个领域里有两种数学操作主导一切。第一种是卷积(convolution),一个小滤波器滑过图像,产生一张突出边缘、角点或纹理的特征图。第二种是池化(pooling),对特征图下采样,保留最重要的信息并减少计算量。如果这两个概念太抽象,花一个下午在 OpenCV 里给一张照片应用 Sobel 边缘滤波器。你会亲眼"看到"神经网络在它的第一层里学习检测的那些"边缘"。

为什么卷积神经网络赢了第一轮
十多年来,卷积神经网络(CNN)几乎是对一切视觉问题的默认答案。原因是架构性的:CNN 不需要看整张图像才能学出一个模式,因为卷积滤波器又小又局部。它学习的是层级化的特征,从边缘、到形状、到物体局部、再到完整物体。标志性的例子是 2012 年的 AlexNet,它把此前的 ImageNet 最佳错误率大致砍掉了一半。你今天不需要重建 AlexNet,但应该明白它为什么重要。向前传递的教训是:归纳偏置会赢。把关于局部性的知识建进模型里,胜过让模型从零重新发现它。当人们问新手该先学 CNN 还是 Transformer 时,诚实的答案通常是 CNN 或预训练的 CNN 骨干,因为它们训练更快、需要数据更少、也远好调试。

视觉 Transformer 与现代的转变
大约从 2020 年起,视觉 Transformer(ViT)挑战了 CNN 的正统地位:它把图像当作一串 patch,就像 Transformer 把词当作一串 token。结果准确率出奇地有竞争力,如今统治排行榜的是融合 CNN 和 Transformer 思想的混合模型。对从业者来说,实际的转变是:许多现代模型(比如 Hugging Face 上可用的那些)可以不必从零写底层代码就能微调。你加载一个模型 checkpoint,把最后的分类头换成自己的类别数,在自己的数据上训几个 epoch。这种迁移学习工作流——在 ImageNet 上预训练的模型被改造成你的具体领域——正是为什么一个小团队只用几千张带标注图像就能build 出一个不错的分类器。"做计算机视觉需要几百万张图像"的旧神话今天已经是假的了,前提是你从一个好的预训练 checkpoint 出发,而不是随机权重。

数据管道决定你的命运
死在数据管道里的项目比死在模型选择里的更多,这也正是这份指南该和你的通用机器学习读物放在一起的原因。如果你是新手,核心概念还没打牢,我们的 Python 入门教程 和 机器学习基础 页面覆盖了评估、过拟合和模型选择,ML 基础指南 则带着你走完从原始数据到部署模型的整个管道。你需要一组图像、一套一致的标注约定,以及一种切分数据的方式,让训练、验证、测试集永不互相污染。一个经典错误是把同一段视频里的图像既放进训练又放进测试集,这会在开发期造出人为虚高的准确率、上线却立刻失败。标注工具比模型框架更重要:CVAT、Label Studio、Roboflow 这些工具多人可以用边界框或多边形标注,并按标准格式导出。要留出的预算项包括原始视频的存储成本、训练的 GPU 时间、以及标注的人力。一份对视觉从业者的调研显示,数据准备经常吃掉一半以上的项目周期。如果你忽略这一段,选什么模型都救不了你。

选一个框架:你的第一个技术栈
搭建视觉系统,你有三个主流选择,你的选择应该跟随经验水平和部署目标。OpenCV 是一个计算机视觉库,不是深度学习框架,它最擅长图像处理、相机采集和快速原型。PyTorch 是研究与生产的重武器,生态对训练自定义模型最丰富。TensorFlow 在已经在用的团队里仍有一席之地,但我看到的大多数新视觉工作基于 PyTorch。很多从业者现在用 OpenCV 生态做预处理,只在训练那一步切到 PyTorch。如果你完全是新手,一个实操型第一个项目是:用一个公开数据及在一个下午训一个小到垃圾分类模型,然后部署成简单的 Web API。没有什么比看着你自己的模型在一张旋转图像上失败、意识到你训练时忘了加数据增强,更快地建立直觉的了。
计算机视觉工具对比
| 平台 / 工具 | 关键能力 | 价格 |
|---|---|---|
| OpenCV | 经典 C++/Python 视觉库;滤波、检测、相机处理;教程海量 | 免费,开源(BSD 许可) |
| PyTorch | 深度学习框架;自动微分;快速 GPU 训练;庞大社区 | 免费,开源 |
| TensorFlow | 端到端生产平台;TF Serving;Keras 高级 API | 免费,开源 |
| Roboflow | 数据集托管、标注、增强、一键模型训练 | 免费档直到 1000 张图;付费从每年约 1750 元起 |
| Label Studio | 开源的文本、图像、视频数据标注 | 社区版免费;企业版付费 |
| Hugging Face Hub | 数千个预训练视觉模型 checkpoint;pipeline;零样本分类器 | 免费档有使用限制;Pro 从每月 65 元起 |
常见失效模式,以及怎么测出它们
计算机视觉的错误很少是随机的。它们集中在你的训练集没有包含的现实世界变化上。最常见的几类是白天黑夜的光照变化、相机角度差异、物体互相部分的遮挡、以及类别不平衡(某类主导了你的数据)。抓住这些问题最便宜的方式,是建一个反映生产条件的小型留出集,而不只是你那精心挑选的训练照片。如果你的模型在实验室行、出门就挂,那你的测试分布和现实不匹配。第二个更微妙的陷阱是模型置信度:许多检测模型即使错了也会输出自信的框。在工业质检这类与安全相关的场合,你应该把视觉输出和一个独立检查结合,而不是盲目信任单个神经网络。
不花钱就动手
你可以用一台笔记本加一根网线就开始这段旅程。三个公开数据集给你现实的练习素材:CIFAR-10 做小图分类,COCO 做带丰富标注的目标检测,ImageNet 的子集做更大规模的问题。如果你在碰模型前还没夯实统计和评估习惯,那份 数据分析基础 值得在开训前过一遍。免费的 Google Colab 笔记本为小规模训练提供 GPU 时间,Kaggle 则提供带现成数据集和社区方案的竞赛。我推荐的流程是:克隆一个现成教程仓库,端到端跑通,然后只改一个东西,比如类别数或数据源。这一个变量的改动,比读五份指南教得更多。如果你来自数据或工程背景,你会注意到这里最难的其实不是数学而是数据管理和调试;这两者与我们关于机器学习和数据工程的 数据工程基础 里的理念高度重叠,所以你已经会的很多东西能直接迁移。
计算机视觉在你学习路径里的位置
视觉不是一座孤岛。认真的从业者会把它和经典机器学习技能搭配,因为大多数生产视觉系统其实是管道,在神经网络之上还叠着分类器、回归和业务逻辑。从一门扎实的基础课理解模型评估、过拟合和交叉验证,会让你做视觉工作出色得多,因为同样的失效模式会重现。拥有基本的数据工程习惯也有帮助——干净的目录、版本化的数据集、可复现的训练运行——因为这些习惯能阻止搞乱大多数视觉项目的混乱。你可以并行学或先学这些技能:招聘视觉岗位的公司一直把健康的 Python、数据处理和 ML 评估基础列为必备核心技能,而不是可选加分项。让视觉数据集保持干净的那套数据卫生,在我们《数据工程基础》里有深入讲解;有这些基础打底,你的视觉模型会感谢你。
常见问题
开始训视觉模型,最低需要什么 GPU?
对小数据集如 CIFAR-10、以及微调小的预训练模型,免费版 Colab GPU 或一块 4GB 显存的本地消费级显卡就够学了。是数据集大小决定显存需求:更大的图像和更大的 batch 需要更多内存。直到你训练高分辨率图像或大型自定义数据集前,你都不需要工作站级 GPU。
训一个检测器,我到底需要多少张带标注图像?
有了现代预训练骨干和迁移学习,团队带几千个标注对象起步就能看到可用结果,但数字取决于对象复杂度和可变性。简单、一致的对象,几百个样本可能就够了;高度可变的场景可能需要几万个。在扩大标注规模前,永远先量一量你的验证集。
我第一个项目该用 CNN 还是视觉 Transformer?
除非你有很强的理由,否则先学 CNN 或加预训练 CNN 骨干。CNN 训练更快、用内存更少、更好调试,这正是你学习时需要的。等你有可用基线、想在更难的数据集上榨出更多精度时,再回头考虑 Transformer。
只用免费工具能搭生产级视觉系统吗?
规模适度时可以。OpenCV、PyTorch、Label Studio 社区版和 Hugging Face 免费档覆盖了标注、训练和推理。云存储、GPU 小时数和托管会随规模增长变贵,所以按数据、算力和人力来规划成本,而不是软件许可。
为什么我的模型在夜间照片上会失败?
最可能的原因是你的训练数据里几乎没有或根本没有夜间样本,模型从没学过低光下的稳健特征。解决方式:用加亮度的增强、收集真实夜间图像,以及在训练前把整个数据集的照明做归一化。