论文解析——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…...
消息队列中间件 - Kafka:高效数据流处理的引擎
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 在现代大数据和…...
el-table表格动态合并相同数据单元格(可指定列+自定义合并)
el-table表格动态合并相同数据单元格(可指定列自定义合并)_el-table 合并单元格动态-CSDN博客 vue2elementUI表格实现实现多列动态合并_element table动态合并列-CSDN博客...
复习Nginx
1.关于Nginx Nginx的关键特性 1.支持高并发 2.内存资源消耗低 3.高扩展性(模块化设计) 4.高可用性(master-worker) Nginx运行架构 注意 默认情况下,Nginx会创建和服务器cpu核心数量相等的worker进程 worker进程之间…...
nvm:Node.js 版本管理工具
nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具,它允许你在同一个系统上安装和使用不同版本的 Node.js。这对于开发者来说非常有用,特别是当不同的项目需要不同版本的 Node.js 时。 以下是 nvm 的一些主要特性…...
springboot校园商店配送系统-计算机毕业设计源码68448
摘要 本文详细阐述了基于Spring Boot框架的校园商店配送系统的设计与实现过程。该系统针对校园内的用户需求,整合了用户注册与登录、商品浏览与购买、订单管理、配送追踪、用户反馈收集以及后台管理等功能,为校园内的普通用户、商家、配送员和管理员提供…...
【Redis 初阶】客户端(C++ 使用样例列表)
一、编写 helloworld 需要先使用 redis-plus-plus 连接一下 Redis 服务器,再使用 ping 命令检测连通性。 1、Makefile Redis 库最多可以支持到 C17 版本。(如果是用 Centos,需要注意 gcc/g 的版本,看是否支持 C17。不支持的话&a…...
【STM32】STM32单片机入门
个人主页~ 这是一个新的系列,stm32单片机系列,资料都是从网上找的,主要参考江协科技还有正点原子以及csdn博客等资料,以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习,希望能对也没有学过…...
学生信息管理系统(Python+PySimpleGUI+MySQL)
吐槽一下 经过一段时间学习pymysql的经历,我深刻的体会到了pymysql的不靠谱之处; 就是在使用int型传参,我写的sql语句中格式化%d了之后,我在要传入的数据传递的每一步的去强制转换了,但是他还是会报错,说我…...
Java8.0标准之重要特性及用法实例(十九)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…...
Linux系统中,`buffer`和`cache` 区别
在Linux系统中,buffer和cache都是操作系统用来提高磁盘I/O性能的机制,它们通过将数据暂存于内存中来减少对磁盘的直接访问。尽管它们的目的相似,但它们在实现和用途上有所不同。 Buffer 定义:buffer主要用于存储即将被写入磁盘的…...
衢州网站建设有限公司/公司网络营销实施计划
转自:https://x264-settings.wikispaces.com/x264settings 264参数设置 本页面介绍x264参数的用法与目的。参数解释的顺序对应以下帮助内容中的参数出现顺序。x264 --fullhelp 参见 x264 Stats Output , x264_Stats_File , x264 Encoding Suggestions .Table of C…...
制作h5网站开发/郑州网站关键词优化公司哪家好
最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小。 prim算法就是一种最小生成树算法。 普里姆算法的基本思想ÿ…...
做最好的网站/seo优化视频教程
在 Hive SQL 中可以使用 substr() 函数来切割字段的前七位。示例语句如下: SELECT substr(column_name, 1, 7) FROM table_name;column_name 是需要切割的字段名称1 是开始切割的位置,从 1 开始7 是切割的长度 你也可以使用表达式作为第一个参数…...
wordpress外网ip访问不了/2023年8月份新冠
Session 用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为 每个用户分配一个唯一的会话 ID(Session ID) . 她的生存期是用户持续请求时 间再加上一段时间(一般是 20 分钟左右).Session 中的信息保存在 Web 服务器内 容中,保存的数据量可大可…...
深圳精品网站建设/外贸营销网站建设介绍
python图像处理单通道、多通道图像读取单通道图三通道图通道分离与转换通道分离与合并颜色空间转换图像拼接与几何变换拼接几何变换缩放图片翻转图片平移图片图像二值化处理阈值分割图像归一化处理单通道、多通道图像读取 单通道图 俗称灰度图,每个像素点只能有有…...
西峡县住房和城乡建设局网站/网站seo哪家公司好
5G渐渐进入大众市场的今天,很多新的概念和疑惑也出现在人们脑海中,对于5G为何要争夺6GHz频段、5.5G为何物等等问题,小伙伴曾经好奇过吗?小编为大家整理了这篇科普性质的文章,希望能给大家增长知识。5G网络的6GHz争夺战…...