1. 计算机视觉概览

1.1 什么是计算机视觉?

计算机视觉(Computer Vision, CV)就是让机器 “看懂” 图像和视频,像人一样用眼睛观察世界、理解世界。人能一眼认出 “这是一只猫”“那是一辆车”,计算机视觉就是让机器也具备这种能力。

举个生活化例子:

你用手机拍一张照片,AI 自动给你美颜、识别人脸、生成表情包,这就是计算机视觉在工作。

你开车时,车载摄像头识别道路标线、红绿灯、行人,提醒你 “前方有行人,请注意避让”,这也是计算机视觉。

你刷短视频时,AI 自动给视频加特效、识别字幕、推荐相似内容,背后都是计算机视觉技术。

再用 “翻译” 类比:

人眼看到一张图片,大脑把像素信息翻译成 “猫”“狗”“树” 等概念。

计算机视觉就是把图像的像素数据,翻译成机器能理解的 “标签”“坐标”“语义”,比如 “这是一只猫,位置在图片左上角”。

1.2 计算机视觉的核心任务

计算机视觉的任务很多,我们用生活场景来分类:

  1. 图像分类:给整张图片打标签,比如 “这是猫”“这是狗”“这是风景”。

    • 例子:手机相册自动分类 “人物”“风景”“美食”,就是图像分类。
    • 类比:你看到一张照片,直接说 “这是火锅”,不用管火锅里有什么菜。
  2. 目标检测:找出图片里的所有物体,标出位置和类别,比如 “图片里有一只猫(坐标 x1,y1,x2,y2)、一辆车(坐标 x3,y3,x4,y4)”。

    • 例子:自动驾驶识别道路上的行人、车辆、红绿灯,就是目标检测。
    • 类比:你看到一张火锅照片,不仅说 “这是火锅”,还指出 “这里有肥牛、那里有金针菇”。
  3. 语义分割:给每个像素打标签,区分不同物体的边界,比如 “这部分像素是猫,那部分像素是背景”。

    • 例子:美颜相机里的 “磨皮”“瘦脸”,就是先分割出人脸区域,再对区域内的像素做处理。
    • 类比:你看到一张火锅照片,把每个菜的区域都圈出来,肥牛是一块,金针菇是一块,互不重叠。
  4. 实例分割:比语义分割更细,区分同一类别的不同个体,比如 “这是猫 1,那是猫 2”。

    • 例子:监控摄像头识别 “这是张三,那是李四”,就是实例分割。
    • 类比:你看到一张火锅照片,把两盘肥牛分别圈出来,标注 “肥牛 1”“肥牛 2”。
  5. 图像生成:根据文字或噪声,生成新的图像,比如 “输入‘一只橘猫在草地上睡觉’,AI 生成一张对应的图片”。

    • 例子:AI 绘画工具(Midjourney、 Stable Diffusion)、表情包生成,都是图像生成。
    • 类比:你根据朋友的描述 “一只橘猫在草地上睡觉”,在纸上画出来。
  6. 图像检索:根据一张图片,找到相似的图片,比如 “拍一张美食照片,找到同款美食的做法视频”。

    • 例子:淘宝 “拍立淘”,拍一张衣服照片,找到同款商品,就是图像检索。
    • 类比:你看到一张好看的壁纸,去网上搜 “类似的壁纸”。

1.3 计算机视觉的发展历程

