场景文本检测识别学习 day01(传统OCR的流程、常见的损失函数)

news2025/1/13 7:38:30

传统OCR的流程

  1. 传统OCR:传统光学字符识别
  2. 常见的的模型主要包括以下几个步骤来识别文本
    1. 预处理:预处理是指对输入的图像进行处理,以提高文字识别的准确率。这可能包括调整图像大小、转换为灰度图像、二值化(将图像转换为黑白两色)、去噪声、校正图像中的倾斜等步骤。目的是减少图像中的干扰信息,并突出文字部分。
    2. 文本检测:文本检测的目的是在图像中定位文本的位置。这一步骤要解决的主要问题是识别图像中哪些区域包含文字。使用的模型通常是基于深度学习的,例如卷积神经网络(CNN)。这些模型可以学习文本的形状、大小和布局,从而在各种背景下准确地识别出文本区域。
    3. 文本识别:在文本区域被检测出来之后,下一步是识别这些区域内的具体文字。这通常涉及到将文本区域内的图像转换为可编辑的文字。在这个阶段,也常使用基于深度学习的模型,如循环神经网络(RNN)和长短期记忆网络(LSTM),它们对处理序列数据(如文字串)特别有效。这些模型能够识别和理解文本区域内每个字符的顺序,进而转换成文字。
    4. 后处理:后处理步骤包括纠正识别出的文字中的拼写错误、语法错误等。可以使用词典、语言模型等工具来提高文本的准确性。例如,如果识别出的文字是英文,可以使用英语词典来检查和纠正单词的拼写错误。
  • 其中对于文本识别,又有以下几个步骤:
    • 字符分割:在一些传统的OCR系统中,一个重要的步骤是字符分割,即将文本区域内的图像分割成单个字符。这需要算法识别每个字符之间的空隙,以便单独处理每个字符。然而,这种方法在处理复杂背景或字体、连笔文字(如手写或某些印刷体)时可能会遇到困难。
    • 特征提取:特征提取是识别过程中的一个关键步骤。它涉及到从每个已识别的字符图像中提取有用的信息,这些信息对于后续的分类和识别至关重要。特征可以是基于像素的(如图像的形状、边缘),也可以是更高级的特征(如通过深度学习模型自动学习到的特征)。
    • 字符识别:在特征被提取之后,下一步是使用这些特征来识别每个字符。这通常通过分类算法完成,如支持向量机(SVM)、随机森林或深度学习模型(如卷积神经网络CNN)。深度学习方法,尤其是CNN,由于其强大的特征学习能力,已经成为最流行和最有效的方法之一。
    • 序列建模:对于连续文本(例如句子或段落),仅仅识别单个字符是不够的;还需要理解字符之间的顺序关系。循环神经网络(RNN)和长短期记忆网络(LSTM)等模型特别适合处理这类序列数据。这些模型不仅可以识别单个字符,还能学习字符之间的依赖关系,提高整体识别的准确性。
    • (可选)语言模型:在识别出文本之后,语言模型可以用来进一步提高识别的准确性。通过分析词汇的语境,语言模型可以帮助纠正拼写错误,甚至是基于上下文推断出模糊或缺失的字符。这一步是提高OCR系统输出质量的重要环节。

