【问题标题】:Why is the predicted output (value) from segmentation model library (0 to 1) instead of (0 or 1)?为什么分割模型库的预测输出(值)是(0到1)而不是(0或1)?
【发布时间】:2021-07-23 23:07:34
【问题描述】:

在按照tutorial 执行语义分割任务时,
我注意到模型的最终预测输出不是 0 和 1,
它由从 0.0000xxxx 到 1.0 的十进制值组成。

由于模型只接受了0和1的标签,
输出中的十进制值范围是什么意思?
(像素属于某一类的可能性?)

test_img = cv2.imread('data/membrane1/test/0.png', cv2.IMREAD_COLOR)    
test_img = cv2.resize(test_img, (SIZE_Y, SIZE_X))
test_img = cv2.cvtColor(test_img, cv2.COLOR_RGB2BGR)
test_img = np.expand_dims(test_img, axis=0)
prediction = model.predict(test_img)
plt.imshow(prediction_image, cmap='gray')

示例输出图像

样本输出/预测值

Youtube tutorial - 177 - Semantic segmentation made easy (using segmentation models library)
Github Original Source Code

【问题讨论】:

    标签: python machine-learning deep-learning semantic-segmentation


    【解决方案1】:

    不确定您使用的是什么类型的模型,但很可能模型的最后一层是一个密集层,其 sigmoid 函数作为activation_function。这将为您提供介于 0 和 1 之间的值。您需要找到一个阈值并查看哪个阈值可以提供更好的结果。例如,预测给出的所有小于 0.5 的值,将它们变为 0。预测给出的值 >= 0.5,将它们变为 1。但是,需要调整此阈值以查看哪个给出更好的结果。建议您在根本没有用于训练的数据中找到这个阈值。

    【讨论】:

      【解决方案2】:

      我从另一个 video (19.20 ~ 20.04) 的同一个 youtube 教程中发现了这一点。

      预测中的值确实反映了像素与其对应类别的概率。

      这里指的是当前像素是膜的概率。

      【讨论】:

        猜你喜欢
        • 2012-03-28
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多