我们用 “手机拍照” 的进化来类比计算机视觉的发展:

  1. 传统计算机视觉(2012 年之前):靠人工提取特征,比如 “边缘”“角点”“纹理”,再用传统机器学习分类,就像早期的功能机拍照,只能拍模糊的照片,识别能力很弱。

    • 例子:早期的人脸识别,只能识别正脸、光线好的照片,侧脸、戴口罩就认不出来。
    • 类比:你用胶卷相机拍照,只能靠手动调光圈、快门,拍出来的照片模糊,细节少。
  2. 深度学习时代(2012 年之后):AlexNet 模型出现,用卷积神经网络(CNN)自动提取特征,效果远超传统方法,就像智能手机拍照,自动美颜、HDR,拍出来的照片清晰,识别能力大幅提升。

    • 例子:现在的人脸识别,侧脸、戴口罩、光线暗都能识别,甚至能识别双胞胎。
    • 类比:你用智能手机拍照,自动优化光线、肤色,拍出来的照片清晰,细节丰富。
  3. 大模型时代(2020 年之后):Transformer 模型、多模态大模型出现,能同时处理图像、文本、语音,实现 “图文理解”“视频理解”,就像现在的旗舰手机拍照,能识别场景、自动生成文案、一键修图。

    • 例子:GPT-4V、文心一言,能根据图片回答问题,比如 “这张图片里的猫是什么品种?”“这道菜怎么做?”。
    • 类比:你用旗舰手机拍照,不仅能拍得清晰,还能自动识别 “这是火锅”,生成 “火锅的做法” 文案。

2. 数字图像处理基础

2.1 什么是数字图像?

数字图像就是把真实世界的图像,拆成一个个小方块(像素),用数字表示每个方块的颜色和亮度,就像把一张纸裁成无数个小格子,每个格子涂一种颜色,拼起来就是完整的图像。

举个例子:

一张 28x28 的手写数字图片,就是 28 行、28 列,共 784 个像素,每个像素用 0-255 的数字表示亮度(0 是黑色,255 是白色)。

一张彩色图片,每个像素用三个数字表示(R、G、B),分别代表红色、绿色、蓝色的强度,范围 0-255,比如 (255,0,0) 是纯红色,(0,255,0) 是纯绿色,(0,0,255) 是纯蓝色。

生活化类比:

数字图像就像 “十字绣”,每个格子就是一个像素,用不同颜色的线绣出来,拼起来就是完整的图案。

黑白图像是 “单色十字绣”,只有黑色和白色;彩色图像是 “三色十字绣”,用红、绿、蓝三种线混合出所有颜色。

2.2 图像的基本属性

  1. 分辨率:图像的像素数量,比如 1920x1080(1080P)、3840x2160(4K),分辨率越高,图像越清晰,细节越多,就像十字绣的格子越多,图案越精细。

    • 例子:同样一张照片,1080P 分辨率看起来清晰,480P 分辨率就模糊,因为像素少了。
    • 类比:同样大小的纸,格子越多,能绣的细节越多,图案越清晰。
  2. 位深度:每个像素用多少位二进制表示颜色,比如 8 位(256 色)、24 位(1677 万色),位深度越高,颜色越丰富,就像十字绣的线颜色越多,能调出的颜色越细腻。

    • 例子:8 位图像只有 256 种颜色,看起来有 “色块”;24 位图像有 1677 万种颜色,看起来和真实世界一样。
    • 类比:线颜色越多,能调出的渐变颜色越细腻,图案越逼真。
  3. 通道:图像的颜色通道,黑白图像只有 1 个通道(亮度),彩色图像有 3 个通道(R、G、B),还有带透明度的 4 通道(RGBA),就像十字绣的线,单色只有 1 种线,三色有 3 种线。

    • 例子:把彩色图片的 R 通道单独拿出来,就是一张只有红色信息的灰度图;G 通道就是只有绿色信息的灰度图。
    • 类比:把三色十字绣的红线单独抽出来,就是一张只有红色的图案。
  4. 图像格式:存储图像的文件格式,常见的有 JPG、PNG、BMP、GIF:

    • JPG:有损压缩,体积小,适合照片,不支持透明。
    • PNG:无损压缩,体积大,支持透明,适合图标、截图。
    • BMP:无压缩,体积最大,画质最好,适合专业处理。
    • GIF:支持动画,颜色少,适合表情包。
    • 类比:不同的图像格式就像不同的包装方式,有的包装小(JPG),有的包装结实(PNG),有的能装动画(GIF)。

2.3 图像的数学表示

数字图像本质上是二维矩阵(黑白图像)或三维矩阵(彩色图像),每个元素就是一个像素的数值。

