ICDAR2013文本检测算法的衡量方法(二)Rectangle Matching与DetEval

OCR 同时被 2 个专栏收录
6 篇文章 0 订阅
3 篇文章 0 订阅

这是第二部分,第一部分请点击 ICDAR2013文本检测算法的衡量方法(一)Evaluation Levels



主要内容:

  • Rectangle Matching, 或者bbox matching
  • ICDAR2013 Foucsed Image 文本检测任务的evaluation方法



若无特别说明,接下来说的:

  • evaluation/衡量方法都是只针对text localization算法;
  • text detection 与 text localization 不作区分
  • bounding box, bbox, rectangle不作区分

Detection with bbox

上一篇已经讲过, evaluation方法有四个level:

  1. pixel feature discriminace
  2. pixel classification
  3. detection at rectangle
  4. target oriented

在文本检测领域, 3和4(end2end evaluation)是最常用的。

对以水平文本为主体的text detection任务以及general的object detection任务来说, 用矩形框来表示检测结果是最方便最实用也是最广泛的方法。ICDAR2013就是如此。(但ICDAR2015不是)


evaluation问题描述

Evaluation问题的输入:

  1. D , 要衡量的检测算法输出的bbox集合.
  2. G, Ground Truth bbox集合.
  3. Di,Gj 分别代表 D,G 的一个元素
    输出: 对 D 的质量评估。

目前为止,我所了解的evaluation方法(object detection和text detection) 都有recall和precision的计算。得到这两个值后,object detection的evaluation会计算mAP, 而text detection的evaluation则计算F-mean.

所以,对文本检测的evaluation来说, 不同的方法的不同之处主要在于如何计算recall与precision,而recall与precision的计算关键在于如何决断两个bbox是否match。

Matching of two bboxes

判断两个bbox是否match是一个可以简化但并不是一个简单的问题。存在三种match方式,如下图所示:
这里写图片描述
实线框代表ground truth,虚线框代表检测算法的输出。

  1. 一对一的match,如(a)所示。
  2. 一对多的match,如(b)所示,ground truth 粒度大于detection 粒度时出现的情况。
  3. 多对一的match,如(c)所示,detection的粒度大于ground truth的粒度。
  4. 多对多的match,图中没有画出。
    不同的evaluation方法的不同的根源就在于对这三种match的处理方式不同

Evaluation in ICDAR2003,只考虑一对一的match

只考虑一对一的match是最简洁最简单最粗暴的方式, ICDAR2003就采用了这种方式。
这里写图片描述
图中的公式(6)计算Recall与Precision,都用到了BestMatch
给定一个bbox b , 例如Gi, 和一个bbox list (就是之前的set,注意, 不是数学意义上的无序set) B , 例如D BestMatch 方法输出一个0到1之间的值, 代表 b B的匹配得分。 若 B 中有与b完全重合的bbox,则输出最大值1;若 B 中的bbox与b没有任何重合, 则输出最小值0。

(7)中 BestMatch 的分式计算形式看起来跟F-mean很相似。实际上它就是一个F-mean/调和平均数(Harmonic Mean)。可以定义基于面积的、bbox适用的recall 与precision:

R(Gi,Dj)=Area(GiDj)Area(Gi)

P(Gi,Dj)=Area(GiDj)Area(Dj)

MatchScore(Gi,Dj)=2R(Gi,Dj)P(Gi,Dj)R(Gi,Dj)+P(Gi,Dj)=2Area(GiDj)Area(Gi)+Area(Dj)

BestMatch(Gi,D)=maxjMatchScore(Gi,Dj)

DetEval——Evaluation in ICDAR2013,考虑了三种match方式

只考虑one-one match虽然简化了问题, 却不大合理。特别是当ground truth标注粒度太大时,例如一个bbox里可能包含多个word,即使人家的算法把对应的一个个word都正确的框出来了,也只能得到一个很低的分数。
ICDAR2013则使用了新evaluation方法:DetEval,也就是十几年前Wolf提出的方法。“新方法”同时考虑了一对一,一对多,多对一的情况, 但不能处理多对多的情况。(作者说,实验结果表示在文本检测里这种情况出现的不多。)
下面分步描述DetEval的算法要点。