常见的损失函数

  • L1 loss:
  1. 定义:L1损失,也称为最小绝对偏差(Least Absolute Deviations,LAD)损失,是实际值与预测值之差的绝对值的和。对于边界框预测来说,L1损失可以定义为预测框和真实框坐标之间差异的绝对值的和。
  2. 公式:如果有一个真实框坐标为(x,y,w,h)其中x,y是框的中心坐标,w,h是框的宽度和高度,预测框坐标为(x̂,ŷ,ŵ,ĥ),则L1损失可以表达为:
    在这里插入图片描述
  3. 特点:L1损失对于异常值(outliers)不那么敏感,因为它不像平方误差损失(L2损失)那样对较大的误差赋予更高的权重。这使得L1损失在处理有噪声的数据时比较有优势。
  • GIoU loss:
  1. 定义:GIoU损失是IoU(Intersection over Union)的一种推广,用于测量两个框的重叠度。IoU仅考虑了框之间的交集和并集,而GIoU还考虑了框之间不重叠的情况,提供了更全面的测量。
  2. 公式:GIoU在IoU的基础上增加了一个项,考虑了最小封闭框(即同时包含预测框和真实框的最小框)与预测框和真实框之间的关系。其中,IoU是交集与并集的比例,C是最小封闭框的面积,U是预测框和真实框的并集面积。GIoU损失定义为:
    在这里插入图片描述
  3. 特点:GIoU损失解决了IoU在某些情况下无法有效反映框之间差异的问题(例如,当两个框不重叠时,IoU为0,但这并不意味着它们的距离相同)。通过考虑最小封闭框,GIoU提供了一种更有效的方式来度量和优化边界框的位置和大小。
  • focal loss:
  1. 定义:焦点损失是交叉熵损失的一个变种,旨在解决类别不平衡问题,特别是在一类样本数量远多于另一类样本的情况下。它通过减少那些已经被正确分类的样本对损失函数的贡献,来增加模型对难以分类样本的关注度。
  2. 公式: p t p_t pt是模型对当前类别为正的预测概率。对于负样本, p t p_t pt会相应调整为 1 − p 1−p 1p,其中p是模型的原始预测概率。 α t α_t αt是平衡正负样本的权重系数,用于减轻类别不平衡的影响。γ是调节因子,用于减少易分类样本对总损失的贡献,增加对难分类样本的惩罚。
    在这里插入图片描述
  3. 特点:
    a. 解决类别不平衡问题:焦点损失特别适用于处理正负样本比例悬殊的场景,能够帮助模型更有效地学习到少数类的特征。
    b. 提高对难分类样本的关注:通过调节γ参数,焦点损失能够使模型在训练过程中更加关注那些难以正确分类的样本,从而提高模型对这些样本的分类性能。
    c. 灵活性与通用性:焦点损失通过α和γ两个参数提供了高度的灵活性,使其能够被广泛应用于不同的任务和模型中,尤其是在目标检测和深度学习领域。

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

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

相关文章

4.1.k8s的pod-创建,数据持久化,网络暴露,env环境变量

目录 一、Pod介绍 二、指令创建和管理Pod 三、资源清单创建pod 1.挂载hostPath存储卷 2.NFS存储卷 所有节点安装nfs k8s3编辑NFS配置文件 k8s1,k8s2节点开机挂载 编辑pod资源清单,挂载nfs 四、pod网络暴露 1.hostNetwork使用宿主机的网络 2.…

Struts2的入门:新建项目——》导入jar包——》jsp,action,struts.xml,web.xml——》在项目运行

文章目录 配置环境tomcat 新建项目导入jar包新建jsp界面新建action类新建struts.xml,用来配置action文件配置Struts2的核心过滤器:web.xml 启动测试给一个返回界面在struts.xml中配置以实现页面的跳转:result再写个success.jsp最后在项目运行 配置环境 …

实现点击用户头像或者id与其用户进行聊天(vue+springboot+WebSocket)

用户点击id直接与另一位用户聊天 前端如此&#xff1a; <template><!-- 消息盒子 --><div class"content-box" :style"contentWidth"><!-- 头像&#xff0c;用户名 --><div class"content-box-top box--flex">&l…

sqlmap(四)案例

一、注入DB2 http://124.70.71.251:49431/new_list.php?id1 这是墨者学院里的靶机&#xff0c;地址&#xff1a;https://www.mozhe.cn/ 1.1 测试数据库类型 python sqlmap.py -u "http://124.70.71.251:49431/new_list.php?id1" 1.2 测试用户权限类型 查询选…

【linux】ubuntu ib网卡驱动如何适配

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

晚枫|2024年3月总结,人生中第一次「车祸」

这个3月&#xff0c;真正做到了&#xff1a;过得紧张又刺激&#xff01; 1、第一次「车祸」 整个3月&#xff0c;凌晨1点之前没睡过觉&#xff0c;大部分时间都是2点以后睡。 从去年10月和朋友一起办Python中国的活动开始&#xff0c;就逐渐进入这种状态了。 除了本职工作因…

c# wpf LiveCharts 绑定 简单试验

1.概要 c# wpf LiveCharts 绑定 简单试验 2.代码 <Window x:Class"WpfApp3.Window2"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schem…

Python3 Ubuntu

一、安装中文输入法 1.sudo apt install ibus-sunpinyin 2.点击右上角输入法&#xff0c;然后点击加号&#xff0c;输入yin添加进来&#xff0c;最后选中输入法即可 二、安装截屏软件 1.sudo apt install gnome-screenshot 三、安装opencv-python 1.pip3 install --upgrade…

CleanMyMac ----MacBook卡顿处理小妙招

