--------------------------Lecture 1: Introduction------------------------
什么是计算机视觉(CV)
简单来说,计算机视觉(Computer Vision,简称 CV)是人工智能(AI)的一个重要分支,它的目的是教计算机“看懂”这个世界。
计算机看到的只是一堆 数字矩阵(像素值)。
因此,计算机视觉的本质是一个 “信息翻译” 与 “特征提取” 的过程:
它通过数学算法,将底层无意义的像素(0-255的数字),一层层地转化为高层有意义的 语义概念 (比如:“前面是火车”、“飞机在天上飞”、“这个人在玩”)。

研究任务:
1.识别万物(通过大量数据训练)
- 图像分类 (图像里是什么?)
- 目标检测 (图像里有哪些东西且分别在什么方位?)
- 图像分割 (每一个像素属于什么部分)
![image]()
2.克服机器学习的瓶颈-过拟合问题(即对未知数据的判断/通过对算法的优化)
- 其他高级应用(理解并生成图像,如风格迁移/姿态估计)
![image]()
1. 核心痛点:语义鸿沟与视觉挑战
这是第一节课最重要的技术概念,解释了“为什么计算机视觉这么难”。
- 语义鸿沟 (The Semantic Gap):
- 人类看到的: 是一只毛茸茸的、有耳朵和尾巴的“猫”。
- 计算机看到的: 是一个巨大的数字矩阵(通常是 3 维张量:宽度 × 高度 × 3 个颜色通道 RGB)。计算机只认识 0 到 255 之间的数字,完全不知道这些数字组合在一起代表“猫”。人类的高级语义认知和计算机的底层像素数据之间的巨大差距,就是语义鸿沟。
- 图像识别的六大挑战 (Challenges in Visual Recognition):
为了弥合语义鸿沟,算法必须克服以下困难:- 视角变化 (Viewpoint variation): 同一只猫,从正面看和从上面看,它的像素矩阵完全不同。
- 光照条件 (Illumination): 白天的猫和黑夜里的猫,像素值会发生剧烈变化。
- 形变 (Deformation): 猫可以摆出各种千奇百怪的姿势(比如“猫是液体的”),形状极不固定。
- 遮挡 (Occlusion): 猫可能躲在沙发后面,只露出一条尾巴或一只耳朵。
- 背景杂乱 (Background clutter): 猫的颜色和纹理可能与它趴着的毛毯融为一体,难以分辨(伪装)。
- 类内差异 (Intraclass variation): 世界上有各种品种、颜色、大小的猫,它们看起来完全不一样,但都属于“猫”这个类别。
2. 视觉进化史:从生物学到早期计算机视觉
- 生物视觉的启发 (寒武纪大爆发): 约 5 亿年前的寒武纪,动物进化出了眼睛(视觉),这引发了物种大爆发。说明视觉是智能生物感知世界的最重要手段。
- Hubel 和 Wiesel 的猫脑实验 (1959):
- 这两位诺贝尔奖得主在猫的后脑勺插入电极,发现猫的大脑视觉皮层细胞对特定的边缘和方向敏感。
- 核心启示: 生物视觉是分层处理的。大脑首先识别简单的边缘和线条,然后组合成复杂的形状,最后识别出整个物体。这也是后来卷积神经网络(CNN)的核心设计思想(逐层提取特征)。
- 早期计算机视觉方法 (2000年代及以前):
- 早期的学者试图用纯几何或数学规则来定义世界(比如把所有东西看作积木组合)。
- 后来发展出了“特征工程” (Feature Engineering),比如 SIFT、HOG 算法。人类专家手工设计数学公式来提取图像的边缘和角点,然后交给传统的机器学习算法分类。这种方法对简单任务有效,但无法应对现实世界的极度复杂性。
![image]()
3. 转折点:ImageNet 与深度学习的崛起

-
ImageNet 数据集:
- 李飞飞教授意识到,算法发展遇到了瓶颈,是因为缺乏足够的数据。
- 她和团队耗时数年,收集并标注了包含上千万张图片、上万个类别的 ImageNet 数据集。
- 核心理念: 数据驱动(Data-driven)。让算法自己从海量数据中学习规律,而不是由人类去手工制定规则。
-
ILSVRC 挑战赛与 AlexNet (2012):
- ImageNet 举办了视觉识别挑战赛。2012年,一个名为 AlexNet 的深度卷积神经网络横空出世,将错误率降低了 10% 以上,碾压了所有传统的视觉算法。
- 这标志着深度学习时代的正式开启。算力(GPU)的提升和海量数据(ImageNet)共同促成了这一突破。
![image]()
注:后续很多典型 \(CNN\) 结构和 \(1998\) 年贝尔实验室提出的相似。且随着计算机算力的提升,像 GPU 这种图像处理单元超高的并行计算能力引入,人们开发出了更大的 \(CNN\) 模型和架构。
4. 解决问题的范式转移:数据驱动方法 (Data-Driven Approach)
- 硬编码规则的失败: 如果你想写一个 Python 函数
def recognize_cat(image):来识别猫,你是不可能用if-else语句写出来的(比如“如果某些像素是橘色,且呈三角形,就是猫耳”),因为猫的变化太多了。 - 数据驱动方法: 我们不再尝试写代码去直接识别猫,而是写代码去 “学习” 。
- 收集 (Collect): 收集大量猫咪和其他物体的图片,并打上标签(Label)。
- 训练 (Train): 编写一个机器学习模型,把图片输入进去,让模型自己去寻找“什么是猫”的统计学规律,这被称为“训练模型”。
- 预测/评估 (Predict/Evaluate): 拿一些模型从未见过的新图片让它识别,测试它的准确率。
![image]()
总结
计算机视觉极其困难(语义鸿沟与各种变化),传统的专家手工设计规则(特征工程)已经走到了尽头。要想让计算机真正“看懂”世界,我们必须采用“数据驱动方法”,利用海量数据和神经网络(特别是卷积神经网络)让计算机自己去学习特征。
参考资料:






浙公网安备 33010602011771号