黑白图像:形状为 (高度, 宽度) 的二维矩阵,比如 28x28 的手写数字图像,矩阵里的每个元素是 0-255 的整数。

彩色图像:形状为 (高度, 宽度, 通道数) 的三维矩阵,比如 224x224 的彩色猫图片,矩阵里的每个元素是 (R,G,B) 三个 0-255 的整数。

举个具体例子:一张 3x3 的黑白图片,像素如下:

plaintext

255 200 100
150  0   50
75  125 255

这张图片的矩阵就是:

plaintext

[[255, 200, 100],
 [150,   0,  50],
 [ 75, 125, 255]]

其中 0 是黑色,255 是白色,数值越大,亮度越高。

生活化类比:

图像矩阵就像 “棋盘”,每个格子就是一个像素,格子里的数字就是颜色的深浅,数字越大,颜色越浅(白色),数字越小,颜色越深(黑色)。


3. 图像预处理技术

3.1 为什么要做图像预处理?

图像预处理就是在把图像喂给模型之前,先 “整理” 一下图像,让模型更容易学习,就像你做饭之前,先洗菜、切菜,让食材更容易烹饪。

举个例子:

一张模糊、光线暗、歪歪扭扭的猫图片,模型很难识别出 “这是猫”;预处理之后,把图片变清晰、调亮、摆正,模型就能轻松识别。

一张尺寸不一的图片,有的是 1080P,有的是 480P,预处理之后统一成 224x224,模型才能处理。

生活化类比:

图像预处理就像 “给照片修图”,磨皮、调亮、裁剪、旋转,让照片更好看,也让 AI 更容易识别。

3.2 常见的图像预处理技术

3.2.1 尺寸调整(Resize)

把图像调整到模型需要的尺寸,比如 224x224、28x28,就像把大照片裁剪成小照片,或者把小照片放大成大照片。

方法:最近邻插值、双线性插值、双三次插值,本质就是 “用周围的像素,计算新像素的数值”。

例子:把一张 1080x1920 的照片,调整成 224x224,方便输入到 CNN 模型里。

类比:把一张大的十字绣,缩小成小的十字绣,用周围的格子颜色,计算新格子的颜色。

3.2.2 归一化(Normalization)

把像素数值从 0-255,缩放到 0-1 或 - 1-1 之间,让模型更容易训练,就像把不同单位的长度,都转换成米,方便计算。

方法:像素值 = 原始像素值 / 255,把 0-255 缩放到 0-1;或者 像素值 = (原始像素值 - 127.5) / 127.5,缩放到 - 1-1。

例子:原始像素值是 255,归一化后是 1;原始像素值是 0,归一化后是 0。

类比:把不同身高的人,都缩放到 0-1 之间,方便比较谁更高。

3.2.3 灰度化(Grayscale)

把彩色图像转换成黑白图像,减少计算量,就像把彩色照片变成黑白照片,只保留亮度信息。

方法:灰度值 = 0.299*R + 0.587*G + 0.114*B,加权平均三个通道的数值,得到灰度值。

例子:把一张彩色猫图片,转换成黑白图片,只保留亮度信息,减少模型的计算量。

类比:把三色十字绣,变成单色十字绣,只保留亮度信息,绣起来更简单。

3.2.4 去噪(Denoising)

去除图像里的 “噪音”(比如模糊、颗粒感),让图像更清晰,就像把照片里的噪点去掉,让照片更干净。

方法:均值滤波、高斯滤波、中值滤波,本质就是 “用周围像素的平均值 / 中值,替换当前像素的数值”。

例子:一张模糊的老照片,用高斯滤波去噪,变得清晰一点。

类比:把十字绣里的 “错针”(噪音),用周围的线颜色替换,让图案更整齐。

3.2.5 增强(Enhancement)

提升图像的对比度、亮度,让细节更明显,就像把照片调亮、调对比度,让细节更清楚。

