论文解析——Character Region Awareness for Text Detection,字符级文本检测CRAFT算法
这篇论文来自CVPR2019,paper地址:Character Region Awareness for Text Detection。
代码:CRAFT-pytorch。
这篇论文主要解决之前的文本检测是基于word-level的检测框,不能识别任意形状的文本的问题。与之前的方法不同,此方法的主要特点是针对文本的检测是字符级的,同时还会学习字符间的affinity(字符间的亲和性,表示字符之间的关系,这种亲和性帮助算法将相邻的字符组合成单词或文本行)。CRAFT 是一种基于字符区域感知的文本检测方法,它不仅关注单个字符的检测,还关注字符之间的关系。这样做的好处在于:使用小感受野也能预测大文本和长文本,只需要关注字符级别的内容而不需要关注整个文本实例。
基于character-level(字符区域)检测有两个难点:
- 如何确定哪些字符是连接在一起组成文字的,而哪些字符是分离的;
- 数据标注问题,因为当前的数据集都是文字级别(word-level)的标注。
paper主要围绕解决这两个问题展开。
1. 确定哪些字符是连接的
字符检测:本文使用的网络使用了目前关键点检测中常用的网络结构,即采用预测热图的方式来进行检测关键点,那么在这里我们就可以把每个字符当做一个关键点,所以每个字符其实对应着一个热点,只要预测每个文字所对应的热点那么就可检测出每个字符。
字符连接的识别:字符的检测方法有了,要怎么知道哪些字符是组成一个文字的呢?作者也使用热图的方式来表示文字的连接,如果两个字符是相连接的,那么这两个字符之间就有一个热点,利用热点图来确定两个字符是不是一组的。
热点就代表着一个响应,如果图片中的某个地方有热点响应,那么表示这个地方存在我们需要的信息,热点的值的大小就代表着置信度,如果置信度越高,那么越确定。
2. 数据集构造
CRAFT之前,现有的文本数据库,其标注方式基本是基于文本行的(word-level),所以文中提出了利用合成数据加从真实数据中得到chatacter-level的估计GT的弱监督方法。
我们看一下网络的构造。
特征提取的主干网络采用的VGG-16以及batch normalization,解码器部分采用了U-net的方法,采用自顶向下的特征聚合方式,最终输出两个通道:region score map和affinity score map,分别为单字符中心区域的概率和相邻字符区域中心的概率,得到原图大小1/2的预测图。
我们再来看一下数据集的构造。首先是合成数据集的处理。
合成的数据集是通过字符的bounding box和affinity的box来表示的。但是CRAFT是使用热度图来表示信息的。使用热度图来表示信息有如下的好处:对于GT区域不是能够严格框住的场景,使用高斯热度图会更加灵活一些。
从bounding box到高斯热度图的处理过程中,由于我们拍摄的物体,图像的边界框会由于相机的透视投影关系而发生扭曲,因此首先要对其进行矫正。矫正的方法就是如图先使用一个二维各向同性高斯图,然后计算高斯映射区域与各字符框之间的透视变换,最后,利用上一步计算的透视变换,将高斯图变形到字符框所在的区域。这样,即使字符框因为透视效果而扭曲,生成的高斯热度图也能准确地映射到字符的实际区域上。这个变形的高斯图就作为 region score 的真实标注。
上面说的是数据处理中的一部分,合成数据到character-level高斯热度图gt的过程。数据处理的另一部分是使用真实数据集。
上图是整个工程的训练流程。其中包括了真实数据集到character-level的高斯热力度的过程。
真实数据集通常都是word-level的标注,就是bounding box都是标注在一整个单词上面的,没有针对一个单词里面每个字符进行标注。因此作者使用弱监督训练的方法,从word-level的真实数据集生成chatacter-level的标注。
模型首先使用前面介绍的合成数据集进行训练,这时候得到一个model,已经具备初步的character-level的识别能力。然后使用这个interim model去预测从word-level的真实数据集到character-level的字符区域。
但是这时候模型只在合成数据集上训练过,因此其预测真实数据集的能力还不够好,其预测的character-level的字符区域有可能不准确,因此作者加上了一个置信度map去评测网络预测真实数据集的结果的可信度。置信度的计算是用网络预测出来的字符个数除以gt的字符个数。(在大多数数据集中,提供了单词的转录,单词的转录信息中包含了字符的个数)。
上图表达的是从word-level生成character-level字符框的全过程。首先把字符区域从图像中抠出来,然后使用合成数据集训练的模型去预测字符区域的score,然后使用分水岭算法去分割字符区域,然后把字符区域再转换回原图上。
在CRAFT(Character Region Awareness for Text Detection)算法中,使用高斯热度图(Gaussian heatmap)和分水岭算法(Watershed algorithm)来生成字符级别的字符框(character-level bounding boxes),而不是直接从高斯热度图生成字符框,主要有以下几个原因:
-
高斯热度图的连续性:高斯热度图提供了一个连续的概率分布,表示字符中心的概率密度。这种连续性使得热度图在表示精确的字符边界时不够明确,因此需要进一步的处理来确定字符的实际边界。
-
字符区域的分割:分水岭算法是一种有效的图像分割技术,可以将连续的区域分割成独立的部分。在CRAFT中,分水岭算法用于将高斯热度图中的连续文本区域分割成单独的字符区域,从而生成更精确的字符框。
-
处理复杂形状:文本在自然场景中可能出现各种形状和方向,直接从高斯热度图生成字符框可能难以适应这些复杂形状。分水岭算法能够更好地处理这些不规则形状,生成更准确的字符框。
-
弱监督学习:CRAFT中使用弱监督学习方法来生成字符级别的标注。分水岭算法生成的字符框可以作为弱标注信息,用于训练和优化模型,尤其是在真实数据集中缺乏精确的字符级标注时。
-
提高鲁棒性:分水岭算法能够处理文本区域中的噪声和不连续性,提高生成字符框的鲁棒性。这对于提高文本检测算法在复杂场景中的性能至关重要。
-
利用现有标注:在一些数据集中,可能只有单词级别的标注而没有字符级别的标注。通过使用分水岭算法,可以从这些单词级别的标注中生成字符级别的标注,从而扩展数据集的可用性。
-
生成高质量的训练数据:生成高质量的训练数据对于训练深度学习模型至关重要。分水岭算法可以帮助生成更准确和一致的字符框,从而提高模型的训练效果。
总之,CRAFT算法中结合使用高斯热度图和分水岭算法,是为了更好地处理文本检测中的复杂性和不确定性,生成更精确和鲁棒的字符框,从而提高文本检测的性能。这种方法在处理不规则文本和缺乏精确标注的数据集时尤其有效。
通过训练过程的图示,在使用弱监督时,由于需要使用估计的GT,如果估计的GT字符的区域不准确,会导致模型的输出有模糊。所以在训练中,需要对估计的GT进行质量评估。
作者使用下面的置信度分数来作为loss对不同质量的估计GT采取不同的权重。
其中,w是训练集中的一个word-level的sample,R(w)是bounding box的区域,l(w)是单词的长度,lc(w)是估计GT的字符长度。如果真实的字符长度与估计的相同,那么Sconf(w)就是1。
完整的loss计算公式为上面的公式。其中Sc§的计算公式如下,只有在使用word-level的真实数据集训练时,才会让Sc§参与权重计算。当使用合成数据集时,由于可以获得准确的GT,所以Sc§一直为1。
Sr§和Sa§分别代表估计GT的region score和affinity map。Sr§和Sa§是模型预测的region score和affinity score。
从客观指标上看,CRAFT算法在文本是规则四边形的数据集和不规则的弯曲形状的数据集上测试,都得到了SOTA的结果。
从主观效果上,也是很完美的结果。
相关文章:

