unet-nested-multiple-classification icon indicating copy to clipboard operation
unet-nested-multiple-classification copied to clipboard

issue in training

Open manvirvirk opened this issue 5 years ago • 9 comments

INFO: Using device cuda INFO: Network: NestedUNet model 3 input channels 3 output channels (classes) Bilinear upscaling INFO: Creating dataset with 20 examples training stops after this. can anyone help

manvirvirk avatar Apr 07 '20 18:04 manvirvirk

Could u give me a more detailed description of the error

zonasw avatar Apr 12 '20 04:04 zonasw

RuntimeError: CUDA error: device-side assert triggered

Traceback (most recent call last): File "train.py", line 254, in train_net(net=net, cfg=cfg) File "train.py", line 142, in train_net val_score = eval_net(net, val_loader, device, n_val, cfg) File "train.py", line 210, in eval_net sub_cross_entropy = F.cross_entropy(pred.unsqueeze(dim=0), true_mask.unsqueeze(dim=0).squeeze(1)).item() RuntimeError: CUDA error: device-side assert triggered

manvirvirk avatar Apr 12 '20 08:04 manvirvirk

Your category number is 3, so your label map should only contain 0,1 and 2, but your label map contain something else. Check your label map.

zonasw avatar Apr 12 '20 13:04 zonasw

could not get it? Please give more details. Thanks

manvirvirk avatar Apr 12 '20 13:04 manvirvirk

Check that your label map contains only 0,1, and 2. You can complete the check by running the following program:

import os
import os.path as osp
from tqdm import tqdm
import cv2
import numpy as np


num_classes = 3
mask_dir = "masks"
mask_names = os.listdir(mask_dir)

for mask_name in tqdm(mask_names):
    mask_path = osp.join(mask_dir, mask_name)
    mask = cv2.imread(mask_path, 0)
    h, w = mask.shape[:2]
    pix = []
    for i in range(0, num_classes):
        pix.append(len(np.where(mask==i)[0]))
    if sum(pix) != h*w:
        print("error: " + mask_name)

zonasw avatar Apr 12 '20 14:04 zonasw

when i set the model='Unet',cannot run,could you help to reply me ,thinks

follow is the erros: Traceback (most recent call last): File ".\train.py", line 255, in train_net(net=net, cfg=cfg) File ".\train.py", line 122, in train_net loss += criterion(inference_mask, masks) File "C:\Users\Administrator\anaconda3\lib\site-packages\torch\nn\modules\module.py", line 550, in call result = self.forward(*input, **kwargs) File "E:\深度学习\github\unet多分类\unet-nested-multiple-classification-master\losses.py", line 23, in forward loss = L.lovasz_softmax(out, target) File "E:\深度学习\github\unet多分类\unet-nested-multiple-classification-master\LovaszSoftmax\pytorch\lovasz_losses.py", line 167, in lovasz_softmax loss = lovasz_softmax_flat(*flatten_probas(probas, labels, ignore), classes=classes) File "E:\深度学习\github\unet多分类\unet-nested-multiple-classification-master\LovaszSoftmax\pytorch\lovasz_losses.py", line 190, in lovasz_softmax_flat raise ValueError('Sigmoid output possible only with 1 class') ValueError: Sigmoid output possible only with 1 class

sunchuanxi avatar May 20 '20 13:05 sunchuanxi

不能把category number的类别定义为mask的分割种类呢,即不需要再把mask的颜色种类重新按0,1,2,3这样排序,保留原本的颜色?

MEYE66 avatar Aug 08 '20 08:08 MEYE66

不能把category number的类别定义为mask的分割种类呢,即不需要再把mask的颜色种类重新按0,1,2,3这样排序,保留原本的颜色?

可以,但你需要对加载数据的代码做一些修改。

zonasw avatar Aug 09 '20 14:08 zonasw

这代码只能运用于图像尺寸一样的数据集吗???

wangfusheng-cqu avatar Nov 04 '20 03:11 wangfusheng-cqu