方法:直方图均衡化、伽马校正,本质就是 “重新分配像素的亮度值,让亮的更亮,暗的更暗”。

例子:一张光线暗的照片,用直方图均衡化,调亮之后,细节更明显。

类比:把十字绣里的浅颜色线,换成更深的颜色,让图案更突出。

3.2.6 数据增强(Data Augmentation)

对图像做 “变形”,增加训练数据的多样性,防止模型过拟合,就像把照片旋转、翻转、裁剪,生成新的照片,让模型学到更通用的规律。

  • 常见操作:
    1. 旋转:把图片旋转 90 度、180 度、270 度。
    2. 翻转:水平翻转、垂直翻转。
    3. 裁剪:随机裁剪图片的一部分。
    4. 缩放:随机放大或缩小图片。
    5. 颜色扰动:随机调整 R、G、B 通道的数值。
  • 例子:把一张猫图片,水平翻转、旋转 90 度,生成新的猫图片,让模型学到 “不管猫怎么摆姿势,都是猫”。
  • 类比:把十字绣的图案,旋转、翻转、裁剪,生成新的图案,让你记住 “不管怎么摆,这都是同一个图案”。

4. 图像处理基本任务

4.1 图像滤波

图像滤波就是用一个 “小窗口”(卷积核),在图像上滑动,计算每个窗口内的像素平均值 / 加权值,替换当前像素的数值,本质就是 “模糊” 或 “锐化” 图像。

举个例子:

均值滤波:用 3x3 的窗口,计算窗口内 9 个像素的平均值,替换中心像素,用来去噪,但会模糊图像。

高斯滤波:用 3x3 的窗口,给中心像素更高的权重,周围像素更低的权重,去噪效果更好,模糊更少。

中值滤波:用 3x3 的窗口,取窗口内 9 个像素的中值,替换中心像素,适合去除 “椒盐噪声”(黑白点)。

Sobel 滤波:用 3x3 的窗口,计算图像的梯度,提取边缘,用来检测图像的边缘。

生活化类比:

图像滤波就像 “用海绵擦玻璃”,海绵就是卷积核,擦玻璃的过程就是滑动窗口,擦完之后,玻璃上的污渍(噪音)被去掉了,或者边缘更清晰了。

4.2 边缘检测

边缘检测就是找出图像里物体的边界,比如猫的轮廓、杯子的边缘,就像你用铅笔,把照片里物体的轮廓描出来。

常见的边缘检测算法:

Sobel 算子:计算图像的水平和垂直梯度,找出水平和垂直边缘。

Prewitt 算子:和 Sobel 类似,权重不同,效果差不多。

Canny 算子:最常用的边缘检测算法,先高斯滤波去噪,再计算梯度,再非极大值抑制,最后双阈值筛选,得到更干净的边缘。

举个例子:

一张猫图片,用 Canny 算子边缘检测,得到一张只有猫轮廓的黑白图,猫的轮廓清晰可见。

类比:你用铅笔,把猫的轮廓描出来,只留下线条,去掉内部的颜色和细节。

4.3 图像阈值化

图像阈值化就是把灰度图像,转换成黑白二值图像,比如把亮度大于阈值的像素变成白色(255),小于阈值的变成黑色(0),就像把照片里的亮部和暗部分开。

  • 方法:
    1. 固定阈值:手动设置阈值,比如阈值 = 127,大于 127 的变成白色,小于 127 的变成黑色。
    2. 自适应阈值:根据窗口内的像素平均值,自动计算阈值,适合光线不均匀的图像。
    3. Otsu 阈值:自动计算最优阈值,让黑白两类像素的方差最大,适合双峰直方图的图像。
  • 例子:一张手写数字图片,用 Otsu 阈值化,变成黑白二值图像,数字更清晰,方便识别。
  • 类比:你把照片里的亮部涂成白色,暗部涂成黑色,只保留轮廓和细节。

4.4 图像形态学操作

图像形态学操作就是用一个 “结构元素”(卷积核),对二值图像做 “膨胀”“腐蚀”“开运算”“闭运算”,本质就是 “改变物体的形状”。

  • 常见操作:
    1. 腐蚀:把物体的边缘 “削掉” 一点,让物体变小,适合去除小的噪点。
    2. 膨胀:把物体的边缘 “加厚” 一点,让物体变大,适合填充小的空洞。
    3. 开运算:先腐蚀,再膨胀,适合去除小的噪点,不改变物体的形状。
    4. 闭运算:先膨胀,再腐蚀,适合填充小的空洞,不改变物体的形状。
  • 例子:一张二值手写数字图片,用开运算,去掉数字周围的小噪点,让数字更清晰。
  • 类比:你用橡皮擦,把物体的边缘擦掉一点(腐蚀),或者用画笔,把物体的边缘加粗一点(膨胀)。

4.5 图像金字塔

图像金字塔就是把图像不断缩小,生成不同尺寸的图像,像金字塔一样,底层是原图,上层是缩小后的图,本质就是 “多尺度表示”。

  • 方法:
    1. 高斯金字塔:先高斯滤波,再下采样(每隔一个像素取一个),生成缩小后的图像。
    2. 拉普拉斯金字塔:用高斯金字塔的上层图像,上采样(插值)后,和下层图像做差,得到细节信息。
  • 例子:用高斯金字塔,把一张 224x224 的图片,缩小成 112x112、56x56、28x28,生成 4 层金字塔。
  • 类比:你把一张大照片,不断缩小,生成不同尺寸的小照片,像金字塔一样,从下到上越来越小。

5. 特征提取和传统图像处理算法

5.1 什么是特征?

特征就是图像里的关键信息,比如边缘、角点、纹理、颜色,就像你识别一个人,看 “脸型、眼睛、鼻子、发型”,这些就是特征。

传统图像处理算法,就是手动提取这些特征,再用机器学习分类,就像你手动告诉模型 “看脸型、眼睛、鼻子”,让模型根据这些特征识别。

5.2 常见的传统特征提取算法

5.2.1 边缘特征(Edge Features)

用 Sobel、Canny 算子提取边缘,描述物体的轮廓,就像你用铅笔描出物体的轮廓。

例子:识别猫和狗,边缘特征能描述 “猫的耳朵尖、狗的耳朵圆”。

类比:你看一个人的轮廓,就能大概知道是谁。

5.2.2 角点特征(Corner Features)

用 Harris、Shi-Tomasi 算子提取角点,描述物体的拐角,就像你看桌子的四个角。

例子:识别书本,角点特征能描述 “书本的四个角”,方便定位书本的位置。

类比:你看一个桌子的四个角,就能知道桌子的形状和位置。

5.2.3 纹理特征(Texture Features)

用 LBP(局部二值模式)、GLCM(灰度共生矩阵)提取纹理,描述物体的表面质感,就像你摸布料,知道是棉布还是丝绸。

例子:识别猫和狗,纹理特征能描述 “猫的毛更软、狗的毛更硬”。

类比:你摸一块布,通过纹理,知道是棉布还是丝绸。

5.2.4 颜色特征(Color Features)

用颜色直方图、颜色矩提取颜色,描述物体的颜色分布,就像你看一个苹果,知道是红色的。

例子:识别苹果和梨,颜色特征能描述 “苹果是红色的,梨是黄色的”。

类比:你看一个水果,通过颜色,知道是苹果还是梨。

5.2.5 SIFT/SURF 特征

SIFT(尺度不变特征变换)、SURF(加速稳健特征)是更高级的特征,能在不同尺度、旋转、光照下,稳定提取特征,适合图像匹配、检索。

例子:用 SIFT 特征,把两张不同角度的猫图片,匹配到一起,找到对应的关键点。

类比:你看两张不同角度的同一个人照片,通过脸上的关键点(眼睛、鼻子、嘴巴),认出是同一个人。

5.3 传统图像处理算法的局限性

传统图像处理算法,需要手动设计特征,依赖专家经验,而且特征的泛化能力差,遇到复杂场景就失效,就像你手动告诉模型 “看脸型、眼睛、鼻子”,但遇到戴口罩、侧脸的人,就认不出来了。

举个例子:

传统算法识别猫和狗,只能提取 “边缘、颜色、纹理” 等简单特征,遇到 “橘猫、黑猫、折耳猫” 等不同品种,就容易认错。

深度学习算法(CNN)能自动提取更复杂的特征,比如 “猫的胡须分布、眼神神态”,准确率更高。

生活化类比:

传统算法就像 “你教孩子认人,只告诉孩子‘看脸型、眼睛’”,孩子遇到戴口罩的人,就认不出来了。

深度学习算法就像 “孩子自己看 1000 张不同人的照片,自己总结出‘不管戴不戴口罩、侧脸还是正脸,都能认出这个人’”。


6. 卷积神经网络和图像识别

6.1 什么是卷积神经网络(CNN)?

卷积神经网络(Convolutional Neural Network, CNN)是专门处理图像数据的神经网络,灵感来自于人眼的视觉皮层,能自动提取图像的特征,就像人眼一样,从简单的边缘,到复杂的纹理,再到完整的物体。

CNN 的核心是卷积层,用一个 “卷积核”(小窗口)在图像上滑动,计算局部特征,就像你用放大镜,在照片上一点点看细节。

6.2 CNN 的核心层

6.2.1 卷积层(Convolutional Layer)

卷积层的作用是提取图像的局部特征,比如边缘、角点、纹理,就像你用放大镜,在照片上看局部细节。

卷积核:一个小窗口(比如 3x3、5x5),里面有一组权重参数,用来计算局部特征。

卷积操作:把卷积核放在图像上,逐像素滑动,计算卷积核和对应图像区域的 “点积”,得到一个新的像素,就是特征图。

例子:用 3x3 的边缘检测卷积核,在猫图片上滑动,得到一张边缘特征图,只保留猫的轮廓。

类比:你用放大镜,在照片上一点点看,看到的局部细节,就是卷积层提取的特征。

6.2.2 池化层(Pooling Layer)

池化层的作用是降维,减少特征图的尺寸,保留关键信息,就像你把一张大照片,缩小成小照片,只保留关键细节。

  • 常见池化:
    1. 最大池化(Max Pooling):取窗口内的最大值,保留最显著的特征。
    2. 平均池化(Average Pooling):取窗口内的平均值,保留平均特征。
  • 例子:把 224x224 的特征图,用 2x2 的最大池化,缩小成 112x112,保留关键特征,减少计算量。
  • 类比:你把一张大照片,缩小成小照片,只保留关键细节,比如猫的眼睛、鼻子,去掉背景的细节。
6.2.3 激活层(Activation Layer)

激活层的作用是加入非线性,让 CNN 能处理复杂的图像,就像你给直线 “掰弯”,让它能拟合更复杂的规律。

常用激活函数:ReLU(最常用),输入 > 0 时输出输入,输入 <0 时输出 0,像 “过滤器”,只保留有用的特征。

例子:卷积层输出的特征图,经过 ReLU 激活,过滤掉没用的负特征,只保留有用的正特征。

类比:你听老师讲课,只记住有用的知识点,没用的废话直接忽略。

6.2.4 全连接层(Fully Connected Layer)

全连接层的作用是把提取的特征,映射到最终的分类结果,就像你把看到的细节,汇总成 “这是一只猫” 的判断。

例子:经过卷积层、池化层提取的特征,经过全连接层,映射到 10 个神经元,对应手写数字 0-9 的概率。

类比:你看到猫的眼睛、鼻子、耳朵、胡须,汇总成 “这是一只猫” 的判断。

6.3 经典的 CNN 模型

6.3.1 LeNet-5(1998)

最早的 CNN 模型,用来识别手写数字,结构简单:输入层→卷积层→池化层→卷积层→池化层→全连接层→输出层。

例子:输入 28x28 的手写数字图片,输出 10 个数字的概率,准确率很高。

类比:小学阶段的模型,能处理简单的手写数字识别。

6.3.2 AlexNet(2012)

深度学习时代的开端,在 ImageNet 图像分类比赛中夺冠,比传统算法准确率高 30%,结构更深:输入层→5 个卷积层→3 个全连接层→输出层。

特点:用 ReLU 激活函数、Dropout 正则化、数据增强,首次证明深度学习在图像识别上的优势。

例子:输入 224x224 的彩色图片,输出 1000 个类别的概率,能识别猫、狗、汽车等复杂物体。

类比:初中阶段的模型,能处理复杂的图像分类任务。

6.3.3 VGGNet(2014)

结构更规整,所有卷积核都是 3x3,池化层都是 2x2,深度从 11 层到 19 层,越深准确率越高。

特点:用小卷积核堆叠,提取更复杂的特征,准确率比 AlexNet 更高。

例子:VGG16 有 16 层,VGG19 有 19 层,在 ImageNet 比赛中取得很好的成绩。

类比:高中阶段的模型,能处理更复杂的图像分类任务。

6.3.4 ResNet(2015)

解决了 “深层网络退化” 的问题,引入 “残差连接”,让深层网络更容易训练,深度能到 50 层、101 层、152 层。

特点:残差连接,让信息直接跳过几层,避免梯度消失,深层网络准确率更高。

例子:ResNet50 有 50 层,在 ImageNet 比赛中夺冠,现在是计算机视觉的基础模型。

类比:大学阶段的模型,能处理非常复杂的图像分类任务。

6.4 CNN 在图像识别中的应用

  1. 手写数字识别:用 LeNet-5、CNN 识别手写数字,准确率能到 99% 以上,比如 MNIST 数据集。
  2. 图像分类:用 AlexNet、VGGNet、ResNet 识别猫、狗、汽车等 1000 个类别,比如 ImageNet 数据集。
  3. 人脸识别:用 CNN 提取人脸特征,再用分类器识别,比如 FaceNet、ArcFace,能识别双胞胎、戴口罩的人。
  4. 物体检测:用 Faster R-CNN、YOLO、SSD,在图像中找出所有物体,标出位置和类别,比如自动驾驶、监控。
  5. 图像分割:用 U-Net、FCN,给每个像素打标签,比如医学图像分割、语义分割。

生活化类比:

CNN 就像 “一个聪明的孩子”,看了 1000 万张图片,自己总结出 “猫的特征、狗的特征、汽车的特征”,能轻松识别各种复杂的图像。


7. 生成对抗网络和图像生成

7.1 什么是生成对抗网络(GAN)?

生成对抗网络(Generative Adversarial Network, GAN)是让两个神经网络 “互相对抗”,一个生成图像,一个判别图像,最后生成的图像能以假乱真

GAN 由两个部分组成:

  1. 生成器(Generator):输入噪声或文本,生成假图像,就像 “画家”,画假画。
  2. 判别器(Discriminator):输入图像,判断是真的还是假的,就像 “鉴定师”,鉴别画的真假。

训练过程:

生成器努力生成更逼真的假图像,骗过判别器。

判别器努力更准确地鉴别真假图像,不被生成器骗过。

最后,生成器生成的假图像,能以假乱真,判别器分不清真假。

生活化类比:

生成器是 “造假者”,判别器是 “警察”,造假者努力造更逼真的假币,警察努力更准确地鉴别假币,最后造假者造的假币,警察分不清真假。

7.2 GAN 的核心原理

GAN 的训练过程,就是两个神经网络的 “零和博弈”,目标是达到 “纳什均衡”:

生成器的目标:最小化判别器的准确率,让判别器分不清真假。

判别器的目标:最大化自己的准确率,能准确鉴别真假。

最后,生成器生成的图像,和真实图像的分布一致,判别器的准确率是 50%(瞎猜)。

举个例子:

生成器输入随机噪声,生成一张猫图片,判别器判断 “这是假的”,生成器调整参数,生成更逼真的猫图片。

