我使用分割模型库进行多类(在我的情况下为 4 类)语义分割。该模型(具有“resnet34”主干的 UNet)使用 3000 个 RGB(224x224x3)图像进行训练。准确率约为 92.80%。
1) 为什么 model.predict() 函数需要 (1,224,224,3) 形状的数组作为输入?即使在Keras 文档中我也没有找到答案。实际上,下面的代码正在运行,我对此没有任何问题,但我想了解原因。
predictions = model.predict( test_image.reshape(-1,224,224,3) );
2)predictions
是一个 (1,224,224,3) 形状的 numpy 数组。它的数据类型是float32
并且包含一些浮点数。这个数组中的数字是什么意思?我如何可视化它们?我的意思是,我假设结果数组将包含每个像素的 4 个类标签(从 0 到 3)之一,然后我将为每个类应用颜色图。换句话说,结果应该是一个预测图,但我没有得到它。为了更好地理解我对预测图的意思,请访问Jeremy Jordan 关于语义分割的博客。
result = predictions[0]
plt.imshow(result) # import matplotlib.pyplot as plt
3)我最终想做的就像Github:mrgloom - Semantic Segmentation Categorical Crossentropy Example在visualy_inspect_result
函数中所做的。