| | from .ReVOS_Dataset import VideoReVOSDataset |
| | import json |
| | import pickle |
| |
|
| | class VideoRefYoutubeVOSDataset(VideoReVOSDataset): |
| |
|
| | def json_file_preprocess(self, expression_file, mask_file): |
| | |
| | with open(expression_file, 'r') as f: |
| | expression_datas = json.load(f)['videos'] |
| |
|
| | metas = [] |
| | anno_count = 0 |
| | vid2metaid = {} |
| | for vid_name in expression_datas: |
| | vid_express_data = expression_datas[vid_name] |
| |
|
| | vid_frames = sorted(vid_express_data['frames']) |
| | vid_len = len(vid_frames) |
| |
|
| | exp_id_list = sorted(list(vid_express_data['expressions'].keys())) |
| | for exp_id in exp_id_list: |
| | exp_dict = vid_express_data['expressions'][exp_id] |
| | meta = {} |
| | meta['video'] = vid_name |
| | meta['exp'] = exp_dict['exp'] |
| | meta['mask_anno_id'] = [str(anno_count), ] |
| |
|
| | if 'obj_id' in exp_dict.keys(): |
| | meta['obj_id'] = exp_dict['obj_id'] |
| | else: |
| | meta['obj_id'] = [0, ] |
| | meta['anno_id'] = [str(anno_count), ] |
| | anno_count += 1 |
| | meta['frames'] = vid_frames |
| | meta['exp_id'] = exp_id |
| |
|
| | meta['length'] = vid_len |
| | metas.append(meta) |
| | if vid_name not in vid2metaid.keys(): |
| | vid2metaid[vid_name] = [] |
| | vid2metaid[vid_name].append(len(metas) - 1) |
| |
|
| | |
| | with open(mask_file, 'rb') as f: |
| | mask_dict = pickle.load(f) |
| | return vid2metaid, metas, mask_dict |
| |
|