4

我知道以前有人问过这个问题,但我还没有找到我可以使用的答案。我是 Python 和 Tensorflow 的新手,但使用 MNIST 图像集成功地将我的准确率提高到 +-99.3%。现在我想尝试使用我自己的图像,但事实证明这对我来说比预期的要困难。

我已经阅读了数百次 Tensorflow 网站上的教程页面,但这对我来说毫无意义,无论我尝试什么,我都会收到警告。现在我想自己弄清楚,但有没有人知道哪种方式最容易使用我自己的图像?或者有什么例子吗?我一直在网上寻找它们,但感觉好像我找到了 1000 个,但没有一个能以我能理解的方式解释。

提前感谢您的帮助。

4

1 回答 1

3

好的,所以把这些放在一起,你有 42 个班级,每个班级大约有 10 张图片。

这使您非常需要两件事:

您已经在评论中解决了对数据增强的可能需求,并且您发现了:为了充分利用每个类的 10 个图像,您需要对它们应用一大堆转换。可能超过 10/20 的总图像:

  • 裁剪
  • 缩放
  • 噪音
  • 对比度/颜色/亮度调整
  • 回转

用于图像分类的数据增强的一个很好的例子是官方 resnet 示例模型

第二个是迁移学习。当您尝试从非常少的数据中学习 42 个类别的模型时,您可能可以通过从在其他数据上训练的模型开始,然后使用新数据集重新训练最后(少数)层来做得更好。这背后的原因是,初始训练的更大示例空间将帮助您的分类器学习各种常见的图像特征,您的迁移学习分类器可以使用这些特征更快地实现更高级别的识别。

当然,另一种选择是你可以进行某种形式的主动学习——训练一个分类器,然后向它展示你的令牌图像(可能通过网络摄像头,对每一帧进行分类),当它出错时,将其保存为下一轮训练的例子。这需要更多的工作,你必须为它建立一些基础设施,所以我将从迁移学习开始。

然后,您会遇到迁移学习从什么架构开始的问题。Inception 对于你正在做的事情来说可能太多了,但是股票 MNIST 模型可能比你想要的更简单。你需要做一些实验——像常见的 MNIST 示例这样的修改后的 LeNet 风格的分类器可以很好地工作(添加另一个卷积层,添加 batchnorm,也许还有一些 dropout)。或者,您可以从预训练的Mobilenet网络开始并从中学习。我很想从后者开始,除非你对推理速度有一些严格的计算限制。

对于您的图像,我将首先创建一个 JPEG 图像目录。处理它们的最“官方”方式将是这个答案中的过程。

于 2017-11-22T02:03:23.673 回答