我如何在 TensorFlow 中使用我自己的图像?

How do i use my own images in TensorFlow?

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

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

提前感谢您的帮助。

好的,所以将这些放在一起,您有 42 classes,预计每张大约有 10 张图片。

这使您非常需要两件事:

您已经在评论中解决了数据扩充的可能需求,并且您发现了:为了充分利用每个 class 的 10 张图片,您需要申请对他们进行了一大堆转变。总共可能超过 10/20 张图片:

  • 裁剪
  • 缩放
  • 噪音
  • Contrast/color/brightness调整
  • 旋转

图像 class化数据增强的一个很好的例子是 official resnet example model

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

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

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

对于您的图像,我首先创建一个 JPEG 图像目录。最 "official" 处理它们的方法是 .

中的过程