【详解】文本检测OCR模型的评价指标

关于文本检测OCR模型的评价指标

前言:网上关于评价标准乱七八糟的,有关于单词的,有关于段落的,似乎没见过谁解释一下常见论文中常用的评价指标具体是怎么计算的,比如DBNet,比如RCNN,这似乎好像默认大家都知道咋算了。

好吧,我不知道,我刚搞懂,做个笔记。

目录

  • 关于文本检测OCR模型的评价指标
    • 识别网络
    • 检测网络
    • 举个非常好的例子
      • 计算如下:
        • 检测算法指标计算:
        • 整体OCR系统指标计算:

识别网络

识别网络是最简单的,只有一个指标,就是准确率

检测正确的图像占总图像的比例
a c c u r a c y = 检测正确的小图数量 数据集中所有的小图数量 accuracy = \frac{检测正确的小图数量}{数据集中所有的小图数量} accuracy=数据集中所有的小图数量检测正确的小图数量

这里的图像指的是“小图”,如下所示:

请添加图片描述
请添加图片描述

识别结果就是文本,如果识别结果与标注一致,即为正样本。

检测网络

检测网络就是采用的二分类的最简单的混淆矩阵
有框没框,框的位置对不对,都需要设定阈值进行限定

在这里插入图片描述

Precision  = T P T P + F P \text { Precision }=\frac{T P}{T P+F P}  Precision =TP+FPTP
Recall  = T P T P + F N \text { Recall }=\frac{T P}{T P+F N}  Recall =TP+FNTP
F Score  = ( 1 + β 2 ) Precision  ⋅ Recall  β 2 ⋅ Precision  + Recall  ( β 系数一般取 1 ) F_{\text {Score }}=\left(1+\beta^2\right) \frac{\text { Precision } \cdot \text { Recall }}{\beta^2 \cdot \text { Precision }+ \text { Recall }} (\beta系数一般取1) FScore =(1+β2)β2 Precision + Recall  Precision  Recall β系数一般取1

两者和在一起组成OCR系统,以paddleOCR为例

官方指标评估代码与方法

PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall、Hmean(F-Score)。

PS:这里,Hmean与F-Score在PaddleOCR-V1中是分开的,Hmean特指检测位置部分的指标,F-Score特指OCR系统的指标,V2V3就没区分了,全部都是OCR系统的指标。

区别在于:TP的计算,OCR系统的指标需要:真实有框的位置,预测为有框,且识别结果正确。

依据论文:
在这里插入图片描述

举个非常好的例子

请添加图片描述
如上图所示:

  • 真实有框的数量为10个
  • 真实有框和预测有框对上的数量有7个:TP=7(绿蓝)
  • 但其中只有5个识别正确,所以:TP=5(红绿蓝)
  • 真实没框和预测有框的数量为2个:FP=2(纯蓝)
  • 真实有框但没有预测出来的有3个:FN=3(纯绿)

计算如下:

检测算法指标计算:

Precision  = T P T P + F P = 7 7 + 2 = 0.7778 \text { Precision }=\frac{T P}{T P+F P}=\frac{7}{7+2}=0.7778  Precision =TP+FPTP=7+27=0.7778
Recall  = T P T P + F N = 7 7 + 3 = 0.7 \text { Recall }=\frac{T P}{T P+F N}=\frac{7}{7+3}=0.7  Recall =TP+FNTP=7+37=0.7
F Score  = ( 1 + β 2 ) Precision  ⋅ Recall  β 2 ⋅ Precision  + Recall  = ( 2 ) 0.7778  ⋅ 0.7  1 ⋅ 0.7778  + 0.7  = 0.73685 F_{\text {Score }}=\left(1+\beta^2\right) \frac{\text { Precision } \cdot \text { Recall }}{\beta^2 \cdot \text { Precision }+ \text { Recall }}=\left(2\right) \frac{\text { 0.7778 } \cdot \text { 0.7 }}{1 \cdot \text { 0.7778 }+ \text {0.7 }}=0.73685 FScore =(1+β2)β2 Precision + Recall  Precision  Recall =(2)1 0.7778 +0.7  0.7778  0.7 =0.73685

整体OCR系统指标计算:

Precision  = T P T P + F P = 5 5 + 2 = 0.714 \text { Precision }=\frac{T P}{T P+F P}=\frac{5}{5+2}=0.714  Precision =TP+FPTP=5+25=0.714
Recall  = T P T P + F N = 5 5 + 3 = 0.625 \text { Recall }=\frac{T P}{T P+F N}=\frac{5}{5+3}=0.625  Recall =TP+FNTP=5+35=0.625
F Score  = ( 1 + β 2 ) Precision  ⋅ Recall  β 2 ⋅ Precision  + Recall  = ( 2 ) 0.714  ⋅ 0.625  1 ⋅ 0.714  + 0.625  = 0.66654 F_{\text {Score }}=\left(1+\beta^2\right) \frac{\text { Precision } \cdot \text { Recall }}{\beta^2 \cdot \text { Precision }+ \text { Recall }}=\left(2\right) \frac{\text { 0.714 } \cdot \text { 0.625 }}{1 \cdot \text { 0.714 }+ \text { 0.625 }}=0.66654 FScore =(1+β2)β2 Precision + Recall  Precision  Recall =(2)1 0.714 + 0.625  0.714  0.625 =0.66654

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统真题

操作系统真题 考点前驱图真题分页存储管理索引文件结构分段存储管理进程的状态进程的同步和互斥 考点 考试只会考察选择题 前驱图真题 c 这是常考题型 b 分页存储管理 将程序分页 --逻辑地址 将内存分为页框(物理块) --物理地址 程序页的大小和页框的大小…

