Пример #1
0
    def forward(self, x, x_baseline=None, class_idx=None, retain_graph=False):
        if x_baseline is None:
            x_baseline = torch.zeros_like(x)
        else:
            x_baseline = x_baseline.cuda()
        assert x_baseline.size() == x.size()

        saliency_map = torch.zeros_like(x) # [1, 3, H, W]

        x_diff = x - x_baseline
        stdev = self.stdev_spread / (x_diff.max() - x_diff.min())
        for alpha in torch.linspace(0., 1., self.n_steps):
            x_step = x_baseline + alpha * x_diff
            noise = torch.normal(mean=torch.zeros_like(x_step), std=stdev)
            x_step_plus_noise = x_step + noise
            logit = self.model(x_step_plus_noise)

            if class_idx is None:
                score = logit[:, logit.max(1)[-1]].squeeze()
            else:
                score = logit[:, class_idx].squeeze()

            self.model.zero_grad()
            score.backward(retain_graph=retain_graph)
            saliency_map += x_step_plus_noise.grad

        saliency_map = saliency_map / self.n_steps
        saliency_map = convert_to_gray(saliency_map) # [1, 1, H, W]

        saliency_map_min, saliency_map_max = saliency_map.min(), saliency_map.max()
        saliency_map = (saliency_map - saliency_map_min) / (saliency_map_max - saliency_map_min).data

        return saliency_map
def gray_preprocessing(args):
    images_paths = os.listdir(args.img_dir)
    for name in images_paths:
        image = Image.open(os.path.join(args.img_dir, name))
        tf_image = tf.convert_to_tensor(np.array(image).astype(np.float32))
        gray_image = utils.convert_to_gray(tf_image[None])[0]
        blurred = Image.fromarray(np.uint8(tf.Session().run(gray_image)))
        blurred.save(os.path.join(args.output_dir, name))
Пример #3
0
    def forward(self, x, class_idx=None, retain_graph=False):
        x.requires_grad_()
        logit = self.model(x)

        if class_idx is None:
            score = logit[:, logit.max(1)[-1]].squeeze()
        else:
            score = logit[:, class_idx].squeeze()

        self.model.zero_grad()
        score.backward(retain_graph=retain_graph)
        saliency_map = x.grad  # [1, 3, H, W]

        saliency_map = convert_to_gray(saliency_map.cpu().data) # [1, 1, H, W]
        saliency_map_min, saliency_map_max = saliency_map.min(), saliency_map.max()
        saliency_map = (saliency_map - saliency_map_min) / (saliency_map_max - saliency_map_min)

        return saliency_map
Пример #4
0
 def prepare_frame():
     frame = capturer.get_frame()
     if frame is not None:
         frame = flip_frame(frame)
         return convert_to_gray(frame)
Пример #5
0
    def detect_face_in_frame(self, a_frame): 
        a_frame = convert_to_gray(a_frame)
        a_frame = equalize(a_frame)
        faces_list = self.face_classifier.detect_multiscale(a_frame)

        return faces_list[0] if len(faces_list) == 1 else None