微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Keras U-net 预测结果仅对某些类别明显

如何解决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 举报,一经查实,本站将立刻删除。