【发布时间】:2020-05-27 13:17:05
【问题描述】:
我正在尝试处理我的地面实况图像以创建一个热编码张量:
def one_hot(img, nclasses):
result = np.zeros((img.shape[0], img.shape[1], nclasses))
img_unique = img.reshape(512*512, img.shape[2])
unique = np.unique(img_unique, axis=0)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
for k, unique_val in enumerate(unique):
if (np.array_equal(img[i,j], unique_val)):
result[i,j,k] = 1
break
return result
这是从 WxHx3 图像创建 WxHxN 张量。我真的不喜欢这种方法,因为它的性能。你能建议更有效的方法吗?
我尝试使用 tf.one_hot 但它将图像转换为 WxHx3xN 张量。
【问题讨论】:
-
你能提供更多关于你的输入图像的细节吗? 3个频道是什么?通常地面实况图像只有 1 个通道,其中的值代表每个类别。
-
@DMolony 这 3 个通道是 RGB。有 3 个类由 3 种颜色表示:[255,0,0]、[0,0,255]、[255,255,255]。所以我想用一个热编码值替换这些颜色
标签: python tensorflow