如何解决Keras U-net 预测结果仅对某些类别明显
我尝试使用来自 https://github.com/HZCTony/U-net-with-multiple-classification 的 U-net 模型相同,除了输出层。
conv10 = Conv2D(num_class,1,activation = 'softmax')(conv9)
我的班级数是 4,所以我更改了 data.py 代码
def adjustData(img,mask,flag_multi_class,num_class):
if(flag_multi_class):
img = img / 255.
mask = mask[:,:,0] if(len(mask.shape) == 4) else mask[:,0]
mask[(mask!=255.)&(mask!=10.)&(mask!=30.)&(mask!=40.)] = 0.
new_mask = np.zeros(mask.shape + (num_class,))
########################################################################
#You should define the value of your labelled gray imgs
#For example,the imgs in /data/catndog/train/label/cat is labelled white
#you got to define new_mask[mask == 255,0] = 1
#it equals to the one-hot array [1,0].
########################################################################
new_mask[mask == 10.,0] = 1
new_mask[mask == 30.,1] = 1
new_mask[mask == 40.,2] = 1
new_mask[mask == 255.,3] = 1
mask = new_mask
火车进展顺利。然而,当我检查预测时,大多数结果都映射到了四个类中的两个的特定类。 保存代码下方
def labelVisualize(num_class,color_dict,img):
img_out = np.zeros(img[:,0].shape + (3,))
for i in range(img.shape[0]):
for j in range(img.shape[1]):
index_of_class = np.argmax(img[i,j])
img_out[i,j] = color_dict[index_of_class]
return img_out
def saveResult(save_path,npyfile,flag_multi_class = True,num_class = num_classes ):
count = 1
for i,item in enumerate(npyfile):
if flag_multi_class:
img = labelVisualize(num_class,COLOR_DICT,item)
img = img.astype(np.uint8)
io.imsave(os.path.join(save_path,"%d.png"%count),img)
我的数据集错了吗?还是我的代码错了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。