文本检测模型 DBNet 一种基于分割算法的模型 对每个像素点进行自适应二值化,并将二值化过程与网络训练相结合 可微分二值化模块 概率图

文本检测模型 DBNet

DBNet文本检测模型是一种基于分割算法的模型,其优化之处在于对每个像素点进行自适应二值化,并将二值化过程与网络训练相结合。

传统的文本检测方法通常将二值化作为一个后处理步骤,与网络训练分开进行。而DBNet则提出了一种可微分的二值化方法,即将文本检测任务中的二值化过程与网络训练相结合。具体来说,DBNet算法的核心在于其提出的可微分二值化模块(Differentiable Binarization Module,DB Module)。这个模块使用了一个近似二值化的函数,该函数在训练过程中是可微的,因此可以通过反向传播算法来优化网络参数。这个函数能够根据网络的输出自适应地调整二值化阈值,使得网络能够更好地适应不同场景下的文本检测任务。

此外,DBNet的模型结构可以分为三个部分:Backbone网络、FPN网络和Head网络。Backbone网络负责提取图像的特征,FPN网络则是一种卷积网络,用于高效提取图片中各维度特征的结构增强特征,而Head网络则负责计算文本区域概率图。

总的来说,DBNet通过其独特的可微分二值化方法和优化的模型结构,提高了文本检测的准确性和鲁棒性,成为了当前研究领域的热点之一。

背景介绍

一般分割算法流程是先通过网络输出文本分割的概率图,然后使用预先设定好的阈值将概率图转换为二值图,最后使用后处理操作将像素级的结果转换为检测结果。然而,这样就会使得算法性能很大程度上取决于二值化时阈值的选择。

DBNet[1]对这个流程进行了优化,对每个像素点进行自适应二值化,二值化的阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。

模型输入标签

在DB(Differentiable Binarization)网络中,为了训练网络进行文本检测,需要为网络提供适当的标签(ground truth)。虽然网络最终输出三个不同的图(概率图、阈值图和近似二值图),但在训练过程中,通常只有概率图是直接与标签进行比较的,因为阈值图是通过网络学习得到的,而二值图是基于概率图和阈值图通过DB算法计算得到的。

DB网络中,网络的输出为3个部分:概率图、阈值图和近似二值图:

  • 概率图:图中每个像素点的值为该位置属于文本区域的概率。

标签:文本区域的二值图(或称为文本掩码)。文本区域的像素被标记为1,非文本区域的像素被标记为0。
损失函数:通常使用二元交叉熵损失(Binary Cross-Entropy Loss)或其他类似的损失函数来比较网络的预测概率图和真实的文本掩码。

  • 阈值图:图中每个像素点的值为该位置的二值化阈值。

标签:在DB网络的训练中,阈值图并没有直接对应的标签。相反,阈值图是通过网络学习得到的,用于在预测阶段进行自适应二值化。
损失函数:虽然阈值图没有直接的损失函数,但DB网络会确保阈值图与概率图协同工作,以便在二值化过程中产生准确的检测结果。

  • 二值图:由概率图和阈值图通过DB算法计算得到,图中像素的值为0或1。

标签:在训练过程中,二值图并不是直接用于计算损失的。然而,它可以用作一个可视化的辅助工具,帮助理解网络预测的效果。
损失函数:如前所述,二值图是通过DB算法由概率图和阈值图计算得到的,因此在训练过程中不直接参与损失计算。然而,由于概率图与文本掩码之间的损失函数会优化网络以产生更准确的概率图,这间接地也会影响到二值图的质量。

在构造损失函数时,我们需要获取对应的真实标签。阈值图的标签 G d G_{d} Gd,概率图标签 G s G_{s} Gs。DB网络中,标签的获取方式参考了PSENet(Progressive Scale Expansion Network,渐进式尺度扩展网络)中的方法,使用扩张和收缩的方式分别获取上述两个真实标签。标签的构造过程如 图1 所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


图1 DB标签构造示意图

在该方法中,对于一幅文字图像,文本区域的每个多边形使用一组线段 G = { S k } k = 1 n G=\{S_k\}^n_{k=1} G={ Sk}k=1n来进行描述,n为线段个数。如 图1 所示, n = 14 n=14 n=14

概率图标签 G s G_s Gs的获取方法使用了Vatti clipping算法,该算法常用于收缩多边形,其中,收缩的偏移量D可以使用周长L和面积A计算得到,公式如下:
D = A ( 1 − r 2 ) L D = \frac{A(1-r^2)}{L} D=LA(1r2)
其中,r为收缩因子,实验中根据经验设置为0.4。

在阈值图标签 G d G_d Gd的计算中,首先使用概率图标签 G s G_s Gs的计算过程中得到的偏移量D进行多边形的扩充,然后计算 G d G_d

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

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

相关文章

常见的几种物联网无线组网技术——青创智通

工业物联网解决方案-工业IOT-青创智通 随着物联网技术的不断发展,无线组网技术成为了物联网中不可或缺的一部分。无线组网技术可以使得各种设备之间无需通过有线连接即可进行数据传输和通信,从而提高了设备的灵活性和可扩展性。下面将介绍几种常见的物联…

行业分析---马斯克的Tesla

1 背景 在前面的博文《行业分析---我眼中的Apple Inc.》中,笔者曾介绍过苹果公司的财报和商业。依然本着提升自己看公司的能力,尝试去分析相对熟悉的公司,看懂它的商业。在之前的博客《自动驾驶---Tesla之FSD简介》中,笔者也简单介…

