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()
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)