示例#1
0
def valid(model, device, dataloader):
    sigmod = nn.Sigmoid()
    pbar = tqdm(enumerate(dataloader), total=len(dataloader))
    ajiMeanList = []
    ajiList = []
    for idx, (images, labels, bounds) in pbar:
        images = images.float().to(device)
        sout, sout_0, sout_1, sout_2, sout_3, cout, cout_0, cout_1, cout_2, cout_3 = model(
            images)
        # 计算损失函数
        # 计算aji
        # print('输出图片的大小: ',sout.shape)
        for index in range(sout.shape[0]):
            pred_sout = sigmod(sout[index][0]).cpu().data.numpy()
            pred_cout = sigmod(cout[index][0]).cpu().data.numpy()
            gt_label0 = labels[index][0]
            # 格式化label
            gt_label0[gt_label0 != 0] = 1
            # 后处理图像并且计算值
            # 这个是TAFE需要进行的操作
            postProcImg = post_proc(pred_sout - pred_cout,
                                    post_dilation_iter=2)
            # 解决一些训练的时候产生的错误
            if postProcImg is not None:
                aji = get_fast_aji(remap_label(gt_label0),
                                   remap_label(postProcImg))
                print(aji)
                ajiList.append(aji)
        # 全部计算完成之后计算一次数据
        ajiArray = np.array(ajiList)
        ajiMean = np.mean(ajiArray)
        pbar.set_description(f'valid: ----ajiMean---- {ajiMean}')
        ajiMeanList.append(ajiMean)
    return ajiMeanList
示例#2
0
ajis = []
for i, gt in enumerate(gts):
    spred = np.zeros(gt.shape, dtype=np.uint16)
    for isz, cur_sz in enumerate(size_list):
        pred_dir = os.path.join(
            pred_root_dir, 'noaug_nodrop_' + losstype + '_iouthsp' +
            str(iou_ths) + '_dilation_' + str(idilation) + '_sz' + cur_sz +
            '_ds0_dc2' + '_wtta', 'rnd_0', 'pred_res')
        dmat = scio.loadmat(os.path.join(pred_dir, str(i) + '.mat'))
        s = dmat['instance'].astype(np.uint16)
        s_mask = np.logical_and(spred == 0, s > 0)
        max_intance_id = spred.max()
        s[s_mask] += max_intance_id
        spred[s_mask] = s[s_mask]
        #spred = s
    spred = remap_label(spred)
    gt = remap_label(gt)
    aji = get_fast_aji(gt, spred)
    print(i + 1, aji)
    ajis.append(aji)
    if if_save:
        save_dir = os.path.join(pred_root_dir, 'final_res')
        confirm_loc(save_dir)
        scio.savemat(os.path.join(save_dir,
                                  str(i) + '.mat'), {
                                      'instance': spred,
                                      'gt': gt
                                  })
avg_aji = np.mean(ajis)
print(avg_aji)
示例#3
0
net_val_dir = '/data0/cong/workplace/kumar_5fold/val/baseline_4fold_epoch600'
gts = np.load('/home/cong/workplace/kumar/gt.npy').astype(np.uint16)
for itrain in range(ntrain):
    ajis_allcp = []
    pred_dir = os.path.join(net_val_dir, 'rnd_' + str(itrain))
    for i_cp in range(save_step, max_epoch + 1, save_step):
        ajis = []
        for i in kfold_val_idx[itrain]:
            dmat = scio.loadmat(
                os.path.join(pred_dir, 'snapshot_' + str(i_cp),
                             str(i) + '.mat'))
            s = dmat['s']
            c = dmat['c']
            if len(s.shape) > 2:
                s = np.reshape(s, [s.shape[1], s.shape[2]])
            if len(c.shape) > 2:
                c = np.reshape(c, [c.shape[1], c.shape[2]])
            lbl = post_proc(s - c, post_dilation_iter=2).astype(np.uint16)
            aji = get_fast_aji(remap_label(gts[i]), remap_label(lbl))
            #print(i, aji)
            ajis.append(aji)
        avg_aji = np.array(ajis).mean()
        ajis_allcp.append(avg_aji)
        print('Itrain {0:d}: Validation AJI of snapshot {1:d}: {2:.3f}'.format(
            itrain, i_cp, avg_aji))
    maxaji_allcp = np.array(ajis_allcp).max()
    icp = np.array(ajis_allcp).argmax()
    np.save(os.path.join(pred_dir, 'val_aji.npy'), np.array(ajis_allcp))
    print('Itrain {0:d}: the max validation AJI {1:.3f} in {2:d} snapshot'.
          format(itrain, maxaji_allcp, icp))