React中的性能测试工具组件Profiler的基本使用

React中的性能测试工具组件Profiler是一个非常有用的工具,它可以帮助我们分析React应用程序的性能瓶颈。在本文中,我们将学习如何使用Profiler组件来测试React应用程序的性能。 首先,让我们来了解一下Profiler组件的基本用法。在React中&…

修改Jupyter Notebook默认打开路径

这里我是重新下载的anaconda,打开Jupyter之后是默认在C盘的一个路径的,现在我们就来修改一下它的一个默认打开路径,这样在我们后续学习过程中,可以将ipynb后缀的文件放在这个目录下就能查看了。 1、先打开Anaconda Prompt&#x…

常见前端面试之VUE面试题汇总十一

31. Vuex 有哪几种属性? 有五种,分别是 State、 Getter、Mutation 、Action、 Module state > 基本数据(数据源存放地) getters > 从基本数据派生出来的数据 mutations > 提交更改数据的方法,同步 actions > 像一个装饰器&a…

他们朝我扔泥巴(scratch)

前言 纯~~~属~~~虚~~~构~~~(同学看完短视频要我做,蟹蟹你) 用scratch做的,幼稚得嘞( ̄_ ̄|||)呵呵(强颜欢笑) 完成视频 视频试了好久,就是传不上来,私信我加我…

Spring Cloud Nacos 和 Eureka区别,包含实战代码

目录 一、Spring Cloud Eureka详解二、Spring Cloud Nacos详解三、Spring Cloud Nacos和Eureka区别 Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别…

【业务功能篇86】微服务-springcloud-系统性能压力测试-jmeter-性能优化-JVM参数调优

系统性能压力测试 一、压力测试 压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内&…

MySQL项目迁移华为GaussDB PG模式指南

文章目录 0. 前言1. 数据库模式选择(B/PG)2.驱动选择2.1. 使用postgresql驱动2.1. 使用opengaussjdbc驱动 3. 其他考虑因素4. PG模式4.1 MySQL和OpenGauss不兼容的语法处理建议4.2 语法差异 6. 高斯数据库 PG模式JDBC 使用示例验证6. 参考资料 本章节主要…

spark grpc 在master运行报错 exitcode13 User did not initialize spark context

程序使用sparksql 以及protobuf grpc ,执行报错 ApplicationMaster: Final app status: FAILED, exitCode: 13, (reason: Uncaught exception: java.lang.IllegalStateException: User did not initialize spark context! 先说原因 : 1.使用了不具备权限…

CF 896 C Willem, Chtholly and Seniorious(珂朵莉树模板)

CF 896 C. Willem, Chtholly and Seniorious(珂朵莉树模板) Problem - C - Codeforces 大意:给出一个区间 , 要求进行四种操作 , 区间加 , 区间第k大 , 区间推平 , 区间求和。 珂朵莉树模板题 &#xff…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】

😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…

VS Code 使用 clang++ 编译,使用 cppvsdbg 或 lldb 调试的配置方法

需要安装的 VS Code LLVM VS Code 需要安装的插件: C/C(用来配置 c_cpp_properties.json) CodeLLDB(如果你要用 lldb 调试,那么这个插件就需要安装,用来连接到 lldb 调试器) 流程 我们都…

Redis的数据结构与单线程架构

"飞吧,去寻觅红色的流星" Redis中的五种数据结构和编码 Redis是一种通过键值对关系存储数据的软件,在前一篇中,我们可以使用type命令实际返回当前键所对应的数据结构类型,例如: String\list\hash\set等等。 但…

开源项目-数据可视化分析平台

哈喽,大家好,今天给大家带来一个开源项目-数据可视化分析平台。项目通过SpringBoot实现 数据可视化分析平台主要有数据源管理,项目管理,数据集管理,图表管理,看板管理等功能 登录 数据源管理 数据源管理功能可以添加MySQL,Oracle,PostgreSQL等类型的数据源信息 项目…

ResNet详解:网络结构解读与PyTorch实现教程

目录 一、深度残差网络(Deep Residual Networks)简介深度学习与网络深度的挑战残差学习的提出为什么ResNet有效? 二、深度学习与梯度消失问题梯度消失问题定义为什么会出现梯度消失?激活函数初始化方法网络深度 如何解决梯度消失问…

电脑共享文件夹-实现手机和其他电脑的文件同步更新

一、首先是电脑和手机需要处于同一个路由器下 二、创建一个文件夹,随便命名 三、点击属性-共享-Everyone-添加(设置读取/写入)-最后点击共享 四、这里要注意,如果电脑之前没设置过共享文件夹会有一个弹窗,点第一个就好…

09 生产者分区机制

kafka如何保证消息的有序 可以通过key-ording策略解决。kafka可以为每条消息定义消息键,也称为key,通常是带有业务属性的比如用户id之类的。有相同消息键的消息会被发到同一个分区。下面实现了key-ordering策略,对key的hashcode进行取模来决…

C++ STL map

文章目录 Map、HashMap概念map、hashmap 的区别引用头文件初始化赋值map 自定义 key 类型map 的 value 自定义数据类型遍历常用方法插入查找 key修改 value删除元素清空元素 map 中每一个元素都是一个 key-value 对,数据类型为 pair std::pair 主要的作用是将两个数…

OpenAI推出ChatGPT企业版,提供更高安全和隐私保障

🦉 AI新闻 🚀 OpenAI推出ChatGPT企业版,提供更高安全和隐私保障 摘要:OpenAI发布了面向企业用户的ChatGPT企业版,用户可以无限制地访问强大的GPT-4模型,进行更深入的数据分析,并且拥有完全控制…