PyTorch深度学习实战
上QQ阅读APP看书,第一时间看更新

第2章 预训练网络

本章主要内容

  • 运行预先训练好的图像识别模型。
  • 简要介绍生成式对抗网络和循环生成式对抗网络。
  • 可以为图像生成文本描述的字幕模型。
  • 通过Torch Hub分享模型。

由于种种原因,计算机视觉无疑是受深度学习影响最大的领域之一。对自然图像的内容进行分类和解释的需求已经存在,非常大的数据集变得可用,新的结构(如卷积层)被发明出来,可以在GPU上以前所未有的精度快速运行。所有这些因素都与互联网“巨头”想要了解数百万用户用移动设备拍摄并在其平台上管理的照片的愿望相结合。原因太多了!

我们将通过下载和运行非常有趣的模型来学习如何使用计算机视觉领域研究人员优秀的研究成果,这些模型已经在开放的大规模数据集上训练过。我们可以把预训练的神经网络看作一个接收输入并生成输出的程序,该程序的行为是由神经网络的结构以及它在训练过程中所看到的例子决定的,即期望的输入-输出对,或者期望输出应该满足的特性。使用现成的模型是快速启动深度学习项目的一种方法,因为它利用了设计模型的研究人员的专业知识,以及花费了训练权重的计算时间。

在本章中,我们将探讨3种常用的预训练模型:一种可以根据内容对图像进行标记的模型,一种可以从真实图像中生成新图像的模型,还有一种可以使用正确的英语句子来描述图像内容的模型。我们将学习在PyTorch中加载和运行这些预先训练好的模型。我们还将介绍PyTorch Hub,它是一组工具,通过这些工具,我们将要讨论的、预先训练好的模型就可以通过一个统一的接口轻松地获得。在此过程中,我们将讨论数据源,定义标签之类的术语,并参加斑马竞技。

如果你是从其他深度学习框架转过来学习PyTorch的,并且你想直接学习PyTorch的基本原理,那么你可以直接跳到第3章。我们将在本章中讨论的内容比基础内容更有趣,并且在某种程度上独立于任何给定的深度学习工具。这并不是说它们不重要!但是如果你在其他深度学习框架中使用过预先训练好的模型,那么你应该已经知道它们是多么强大的工具。如果你对生成式对抗网络(Generative Adversarial Network,GAN)游戏很熟悉,就不需要看我们的解释了。

尽管如此,我们希望你能继续阅读,因为本章的乐趣之下隐藏着一些重要的技巧。学习使用PyTorch运行预先训练好的模型是一项有用的技能。如果模型是在大型数据集上训练的,那么这一点特别有用。不管我们是否训练过模型,我们要习惯于在真实数据上获取和运行神经网络的机制,然后进行可视化和评估其输出结果。