builder.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # Copyright (c) Alibaba, Inc. and its affiliates.
  2. from typing import Dict, Mapping, Union
  3. from modelscope.metainfo import Metrics
  4. from modelscope.utils.config import ConfigDict
  5. from modelscope.utils.constant import Tasks
  6. from modelscope.utils.registry import Registry, build_from_cfg, default_group
  7. METRICS = Registry('metrics')
  8. class MetricKeys(object):
  9. ACCURACY = 'accuracy'
  10. F1 = 'f1'
  11. Binary_F1 = 'binary-f1'
  12. Macro_F1 = 'macro-f1'
  13. Micro_F1 = 'micro-f1'
  14. PRECISION = 'precision'
  15. RECALL = 'recall'
  16. PSNR = 'psnr'
  17. SSIM = 'ssim'
  18. LPIPS = 'lpips'
  19. NIQE = 'niqe'
  20. AVERAGE_LOSS = 'avg_loss'
  21. FScore = 'fscore'
  22. FID = 'fid'
  23. BLEU_1 = 'bleu-1'
  24. BLEU_4 = 'bleu-4'
  25. ROUGE_1 = 'rouge-1'
  26. ROUGE_L = 'rouge-l'
  27. NED = 'ned' # ocr metric
  28. mAP = 'mAP'
  29. BatchAcc = 'inbatch_t2i_recall_at_1'
  30. CROPPING_RATIO = 'cropping_ratio'
  31. DISTORTION_VALUE = 'distortion_value'
  32. STABILITY_SCORE = 'stability_score'
  33. PPL = 'ppl'
  34. PLCC = 'plcc'
  35. SRCC = 'srcc'
  36. RMSE = 'rmse'
  37. MRR = 'mrr'
  38. NDCG = 'ndcg'
  39. AR = 'AR'
  40. Colorfulness = 'colorfulness'
  41. Kendall_Tau_Correlation = 'kendall_tau_correlation'
  42. task_default_metrics = {
  43. Tasks.image_segmentation: [Metrics.image_ins_seg_coco_metric],
  44. Tasks.sentence_similarity: [Metrics.seq_cls_metric],
  45. Tasks.nli: [Metrics.seq_cls_metric],
  46. Tasks.sentiment_classification: [Metrics.seq_cls_metric],
  47. Tasks.token_classification: [Metrics.token_cls_metric],
  48. Tasks.text_generation: [Metrics.text_gen_metric],
  49. Tasks.chat: [Metrics.text_gen_metric],
  50. Tasks.text_classification: [Metrics.seq_cls_metric],
  51. Tasks.image_denoising: [Metrics.image_denoise_metric],
  52. Tasks.image_deblurring: [Metrics.image_denoise_metric],
  53. Tasks.video_super_resolution: [Metrics.video_super_resolution_metric],
  54. Tasks.image_color_enhancement: [Metrics.image_color_enhance_metric],
  55. Tasks.image_portrait_enhancement:
  56. [Metrics.image_portrait_enhancement_metric],
  57. Tasks.video_summarization: [Metrics.video_summarization_metric],
  58. Tasks.image_captioning: [Metrics.accuracy],
  59. Tasks.visual_question_answering: [Metrics.accuracy],
  60. Tasks.movie_scene_segmentation: [Metrics.movie_scene_segmentation_metric],
  61. Tasks.image_inpainting: [Metrics.image_inpainting_metric],
  62. Tasks.referring_video_object_segmentation:
  63. [Metrics.referring_video_object_segmentation_metric],
  64. Tasks.video_frame_interpolation:
  65. [Metrics.video_frame_interpolation_metric],
  66. Tasks.video_stabilization: [Metrics.video_stabilization_metric],
  67. Tasks.image_quality_assessment_degradation:
  68. [Metrics.image_quality_assessment_degradation_metric],
  69. Tasks.image_quality_assessment_mos:
  70. [Metrics.image_quality_assessment_mos_metric],
  71. Tasks.bad_image_detecting: [Metrics.accuracy],
  72. Tasks.ocr_recognition: [Metrics.ocr_recognition_metric],
  73. Tasks.efficient_diffusion_tuning: [Metrics.loss_metric],
  74. Tasks.translation_evaluation: [Metrics.translation_evaluation_metric]
  75. }
  76. def build_metric(metric_cfg: Union[str, Dict],
  77. field: str = default_group,
  78. default_args: dict = None):
  79. """ Build metric given metric_name and field.
  80. Args:
  81. metric_name (str | dict): The metric name or metric config dict.
  82. field (str, optional): The field of this metric, default value: 'default' for all fields.
  83. default_args (dict, optional): Default initialization arguments.
  84. """
  85. if isinstance(metric_cfg, Mapping):
  86. assert 'type' in metric_cfg
  87. else:
  88. metric_cfg = ConfigDict({'type': metric_cfg})
  89. return build_from_cfg(
  90. metric_cfg, METRICS, group_key=field, default_args=default_args)