Sense-X/X-Temporal

Feature extraction

Closed this issue · 1 comments

Hi, thanks for the great codebase.

Could you kindly provide the code to extract features from custom videos using pre-trained models?

Hi, you can add code like this at the end of the function evaluate to help extract features:

           if self.inference_only:
                losses.update(0.0, num)
                for i in range(num):
                    idx = inputs[1][i].detach().cpu().item()
                    logit = output[i].detach().cpu().numpy().tolist()
                    label = int(np.argmax(logit))
                    res = {
                            'idx': idx,
                            'logit': logit,
                            'label': label
                            }
                    writer.write(json.dumps(res, ensure_ascii=False) + '\n')
                writer.flush()
            else:
                loss = self.criterion(output, inputs[1])
                losses.update(loss.item(), num)

and add code like this at function evaluate, a fter self.model.cuda().eval()

       if self.inference_only:
            test_loader = self.data_loaders['test']
            if self.rank == 0:
                if not os.path.exists(os.path.join(self.work_dir, 'results')):
                    os.mkdir(os.path.join(self.work_dir, 'results'))
            res_file = os.path.join(self.work_dir, 'results', 'results.txt.rank%d' % self.rank)
            writer = open(res_file, 'w')
        else:
            test_loader = self.data_loaders['val']