0%

【动手学深度学习】6 计算机视觉

这一节我们来了解一些计算机视觉常用的技术,包括图像增广、微调、目标检测和锚框等,本节最好使用 GPU。


更新历史

  • 2019.11.13: 完成初稿

图像增广

简单来说就是对训练图像做一系列随机改变,生成相似且不同的训练样本,从而可以扩大数据集的规模,提高模型泛化能力。需要注意的是,我们只对训练集做增广操作,预测集不变。我们直接来看代码:

用图像增广后的来进行训练,数据集为 CIFAR-10,代码如下:

注:如果不用 GPU,会非常慢

微调

微调(fine tuning)是迁移学习中的一种常用技术,由以下 4 步构成:

  1. 在一个很大的源数据集上训练一个神经网络模型,称为源模型
  2. 创建一个新的神经网络模型,即目标模型。它复制了源模型上除了输出层外的所有模型设计及其参数。我们假设这些模型参数包含了源数据集上学习到的知识,且这些知识同样适用于目标数据集。我们还假设源模型的输出层跟源数据集的标签紧密相关,因此在目标模型中不予采用
  3. 为目标模型添加一个输出大小为目标数据集类别个数的输出层,并随机初始化该层的模型参数
  4. 在目标数据集上训练目标模型。从头训练输出层,其他层的参数是基于源模型的参数微调得到的

当目标数据集远小于源数据集时,微调有助于提升模型的泛化能力。具体如下图所示:

这里我们使用热狗数据集,包含 1400 张热狗和 1400 张非热狗,其中 1000 张用来训练,其他用来测试。具体代码如下:

注意:微调参数一般使用较小学习率,从头训练则用较大的。

本书后面还有介绍目标检测的,不过因为这个话题比较大,这里不再赘述。