def get_batch(self): cur_from = self.cur cur_to = min(cur_from + self.batch_size, self.size) roidb = [self.roidb[self.index[i]] for i in range(cur_from, cur_to)] if self.has_rpn: data, label, im_info = get_rpn_testbatch(roidb, self.cfg) else: data, label, im_info = get_rcnn_testbatch(roidb, self.cfg) self.data = [[mx.nd.array(idata[name]) for name in self.data_name] for idata in data] self.im_info = im_info
def get_batch(self): cur_from = self.cur cur_to = min(cur_from + self.batch_size, self.size) roidb = [self.roidb[self.index[i]] for i in range(cur_from, cur_to)] if self.has_rpn: data, label, im_info = get_rpn_testbatch(roidb, self.cfg) else: data, label, im_info = get_rcnn_testbatch(roidb, self.cfg) self.data = [[mx.nd.array(idata[name]) for name in self.data_name] for idata in data] self.im_info = im_info
def get_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid # update seg_id cur_roidb['frame_seg_id'] = self.cur_frameid self.cur_seg_len = cur_roidb['frame_seg_len'] data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg) if self.cur_frameid == 0: # new video self.key_frame_flag = 0 else: # normal frame self.key_frame_flag = 2 self.data = [[mx.nd.array(idata[name]) for name in self.data_name] for idata in data] self.im_info = im_info
def get_batch_individual(self, cur_from=None): if cur_from is None: cur_from = self.cur cur_to = min(cur_from + self.batch_size, self.size) roidb = [self.roidb[self.index[i]] for i in range(cur_from, cur_to)] if self.has_rpn: data, label, im_info = get_rpn_testbatch(roidb, self.cfg) else: data, label, im_info = get_rcnn_testbatch(roidb, self.cfg) self.lock_data.acquire() self.data = [mx.nd.array(data[name]) for name in self.data_name] self.im_info = im_info self.lock_data.release() return data, im_info
def get_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid self.cur_seg_len = cur_roidb['frame_seg_len'] data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg) if self.cur_frameid == 0: # new video self.key_frame_flag = 0 else: # normal frame self.key_frame_flag = 2 extend_data = [{'data': data[0]['data'] , 'im_info': data[0]['im_info'], 'data_cache': data[0]['data'], 'feat_cache': data[0]['data']}] self.data = [[mx.nd.array(extend_data[i][name]) for name in self.data_name] for i in xrange(len(data))] self.im_info = im_info
def get_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid self.cur_seg_len = cur_roidb['frame_seg_len'] data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg, self.cur_frameid) if self.key_frameid == self.cur_frameid: # key frame self.data_key_old = self.data_key.copy( ) if self.data_key is not None else data[0]['data'].copy() self.data_key = data[0]['data'].copy() if self.key_frameid == 0: self.data_key_old = data[0]['data'].copy() self.key_frame_flag = 0 else: self.key_frame_flag = 1 elif self.cur_frameid + 1 == self.cur_seg_len: #key frame self.data_key_old = self.data_key.copy( ) if self.data_key is not None else data[0]['data'].copy() self.data_key = data[0]['data'].copy() self.key_frame_flag = 1 else: self.key_frame_flag = 2 extend_data = [{ 'data': data[0]['data'], 'im_info': data[0]['im_info'], 'data_key': self.data_key, 'data_key_old': self.data_key_old, 'motion_vector': data[0]['motion_vector'], 'res_diff': data[0]['res_diff'], 'feat_key_old': np.zeros((1, self.cfg.network.DFF_FEAT_DIM, 1, 1)), 'feat_key': np.zeros((1, self.cfg.network.DFF_FEAT_DIM, 1, 1)) }] self.data = [[ mx.nd.array(extend_data[i][name]) for name in self.data_name ] for i in xrange(len(data))] self.im_info = im_info
def get_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid self.cur_seg_len = cur_roidb['frame_seg_len'] data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg) if self.key_frameid == self.cur_frameid: # key frame self.data_key = data[0]['data'].copy() if self.key_frameid == 0: self.key_frame_flag = 0 else: self.key_frame_flag = 1 else: self.key_frame_flag = 2 extend_data = [{'data': data[0]['data'], 'im_info': data[0]['im_info'], 'data_key': self.data_key, 'feat_key': np.zeros((1,self.cfg.network.DFF_FEAT_DIM,1,1))}] self.data = [[mx.nd.array(extend_data[i][name]) for name in self.data_name] for i in xrange(len(data))] self.im_info = im_info
def get_init_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid self.cur_seg_len = cur_roidb['frame_seg_len'] data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg) if self.cur_frameid == 0: # new frame self.key_frame_flag = 0 else: # normal frame self.key_frame_flag = 2 feat_stride = float(self.cfg.network.RCNN_FEAT_STRIDE) extend_data = [{'data': data[0]['data'] , 'im_info': data[0]['im_info'], 'data_cache': np.zeros((6, 3, max([v[0] for v in self.cfg.SCALES]), max([v[1] for v in self.cfg.SCALES]))), 'feat_cache': np.zeros((6, self.cfg.network.FGFA_FEAT_DIM, np.ceil(max([v[0] for v in self.cfg.SCALES]) / feat_stride).astype(np.int), np.ceil(max([v[1] for v in self.cfg.SCALES]) / feat_stride).astype(np.int)))}] self.data = [[mx.nd.array(extend_data[i][name]) for name in self.data_name] for i in xrange(len(data))] self.im_info = im_info
def get_init_batch(self): cur_roidb = self.roidb[self.cur_roidb_index].copy() if 'frame_seg_len' in cur_roidb: self.cur_seg_len = cur_roidb['frame_seg_len'] elif 'video_len' in cur_roidb: self.cur_seg_len = cur_roidb['video_len'] else: assert False, 'unknown video length type' if self.cur_frameid == 0: # new video self.key_frame_flag = 0 self.video_index = np.arange(self.cur_seg_len) if self.video_shuffle: np.random.shuffle(self.video_index) else: # normal frame self.key_frame_flag = 2 if self.video_shuffle: if 'frame_ids' in cur_roidb: cur_roidb['image'] = cur_roidb['frame_ids'][self.video_index[ self.cur_frameid]] elif 'pattern' in cur_roidb: cur_roidb['image'] = cur_roidb['pattern'] % self.video_index[ self.cur_frameid] else: assert False, 'unknown video pattern for get image index' else: if 'frame_ids' in cur_roidb: cur_roidb['image'] = cur_roidb['frame_ids'][self.cur_frameid] elif 'pattern' in cur_roidb: cur_roidb['image'] = cur_roidb['pattern'] % self.cur_frameid else: assert False, 'unknown video pattern for get image index' data, label, im_info = get_rpn_testbatch([cur_roidb], self.cfg) # feat_stride = float(self.cfg.network.RCNN_FEAT_STRIDE) feat_stride = float(self.cfg.network.RPN_FEAT_STRIDE) H = np.ceil(max([v[0] for v in self.cfg.SCALES]) / feat_stride).astype( np.int) W = np.ceil(max([v[1] for v in self.cfg.SCALES]) / feat_stride).astype( np.int) T = self.cfg.TEST.KEY_FRAME_INTERVAL * 2 + 1 extend_data = [{ 'data': data[0]['data'], 'im_info': data[0]['im_info'], 'data_cache': np.zeros((T, 3, max([v[0] for v in self.cfg.SCALES]), max([v[1] for v in self.cfg.SCALES]))), 'feat_cache': np.zeros((T, self.cfg.network.FGFA_FEAT_DIM, H, W)) }] self.data = [[ mx.nd.array(extend_data[i][name]) for name in self.data_name ] for i in xrange(len(data))] self.im_info = im_info if isinstance(cur_roidb['image'], int): import os self.img_name = os.path.join(cur_roidb['video_id'].split('_')[0], cur_roidb['video_id'], \ str(cur_roidb['image']) + '.jpg') else: self.img_name = cur_roidb['image']