代码之家  ›  专栏  ›  技术社区  ›  Wilrick B

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

  •  4
  • Wilrick B  · 技术社区  · 6 年前

    我知道以前有人问过这个问题,但我还没有找到一个可以解决的答案。我不熟悉Python和Tensorflow,但使用MNIST图像集,我的准确率达到了+-99.3%。现在我想尝试使用我自己的图片,但事实证明,这比预期的更难。

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

    提前谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  3
  •   dga    6 年前

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

    这让你完全需要两件事:

    您已经在评论中提到了可能需要增加数据的问题,您的重点是:为了充分利用每个类的10个图像,您需要对它们应用一系列转换。总图像数可能超过10/20:

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

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

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

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

    然后,你就有了一个问题:迁移学习从什么架构开始。《盗梦空间》对你来说可能太多了,但股票MNIST模型可能比你想要的更简单。你需要做一些实验——像常见的MNIST示例一样,一个改进的LeNet风格的分类器可以很好地工作(添加另一个卷积层,添加batchnorm,可能还有一点遗漏)。或者,你可以从预先训练开始 Mobilenet 网络和传输从中学习。我想从后者开始,除非你对推理速度有严格的计算限制。

    对于您的图像,我首先创建一个JPEG图像目录。最“官方”的处理方式是 this answer .