TextDetMetric: 计算文本检测算法指标工具

发布时间 2023-07-24 09:31:01作者: Danno

Text Detect Metric

PyPI SemVer2.0

整体框架

flowchart TD A([Text Detect Algorithm]) --get_pred_txt.py--> B([pred_txt]) B --compute_metric.py--> C([TextDetMetric]) --> Metric(["Precision Recall H-mean"])

数据集上评测

  • 如果想要评测其他文本检测算法,需要将预测结果写入pre.txt中,格式为图像全路径\t检测框多边形坐标\t得分
    • ⚠️注意:图形全路径来自modelscope加载得到,只要保证txtjson在同一目录下即可。
    • 如下示例:
      C:\Users\xxxx\.cache\modelscope\hub\datasets\liekkas\text_det_test_dataset\master\data_files\extracted\f3ca4a17a478c1d798db96b03a5da8b144f13054fd06401e5a113a7ca4953491\text_det_test_dataset/25.jpg	[[[519.0, 634.0], [765.0, 632.0], [765.0, 683.0], [519.0, 685.0]]]	[0.8451064699863124]
      
  • 这里以ch_mobile_v2_det在文本检测测试集liekkas/text_det_test_dataset上的评测代码,大家可以以此类推。
  • 安装必要的包
    pip install modelscope==1.5.2
    pip install text_det_metric
    
  • 运行测试
    1. 运行get_pred_txt.py得到pred.txt
      import cv2
      from modelscope.msdatasets import MsDataset
      
      from ch_mobile_v2_det import TextDetector
      
      test_data = MsDataset.load(
          "text_det_test_dataset",
          namespace="liekkas",
          subset_name="default",
          split="test",
      )
      
      text_detector = TextDetector()
      
      content = []
      for one_data in test_data:
          img_path = one_data.get("image:FILE")
      
          print(img_path)
          img = cv2.imread(str(img_path))
          dt_boxes, scores, _ = text_detector(img)
          content.append(f"{img_path}\t{dt_boxes.tolist()}\t{scores}")
      
      with open("pred.txt", "w", encoding="utf-8") as f:
          for v in content:
              f.write(f"{v}\n")
      
    2. 运行compute_metric.py得到在该数据集上的指标
      from text_det_metric import DetectionIoUEvaluator
      
      metric = DetectionIoUEvaluator()
      
      # pred_path
      pred_path = "1.txt"
      mertric = metric(pred_path)
      print(mertric)
      
      # {'precision': 0.6926406926406926, 'recall': 0.8247422680412371, 'hmean': 0.7529411764705882}