论文解析——Character Region Awareness for Text Detection,字符级文本检测CRAFT算法
这篇论文来自CVPR2019,paper地址:Character Region Awareness for Text Detection。 代码:CRAFT-pytorch。 这篇论文主要解决之前的文本检测是基于word-level的检测框,不能识别任意形状的文本的问题。与之前的方法不同࿰…...

基于飞腾平台的Kafka移植与安装
【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…...

【Python数据结构与算法】递归----算24
题目:算24 描述 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定…...

TOSHIBA东芝代理商--芯智雲城,提供订货、报价、选型等服务!
关于东芝 东芝创立于1875年7月,是日本大型半导体制造商,全球知名的综合机电制造商和解决方案提供者,世界大型综合电子电器企业集团。东芝集团原名东京芝浦电气株式会社,在1939年东京电器与芝浦制作所正式合并成为现在的东芝&…...

sdwan
分支互联网络解决方案 - 华为企业业务 分支互联网络解决方案 随着5G、AI、物联网等新兴技术与云紧密结合,企业业务智能化和云化加速。 企业分支WAN流量激增,传统以MPLS专线为主的广域互联网络难以支撑业务发展。SD-WAN成为应对云时代的必然选择。 SD…...
Linux: network: 建立socket以及设置nonblock/opt所需的时间
最近在扩大socket数量的时候发现程序在完成所有的socket创建设置的时间不短。单线程下。 创建socket的步骤是,(调用glibc/system call的接口): socket bind fcntl (sock, F_SETFL, flags); setsockopt 通过测试发现这几个步骤前后…...
git使用及代码规范
参考链接 git flow 简介代码审核的典型问题gitlab工作流...

