def data_generator(config, exams, aug): xarray = np.zeros([ config['batchsize'], config['height'], config['width'], config['depth'], config['channel'] ]) yarray = np.zeros([config['batchsize'], config['patchheight'], 2]) bi = 0 while 1: for ei in exams: caseloader = CaseLoader(ei) # print(caseloader) for slicei in caseloader.slices: polarstack = caseloader.loadstack(slicei, 'cart_patch', nei=config['depth'] // 2) if polarstack is None: # print('skip',caseloader,slicei) continue polarcont = caseloader.loadstack(slicei, 'polar_cont', nei=config['depth'] // 2) polar_cont_center = polarcont[:, :, config['depth'] // 2] xarray[bi] = polarstack[..., None] yarray[bi] = polar_cont_center bi += 1 if bi == config['batchsize']: bi = 0 if aug == True: for offi in random.sample(range(config['patchheight']), config['rottimes']): xarray_off = batch_polar_rot(xarray, offi) yarray_off = batch_polar_rot(yarray, offi) yield (xarray_off, yarray_off) else: yield xarray, yarray
def data_generator(config, exams, aug): xarray = np.zeros([ config['batchsize'], config['height'], config['width'], config['depth'], config['channel'] ]) yarray = np.zeros([config['batchsize'], config['patchheight'], 2]) bi = 0 while 1: for ei in exams: caseloader = CaseLoader(ei) #print(caseloader) for slicei in caseloader.slices: if caseloader.valid_slicei(slicei) == False: continue if caseloader.caselist['slices'][slicei]['augpatch'] == []: continue gen_aug_patch(caseloader, slicei) print(caseloader, slicei, 'gen') aug_polar_patch_batch = caseloader.load_aug_patch( slicei, 'polar_patch') aug_polar_cont_batch = caseloader.load_aug_patch( slicei, 'polar_cont') for augi in range(len(aug_polar_patch_batch)): aug_cart_patch = aug_polar_patch_batch[augi] xarray[bi] = aug_polar_patch_batch[augi, :, :, :, None] aug_polar_cont = aug_polar_cont_batch[augi] yarray[bi] = aug_polar_cont_batch[augi] bi += 1 if bi == config['batchsize']: bi = 0 if aug == True: for offi in random.sample(range(config['height']), config['rottimes']): xarray_off = batch_polar_rot(xarray, offi) yarray_off = batch_polar_rot(yarray, offi) yield (xarray_off, yarray_off) else: yield (xarray, yarray)
def data_generator(config, exams, aug): xarray = np.zeros([ config['batchsize'], config['height'], config['width'], config['depth'], config['channel'] ]) yarray = np.zeros([config['batchsize'], config['patchheight'], 2]) bi = 0 while 1: for ei in exams: caseloader = CaseLoader(ei) # print(caseloader) for slicei in caseloader.slices: if caseloader.valid_slicei(slicei) == False: continue cartcont = caseloader.load_cart_cont(slicei) min_dist_map = caseloader.load_cart_min_dist(slicei) dcmstack = caseloader.loadstack(slicei, 'dcm') ctx, cty = caseloader.loadct(slicei) aug_polar_patch_batch = np.zeros((10, 256, 256, 3)) aug_polar_cont_batch = np.zeros((10, 256, 2)) offi = 0 mi = 0 while offi < 10 and mi < 50: mi += 1 if offi == 0: ofx = 0 ofy = 0 else: ofx = random.randint(-20, 20) ofy = random.randint(-20, 20) cctx = ofx + ctx ccty = ofy + cty if min_dist_map[256 + ofx, 256 + ofy] < 0.5: if mi > 40: print('mi', mi) # print('mind',min_dist_map[256+ofx,256+ofy]) continue # print(ofx,ofy) new_polar_cont_lumen = tocordpolar(cartcont[0], cctx, ccty) new_polar_cont_wall = tocordpolar(cartcont[1], cctx, ccty) aug_polar_cont_batch[offi, :, 0] = new_polar_cont_lumen aug_polar_cont_batch[offi, :, 1] = new_polar_cont_wall new_cart_patch = croppatch(dcmstack, ccty, cctx, 256, 256) new_polar_patch = topolar(new_cart_patch, 256, 256) aug_polar_patch_batch[offi] = new_polar_patch / np.max( new_polar_patch) offi += 1 # aug_polar_patch_batch = caseloader.load_aug_patch(slicei,'polar_patch') # aug_polar_cont_batch = caseloader.load_aug_patch(slicei,'polar_cont') for augi in range(len(aug_polar_patch_batch)): xarray[bi] = aug_polar_patch_batch[augi, :, :, :, None] yarray[bi] = aug_polar_cont_batch[augi] bi += 1 if bi == config['batchsize']: bi = 0 if aug == True: for offi in random.sample(range(config['height']), config['rottimes']): xarray_off = batch_polar_rot(xarray, offi) yarray_off = batch_polar_rot(yarray, offi) yield (xarray_off, yarray_off) else: yield (xarray, yarray)