c++父类指针指向子类

有一个常见的c题,就是父类和子类的构造函数和析构函数分别调用顺序: 父类构造函数子类构造函数子类析构函数父类析构函数 以及父类中的函数在子类中重新实现后,父类指针指向子类后,该指针调用的函数是父类中的还是子类中的&…

Doris【部署 01】Linux部署MPP数据库Doris稳定版(下载+安装+连接+测试)

本次安装测试的为稳定版2.0.8官方文档 https://doris.apache.org/zh-CN/docs/2.0/get-starting/quick-start 这个简短的指南将告诉你如何下载 Doris 最新稳定版本,在单节点上安装并运行它,包括创建数据库、数据表、导入数据及查询等。 Linux部署稳定版Do…

简易留言板

目录 前端实现 数据库的使用 创建数据表 创建项目 连接数据库 后端实现 接口定义 持久层 业务逻辑层 控制层 前端代码完善 留言板是一个常见的功能,在本篇文章中,将实现一个简易的留言板: 页面中能够显示所有留言内容&#xff0c…

AI应用案例:新闻文本分类

随着科学技术的不断发展,互联网技术得以快速的发展和普及,并已在各行各业得到了广泛的应用,从中致使了网络上的信息呈现出爆炸式的增长状态,达到了“足不出户,万事皆知”的境况,充分体现了互联网新闻给生活…

深入理解WPF的ResourceDictionary

深入理解WPF的ResourceDictionary 介绍 在WPF中,ResourceDictionary用于集中管理和共享资源(如样式、模板、颜色等),从而实现资源的重用和统一管理。本文详细介绍了ResourceDictionary的定义、使用和合并方法。 定义和用法 Res…

设施农业(大棚种植)远程监控系统设计 STM32+51单片机 含pcb 上下位机源码 原理图

目录 摘要 1. 引言 2. 系统方案 3. 系统硬件设计 4. 系统软件设计 5. 系统创新 6. 评测与结论 7、实物图 8、原理图 ​9、程序 10、资料内容 资料下载地址:设施农业(大棚种植)远程监控系统设计 STM3251单片机 含pcb 上下位机源码 原理图 论文 摘要 …

【论文笔记】Training language models to follow instructions with human feedback B部分

Training language models to follow instructions with human feedback B 部分 回顾一下第一代 GPT-1 : 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式;模型架构是基于 Transformer 的叠加解码器(掩码自注意…

生产性服务业与生活性服务业如何区分

服务业的兴旺发达是现代经济的显著特征,是经济社会发展的必然趋势,是衡量经济发展现代化、国际化、高端化的重要标志。生产性服务业和生活性服务业是服务业的重要组成部分,是当前中国经济最具活力的产业,也是未来经济发展最具潜力…

图像分割各种算子算法-可直接使用(Canny、Roberts、Sobel)

Canny算子: import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg cv.imread("../test_1_1.png") edges cv.Canny(img, 100, 200)plt.subplot(121),plt.imshow(img,cmap gray) plt.title(Original Image), plt.xticks([]), …

智慧旅游平台开发微信小程序【附源码、文档说明】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

java项目之在线课程管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线课程管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 在线课程管理系统的主要…

【SRC实战】无限领取优惠券

挖个洞先 https://mp.weixin.qq.com/s/b4YhYGwleFZLAY62Dv93_A “ 以下漏洞均为实验靶场,如有雷同,纯属巧合 ” 01 — 漏洞证明 一、无限领取优惠券 “ 只能领取1张优惠券场景,能不能无限次领取? ” 1、点击领取1张满999元减…

【C语言/Python】嵌入式常用数据滤波处理:卡尔曼滤波器的简易实现方式(Kalman Filter)

【C语言/Python】嵌入式常用数据滤波处理:卡尔曼滤波器的简易实现方式(Kalman Filter) 文章目录 卡尔曼滤波卡尔曼滤波公式卡尔曼滤波数据处理效果C语言的卡尔曼滤波实现附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Pack…

如何同时或者按顺序间隔启动多个程序

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,切换到定时器模块,快捷键:Ctrl3 2、新建一个定时器,我这里演示同时打开多个程序(比…

数字生态系统的演进与企业API管理的关键之路

数字生态系统的演进与企业API管理的关键之路 在数字化时代,企业正经历着一场转型的浪潮,而API(应用程序编程接口)扮演着至关重要的角色。API如同一座桥梁,将组织内部的价值转化为可市场化的产品,从而增强企…

如何使用 WavLM音频合成模型

微软亚洲研究院与 Azure 语音组的研究员们提出了通用语音预训练模型 WavLM。通过 Denoising Masked Speech Modeling 框架(核心思想是通过预测被掩蔽(即遮蔽或删除)的语音部分来训练模型,同时还包括去噪的过程)&#x…

React 第三十一章 前端框架的分类

现代前端框架,有一个非常重要的特点,那就是基于状态的声明式渲染。如果要概括的话,可以使用一个公式: UI f(state) state:当前视图的一个状态f:框架内部的一个运行机制UI&#xff1…

【吊打面试官系列】Java高并发篇 - 同步方法和同步块,哪个是更好的选择?

大家好,我是锋哥。今天分享关于 【同步方法和同步块,哪个是更好的选择?】面试题,希望对大家有帮助; 同步方法和同步块,哪个是更好的选择? 同步块是更好的选择,因为它不会锁住整个对象…