使用TensorFlow和Keras进行单类图像识别

假设我有一组自己的照片数据集。我希望训练一个神经网络,以便它能够识别给定图像中是否是我。

但是,要训练一个神经网络,我必须至少有两个类别,所以我必须有自己的照片(我已经有了),还必须有“不是我”的照片,我不知道该如何处理这些照片。

所以,我想知道的是,“不是我”的照片是什么?它们只是不包含我的随机照片吗?我试过了,但没有效果。

我知道在stackoverflow上有与我类似的问题,但没有答案能帮助我解决这个问题。

这里有一些代码:

我使用预训练模型来进行更好的图像识别:

pre_trained_model = InceptionV3(input_shape = (150, 150, 3),                                 include_top = False,                                 weights = None)pre_trained_model.load_weights('img_model.h5')for layer in pre_trained_model.layers:    layer.trainable = False    last_layer = pre_trained_model.get_layer('mixed7')last_output = last_layer.output

这是我的模型声明:

# 将输出层展平为一维x = layers.Flatten()(last_output)# 添加一个具有1,024个隐藏单元和ReLU激活的全连接层x = layers.Dense(1024, activation='relu')(x)# 添加0.2的丢弃率x = layers.Dropout(0.2)(x)# 添加一个用于分类的最终sigmoid层x = layers.Dense(1, activation='sigmoid')(x)model = Model( pre_trained_model.input, x) model.compile(optimizer = RMSprop(lr=0.0001),               loss = 'binary_crossentropy',               metrics = ['accuracy'])

然后我训练我的模型:

history = model.fit(            train_generator,            validation_data = validation_generator,            epochs = 2,            verbose = 2)

最后,我自己测试网络:

img = image.load_img('imgs/some_img_of_me.jpg', target_size=(150, 150))x = image.img_to_array(img)x = np.expand_dims(x, axis=0)classes = model.predict(x)print(classes)

以上代码的结果是:

[[0.]]

问题是无论给定的图像中是否是我,模型总是返回[[0.]]

所以我想知道:

  • 如何解决我的问题
  • 我是否应该使用神经网络,也许有其他不涉及神经网络的解决方案
  • 另外,在我的智能手机上有一个智能锁功能 – 当我想解锁手机时,它只需识别我的脸。因此,似乎我的问题是有解决方案的。

回答:

不使用神经网络几乎不可能进行任何图像识别,所以在这方面,你的方法是正确的。

然而,对于大多数图像识别问题,卷积层是一个聪明的主意,因为它们最初是为模拟连接到视神经的神经通路而创建的。另外,值得检查你输入神经网络的“你”和“不是你”的数量,否则网络往往会只预测一个类别。

对于“不是你”的图像,一个好的选择是使用一些不是你的其他人的照片,再加上一些其他随机的东西的照片。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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