def get_scores_new(self, pos_x, pos_y, scaled_search_area, template_z, filename, design, final_score_sz): image = Image.open(filename).convert('RGB') # avg_chan = ImageStat.Stat(image).mean # frame_padded_x, npad_x = pad_frame(image, image.size, pos_x, pos_y, scaled_search_area[2], avg_chan) # x_crops = extract_crops_x(frame_padded_x, npad_x, pos_x, pos_y, scaled_search_area[0], scaled_search_area[1], scaled_search_area[2], design.search_sz) txs = [] for scale in scaled_search_area: x = gen_xz(image, Rectangle(pos_x, pos_y, scale, scale), to='x') tx = Image_to_Tensor(x).unsqueeze(0) txs.append(tx.squeeze(0)) x_crops = torch.stack(txs) # print Rectangle(pos_x, pos_y,scale,scale) template_x = self.branch(Variable(x_crops).cuda()) template_z = template_z.repeat(template_x.size(0), 1, 1, 1) scores = self.model.head(template_z, template_x) # scores = self.bn_adjust(scores) # TODO: any elegant alternator? scores = scores.squeeze().permute(1, 2, 0).data.cpu().numpy() scores_up = cv2.resize(scores, (final_score_sz, final_score_sz), interpolation=cv2.INTER_CUBIC) scores_up = scores_up.transpose((2, 0, 1)) return image, scores_up
def get_template_z_new(self, pos_x, pos_y, z_sz, image, design): if isinstance(image, six.string_types): image = Image.open(image).convert('RGB') # avg_chan = ImageStat.Stat(image).mean # frame_padded_z, npad_z = pad_frame(image, image.size, pos_x, pos_y, z_sz, avg_chan) # z_crops = extract_crops_z(frame_padded_z, npad_z, pos_x, pos_y, z_sz, design.exemplar_sz) z = gen_xz(image, Rectangle(pos_x, pos_y, z_sz, z_sz), to='z') # cv2.imshow('z', np.array(z)) tz = Image_to_Tensor(z).unsqueeze(0) template_z = self.branch(Variable(tz).cuda()) # print template_z same return image, template_z