使用 R 训练 ImageNet

这篇文章探讨了如何使用 TensorFlow 和 R 训练大型数据集。具体来说,我们介绍了如何下载和重新分区 ImageNet,然后使用 TensorFlow 和 Apache Spark 在分布式环境中跨多个 GPU 训练 ImageNet。

来源:RStudio AI博客

ImageNet(Deng 等人,2009 年)是一个按照 WordNet(Miller,1995 年)层次结构组织的图像数据库,该数据库在历史上曾用于计算机视觉基准测试和研究。然而,直到 AlexNet(Krizhevsky、Sutskever 和 Hinton,2012 年)展示了使用 GPU 上的卷积神经网络进行深度学习的效率后,计算机视觉学科才转向深度学习,以实现最先进的模型,从而彻底改变了该领域。鉴于 ImageNet 和 AlexNet 的重要性,本文介绍了使用 R 训练 ImageNet 和其他大型数据集时需要考虑的工具和技术。

ImageNet (Deng 等人,2009 年) Deng 等人2009 WordNet (Miller 1995) Miller 1995 (Krizhevsky、Sutskever 和 Hinton 2012) Krizhevsky、Sutskever 和 Hinton 2012

现在,为了处理 ImageNet,我们首先必须分而治之,将数据集划分为几个可管理的子集。之后,我们将使用 AlexNet 在多个 GPU 和计算实例上训练 ImageNet。预处理 ImageNet 和分布式训练是这篇文章将介绍和讨论的两个主题,从预处理 ImageNet 开始。

分而治之 预处理 ImageNet 分布式训练

预处理 ImageNet

mlverse/imagenet

现在我们有了能够处理 ImageNet 的资源,我们需要找到一个地方下载 ImageNet。最简单的方法是使用 ImageNet 大规模视觉识别挑战赛 (ILSVRC) 中使用的 ImageNet 变体,它包含大约 250GB 数据的子集,可以从许多 Kaggle 竞赛(如 ImageNet 对象定位挑战赛)轻松下载。

ImageNet 大规模视觉识别挑战赛 (ILSVRC) Kaggle ImageNet 对象定位挑战赛 pins 使用 Kaggle 板

现在我们需要做的就是注册 Kaggle 板,将 ImageNet 检索为 pin,然后解压缩此文件。警告,以下代码需要您盯着进度条,可能超过一个小时。

library(pins) ( pins