计算recall matrix与precision matrix

recall 与precision两个矩阵分别用 σ τ 表示,它们都是 |G|×|D| 的矩阵,每一行代表一个 Gi , 每一列代表一个 Dj :

σij=R(Gi,Dj)

τij=P(Gi,Dj)

这两个矩阵合在一起也称为overlap matrices. i,j 位置上的元素值不为0就代表 Gi,Dj 之间有重合。

利用 σ,τ 表示三种match

tr,tp[0,1] 分别为 σ,τ 的阈值。算法能表示除了many-to-many以外的三种match方式:

  • one-to-one: 一个 Gi 只与一个 Dj 匹配
    • Gi 的大部分范围只被 Dj 检测出来: σ 的第 i 行只有σijtr
    • 只有 Dj 检测 Gi 的precision符合要求: τ 的第 j 列只有τijtp
  • one-to-many(splits): Gi D 的一个元素数量大于1的子集Do检测出来:
    • Do 中的每个元素都能一定准确度检测出 Gi 的一部分: τijtp,jDo
    • Gi 的大部分范围被 So 检测出来: jSoσijtr
  • many-to-one(merges) : G 一个元素个数大于1的子集Go被一个检测结果 Dj 检测出来
    • Go 中的每个元素都有一定比例的面积被检测出来: σijtr,iGo
    • Dj 以一定准确度检测出 Go iGoτijtp

根据以上规则可以定义bbox的匹配函数:
这里写图片描述
这两个匹配函数的特点是:

  1. 不惩罚one-one match。只要匹配的recall与precision都大于各自的阈值就行。它与ICDAR2003又有不同:ICDAR2003的考虑one-one match时是以soft方式计算recall与precision,不取阈值,所以ICDAR2003虽然只考虑one-one match,但根据match的好坏会有不同的惩罚。
  2. fsc(k) 中的 k 是many-to-one或one-to-many里many的具体数值, 下标sc代表scatter。fsc(k)可以是一个0到1之间的常数(作者的做法),也可以是一个关于 k 的函数, 例如fsc=11+ln(k)

计算单张图片与多张图片上的recall 与precision

先考虑单张图片:
这里写图片描述
它的最大特点就是增加了两个输入参数: tr,tp .

然后考虑多张图片。假设图片数量为 N ,第k张图片的ground truth与检测结果分别为 Gk,Dk , 则整体的recall与precision计算方式为:
这里写图片描述
它的最大特点是文本多的图片对结果有更大的影响力。

最终的recall 与precision

到目前为止,取定两个阈值 tr,tp 之后就可得到我们想要的整体 recall precision 了。ICDAR2013就是使用了这个计算方法。
对应的DetEval软件包命令:

evalfixed det.xml gt.xml

但是,很明显, tr,tp 的选择直接影响对检测算法的评分。
* 以 tr,tp x,y 轴, recall/precision z 轴, 可以得到两个3D的函数图像。 固定tr,tp中的一个, 可以得到2D函数图像。作者说它们可以用于更深入的分析算法性能, 但个人觉得并没有提供太多参考信息。
* 最终的recall与precision是采用与mAP类似计算方式:
这里写图片描述

ICDAR 2013与Deteval

  • ICDAR2013 Task1的evaluation页面提供了ICDAR2013Deteval两种evaluation选择。前者是ICDAR根据Deteval 论文实现的代码,与paper作者的实现有细微差别,具体见http://rrc.cvc.uab.es/?ch=2&com=faq
  • 它们使用了相同的参数 tr=0.8,tp=0.4 ,这样做的目的是为了加大对只检测出一部分文本区域的结果的惩罚,因为这种检测结果无法识别。
  • 因为ICDAR2013的ground truth已经是word level的,所以衡量算法对one-to-many(检测结果将一个word分成了好几个bbox)的惩罚要大于many-to-one(将多个word用一个bbox框出来)。事实上,对后者没有惩罚。即: fsc(k)=0.8 for one-to-many, fsc(k)=1 for many-to-one
    这一点还是很合理的。

References

  • 9
    点赞
  • 7
    评论
  • 16
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值