示例#1
0
 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)}
示例#2
0
 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)}
示例#3
0
 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)}
示例#4
0
    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)
        }