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

时间:2017-11-20 14:00:04

标签: python python-3.x tensorflow image-recognition tensorflow-datasets

我知道之前已经问过这个问题,但我还没能找到一个我可以使用的答案。我是Python和Tensorflow的新手,但设法使用MNIST图像集将我的准确度提高到+ -99.3%。现在我想尝试使用我自己的图像,但事实证明这比我预期的要困难。

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

好的,所以把它放在一起,你有42个课程,并且每个课程大约有10个。

这使你非常需要两件事:

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

  • 裁剪
  • 缩放
  • 噪声
  • 对比度/颜色/亮度调整
  • 轮换

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

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

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

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

对于您的图像,我首先要创建一个JPEG图像目录。最多"官方"处理它们的方法是this answer中的过程。

相关问题