11import argparse
22import time
3+ import os
34
4- from bbc_dataset import BBCDataset
5- from autoshot_dataset import AutoShotDataset
6-
7- from evaluator import Evaluator
85from tqdm import tqdm
96
7+ from benchmark .autoshot_dataset import AutoShotDataset
8+ from benchmark .bbc_dataset import BBCDataset
9+ from benchmark .evaluator import Evaluator
1010from scenedetect import (
1111 AdaptiveDetector ,
1212 ContentDetector ,
1818
1919
2020def _make_detector (detector_name : str ):
21- detector_map = {
22- "detect-adaptive" : AdaptiveDetector (),
23- "detect-content" : ContentDetector (),
24- "detect-hash" : HashDetector (),
25- "detect-hist" : HistogramDetector (),
26- "detect-threshold" : ThresholdDetector (),
27- }
28- return detector_map [detector_name ]
21+ if detector_name == "detect-adaptive" :
22+ return AdaptiveDetector ()
23+ if detector_name == "detect-content" :
24+ return ContentDetector ()
25+ if detector_name == "detect-hash" :
26+ return HashDetector ()
27+ if detector_name == "detect-hist" :
28+ return HistogramDetector ()
29+ if detector_name == "detect-threshold" :
30+ return ThresholdDetector ()
31+ raise RuntimeError (f"Unknown detector: { detector_name } " )
32+
2933
34+ _DATASETS = {
35+ "BBC" : BBCDataset ("benchmark/BBC" ),
36+ "AutoShot" : AutoShotDataset ("benchmark/AutoShot" ),
37+ }
3038
31- def _make_dataset (dataset_name : str ):
32- dataset_map = {
33- "BBC" : BBCDataset ("BBC" ),
34- "AutoShot" : AutoShotDataset ("AutoShot" ),
35- }
36- return dataset_map [dataset_name ]
39+ _RESULT_PRINT_FORMAT = (
40+ "Recall: {recall:.2f}, Precision: {precision:.2f}, F1: {f1:.2f} Elapsed time: {elapsed:.2f}\n "
41+ )
3742
3843
3944def _detect_scenes (detector_type : str , dataset ):
@@ -43,34 +48,28 @@ def _detect_scenes(detector_type: str, dataset):
4348 detector = _make_detector (detector_type )
4449 pred_scene_list = detect (video_file , detector )
4550 elapsed = time .time () - start
51+ filename = os .path .basename (video_file )
4652 scenes = {
4753 scene_file : {
48- "video_file" : video_file ,
54+ "video_file" : filename ,
4955 "elapsed" : elapsed ,
5056 "pred_scenes" : [scene [1 ].frame_num for scene in pred_scene_list ],
5157 }
5258 }
5359 result = Evaluator ().evaluate_performance (scenes )
54- print (f"{ video_file } results:" )
55- print (
56- "Recall: {:.2f}, Precision: {:.2f}, F1: {:.2f} Elapsed time: {:.2f}\n " .format (
57- result ["recall" ], result ["precision" ], result ["f1" ], result ["elapsed" ]
58- )
59- )
60+ print (f"\n { filename } results:" )
61+ print (_RESULT_PRINT_FORMAT .format (** result ) + "\n " )
6062 pred_scenes .update (scenes )
6163
6264 return pred_scenes
6365
6466
6567def main (args ):
66- pred_scenes = _detect_scenes (detector_type = args .detector , dataset = _make_dataset (args .dataset ))
68+ print (f"Evaluating { args .detector } on dataset { args .dataset } ...\n " )
69+ pred_scenes = _detect_scenes (detector_type = args .detector , dataset = _DATASETS [args .dataset ])
6770 result = Evaluator ().evaluate_performance (pred_scenes )
68- print ("Overall Results:" )
69- print (
70- "Detector: {} Recall: {:.2f}, Precision: {:.2f}, F1: {:.2f} Elapsed time: {:.2f}" .format (
71- args .detector , result ["recall" ], result ["precision" ], result ["f1" ], result ["elapsed" ]
72- )
73- )
71+ print (f"\n Overall Results for { args .detector } on dataset { args .dataset } :" )
72+ print (_RESULT_PRINT_FORMAT .format (** result ))
7473
7574
7675if __name__ == "__main__" :
0 commit comments