MacBook 是苹果公司的一款非常流行的笔记本电脑&#xff0c;但使用时 间久了之后很容易出现卡顿的问题。那么出现卡顿的原因有哪些呢&#xff1f; MacBook卡顿怎么处理?先找出卡顿的一般原因&#xff1a; 我们需要排除 MacBook 的硬件问题。可以通过访问 Mac 系统自带的硬件检…

【C++】红黑树讲解及实现

前言&#xff1a; AVL树与红黑树相似&#xff0c;都是一种平衡二叉搜索树&#xff0c;但是AVL树的平衡要求太严格&#xff0c;如果要对AVL树做一些结构修改的操作性能会非常低下&#xff0c;比如&#xff1a;插入时要维护其绝对平衡&#xff0c;旋转的次数比较多&#xff0c;更…

pyside6怎么使用Qt Designer设计自定义组件

第一步&#xff0c;新建一个自定义组件的python文件 from PySide6.QtWidgets import QPlainTextEdit from PySide6.QtCore import Signal,Qtclass CustomPlainTextEdit(QPlainTextEdit):enterPressed Signal(str)def __init__(self, parentNone):super().__init__(parent)def…

EChart简单入门

echart的安装就细不讲了&#xff0c;直接去官网下&#xff0c;实在不会的直接用cdn,省的一番口舌。 cdn.staticfile.net/echarts/4.3.0/echarts.min.js 正入话题哈 什么是EChart&#xff1f; EChart 是一个使用 JavaScript 实现的开源可视化库&#xff0c;Echart支持多种常…

【环境变量】常见的环境变量 | 相关指令 | 环境变量系统程序的结合理解

目录 常见的环境变量 HOME PWD SHELL HISTSIZE 环境变量相关的指令 echo&env export unset 本地变量 环境变量整体理解 程序现象_代码查看环境变量 整体理解 环境变量表 环境变量表的传递 环境变量表的查看 测试验证 少说废话&#x1f197; 每个用户…

前端canvas项目实战——在线图文编辑器(八):复制、删除、锁定、层叠顺序

目录 前言一、效果展示二、实现步骤1. 复制2. 删除3. 锁定4. 层叠顺序 三、实现过程中发现的bug1. clone方法不复制自定义属性2. 复制「锁定」状态的对象&#xff0c;得到的新对象也是「锁定」状态 四、Show u the code后记 前言 上一篇博文中&#xff0c;我们细致的讲解了实现…

高精度端到端在线校准环视相机和LIDAR(精度0.2度内!无需训练数据)

高精度端到端在线校准环视相机和LIDAR&#xff08;精度0.2度内&#xff01;无需训练数据&#xff09; 附赠自动驾驶学习资料和量产经验&#xff1a;链接 写在前面 在自动驾驶车辆的使用寿命内&#xff0c;传感器外参校准会因振动、温度和碰撞等环境因素而发生变化。即使是看似…

智过网:非安全专业能否报考注安?哪些专业可以报考?

近年来&#xff0c;随着社会对安全生产管理的日益重视&#xff0c;注册安全工程师&#xff08;简称注安&#xff09;这一职业逐渐受到广大从业人员的青睐。然而&#xff0c;对于许多非安全专业的朋友来说&#xff0c;他们可能会困惑&#xff1a;非安全专业是否可以报考注安&…

微软推出GPT-4 Turbo优先使用权:Copilot for Microsoft 365商业用户享受无限制对话及增强图像生成能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

thinkphp6入门(22)-- 如何下载文件

假设在public/uploads文件夹下有一个文件test.xlsx 在前端页面添加下载链接&#xff0c;用户点击该链接即可下载对应的文件。 <a href"xxxxxxx/downloadFile">下载文件</a> 2. 在后端控制器方法中&#xff0c;我们需要获取要下载的文件路径&#xff0…

Prometheus+grafana环境搭建Docker服务(docker+二进制两种方式安装)(八)

由于所有组件写一篇幅过长&#xff0c;所以每个组件分一篇方便查看&#xff0c;前七篇链接如下 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环…

软考115-上午题-【计算机网络】-HTML

一、真题 真题1&#xff1a; alink属性表示一个链接的当前激活状态的颜色&#xff0c;即用户正在点击或已经点击的链接的颜色。 vlink属性用于设定已访问过的超链接文本的显示颜色&#xff0c;即用户已经点击过并且已经访问过的链接的颜色。 真题2&#xff1a; <table bord…