【问题标题】:Tensorflow Auto TaggingTensorFlow 自动标记
【发布时间】:2017-09-30 22:46:02
【问题描述】:

我想知道如何为图像制作自动标记。

我已经尝试过 tensorflow 并对模型进行了多次训练。 首先,它对分类非常好。 但是现在,我需要进行自动标记。

使用 tensorflow 预测总和结果将始终为 1。

例如这样的:

xxx.jpg 预测结果: - 猫 = 0.822 - 狗 = 0.177 - 鹿 = 0.001 总和始终为 1。

我想要的是这样的:

xxx.jpg 预测结果: - 猫 = 0.901 - 狗 = 0.811 - 鹿 = 0.991

因为 xxx.jpg 中的同一张图片中可能有猫、狗和鹿。 就像 Clarifai (https://www.clarifai.com/) 所做的那样。

我想知道实现这一目标的基本概念是什么?

谢谢。

【问题讨论】:

    标签: image image-processing tensorflow tagging


    【解决方案1】:

    看看你制作的最后一层。正如您所说,您的预测总和始终为一,这听起来像是您应用了 softmax (https://en.wikipedia.org/wiki/Softmax_function)。 如果您删除它,您将获得每个对象的激活。

    如果这对您有帮助,请告诉我!

    【讨论】:

    • 其实我这里用的教程tensorflow.org/versions/r0.11/how_tos/image_retraining。所以,我还没有为培训编写自己的代码。也许,现在是时候这样做了。我会尝试一下,看看你的答案是否真的有效!谢谢!
    • 您好!我已经尝试阅读并决定从我之前提到的教程链接中编辑 retrain.py。因为它对我来说简化了很多。我试图从 retrain.py :final_tensor = tf.nn.softmax(logits, name=final_tensor_name) 中删除在这一行中定义的 softmax 层。但是,如果我只是删除它,它将无法工作,因为它稍后会丢失 final_tensor_name。所以,我只是把它改成这个final_tensor = tf.nn.relu(logits, name=final_tensor_name)。但结果是,现在的值可以超过 1。例如:cat = 1.345 - dog = 0.234543 - deer = 0。
    • 无论如何,我在阅读本文后使用了 relu [stackoverflow.com/questions/42697341/…
    • 所以,解决方案是将 Softmax 层改为 Sigmoid 层,而不是直接删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多