在按照这个教程进行语义分割任务时,
我注意到模型的最终预测输出不是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教程 – 177 – 简易语义分割(使用分割模型库)
Github原始源代码
回答:
不确定您使用的是哪种模型,但很可能模型的最后一层是一个使用sigmoid函数作为激活函数的密集层。这将给出0到1之间的值。您需要找到一个阈值,并测试哪个阈值能带来更好的结果。例如,将预测值小于0.5的所有值转换为0,将预测值大于或等于0.5的值转换为1。然而,这个阈值需要调整以查看哪个阈值能带来更好的结果。建议您使用完全未用于训练的数据来找到这个阈值。