ICDAR2013文本检测算法的衡量方法(二)Rectangle Matching与DetEval
来源:互联网 发布:java线程与进程的区别 编辑:程序博客网 时间:2024/06/16 03:55
这是第二部分,第一部分请点击 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:
- pixel feature discriminace
- pixel classification
- detection at rectangle
- target oriented
在文本检测领域, 3和4(end2end evaluation)是最常用的。
对以水平文本为主体的text detection任务以及general的object detection任务来说, 用矩形框来表示检测结果是最方便最实用也是最广泛的方法。ICDAR2013就是如此。(但ICDAR2015不是)
evaluation问题描述
Evaluation问题的输入:
D , 要衡量的检测算法输出的bbox集合.G , Ground Truth bbox集合.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,虚线框代表检测算法的输出。
- 一对一的match,如(a)所示。
- 一对多的match,如(b)所示,ground truth 粒度大于detection 粒度时出现的情况。
- 多对一的match,如(c)所示,detection的粒度大于ground truth的粒度。
- 多对多的match,图中没有画出。
不同的evaluation方法的不同的根源就在于对这三种match的处理方式不同
Evaluation in ICDAR2003,只考虑一对一的match
只考虑一对一的match是最简洁最简单最粗暴的方式, ICDAR2003就采用了这种方式。
图中的公式(6)计算Recall与Precision,都用到了
给定一个bbox
(7)中
DetEval——Evaluation in ICDAR2013,考虑了三种match方式
只考虑one-one match虽然简化了问题, 却不大合理。特别是当ground truth标注粒度太大时,例如一个bbox里可能包含多个word,即使人家的算法把对应的一个个word都正确的框出来了,也只能得到一个很低的分数。
ICDAR2013则使用了新evaluation方法:DetEval,也就是十几年前Wolf提出的方法。“新方法”同时考虑了一对一,一对多,多对一的情况, 但不能处理多对多的情况。(作者说,实验结果表示在文本检测里这种情况出现的不多。)
下面分步描述DetEval的算法要点。
计算recall matrix与precision matrix
recall 与precision两个矩阵分别用
这两个矩阵合在一起也称为overlap matrices.
利用σ,τ 表示三种match
- one-to-one: 一个
Gi 只与一个Dj 匹配Gi 的大部分范围只被Dj 检测出来:σ 的第i 行只有σij≥tr - 只有
Dj 检测Gi 的precision符合要求:τ 的第j 列只有τij≥tp
- one-to-many(splits):
Gi 被D 的一个元素数量大于1的子集Do 检测出来:Do 中的每个元素都能一定准确度检测出Gi 的一部分:τij≥tp,∀j∈Do Gi 的大部分范围被So 检测出来:∑j∈Soσij≥tr
- many-to-one(merges) :
G 一个元素个数大于1的子集Go 被一个检测结果Dj 检测出来Go 中的每个元素都有一定比例的面积被检测出来:σij≥tr,∀i∈Go Dj 以一定准确度检测出Go :∑i∈Goτij≥tp
根据以上规则可以定义bbox的匹配函数:
这两个匹配函数的特点是:
- 不惩罚one-one match。只要匹配的recall与precision都大于各自的阈值就行。它与ICDAR2003又有不同:ICDAR2003的考虑one-one match时是以soft方式计算recall与precision,不取阈值,所以ICDAR2003虽然只考虑one-one match,但根据match的好坏会有不同的惩罚。
fsc(k) 中的k 是many-to-one或one-to-many里many的具体数值, 下标sc代表scatter。fsc(k) 可以是一个0到1之间的常数(作者的做法),也可以是一个关于k 的函数, 例如fsc=11+ln(k) 。
计算单张图片与多张图片上的recall 与precision
先考虑单张图片:
它的最大特点就是增加了两个输入参数:
然后考虑多张图片。假设图片数量为
它的最大特点是文本多的图片对结果有更大的影响力。
最终的recall 与precision
到目前为止,取定两个阈值
对应的DetEval软件包命令:
evalfixed det.xml gt.xml
但是,很明显,
* 以
* 最终的recall与precision是采用与mAP类似计算方式:
ICDAR 2013与Deteval
- ICDAR2013 Task1的evaluation页面提供了
ICDAR2013
与Deteval
两种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
- 见 ICDAR2013文本检测算法的衡量方法(一)Evaluation Levels 的References
- ICDAR FAQ
- ICDAR2013文本检测算法的衡量方法(二)Rectangle Matching与DetEval
- ICDAR2013文本检测算法的衡量方法(一)Evaluation Levels
- 算法效率的衡量方法
- DetEval与mAP的相同与不同
- 衡量算法的标准
- 衡量算法的效率
- 衡量算法的标准
- 衡量算法的标准
- 算法效率的衡量
- 衡量工作的方法
- 衡量ESB的方法
- 算法和算法的衡量
- 文本似性检测论文总结----面向科技项目申报文本相似性检测算法的研究与应用
- 算法时间复杂度的衡量
- Stereo Matching文献笔记之(二):经典算法Semi-Global Matching(SGM)之神奇的HMI代价计算~
- LibGDX_7.4: 碰撞检测 与 矩形包围区域(Rectangle)
- 衡量查找算法效率的主要标准是( )。
- (数据挖掘-入门-2)相似度衡量的方法
- JAVA按位运算
- 逆序数
- 接口,抽象类以及它们的区别
- (ssl1000)P1001 A+B Problem(c++)
- leetcode/two-sum
- ICDAR2013文本检测算法的衡量方法(二)Rectangle Matching与DetEval
- JVM学习笔记(三)------内存管理和垃圾回收
- QTcpSocket的连续发送数据和连续接收数据
- myeclipse安装SVN插件
- 递归算法
- 阶乘的因式分解(一)
- JVM学习笔记(四)------内存调优
- 面向对象内部类的优缺点
- Ionic2踏坑之旅