示例#1
0
    def init_memory(self, train_x: TensorList, masks):
        """ Initialize the sample memory used to update the target model """
        assert masks.dim() == 4

        # Initialize first-frame spatial training samples
        self.num_init_samples = train_x.size(0)
        init_sample_weights = TensorList(
            [x.new_ones(1) / x.shape[0] for x in train_x])

        # Sample counters and weights for spatial
        self.num_stored_samples = self.num_init_samples.copy()
        self.previous_replace_ind = [None] * len(self.num_stored_samples)
        self.sample_weights = TensorList(
            [x.new_zeros(self.params.sample_memory_size) for x in train_x])
        for sw, init_sw, num in zip(self.sample_weights, init_sample_weights,
                                    self.num_init_samples):
            sw[:num] = init_sw

        # Initialize memory
        self.training_samples = TensorList([
            x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2],
                        x.shape[3]) for x in train_x
        ])

        self.target_masks = masks.new_zeros(self.params.sample_memory_size,
                                            masks.shape[-3], masks.shape[-2],
                                            masks.shape[-1])
        self.target_masks[:masks.shape[0], :, :, :] = masks

        for ts, x in zip(self.training_samples, train_x):
            ts[:x.shape[0], ...] = x
示例#2
0
    def init_memory(self, train_x_rgb: TensorList, train_x_d: TensorList):
        # Initialize first-frame spatial training samples
        self.num_init_samples = train_x_rgb.size(0)
        init_sample_weights = TensorList([x.new_ones(1) / x.shape[0] for x in train_x_rgb])

        # Sample counters and weights for spatial
        self.num_stored_samples = self.num_init_samples.copy()
        self.previous_replace_ind = [None] * len(self.num_stored_samples)

        self.sample_weights_rgb = TensorList([x.new_zeros(self.params.sample_memory_size) for x in train_x_rgb])
        self.sample_weights_d = TensorList([x.new_zeros(self.params.sample_memory_size) for x in train_x_d])

        for sw_rgb, sw_d, init_sw, num in zip(self.sample_weights_rgb, self.sample_weights_d, init_sample_weights, self.num_init_samples):
            sw_rgb[:num] = init_sw
            sw_d[:num] = init_sw

        # Initialize memory
        self.training_samples_rgb = TensorList(
            [x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2], x.shape[3]) for x in train_x_rgb])

        self.training_samples_d = TensorList(
            [x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2], x.shape[3]) for x in train_x_d])

        for ts_rgb, ts_d, x_rgb, x_d in zip(self.training_samples_rgb, self.training_samples_d, train_x_rgb, train_x_d):
            ts_rgb[:x_rgb.shape[0],...] = x_rgb
            ts_d[:x_d.shape[0],...] = x_d
示例#3
0
文件: fcot.py 项目: yutaocui/FCOT
    def init_memory(self, train_x_72_cls: TensorList,
                    train_x_18_cls: TensorList, train_x_72_reg: TensorList):
        # Initialize first-frame spatial training samples
        self.num_init_samples = train_x_72_cls.size(0)
        init_sample_weights = TensorList([x.new_ones(1) / x.shape[0] for x in train_x_72_cls])

        # Sample counters and weights for spatial
        # self.num_stored_samples = self.num_init_samples.copy()
        # self.previous_replace_ind = [None] * len(self.num_stored_samples)
        # self.sample_weights = TensorList([x.new_zeros(self.params.sample_memory_size) for x in train_x_72_cls])
        # for sw, init_sw, num in zip(self.sample_weights, init_sample_weights, self.num_init_samples):
        #     sw[:num] = init_sw
        # print(self.sample_weights)

        self.num_stored_samples_cls_72 = self.num_init_samples.copy()
        self.num_stored_samples_cls_18 = self.num_init_samples.copy()
        self.num_stored_samples_reg_72 = self.num_init_samples.copy()

        self.previous_replace_ind_cls_72 = [None] * len(self.num_stored_samples_cls_72)
        self.previous_replace_ind_cls_18 = [None] * len(self.num_stored_samples_cls_18)
        self.previous_replace_ind_reg_72 = [None] * len(self.num_stored_samples_reg_72)

        self.sample_weights_cls_72 = TensorList([x.new_zeros(self.params.sample_memory_size) for x in train_x_72_cls])
        for sw, init_sw, num in zip(self.sample_weights_cls_72, init_sample_weights, self.num_init_samples):
            sw[:num] = init_sw

        self.sample_weights_cls_18 = self.sample_weights_cls_72.clone()
        self.sample_weights_reg_72 = self.sample_weights_cls_72.clone()

        # initialize classification features memory
        self.training_samples_cls_72 = TensorList(
            [x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2], x.shape[3]) for x in train_x_72_cls])
        for ts, x in zip(self.training_samples_cls_72, train_x_72_cls):
            ts[:x.shape[0], ...] = x

        self.training_samples_cls_18 = TensorList(
            [x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2], x.shape[3]) for x in train_x_18_cls])
        for ts, x in zip(self.training_samples_cls_18, train_x_18_cls):
            ts[:x.shape[0], ...] = x

        self.training_samples_reg_72 = TensorList(
            [x.new_zeros(self.params.sample_memory_size, x.shape[1], x.shape[2], x.shape[3]) for x in train_x_72_reg])
        for ts, x in zip(self.training_samples_reg_72, train_x_72_reg):
            ts[:x.shape[0], ...] = x