コード例 #1
0
def polar_plot(polar_plot_name, cart_patch, cart_label, polarbd, cart_seg,
               polar_patch, polar_label, cart_unet, cart_mask):
    fz = 20
    fig = plt.figure(figsize=(20, 8))
    plt.subplot(2, 5, 1)
    plt.title('Cartesian Patch', fontsize=fz)
    plt.imshow(cart_patch, cmap='gray')
    plt.subplot(2, 5, 2)
    plt.title('Cartesian Label', fontsize=fz)
    plt.imshow(cart_label, cmap='gray')
    plt.subplot(2, 5, 3)
    plt.title('Prediction \nDSC:%.3f' % (DSC(cart_seg, cart_label)),
              fontsize=fz)
    plt.imshow(diffmap(cart_seg, cart_label), cmap='gray')

    if cart_unet is not None:
        plt.subplot(2, 5, 4)
        plt.title('U-Net Prediction \nDSC:%.3f' % (DSC(cart_unet, cart_label)),
                  fontsize=fz)
        plt.imshow(diffmap(cart_unet, cart_label), cmap='gray')
    if cart_mask is not None:
        plt.subplot(2, 5, 5)
        plt.title('Mask-RCNN Prediction \nDSC:%.3f' %
                  (DSC(cart_mask, cart_label)),
                  fontsize=fz)
        plt.imshow(diffmap(cart_mask, cart_label), cmap='gray')

    plt.subplot(2, 5, 6)
    plt.title('Polar Patch', fontsize=fz)
    plt.imshow(polar_patch, cmap='gray')
    plt.subplot(2, 5, 7)
    plt.title('Polar Label', fontsize=fz)
    plt.imshow(polar_label, cmap='gray')
    plt.subplot(2, 5, 8)
    plt.title('Polar Prediction', fontsize=fz)
    plt.xlim([0, 256])
    plt.ylim([polarbd.shape[0], 0])
    plt.plot(polarbd[::4, 0],
             np.arange(0, polarbd.shape[0], 4),
             'o',
             markersize=2,
             label='Lumen')
    plt.plot(polarbd[::4, 1],
             np.arange(0, polarbd.shape[0], 4),
             'o',
             markersize=2,
             label='Wall')
    plt.legend()

    # fig.tight_layout()
    if polar_plot_name is not None:
        plt.savefig(polar_plot_name)
    else:
        plt.show()
    plt.close()
コード例 #2
0
def get_val_dice(cnn, config):
    val_dsc = []
    taskdir = cfg['taskdir']
    # load array from selected val to test dsc and compare with cart vw label
    if os.path.exists(taskdir + '/valarray_cart.npy'):
        xarray_val = np.load(taskdir + '/valarray_cart.npy')
        xlabel_val = np.load(taskdir + '/vallabel_cart.npy')
    else:
        val_exams = dbloader.list_exams('val', shuffle=False)
        xarray_val = []
        xlabel_val = []
        bi = 0
        for ei in val_exams:
            caseloader = CaseLoader(ei)
            print(caseloader)
            for slicei in caseloader.slices:
                if caseloader.valid_slicei(slicei) == False:
                    continue
                if bi % 20 == 0:
                    polarstack = caseloader.loadstack(slicei,
                                                      'cart_patch',
                                                      nei=config['depth'] // 2)
                    xarray_val.append(polarstack[..., None])
                    cartabel = caseloader.loadstack(slicei,
                                                    'cart_label',
                                                    nei=config['depth'] //
                                                    2)[...,
                                                       config['depth'] // 2]
                    xlabel_val.append(cartabel[:, :, 1] - cartabel[:, :, 0])
                bi += 1
        xarray_val = np.array(xarray_val)
        xlabel_val = np.array(xlabel_val)
        print(xarray_val.shape, xlabel_val.shape)
        np.save(taskdir + '/valarray_cart.npy', xarray_val)
        np.save(taskdir + '/vallabel_cart.npy', xlabel_val)

    polarbd_all = cnn.predict(xarray_val,
                              batch_size=config['G'] * config['batchsize'])
    for ti in range(xarray_val.shape[0]):
        carlabel = xlabel_val[ti]
        polarimg = xarray_val[ti]
        polarbd = polarbd_all[ti] * config['width'] // 2
        # polarprob = polarprobr[:,:,0,1]-polarprobr[:,:,0,0]
        contourin, contourout = toctbd(polarbd, config['patchheight'],
                                       config['patchheight'])
        carseg = plotct(polarimg.shape[1], contourin, contourout)
        cdsc = DSC(carlabel, carseg)
        val_dsc.append(cdsc)

        # pxconf = (np.sum(polarprob[polarseg>0])-np.sum(polarprob[polarseg==0]))/np.sum(polarseg>0)
        # sconf.append(pxconf)

        print('\rPred',
              ti,
              '/',
              xarray_val.shape[0],
              'val dice',
              '%.5f' % np.mean(val_dsc),
              end="")
    return np.mean(val_dsc)