当前位置: 首页 > news >正文

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

传统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. 灵活性与通用性:焦点损失通过α和γ两个参数提供了高度的灵活性,使其能够被广泛应用于不同的任务和模型中,尤其是在目标检测和深度学习领域。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt——Qt实现数据可视化之QChart的使用总结(使用QChart画出动态显示的实时曲线)
  • Layui三级联动插件使用方法
  • 数据结构之栈和队列
  • golang语言系列:Web框架+路由 之 Gin
  • ChatGPT 之优势与缺陷
  • vue3和vue2 之 provide/inject 用法区别 ---vue3组件间通讯2
  • gpt的构造和原理
  • CentOS安装MySQL数据库
  • java操作mongodb详解
  • 汽车CAN网络中的checksum和Rollingcounter的作用?
  • FSQ8罗德与施瓦茨FSQ8信号分析仪
  • 第六题:标题统计
  • 第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-航班时间
  • Transformer重磅更新!新SOTA提速50%,更节省计算资源
  • 无人售货奶柜:开启便捷生活的新篇章
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • angular2 简述
  • AngularJS指令开发(1)——参数详解
  • create-react-app做的留言板
  • exports和module.exports
  • java第三方包学习之lombok
  • java中的hashCode
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • leetcode46 Permutation 排列组合
  • Mysql优化
  • rc-form之最单纯情况
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue-cli在webpack的配置文件探究
  • 关于for循环的简单归纳
  • 利用DataURL技术在网页上显示图片
  • 数据仓库的几种建模方法
  • 跳前端坑前,先看看这个!!
  • 写给高年级小学生看的《Bash 指南》
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • mysql面试题分组并合并列
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #1014 : Trie树
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #pragma once
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #知识分享#笔记#学习方法
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (黑马点评)二、短信登录功能实现
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (转) ns2/nam与nam实现相关的文件
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET 设计一套高性能的弱事件机制
  • .NET中的十进制浮点类型,徐汇区网站设计