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
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
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