def merge(tbl): v=torch.Tensor([[1,0,0]]) targets=[x['target'] for x in tbl] locations=[] features=[] for idx,char in enumerate(tbl): m = torch.eye(2) r = torch.randint(0,3,[1]).int().item() alpha = torch.rand(1).item()*0.4-0.2 if r == 1: m[0][1] = alpha elif r == 2: m[1][0] = alpha else: m = torch.mm(m, torch.FloatTensor( [[math.cos(alpha), math.sin(alpha)], [-math.sin(alpha), math.cos(alpha)]])) coords=char['coords'] coords = torch.mm(coords, m) + torch.FloatTensor(1, 2).uniform_(center-jitter, center+jitter) coords = torch.cat([coords.long(),torch.LongTensor([idx]).expand([coords.size(0),1])],1) locations.append(coords) f=char['features'] f=torch.mm(f, m) f /= (f**2).sum(1,keepdim=True)**0.5 f = torch.cat([f,torch.ones([f.size(0),1])],1) features.append(f) return {'input': scn.InputLayerInput(torch.cat(locations,0), torch.cat(features,0)), 'target': torch.LongTensor(targets)}
def merge(tbl): v=torch.Tensor([[1,0,0]]) targets=[x['target'] for x in tbl] locations=[] features=[] for idx,char in enumerate(tbl): coords=char['coords']+center coords = torch.cat([coords.long(),torch.LongTensor([idx]).expand([coords.size(0),1])],1) locations.append(coords) f=char['features'] f = torch.cat([f,torch.ones([f.size(0),1])],1) features.append(f) return {'input': scn.InputLayerInput(torch.cat(locations,0), torch.cat(features,0)), 'target': torch.LongTensor(targets)}
def merge(tbl): targets=[x[1] for x in tbl] locations=[] features=[] for idx, (img, tar) in enumerate(tbl): #print(np.array(img).shape) (256, 256) coords = np.nonzero(np.array(img)[0:spatial_size, 0:spatial_size]) coords = torch.LongTensor(np.vstack(coords).T) coords = torch.cat([coords.long(), torch.LongTensor([idx]).expand([coords.size(0), 1])], 1) locations.append(coords) f = torch.ones([coords.size(0), 1]) f = torch.cat([f, torch.ones([coords.size(0), 1])], 1) features.append(f) return {'input': scn.InputLayerInput(torch.cat(locations,0), torch.cat(features,0)), 'target': torch.LongTensor(targets)}
def merge(tbl): #targets=[x['target'] for x in tbl] locations = [] features = [] targets = [] mask = torch.FloatTensor(32, 32).uniform_() <= density #print(mask) for idx, item in enumerate(tbl): l = [] f = [] for r in range(0, item[0].shape[1]): for c in range(0, item[0].shape[2]): if mask[r, c] == True: #print(str(r) + " " + str(c)) l.append([r, c]) f.append(item[0][:, r, c].tolist()) l = torch.LongTensor(l) #print("l raw") #print(l) l = torch.cat( [l, torch.LongTensor([idx]).expand([l.size(0), 1])], 1) #print("l padded") #print(l) locations.append(l) #print("f raw") #print(f) f = torch.FloatTensor(f) #print("f padded") #print(f) features.append(f) targets.append(item[1]) return { 'input': scn.InputLayerInput(torch.cat(locations, 0), torch.cat(features, 0)), 'target': torch.LongTensor(targets) }