gpt4 book ai didi

python - 语义分割的 model.predict() 函数的结果是什么意思?

转载 作者:行者123 更新时间:2023-12-01 07:35:34 25 4
gpt4 key购买 nike

我使用Segmentation Models用于多类(在我的例子中为 4 类)语义分割的库。该模型(具有“resnet34”主干的 UNet)使用 3000 个 RGB (224x224x3) 图像进行训练。准确率约为92.80%。

1) 为什么 model.predict() 函数需要 (1,224,224,3) 形状的数组作为输入?即使在Keras documentation中我也没有找到答案。 。实际上,下面的代码可以工作,我没有问题,但我想了解原因。

predictions = model.predict( test_image.reshape(-1,224,224,3) );

2) predictions 是一个 (1,224,224,3) 形状的 numpy 数组。它的数据类型是float32并且包含一些 float 。这个数组里面的数字的含义是什么?我怎样才能想象它们?我的意思是,我假设结果数组将包含每个像素的 4 个类标签(从 0 到 3)之一,然后我将为每个类应用颜色图。也就是说,结果应该是预测图,但我没有得到。为了更好地理解我关于预测图的意思,请访问Jeremy Jordan's blog about semantic segmentation .

result = predictions[0]
plt.imshow(result) # import matplotlib.pyplot as plt

3)我最终想做的是Github: mrgloom - Semantic Segmentation Categorical Crossentropy Examplevisualy_inspect_result 函数中执行。

最佳答案

1) 深度神经网络架构中的图像输入形状为 (224,224,3),因此 width=height=224 和 3 个颜色 channel 。如果您想一次为模型提供多张图像,则需要额外的维度。所以 (1,224,224,3) 或 (某物, 224,224,3)。

2) 根据 Segementation models repo 的文档,您可以指定要作为输出 model = Unet('resnet34',classes=4,activation='softmax') 的类数量。因此,如果您将标记图像 reshape 为形状 (1,224,224,4)。最后一个维度是掩码 channel ,如果像素 i,j 属于 k 类,则用 0 或 1 指示。然后您可以预测并访问每个输出掩码

masked = model.predict(np.array([im])[0]
mask_class0 = masked[:,:,0]
mask_class1 = masked[:,:,1]

3) 然后使用 matplotlib 您将能够绘制语义分割或使用 scikit-image :color.label2rgb函数

关于python - 语义分割的 model.predict() 函数的结果是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57006542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com