Character Region Awareness for Text Detection论文学习

2024-06-11 18:36

本文主要是介绍Character Region Awareness for Text Detection论文学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​1.首先将模型在Synth80k数据集上训练

Synth80k数据集是合成数据集,里面标注是使用单个字符的标注的,也就是这篇文章作者想要的标注的样子,但是大多数数据集是成堆标注的,也就是每行或者一堆字体被整体标注出来,作者想使用这部分数据集

2.对成行标注的数据集来说,先把成行的文字行切出来,然后用在Synth80k数据集上训练得到的模型推理得到Region score然后再用分水岭算法将单个字符的box给画出来,这样的话就得到了单个文字标注的数据,这部分标签被称为伪标签。

3.得到每个字符的box后,下一步就是使用这些字符框获得每个字符框对应的高斯图和两个字符之间间隙的高斯图,它们叫Region Score和Affiniy Score的GT

对于Region Score来说,只要根据字符框生成高斯图就行,这个高斯图就是Region Score的GT,如下图 细的 绿色 实线 箭头所示

对于Affiniy Score来说,对每个字符框画“对角线”,两个相邻的框四个三角形的中点为Affiniy框的四个顶点,这样就能得到Affiniy框,然后再根据Affiniy框的形状生成高斯热图,这个高斯热图就是Affiniy Score的GT,如图粗绿色实线和绿色虚线所示

​4.上面得到的Region Score和Affiniy Score的GT,实际上质量是比较低的,作者使用了一些方法来约束低质量的标注

判断伪标签质量的方法就是根据一行字符框的长度和每个字符框的长度来判断这个伪标签的质量到底怎么样

作者使用置信度来评估标签的质量

l(w):这一行字符的总长度,这个长度不是边界框的物理长度,我觉得应该是字符的个数

lc(w):这个是我们经过字符分割的过程后得到的长度,也就是得到的检测得到字符框个数

这样的话,当一行文本,我们知道这行文本里面有5个字符,然后经过分割过程,如果我们得到了4个字符框,也就是我们得到了4个字符那么这个置信度就是4/5

得到这个置信度之后就要用起来,在这个字符框内的像素置信度得分就是4/5不在的就是1

在计算损失的时候减少低置信度样本损失的权重

其中S∗r(p)和S∗a(p)分别表示GT Region Score和Affiniy Score的GT热图

这样计算之后低置信度的伪标签在损失计算中的权重就会降低,减少错误的伪标签对模型带来的坏处

5.ok了,现在我们就可以在真实数据集上愉快进行弱监督训练了

训练完的模型的推理输出结果就是一个字符一个字符的

可以根据自己需要去合成多个字符

具体的作者的方式如下:

  • 处理的方向是从左向右,黑色箭头代表处理方向
  • 蓝色线是垂直于处理方向的椭圆内的最长的线,也就是说他是和中心点相交且两端到达椭圆边界的线
  • 是用黄色线连接蓝色线的中心点
  • 将蓝色线旋转到椭圆中心线的位置也就是椭圆的最长的位置,用红色箭头表示,注意这里的红色箭头是没有到边界的,因为椭圆的中心线是最长的
  • 红色箭头的端点也就是绿色点就是文本多边形的顶点
  • 最边缘的两个红色线要扩展到高斯椭圆的边界处

这篇关于Character Region Awareness for Text Detection论文学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051964

相关文章

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert