CRAFT文字检测算法解析和基于C++和TensorRT的推理实现

本文讲解了CVPR 2019的一篇文字检测算法《Character Region Awareness for Text Detection》的原理,并给出我使用C++和TensorRT重新实现的推理,速度比原版代码快12倍。
论文:https://arxiv.org/pdf/1904.01941.pdf

官方代码:https://github.com/clovaai/CRAFT-pytorch

基于C++和TensorRT的推理代码:https://github.com/yinnhao/CRAFTcpp

目录

  • 1. 文字检测数据集情况总结
  • 2. Introduction
  • 3. Method
    • 3.1 输入图片到Score Map的获取
    • 3.2. Score Map到检测框的获取
    • 3.3 训练
  • 4. 基于C++和TensorRT的推理实现

1. 文字检测数据集情况总结

  • 矩形框数据集
    ICDAR2013:英文;229训练样本+233测试样本;
    ICDAR2015:英文;1000训练样本+500测试样本;
    ICDAR2017:九种语言(包括中文);7200训练样本+9000测试样本;
    MSRA-TD500:英文+中文;300训练样本+200测试样本;
  • 多边形数据集
    TotalText:英文;1255训练样本+300测试样本;内含曲线文本
    CTW-1500:英文+中文;1000训练样本+500测试样本;内含曲线文本

2. Introduction

  • 文字检测的用途
    即时翻译、图像检索、场景解析、地理位置和盲导航

  • 基于Bouding Box的文字检测方法的局限性

    之前的文字检测方法的都是通过预测bouding box来解决,但是在一些难以处理的情况下,例如弯曲、变形或极长的文本,单个边界框的检测可能很难完成。

  • 本文的思路
    做到字符级别的感知,通过自下而上的连接相邻字符,可以处理上述难例;
    但是前提是需要解决问题:现存的数据集通常都是单词级别的label,不包括字符级别的label;

  • 方法简介

    • 我们的框架被称为Character Region Awareness for Text Detection(CRAFT),即字符区域感知文本检测
    • 模型输出两个score map:region score(区域分数) and affinity score(亲和力分数),区域分数用于定位单个字符,亲和力分数用于将单个字符组合成一个实例;
    • 为了弥补缺乏字符级别注释的问题,我们提出了一个弱监督的学习框架,该框架可以在现有的实际单词级别数据集中估算字符级别的地面真值

3. Method

3.1 输入图片到Score Map的获取

