结果是什么意思模型.预测()语义分割功能?

2024-06-16 11:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

1)为什么模型.预测()函数需要(1224224,3)形状的数组作为输入?我甚至在Keras documentation里也没找到答案。实际上,下面的代码是有效的,我没有问题,但我想了解原因。在

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

2)predictions是一个(1224224,3)形状的numpy数组。它的数据类型是float32,并且包含一些浮点数。这个数组中的数字是什么意思?我怎么能想象他们呢?对于每个类I,每个类的标签I都将包含一个。换句话说,结果应该是一张预测图,但我没有得到。为了更好地理解我对预测图的理解,请访问Jeremy Jordan's blog about semantic segmentation。在

^{pr2}$

3)我最后想做的是Github: mrgloom - Semantic Segmentation Categorical Crossentropy Examplevisualy_inspect_result函数中所做的。在


Tags: 函数模型unetmodels语义rgb数组例子
1条回答
网友
1楼 · 发布于 2024-06-16 11:49:41

1)深度神经网络结构中的图像输入形状是(224224,3),因此宽度=高度=224和3个颜色通道。你需要一个额外的维度,以防你一次给你的模型多个图像。所以(1224224,3)或(224224224,3)。在

2)根据Segementation models repo的文档,您可以指定想要的类数作为输出model = Unet('resnet34', classes=4, activation='softmax')。因此,如果你改变你的标签图像的形状(1224224,4)。最后一个维度是一个掩码通道,用0或1表示如果像素i,j属于k类,那么您可以预测并访问每个输出掩码

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

{2{mat}可以使用{/strong}函数来绘制

相关问题 更多 >