我有一个自定义数据集,其中包含跨RGB通道的1100个视网膜图像及其相应的灰度蒙版,分辨率为1500x1500 . 工作是从这些图像中提取视盘 . 我一直在尝试从这些图像中创建训练集,以便我可以将其融入到u-net模型中 . 我使用opencv将所有图像的大小调整为256x256分辨率,并创建了这些图像的numpy数组 . 但是当我将这些数据融入模型时,无论我增加了多少个时代,我的准确度都不会超过1 . 我也尝试过骰子系数和损失函数 . 它们也给出大于1的值 . 我想知道问题是在训练数据创建中还是在模型中 . 下面是我用于训练集创建的代码 .
train_data='train_image_folder'
label_data="mask_image_folder"
def training():
train_images=[]
for i in tqdm(os.listdir(train_data)):
path=os.path.join(train_data,i)
img=cv2.imread(path,-1)
img=cv2.resize(img,(256,256))
train_images.append(np.array(img))
return train_images
training_images=training()
train_data=np.array([training_images]).reshape(-1,256,256,3)
def label():
label_images=[]
for i in tqdm(os.listdir(label_data)):
path=os.path.join(label_data,i)
img=cv2.imread(path,0)
img=cv2.resize(img,(256,256))
label_images.append(np.array(img))
return label_images
label_images=label()
label_data=np.array([label_images]).reshape(-1,256,256,1)
下面是编译和拟合的代码 .
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy","binary_crossentropy",dice_coef])
model.fit(train_data,label_data,epochs=50,batch_size=20)
以及相应的骰子系数函数
def dice_coef(y_true, y_pred):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
我不知道我做错了什么 . 任何帮助将非常感激
1 回答
我可以请你输入你的代码(Created model)吗?你测试SGD还是改变学习率?
请测试此部件代码