详细内容或原文请订阅后点击阅览
图像分类使用 Keras 的小数据集
使用很少的数据来训练图像分类模型是一种常见的情况,在本文中,我们回顾了解决此问题的三种技术,包括从预训练网络中提取特征和进行微调。
来源:RStudio AI博客使用小型数据集训练卷积网络
使用极少的数据训练图像分类模型是一种常见情况,如果您在专业环境中从事计算机视觉工作,在实践中很可能会遇到这种情况。“少量”样本可能意味着几百到几万张图像。作为一个实际示例,我们将重点介绍如何将图像分类为狗或猫,数据集包含 4,000 张猫和狗的图片(2,000 只猫,2,000 只狗)。我们将使用 2,000 张图片进行训练 - 1,000 张用于验证,1,000 张用于测试。
在《使用 R 进行深度学习》一书的第 5 章中,我们回顾了解决此问题的三种技术。其中第一种是使用您拥有的少量数据从头开始训练一个小型模型(准确率达到 82%)。随后,我们使用预训练网络进行特征提取(准确率为 90%)并对预训练网络进行微调(最终准确率为 97%)。在本文中,我们将仅介绍第二种和第三种技术。
使用 R 进行深度学习 使用预训练网络进行特征提取 对预训练网络进行微调深度学习与小数据问题的相关性
您有时会听说深度学习只有在有大量数据可用时才有效。这在一定程度上是正确的:深度学习的一个基本特征是它可以自行在训练数据中找到有趣的特征,而无需手动进行特征工程,而这只有在有大量训练示例可用时才能实现。对于输入样本非常高维的问题(如图像),尤其如此。
下载数据
https://www.kaggle.com/c/dogs-vs-cats/data图片是中等分辨率彩色 JPEG。以下是一些示例:
以下是执行此操作的代码:
original_dataset_dir <- "~/Downloads/kaggle_original_data" original_dataset_dir <- "~/Downloads/kaggle_original_data" base_dir <- "~/Downloads/cats_and_dogs_small" base_dir <- "~/Downloads/cats_and_dogs_small" dir.create