使用Tensorflow训练识别特定图像

我想训练一个Tensorflow模型来识别一种非常具体的家用电器。我熟悉使用Tensorflow进行各种操作,但我不确定构建数据集的最佳方法是什么。

我的初步想法是提供100到200张从不同角度拍摄的该电器的图片,再加上从谷歌搜索中获取的大约1000张其他非目标电器的图片。是否有比我计划的方法更好的方式来处理这个问题?

我可以接受识别效果在包含更多特征的侧面更好,但希望从正面角度也能达到高精度。


回答:

要解决这个问题,你应该利用迁移学习。简单来说,迁移学习利用已经训练好的或预训练的分类器,并在通常称为瓶颈的输出层上工作,以重新训练模型识别你的自定义图像。这可以节省你从头开始构建和训练图像识别分类器的时间和精力。

Google Inception V3模型是一个有用的起点。使用这个模型,已经投入了大量的工程和训练时间来创建一个最先进的图像分类器。该模型是在2012年的ImageNet数据集上训练的。

这个优秀的教程TensorFlow for Poets将指导你完成在预训练的Inception V3模型上进行迁移学习的过程,并使模型能够识别你的自定义图像。

你的图像集的规模作为起点还不错,但是,训练机器学习算法的一个经验法则是,更多的数据通常会带来更高的精度和更好的泛化能力。这是在考虑到与偏差-方差权衡相关的问题得到尊重的前提下进行的。

在我看来,你不需要对负面例子进行任何训练。凭我的直觉,我建议你用你的“正面”例子数据集进行训练,然后设置一个精度阈值。例如,如果一张图像的识别精度低于60%,就将其分类为“不是家用电器”。然后,你可以使用你的负面例子数据集和正面例子的测试集来检查你的算法表现如何。只要记得留出一部分验证集用于超参数调整即可。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注