adjust output form for movie scene segmentation demo Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/10244194master
| @@ -162,11 +162,11 @@ class MovieSceneSegmentationModel(TorchModel): | |||||
| thres = self.cfg.pipeline.save_threshold | thres = self.cfg.pipeline.save_threshold | ||||
| anno_dict = get_pred_boundary(pred_dict, thres) | anno_dict = get_pred_boundary(pred_dict, thres) | ||||
| scene_dict, scene_list = pred2scene(self.shot2keyf, anno_dict) | |||||
| scene_dict_lst, scene_list = pred2scene(self.shot2keyf, anno_dict) | |||||
| if self.cfg.pipeline.save_split_scene: | if self.cfg.pipeline.save_split_scene: | ||||
| re_dir = scene2video(inputs['input_video_pth'], scene_list, thres) | re_dir = scene2video(inputs['input_video_pth'], scene_list, thres) | ||||
| print(f'Split scene video saved to {re_dir}') | print(f'Split scene video saved to {re_dir}') | ||||
| return len(scene_list), scene_dict | |||||
| return len(scene_list), scene_dict_lst | |||||
| def preprocess(self, inputs): | def preprocess(self, inputs): | ||||
| logger.info('Begin shot detect......') | logger.info('Begin shot detect......') | ||||
| @@ -21,16 +21,15 @@ def get_pred_boundary(pred_dict, threshold=0.5): | |||||
| def pred2scene(shot2keyf, anno_dict): | def pred2scene(shot2keyf, anno_dict): | ||||
| scene_list, pair_list = get_demo_scene_list(shot2keyf, anno_dict) | scene_list, pair_list = get_demo_scene_list(shot2keyf, anno_dict) | ||||
| scene_dict = {} | |||||
| scene_dict_lst = [] | |||||
| assert len(scene_list) == len(pair_list) | assert len(scene_list) == len(pair_list) | ||||
| for scene_ind, scene_item in enumerate(scene_list): | for scene_ind, scene_item in enumerate(scene_list): | ||||
| scene_dict.update( | |||||
| {scene_ind: { | |||||
| 'shot': pair_list[scene_ind], | |||||
| 'frame': scene_item | |||||
| }}) | |||||
| scene_dict_lst.append({ | |||||
| 'shot': pair_list[scene_ind], | |||||
| 'frame': scene_item | |||||
| }) | |||||
| return scene_dict, scene_list | |||||
| return scene_dict_lst, scene_list | |||||
| def scene2video(source_movie_fn, scene_list, thres): | def scene2video(source_movie_fn, scene_list, thres): | ||||
| @@ -38,7 +38,7 @@ class OutputKeys(object): | |||||
| HISTORY = 'history' | HISTORY = 'history' | ||||
| TIMESTAMPS = 'timestamps' | TIMESTAMPS = 'timestamps' | ||||
| SPLIT_VIDEO_NUM = 'split_video_num' | SPLIT_VIDEO_NUM = 'split_video_num' | ||||
| SPLIT_META_DICT = 'split_meta_dict' | |||||
| SPLIT_META_LIST = 'split_meta_list' | |||||
| TASK_OUTPUTS = { | TASK_OUTPUTS = { | ||||
| @@ -293,18 +293,17 @@ TASK_OUTPUTS = { | |||||
| # movide scene segmentation result for a single video | # movide scene segmentation result for a single video | ||||
| # { | # { | ||||
| # "split_video_num":3, | # "split_video_num":3, | ||||
| # "split_meta_dict": | |||||
| # { | |||||
| # scene_id: | |||||
| # "split_meta_list": | |||||
| # [ | |||||
| # { | # { | ||||
| # "shot": [0,1,2], | # "shot": [0,1,2], | ||||
| # "frame": [start_frame, end_frame] | # "frame": [start_frame, end_frame] | ||||
| # } | # } | ||||
| # } | |||||
| # ] | |||||
| # | # | ||||
| # } | # } | ||||
| Tasks.movie_scene_segmentation: | Tasks.movie_scene_segmentation: | ||||
| [OutputKeys.SPLIT_VIDEO_NUM, OutputKeys.SPLIT_META_DICT], | |||||
| [OutputKeys.SPLIT_VIDEO_NUM, OutputKeys.SPLIT_META_LIST], | |||||
| # ============ nlp tasks =================== | # ============ nlp tasks =================== | ||||
| @@ -60,9 +60,9 @@ class MovieSceneSegmentationPipeline(Pipeline): | |||||
| def postprocess(self, inputs: Dict[str, Any]) -> Dict[str, Any]: | def postprocess(self, inputs: Dict[str, Any]) -> Dict[str, Any]: | ||||
| data = {'input_video_pth': self.input_video_pth, 'feat': inputs} | data = {'input_video_pth': self.input_video_pth, 'feat': inputs} | ||||
| video_num, meta_dict = self.model.postprocess(data) | |||||
| video_num, meta_lst = self.model.postprocess(data) | |||||
| result = { | result = { | ||||
| OutputKeys.SPLIT_VIDEO_NUM: video_num, | OutputKeys.SPLIT_VIDEO_NUM: video_num, | ||||
| OutputKeys.SPLIT_META_DICT: meta_dict | |||||
| OutputKeys.SPLIT_META_LIST: meta_lst | |||||
| } | } | ||||
| return result | return result | ||||