【发布时间】:2018-05-29 22:14:10
【问题描述】:
我只需要在 Keras 上创建 CNN 来识别一种特定类型的图像,在我的例子中是信用卡。所以看来我只需要一个输出 sigmoid 神经元。但问题是如何训练这样的网络,因为我只有一个目标类别。或者我应该添加带有猫和狗的随机图像来告诉 NN 这不是信用卡。我什至不确定它是二进制分类。我还没有任何代码,但首先我会尝试 Keras 文档中的 VGG-16。
【问题讨论】:
标签: keras
我只需要在 Keras 上创建 CNN 来识别一种特定类型的图像,在我的例子中是信用卡。所以看来我只需要一个输出 sigmoid 神经元。但问题是如何训练这样的网络,因为我只有一个目标类别。或者我应该添加带有猫和狗的随机图像来告诉 NN 这不是信用卡。我什至不确定它是二进制分类。我还没有任何代码,但首先我会尝试 Keras 文档中的 VGG-16。
【问题讨论】:
标签: keras
鉴于您将 VGG-16 与迁移学习结合使用,一种直接的方法是将您的信用卡图像添加到 ImageNet 数据中。您可以简单地标记所有其他图像 not credit card,并微调两个输出神经元上的 softmax(credit card 与 not credit card)或表示图像是信用卡的信心的 sigmoid 激活。
这将对一组不同的替代图像进行微调,最终会产生更强大和更准确的分类器。
但是,如果您正在考虑将其部署到实际用例中,则需要仔细考虑 ImageNet 图像格式(分辨率等)与预处理之间的映射以及用例中的格式。 ImageNet 上的测试结果可能会优于真实数据的结果。理想的做法是从用例中收集非信用卡示例并使用这些示例进行微调。
【讨论】:
predict 方法会为您提供一系列预测成为信用卡的概率。然后,您可以定义一个简单的函数来计算不同概率阈值[0, .05, .1, ..., .95] 的误报和误报,并选择最适合您目标的函数。这是主观的——例如,您想非常确定您识别的阳性病例是真正阳性的。