职业教育大数据实验实训室建设应用案例
大数据作为一种重要的信息技术,对各行各业产生了深远的影响。职业教育作为培养应用型人才的摇篮,建设大数据实验实训室,对于提高学生的数据分析能力和解决实际问题的能力具有重要意义。唯众作为一家专注于教育技术领域的企业,凭借…...
【Academy】反序列化漏洞Insecure deserialization
反序列化漏洞Insecure deserialization 什么是序列化?序列化与反序列化什么是不安全的反序列化?不安全的反序列化漏洞是如何产生的?不安全的反序列化有什么影响?识别不安全的反序列化漏洞PHP序列化格式Java序列化格式 利用不安全的…...

【轨物推荐】康波、世界体系与创新范式:中国如何引爆新一轮产业革命
原创 邵宇、陈达飞 新财富 2019年12月31日 22:13 中美关系近两年备受关注,在诸多方面各方都已经形成了共识,但竞争博弈的结局富有争议性。当靠事物太近的时候,反而很难看清楚其面貌,使用康德拉季耶夫周期(简称“康波”…...

[HCTF 2018]admin1
打开题目 尝试登陆 admin,123,直接试出来了 有投机取巧的成分,到github查看源码,也能找到用户名密码...

【Qwen-Audio部署实战】Qwen-Audio-Chat模型之对话机器人部署测试
系列篇章💥 No.文章1【Qwen部署实战】探索Qwen-7B-Chat:阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验:用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B:通过FastApi框架实现API的部署与调用4【Q…...

第一百八十五节 Java XML教程 - Java DOM简介
Java XML教程 - Java DOM简介 DOM是标准的树结构,其中每个节点包含来自XML结构的一个组件。 XML文档中两种最常见的节点类型是元素节点和文本节点。 使用Java DOM API,我们可以创建节点,删除节点,更改其内容,并遍历节…...

一款功能强大且免费的图片查看和管理工具
XnView MP是一款功能强大且免费的图片查看和管理工具,支持多种平台(Windows、Mac和Linux),并基于相同的源代码实现统一的用户界面和体验。它不仅能够查看各种图片格式,还提供了丰富的编辑和管理功能。 图片查看与浏览…...
动手学强化学习 第 11 章 TRPO 算法(TRPOContinuous) 训练代码
基于 Hands-on-RL/第11章-TRPO算法.ipynb at main boyu-ai/Hands-on-RL GitHub 理论 TRPO 算法 修改了警告和报错 运行环境 Debian GNU/Linux 12 Python 3.9.19 torch 2.0.1 gym 0.26.2 运行代码 TRPOContinuous.py #!/usr/bin/env pythonimport torch import numpy a…...

数量关系模块
三年后指的不是现在 选A注意单位 注意单位换算 A 正方形减去扇形 256-X5y 那么小李拿的一定是末尾是1或者是6,所以小李拿的是26,那么y46,那么小王或者小周拿的是92,所以选择三个数之和等于92的,所以选择D 分数 百分数 …...
滑模面、趋近律设计过程详解(滑模控制)
目录 1. 确定系统的状态变量和目标2. 定义滑模面3. 选择滑模面的参数4. 设计控制律5. 验证滑模面设计6. 总结 设计滑模面(Sliding Surface)是滑模控制(Sliding Mode Control,SMC)中的关键步骤。滑模控制是一种鲁棒控制…...

SQL Server 端口配置
目录 默认端口 更改端口 示例:更改 TCP 端口 示例:验证端口设置 远程连接测试 示例:使用 telnet 测试连接 配置防火墙 示例:Windows 防火墙设置 远程连接测试 示例:使用 telnet 测试连接 默认端口 TCP/IP: …...

同一窗口还是新窗口打开链接更利于SEO优化
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
kafka 安装
docker安装kafka(KRaft 模式) KRaft模式不再对Zookeeper依赖。 docker run -d --name kafka-kraft \-p 9092:9092 -p 9093:9093 \-e KAFKA_PROCESS_ROLESbroker,controller \-e KAFKA_NODE_ID1 \-e KAFKA_CONTROLLER_QUORUM_VOTERS1127.0.0.1:9093 \-e KAFKA_LISTENERSPLAINTEX…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...