【问题标题】:Watermark binary classifier in Tensorflow Keras stuckTensorflow Keras 中的水印二进制分类器卡住了
【发布时间】:2021-05-12 17:12:22
【问题描述】:

我的目标是创建一个模型,该模型可以根据一个特定的水印是否存在来对图片进行分类。如果我想检查不同的水印,理想情况下是使用该新水印创建另一个数据集,然后重新训练模型。据我了解,这是一个二元分类器。

这是正确的方法吗?

我坚持使用我的模型来识别图片上是否有水印。我的指标没有变化。示例:

loss: 0.6931 - accuracy: 0.5000 - val_loss: 0.6931 - val_accuracy: 0.5000

我已经准备了一个数据文件夹结构,例如:

培训

  • 水印
  • 无水印

验证

  • 水印
  • 无水印

我使用了一个数据集,每个类别包含 1000 张图像。这是带有我自己的水印的数据集的示例:

希望你能帮上忙……

  1. 如何更改模型以“识别”水印?
  2. 为什么我的“损失”和“准确度”即使更改图像大小、时期、数据集也不会移动?
  3. 我是否应该只使用带有增强功能且没有背景的水印图像来训练模型?
model = tf.keras.models.Sequential([
        tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(250, 250, 3)),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),
        tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),
        tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
        tf.keras.layers.MaxPooling2D(2,2),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dropout(0.5),
        tf.keras.layers.Dense(512, activation='relu'),
        tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(loss = 'binary_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

history = model.fit(train_generator, 
                  epochs=25,
                  validation_data = validation_generator,
                  verbose = 1,
                  validation_steps=3)

谢谢

【问题讨论】:

    标签: python tensorflow keras watermark image-classification


    【解决方案1】:

    由于您正在执行二进制分类,您是否将ImageDataGenerator.flow_from_directory 方法中的class_mode 参数设置为'binary'?默认值为'categorical',这不是您应该在此处使用的,因为您只有一个输出节点。

    这是一个常见的陷阱。我猜一开始的准确度值是 0.5,因为您可能拥有相同数量的水印图像和非水印图像,并且性能永远不会提高,因为您传递了错误的值 class_mode

    TL;DR:在flow_from_directory 中设置class_mode='binary'(而不是默认的class_mode='categorical')。

    【讨论】:

    • 太棒了!这改变了一切。
    猜你喜欢
    • 2017-10-02
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2018-11-23
    • 2017-05-30
    • 2016-05-18
    • 1970-01-01
    相关资源
    最近更新 更多