如何判断Keras中只有一种类别(例如狗或其他)

时间:2018-01-22 12:36:17

标签: tensorflow keras

我只是想通过Keras判断图像是否是Dog。 我使用Image for Keras作为输入,我期望Output的置信度为0.0~1.0。 在这里询问之前,我明白有一些暗示。

  1. 我可以定义由我的学习模型判断的置信度阈值。

    • e.g。置信度< =我定义的阈值的0.9。如果置信度介于0.9和1.0之间,则为Dog。
  2. 我用过的最后一次激活是softmax,而编译的损失函数是categorical_crossentropy。但我发现sigmoid和binary_crossentropy的组合看起来不错。

  3. 我知道我需要狗图像作为训练数据来学习狗。 但对于其他人,我该怎么做呢?要学习不是狗,我是否需要准备猫,人,车,树等图像? 在这种情况下,学习"其他"案例,我需要很多类型的图像。那辆汽车,人类等等。

    我的理解怎么样?我想听听好主意。感谢。

1 个答案:

答案 0 :(得分:1)

我认为一般的理解是正确的,尽管它错过了一些细节。您提出的建议也有其他选择。例如,你不一定需要一个置信水平,你可以得到概率最高的类(狗/非狗),或者你甚至可以比较它们之间存在很大差异的概率。 。如果你不使用softmax,你可以得到一个输出为0.91和0.95的情况,所以要注意。

关于数据,您需要包含各种各样的狗和非狗对象,并注意您正在喂食的数据:有时网络会受到颜色的偏差。例如,让我们说你用网络喂养主要是黑色和棕色的狗。如果您的网络检测到蓝色,它可能会认为它不是狗。同样的事情可能发生在背景中:如果你的所有狗图片都有类似的背景(让我们说草),如果你在雪中输入一只狗它可能不起作用。

此外,您还可以通过其他方式思考,让您的网络关注一些狗的功能。从理论上讲,具有足够数据和时间训练的良好模型可能会成为一个很好的分类器,但您也可以进行一些特征工程,并为网络提供特定类型的输入。例如,您可以控制您想要每张狗品种的100张照片,或者一些图片集中在爪子上,其他图片可以看到尾巴等等。

您的问题描述非常笼统。