菜单

计算机视觉

相关源文件

本页面提供了 D2L.ai 仓库中实现的计算机视觉模型和技术的概述。计算机视觉是一个使机器能够根据视觉数据进行解释和决策的领域。在本仓库中,我们使用深度学习方法来处理各种计算机视觉任务,从基本图像分类到对象检测和语义分割等更复杂的任务。

有关卷积神经网络等基础概念,请参阅深度学习基础部分。

来源:chapter_computer-vision/index.md

架构概述

代码库中的计算机视觉组件建立在卷积神经网络 (CNN) 的基础上,用于执行各种任务。主要架构遵循分层模式,其中基础模型(如 LeNet、AlexNet、ResNet)提供功能提取能力,这些能力会被特定任务的架构所利用。

来源:chapter_computer-vision/index.md, chapter_convolutional-neural-networks/index.md

卷积神经网络

卷积神经网络是此代码库中大多数计算机视觉应用的基础。关键组件包括:

  1. 卷积层:使用可学习的滤波器提取空间特征。
  2. 池化层:减小空间尺寸并引入平移不变性。
  3. 归一化层:提高训练稳定性和收敛性。
  4. 全连接层:处理提取的特征以进行分类或其他任务。

实现的 सर्वात简单的 CNN 模型是 LeNet,它由两个卷积层后跟三个全连接层组成。LeNet 是理解更复杂的 CNN 架构的教育基础。

来源:chapter_convolutional-neural-networks/lenet.md, chapter_convolutional-neural-networks/conv-layer.md, chapter_convolutional-neural-networks/why-conv.md

图像处理技术

图像增强

图像增强通过对原始图像应用各种变换来人工扩展训练数据集。这有助于提高模型的泛化能力并减少过拟合。

实现的键图像增强技术包括:

  1. 翻转和裁剪:

    • 随机水平和垂直翻转
    • 随机调整大小和裁剪
  2. 颜色变换:

    • 亮度调整
    • 对比度修改
    • 饱和度变化
    • 色相旋转

该实现允许使用 Compose 类组合多种增强方法。

示例用法可以在 `chapter_computer-vision/image-augmentation.md194-207 中找到,它演示了如何创建变换管道。

来源:chapter_computer-vision/image-augmentation.md

目标检测

对象检测将分类与定位相结合,同时识别图像中存在的对象及其位置。该仓库实现了几种对象检测方法。

锚框

锚框是具有不同大小和纵横比的预定义边界框,它们充当检测对象的参考框。关键组件包括:

  1. 在不同尺度和纵横比下生成锚框。
  2. 计算交并比 (IoU) 以测量框之间的重叠。
  3. 框匹配算法,用于将真实边界框分配给锚框。

`chapter_computer-vision/anchor.md64-186 中的 multibox_prior 函数实现了具有不同尺度和纵横比的锚框的生成。

来源:chapter_computer-vision/anchor.md

单发多框检测 (SSD)

SSD 是一种高效的一阶段对象检测模型,它结合了来自不同分辨率的多个特征图的预测,以处理各种大小的对象。

SSD 的关键组件包括:

  1. 基础网络:一个预训练的 CNN(通常是 VGG 或 ResNet),用于提取特征。
  2. 多尺度特征块:额外的卷积层,逐步减小空间尺寸。
  3. 类别预测层:用于预测每个锚框对象类别的卷积层。
  4. 边界框预测层:用于预测每个锚框偏移量的卷积层。

SSD 模型实现在 `chapter_computer-vision/ssd.md28-470 中,主要模型定义和前向传播在 382-466 行。

来源:chapter_computer-vision/ssd.md

R-CNN 系列

R-CNN 系列(R-CNN、Fast R-CNN、Faster R-CNN)代表了基于区域的对象检测方法。这些方法首先提出感兴趣区域,然后对这些区域进行分类和细化。

该仓库涵盖了 R-CNN 方法的演进:

  1. R-CNN:提取区域提议,计算 CNN 特征,然后对区域进行分类。
  2. Fast R-CNN:使用特征图跨区域共享计算。
  3. Faster R-CNN:引入区域提议网络 (RPN) 来学习区域提议。

来源:chapter_computer-vision/rcnn.md

语义分割

语义分割涉及将图像中的每个像素分类到特定类别,从而对场景进行像素级理解。

全卷积网络 (FCN)

FCN 通过用卷积层替换全连接层并引入转置卷积进行上采样,将分类网络改编为语义分割。

FCN 的关键组件包括:

  1. 编码器:用于提取特征的预训练 CNN(例如,ResNet)。
  2. 1×1 卷积:改变通道数以匹配类别数。
  3. 转置卷积:将特征图上采样到原始图像大小。
  4. 像素级分类:预测每个像素的类别。

FCN 模型在 `chapter_computer-vision/fcn.md49-134 中实现,使用预训练的 ResNet 模型作为编码器。

来源:chapter_computer-vision/fcn.md, chapter_computer-vision/semantic-segmentation-and-dataset.md

迁移学习与微调

迁移学习允许利用在大型数据集(如 ImageNet)上预训练的模型来处理具有较小数据集的特定任务。该仓库实现了微调,这是一种特定的迁移学习技术。

微调过程包括:

  1. 加载预训练模型(如 ResNet)。
  2. 将输出层替换为目标任务的新层。
  3. 冻结或为预训练层使用较低的学习率。
  4. 使用更高的学习率训练新输出层的模型。

该仓库在 `chapter_computer-vision/fine-tuning.md187-265 中展示了通过热狗检测示例进行微调,其中预训练的 ResNet 模型被改编用于二元分类任务。

来源:chapter_computer-vision/fine-tuning.md

风格迁移

风格迁移是一种将一个图像的内容以另一个图像的风格进行渲染的技术。仓库中实现的方法使用预训练的 CNN 来提取内容和风格特征。

风格迁移过程包括:

  1. 内容表示:来自 CNN 较高层的特征。
  2. 风格表示:来自不同层的特征的格拉姆矩阵。
  3. 损失函数:内容损失和风格损失的组合。
  4. 优化:迭代更新生成的图像以最小化损失。

风格迁移的实现可以在 chapter_computer-vision/neural-style.md 中找到。

来源:chapter_computer-vision/neural-style.md

数据管道和训练

数据集

该仓库使用多个数据集进行计算机视觉任务:

  1. CIFAR-10:用于基本的图像分类。
  2. Pascal VOC:用于对象检测和语义分割。
  3. 自定义数据集:用于热狗检测等特定任务。

训练基础设施

代码库支持在 CPU 和多个 GPU 上进行训练,并为训练各种计算机视觉模型提供特定实现。

该仓库提供了训练的辅助函数,例如 train_ch13,在 `chapter_computer-vision/image-augmentation.md313-442 中,它处理带 GPU 加速的模型训练。

来源:chapter_computer-vision/image-augmentation.md, chapter_computer-vision/object-detection-dataset.md

框架支持

仓库中的计算机视觉模型支持多种深度学习框架:

  1. MXNet:原始实现。
  2. PyTorch:替代实现。
  3. TensorFlow:替代实现。
  4. PaddlePaddle:替代实现。

这种多框架方法允许用户在使用自己喜欢的深度学习库的同时学习计算机视觉概念。

来源:所有文件都有不同框架的实现。