示例#4
0
            dir_checkpoint = './weight/noaug_nodrop_focalloss_iouthsp5_dilation_2_sz' + str(
                cur_sz) + '_ds0_dc2_ifold' + str(ifold) + '/rnd_0/'
            snapshot_list = glob.glob(dir_checkpoint + '*.pth')
            for isnapshot_name in snapshot_list:
                isnapshot = int(
                    isnapshot_name.split('/')[-1].split('.')[0].split('_')[-1])
                # if isnapshot <= 10:
                #     continue
                val_pred_filefold = './val/noaug_nodrop_focalloss_iouthsp5_dilation_2_sz' + str(
                    cur_sz) + '_ds0_dc2_ifold' + str(
                        ifold) + '_wtta/rnd_0/snapshot_' + str(isnapshot)
                ajis = []
                for i_data in valset[0]:
                    pred_dmat = scio.loadmat(
                        os.path.join(val_pred_filefold,
                                     str(i_data) + '.mat'))
                    pred_lbl_map = pred_dmat['instance'].copy()
                    if len(np.unique(pred_lbl_map[pred_lbl_map > 0])) >= 1:
                        pred_lbl_map = remap_label(pred_lbl_map)
                    aji = get_fast_aji(remap_label(gts[i_data]), pred_lbl_map)
                    ajis.append(aji)
                avg_aji = np.mean(ajis)
                if avg_aji >= cur_bset_aji:
                    cur_bset_aji = avg_aji
                    cur_best_aji_isnapshot = isnapshot
                info2print = 'Size: {:s}, snapshot: {:d}, cur aji: {:.5f}, best aji: {:.5f} in isnapshot: {:d}'.format(
                    cur_sz, isnapshot, avg_aji, cur_bset_aji,
                    cur_best_aji_isnapshot)
                print(info2print)
                f.write(info2print + '\n')
示例#5
0
    for i in valset:
        lbl = None
        for cursz in [48, 176]:
            dir_savefile = './val/noaug_nodrop_bceloss_iouthsp' + 'ths' + str(
                ths) + '_dilation_' + str(dilation_rate) + '_sz' + str(
                    cursz) + '_ds' + str(dilation_s) + '_dc' + str(
                        dilation_c) + '_wtta/rnd_' + str(irnd) + '/'
            dmat = scio.loadmat(
                os.path.join(dir_savefile, 'snapshot_' + str(i_cp),
                             str(i) + '.mat'))
            if lbl is None:
                lbl = dmat['instance']
            else:
                lbl_tmp = lbl.copy()
                max_num = instance_tmp.max()
                lbl[instance_tmp ==
                    0] = dmat['instance'][lbl_tmp == 0] + max_num

        lbl = remap_label(lbl.astype(np.uint16))
        aji = get_fast_aji(remap_label(gts[i]), remap_label(lbl))
        #print(i, aji)
        ajis.append(aji)
    avg_aji = np.array(ajis).mean()
    ajis_allcp.append(avg_aji)
    print('Itrain {0:d}: Validation AJI of snapshot {1:d}: {2:.3f}'.format(
        itrain, i_cp, avg_aji))
maxaji_allcp = np.array(ajis_allcp).max()
icp = np.array(ajis_allcp).argmax()
np.save(os.path.join(pred_dir, 'val_aji.npy'), np.array(ajis_allcp))
print('Itrain {0:d}: the max validation AJI {1:.3f} in {2:d} snapshot'.format(
    itrain, maxaji_allcp, icp))