in generation/models/pix2pixHD_model.py [0:0]
def broadcast_features(self, features_dict, label_map, random=False, from_avg=False):
label_map_np = label_map.cpu().numpy().astype(int)
feat_map = self.Tensor(label_map.size()[0], self.opt.feat_num, label_map.size()[2], label_map.size()[3])
for i in np.unique(label_map_np):
label = i if i < 1000 else i//1000
if label in features_dict:
if label == 6 and random:
# print(features_dict[label].shape)
feat = self.get_z_random(features_dict[label].shape[-1]) #CHECK
feat = feat.view(-1, features_dict[label].shape[-1])
else:
# print(features_dict[label].shape)
feat = features_dict[label]
idx = (label_map == int(i)).nonzero()
for k in range(self.opt.feat_num):
feat_map[idx[:,0], idx[:,1] + k, idx[:,2], idx[:,3]] = feat[0, k]
else:
if from_avg:
feat = np.expand_dims(self.avg_features[label, :], axis=0)
idx = (label_map == int(i)).nonzero()
for k in range(self.opt.feat_num):
feat_map[idx[:,0], idx[:,1] + k, idx[:,2], idx[:,3]] = feat[0, k]
else:
pass
if self.opt.data_type==16:
feat_map = feat_map.half()
return feat_map