请添加图片描述

  1. 模型基于vgg-16-bn构建,编码+解码结构,类似于Unet

  2. 模型输出两个score map:region score(区域分数) and affinity score(亲和力分数)。其中region score代表了当前像素点是字符中心点的概率,而affinity score是当前像素点是相邻字符空白区域中心点的概率,一个例子如下图所示。
    在这里插入图片描述

  3. 输出的map的分辨率是输入图像的1/2,也就是说模型的输入尺寸(1,3,h,w),输出尺寸为(1,2,h//2,w//2)

3.2. Score Map到检测框的获取

根据需要可以得到下面的3种框。

  • 字符级框
    字符级的框可以直接根据region socre map使用分水岭算法得到

  • 四角点box

    1. 初始化一个和输入图像一样大的全0矩阵M,若位置p中的两个score值有一个大于对应的阈值,那么就将M§赋值为1;
      在这里插入图片描述
    2. cv2.connectedComponents 标记连通域
    3. cv2.minAreaRect 获取四角点坐标
  • 多边形框
    在这里插入图片描述

  1. 第一步是沿着扫描方向(x方向)找到字符区域的局部极大值线,在图中表示为在椭圆内部且垂直扫描方向的最长线。
  2. 连接局部极大值的所有中心点的线称为中心线,用黄色表示。
  3. 将局部极大值线旋转到垂直于中心线的位置,以反映字符的倾斜角,用红色箭头表示。局部极大值线的端点是文本多边形边缘控制点的候选点。
  4. 为了完全覆盖文本区域,将最倾斜的两条局部极大值线沿着局部极大值中心线向外移动,形成最终的控制点(绿色点)。移动的终止点为刚好左右椭圆相切的地方。

3.3 训练

训练的前提是需要解决数据问题:1.现存的数据集没有score map对应的真实值; 2. 通常也不包括字符级别的label;

  • 合成数据集上的label生成
    合成数据集上有单个字符的坐标数据,因此可以通过Warp 2D 高斯map的方式构建两个score的label:
    在这里插入图片描述
    区域分数的中心是对角线交点,亲和力分数的中心如上图左图所示,是上三角形中心的连接线;

  • 真实图像数据集使用Weakly-Supervised Learning
    只有单词级别的label,没有字符级别的坐标数据;
    在这里插入图片描述
    对于真实图像数据集,会先对文字部分进行crop,然后使用模型的能力获取score map,并根据字符可划分数量的比例,建立一个confidence map,加入到loss函数中:
    在这里插入图片描述

  • 训练过程

    1. 在合成数据上先训练50k次迭代,然后在真实数据集上进行微调;
    2. 微调时,将真实数据以1:5的比例投入使用;

4. 基于C++和TensorRT的推理实现

原版使用pytorch推理,并且在score map到文字框的过程是在cpu上基于opencv完成,效率较低,我基于cuda c++进行了重写,并使用tensorrt推理,目前不支持多边形框。代码在https://github.com/yinnhao/CRAFTcpp

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理 (NLP) 的技术演变史

一、简述 本文的目标是了解自然语言处理 (NLP) 的历史,包括 Transformer 体系结构如何彻底改变该领域并帮助我们创建大型语言模型 (LLM)。 基础模型(如 GPT-4)是最先进的自然语言处理模型,旨在理解、生成人类语言并与之交互。 要理…

IPEmotion轻松解决急停设备的控制与数据存储问题

一 背景 众所周知,急停操作在各种工业领域中都扮演着非常重要的角色。在一个个紧急情况下,及时采取急停操作可节省宝贵时间,避免人身伤害或设备损坏,降低安全风险,尤其是在新能源测试中,出于对高压电性能方…

linux 关闭不了docker服务

[rootiZ2ze7y4akbxb1yjoydztxZ ~]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket 在 systemd 系统中,服务和套接字是分开管理的。docker.socket 是一个套接字单元,用于监听 Docker 的 API…

小程序AI智能名片S2B2C商城系统:五大营销技术模块深度剖析

在当今数字化营销的时代,小程序AI智能名片S2B2C商城系统凭借五大核心营销技术模块,为企业提供了强大的私域流量管理与营销能力。下面我们将逐一剖析这五大模块,看它们如何共同助力企业实现精准营销与业务增长。 一、小程序:用户触…

力扣刷题 70.爬楼梯

题干 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…

机器学习和深度学习 -- 李宏毅(笔记与个人理解)Day 23

Day 23 Self - Atention 变形 关于很多个former 的故事 痛点: 在于做出注意力矩阵之后的运算惊人 由于self - attention 一般都是在big model 的一部分,所以,一般不会对模型造成决定性的影响, 只有当model 的输入较长的时候&am…

求臻医学MRD产品斩获2023年度肿瘤标志物年度十大创新技术产品奖

2024年4月20日,中国肿瘤标志物学术大会开幕式暨名家讲坛在南京隆重召开! 会议期间,中国抗癌协会肿瘤标志专业委员会联合中国抗癌协会肿瘤临床检验与伴随诊断专业委员会、中国抗癌协会肿瘤基因诊断专业委员等共同发布“2023 年度肿瘤标志物创新技术产品”…

Java 提取HTML文件中的文本内容

从 HTML 文件中提取文本内容是数据抓取中的一个常见任务,你可以将提取的文本信息用于编制报告、进行数据分析或其他处理。本文分享如何使用免费 Java API 从HTML 文件中提取文本内容。 安装免费Java库: 要通过Java提取HTML文本,需要用到Free…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏,它的规则易于理解,但挑战性也很高。它已经成为经典的游戏之一,并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制:玩家可以使用键盘输入设备来控制蛇的移动方…

基于模糊控制的纯跟踪横向控制在倒车中的应用及实现

文章目录 1. 引言2. Pure Pursuit在倒车场景的推导3. 模糊控制器的设计3.1 基础知识3.2 预瞄距离系数k的模糊控制器设计 4. 算法和仿真实现 1. 引言 Pure Pursuit是一种几何跟踪控制算法,也被称为纯跟踪控制算法。他的思想就是基于当前车辆的后轮中心的位置&#x…

Axure RP 9 for Mac/win:打造极致交互体验的原型设计神器

在数字化浪潮席卷全球的今天,原型设计作为产品开发的关键环节,其重要性不言而喻。Axure RP 9,作为一款专为设计师和开发者打造的原型设计软件,以其出色的交互设计能力和高效的协作体验,赢得了广大用户的青睐。 Axure …

【JavaScript】axios

基础使用 <script src"https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script> <script>axios.get(https://study.duyiedu.com/api/herolist).then(res> {console.log(res.data)}) </script>get - params <script s…

U盘乱码频发,原因与解决方案大揭秘

在日常的工作和生活中&#xff0c;U盘因其便携性和大容量成为了我们不可或缺的存储设备。然而&#xff0c;有时候我们会遭遇U盘乱码的问题&#xff0c;这让我们无法正确读取和使用其中的文件。那么&#xff0c;U盘乱码究竟是何原因导致的呢&#xff1f;又该如何解决这一问题呢&…

Python自学之路--002:Python 如何生成exe可执行文件

目录 1、概述 2、安装pyinstall 3、终端指令 1、概述 大部分时候&#xff0c;执行的仅仅是一个Python解释器出来的文件&#xff0c;至于怎么将文件生成exe的可执行文件呢&#xff1f;Python有对应的库&#xff0c;也就是pyinstall。安装之后产生dist文件夹&#xff0c;里面就…

UE5 GAS开发P34 游戏效果理论

GameplayEffects Attributes&#xff08;属性&#xff09;和Gameplay Tags&#xff08;游戏标签&#xff09;分别代表游戏中实体的特性和标识。 Attributes&#xff08;属性&#xff09;&#xff1a;Attributes是用来表示游戏中实体的特性或属性的值&#xff0c;例如生命值、…

ffmpeg的安装以及使用

1.FFmpeg 的主要功能和特性&#xff1a; 格式转换&#xff1a;FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式&#xff0c;支持几乎所有常见的音频和视频格式&#xff0c;包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。视频处理&#xff1a;FFmpeg 可以进行视频编码、解…

书生·浦语大模型开源体系(四)作业

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

云计算技术架构及发展

云计算是指一种将可伸缩、弹性、共享的物理和虚拟资源池以按需自服务的方式供应和管理&#xff0c;并提供网络访问的模式。 云计算服务商利用分布式计算和虚拟资源管理等技术&#xff0c;通过网络将分散的ICT资源集中起来形成共享的资源池&#xff0c;并以动态按需和可度量的方…

基于若依和flowable7.0.1的ruoyi-nbcio-plus流程管理系统正式发布

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

皮带机巡检解决方案

在化工行业中、皮带机人工巡检存在的疲劳安全、巡检质量、数据分析等问题&#xff0c;通过以智能巡检机器人为中心的设备生命周期运维管理系统&#xff0c;完成对皮带机的巡检巡逻和排查预警&#xff0c;有效降低人员和设备的安全隐患&#xff0c;更助力企业运维水平和智能化作…