判别器输入真猫图片和假猫图片,学习鉴别真假,准确率提升。

重复这个过程,最后生成器生成的猫图片,和真猫图片几乎一样,判别器分不清。

7.3 经典的 GAN 模型

7.3.1 DCGAN(2015)

把 CNN 引入 GAN,用卷积层和反卷积层构建生成器和判别器,生成的图像更清晰,是 GAN 的基础版本。

例子:生成 64x64 的人脸、猫、狗图片,效果不错。

类比:初级造假者,能造清晰的假币。

7.3.2 CycleGAN(2017)

实现 “无配对图像转换”,比如把马转换成斑马、把夏天的照片转换成冬天的照片,不需要成对的训练数据。

例子:输入一张马的图片,生成一张斑马的图片;输入一张夏天的风景照,生成一张冬天的风景照。

类比:造假者能把 “马” 变成 “斑马”,不需要先有斑马的照片。

7.3.3 StyleGAN(2018)

能生成超高分辨率的人脸图片(1024x1024),还能控制生成的人脸的风格,比如年龄、性别、发型、表情。

例子:生成一张 “20 岁的金发美女” 的图片,或者 “50 岁的胡子大叔” 的图片,细节逼真。

类比:高级造假者,能造超高分辨率、风格可控的假币。

7.3.4 Stable Diffusion(2022)

基于扩散模型的图像生成模型,能根据文本描述,生成高质量的图像,比如 “一只橘猫在草地上睡觉”“一座漂浮在云端的城堡”。

特点:用文本编码器,把文字转换成向量,再输入扩散模型,生成对应的图像。

例子:输入 “一只橘猫在草地上睡觉,阳光明媚,画风是宫崎骏”,生成一张对应的图片。

类比:顶级造假者,能根据文字描述,造任何风格的假币。

7.4 GAN 在图像生成中的应用

  1. AI 绘画:用 Stable Diffusion、Midjourney,根据文本描述生成图像,比如插画、海报、表情包。
  2. 图像修复:用 GAN 修复破损的老照片、模糊的图片,比如把模糊的人脸变清晰。
  3. 图像转换:用 CycleGAN,把马转换成斑马、把夏天转换成冬天、把黑白照片转换成彩色。
  4. 超分辨率:用 SRGAN,把低分辨率的图片,放大成高分辨率的图片,比如把 480P 的视频,放大成 4K。
  5. 数据增强:用 GAN 生成更多的训练数据,防止模型过拟合,比如生成更多的猫图片,训练图像分类模型。

生活化类比:

GAN 就像 “一个天才画家”,能根据你的描述,画出任何风格、任何内容的画,而且画得和真的一样。


第二章核心知识点总结

  1. 计算机视觉:让机器 “看懂” 图像,核心任务有图像分类、目标检测、语义分割、图像生成等,是 AI 的重要分支。
  2. 数字图像:由像素组成的二维 / 三维矩阵,黑白图像是二维矩阵,彩色图像是三维矩阵,分辨率、位深度、通道是基本属性。
  3. 图像预处理:在喂给模型之前,整理图像,包括尺寸调整、归一化、灰度化、去噪、增强、数据增强,让模型更容易学习。
  4. 图像处理基本任务:滤波、边缘检测、阈值化、形态学操作、图像金字塔,是传统图像处理的基础,用来提取特征、整理图像。
  5. 传统特征提取:手动提取边缘、角点、纹理、颜色等特征,依赖专家经验,泛化能力差,适合简单场景。
  6. 卷积神经网络(CNN):专门处理图像的神经网络,核心是卷积层、池化层、激活层、全连接层,能自动提取特征,准确率远超传统算法,经典模型有 LeNet-5、AlexNet、VGGNet、ResNet。
  7. 生成对抗网络(GAN):让生成器和判别器互相对抗,生成以假乱真的图像,核心是 “零和博弈”,经典模型有 DCGAN、CycleGAN、StyleGAN、Stable Diffusion,应用于 AI 绘画、图像修复、图像转换等。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