PAN解读 —— Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

2023-11-04

简述

本文介绍的是一个“Face++ ”在今年8月份刚刚发在ICCV 2019上面的论文——PAN像素聚合网络),这是一篇文字检测方面的论文,其达到了目前文字检测的最好效果。

之前在CVPR 2019上发的PSENet是之前效果非常好的文本检测算法,PAN的作者还是之前PSENet算法的原班作者,所以说我们可以把PAN看做是PSENet V2版本。

之前PSENet的检测效果很好,但是整个网络的后处理复杂,导致其运行速度很慢,PAN改进了网络使其在不损失精度的情况下,极大加快了网络inference的速度。(trade-off)

下图是目前常用的文本检测算法任意形状文本检测数据集上的效果:
在这里插入图片描述

PAN整个网络主要有两个步骤
在这里插入图片描述

  1. 用分割网络预测文字区域kernel以及相似向量
  2. 从预测的kernel中重建完整的文字实例;

所以为了保证网络的高效率,我们就需要采取措施来降低这两步的耗时:采用的更轻量级的backbone更简单的后处理

网络结构

这个PAN的整个网络结构,网络主要由Backbone + Segmentation Head(FPEM + FFM) + Output(Text Region、Kernel、Similarity Vector)组成。
在这里插入图片描述
本文使用将 ResNet-18 作为 PAN 的默认 Backbone,并提出了低计算量的
Segmentation Head(FPFE + FFM)
以解决因为使用 ResNet-18 而导致的特征提取能力较弱,特征感受野较小且表征能力不足的缺点。

此外,为了精准地重建完整的文字实例(text instance),提出了一个可学习的后处理方法——像素聚合法(PA),它能够通过预测出的相似向量来引导文字像素聚合到正确的kernel上去。

下面将详细介绍一下上面的各个部分。

Backbone

本文使用 ResNet-18 作为 PAN 的默认 backbone(PSENet用的是ResNet-54),其目的就是为了减少计算量。

论文backbone提取stride为 4 , 8 , 16 , 32 4,8,16,32 4,8,16,32 c o n v 2 , c o n v 3 , c o n v 4 , c o n v 5 conv2,conv3,conv4,conv5 conv2,conv3,conv4,conv5的输出作为高低层特征。每层的特征图的通道数都使用 1 × 1 1 \times 1 1×1卷积降维至128得到轻量级的特征图 F r F_r Fr

Segmentation Head

PAN 是一个基于分割的任意形状文字检测模型,其使用 ResNet-18 作为网络的默认 backbone,虽减少了计算量,但是backbone层数的减少势必会带来模型学习能力的下降。为了提高效率,研究员在 ResNet-18 基础上提出了一个低计算量但可高效增强特征分割头Segmentation Head。它由两个关键模块组成:特征金字塔增强模块(Feature Pyramid Enhancement Module,FPEM)、特征融合模块(Feature Fusion Module,FFM)

FPEM

FPEM 呈级联结构且计算量小,可以连接在 backbone 后面让不同尺寸的特征更深、更具表征能力。在 FPEM 模块后面,使用了特征融合模块(FFM)来将不同深度的FPEM 所产生的特征融合,产生最终用于分割任务的特征图 F f F_f Ff

下图就是FPEM特征金字塔增强模块,其是作者提出的用于增强backbone输出特征图的一个模块。
在这里插入图片描述

如下图,FPEM是一个 U形模组,由两个阶段组成,up-scale 增强down-scale 增强。up-scale 增强作用于输入的特征金字塔,它以步长 32,16,8,4 像素在特征图上迭代增强。在 down-scale 阶段,输入的是由 up-scale 增强生成的特征金字塔,增强的步长从 4 到 32,同时,down-scale 增强输出的的特征金字塔就是最终 FPEM 的输出。

类似于 FPN,FPEM 能够通过融合低级与高级信息来增强不同 scale 的特征。FPEM模块可以看成是一个轻量级的FPN,只不过这个FPEM计算量不大(大约为FPN的1/5),并可以通过不停地级联 n c n_c nc次)以达到不断增强特征的作用。
在这里插入图片描述

:Therefore, FPEM is capable of enlarging the receptive field (3×3 depthwise convolution) and deepening the network (1×1 convolution) with a small computation overhead.

FFM

Feature Fusion Module模块用于融合不同尺度的特征,其结构如下:

We firstly combine the corresponding-scale feature maps by element-wise addition. Then, the feature maps after addition are upsampled and concatenated into a final feature map which only has 4×128 channels.

在这里插入图片描述

特征融合模组用于融合不同尺度的特征,这是因为低级、高级语义信息对于语义分割来说都很重要。研究人员提出了如上图的特征图融合方法。他们首先通过逐元素相加结合了相应 scale 的特征图,然后对特征图进行上采样,连接成最终只有 4*128 通道的特征图 F r F_r Fr。( F r F_r Fr用于后面的预测输出)

Output and Pixel Aggregation(PA)

在这里插入图片描述
网络输出

  1. text_region, w ∗ h ∗ 1 w*h*1 wh1
  2. Kernel, w ∗ h ∗ 1 w*h*1 wh1
  3. Similarity vectors (无监督学习), w ∗ h ∗ 4 w*h*4 wh4
    在无监督聚类中,通过找一个聚类中心使得周围点到聚类中心的距离最小,这个距离的度量需要聚类中心点和待聚类点的一个值来计算,此处的similarity vectors输出的就是那个值。(用以度量距离,这里其实我也比较迷)

像素聚合(PA)

文字区域虽然保留了文字完整的形状,但是在其中也经常会出现重叠在一起的文本(见图 (g))。另外,虽然可以用kernel来很好地区分文字(见图 (h)),但是这些kernel并不能涵盖所有的文字区域。为了重建完整的文字实例,我们需要将文本区域中的像素融合到核中,因此提出了“像素聚合算法(Pixel Aggregation)”来将文字像素聚合到正确的kernel中去。

To rebuild the complete text instances, we need to merge the pixels in text regions to kernels. We propose a learnable algorithm, namely Pixel Aggregation, to guide the text pixels towards correct kernels.

注:在像素聚合算法的设计中,研究人员借用了聚类的思想来从kernel中重建完整的文字实例。如果将文字实例视为聚得的类群,那么文本实例的核就是类群的中心,而文本像素是被聚类样本。自然地,为了将文本像素聚合到对应的核,文本像素与和它相同文本的核之间的距离就要足够小。

损失函数

在这里插入图片描述

网络总的损失函数如上:其中 L t e x L_{tex} Ltex L k e r L_{ker} Lker分别是text region和kernel的分割Loss, L a g g L_{agg} Lagg是衡量文本实例中的像素和其对应的kernel的loss(是一个聚合loss,aggregation loss), L d i s L_{dis} Ldis是分辨不同文本实例的kernel的一个loss(discrimination loss)。 α \alpha α β \beta β是平衡各个loss的值,设为0.5和0.25。

其中,考虑到文字和非文字像素非常不平衡, L t e x L_{tex} Ltex L k e r L_{ker} Lker的计算方式和PSENet V1的方法一样(如上图),都是采用的dice loss

论文的重点在于 L a g g L_{agg} Lagg L d i s L_{dis} Ldis,下面分别描述。

Aggregation Loss

在这里插入图片描述

L a g g L_{agg} Lagg用于衡量文本实例和其对应kernel的loss,其作用是保证同一文本实例的kernel和文本实例内其他像素点之间的距离< δ a g g \delta_{agg} δagg 。其公式如上。

其中, N N N是图像中文本实例(text instance)的数量, T i T_i Ti表示第 i i i个文本实例, K i K_i Ki是该文本实例对应的kernel。 D ( p , k i ) D(p, k_i) D(p,ki)定义了文本实例 T i T_i Ti内的像素 p p p k e r n e l   K i kernel\ K_i kernel Ki之间的距离,其公式如上。

其中, δ a g g \delta_{agg} δagg是一个常量,默认0.5, F ( p ) F(p) F(p)是网络在像素 p p p处输出的相似度向量, G ( . ) G(.) G(.) k e r n e l   K i kernel\ K_i kernel Ki的相似度向量,计算公式如上。

G ( . ) G(.) G(.)的计算就是对于 k e r n e l   K i kernel\ K_i kernel Ki 里的每一个像素 ,网络在像素 q q q处输出的相似度向量和除以 k e r n e l   K i kernel\ K_i kernel Ki的像素点数量, ∣ K i ∣ |K_i| Ki这里代表的就是里像素点的数量。

其中, D ( p , k i ) D(p, k_i) D(p,ki)里的||……||是一个L2范数,其是一个用于衡量像素点 p p p k e r n e l   K i kernel\ K_i kernel Ki距离的值,值越小表示相似度越大,公式中距离小于 δ a g g \delta_{agg} δagg的像素点就没必要参与loss计算了,关注那些距离远的值即可。

Discrimination Loss

在这里插入图片描述
L d i s L_{dis} Ldis是用于不同文本实例的kernel的loss,其作用是保证任意两个kernel之间的距离> δ d i s \delta_{dis} δdis 。其公式为:

即对于每一个文本实例kernel,分别计算和其他kernel的距离。

其中, δ d i s \delta_{dis} δdis是一个常量,默认3。当两个kernel之间的距离||……|| > δ d i s \delta_{dis} δdis时,就表示这两个kernel的距离已经足够远了。

另外,在训练过程中, L t e x L_{tex} Ltex的计算使用的OHEM,正负像素之比是1:3,计算 L k e r L_{ker} Lker L a g g L_{agg} Lagg L d i s L_{dis} Ldis时均只考虑ground truth内的文本像素。

到这里训练阶段就完成了,在预测阶段的后处理

  1. 从kernel中通过连通域确定初始的文本实例集合 K。
  2. 对于每一个文本实例 K i K_i Ki,按4方向从text_region中融合文本像素。融合条件: 文本像素点 p p p K i K_i Ki 之间similarity vectors的欧式距离< d(测试过程中 默认为6,自习看的同学应该能发现这里的这个6应该是有问题的。。。maybe)。
  3. 重复步骤2直到text_region没有文本像素。

实验结果

在这里插入图片描述

在这里插入图片描述

References

  • https://arxiv.org/abs/1908.05900
  • https://blog.csdn.net/ft_sunshine/article/details/90244514
  • https://zhuanlan.zhihu.com/p/79111059
  • https://zhuanlan.zhihu.com/p/81415166
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PAN解读 —— Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network 的相关文章

  • 使用Python分析处理数据并用pyecharts进行可视化

    使用Python分析处理数据并用pyecharts进行可视化 一 数据文件 二 使用pyecharts进行可视化 1 各岗位占比饼图 2 各岗位平均起薪柱状图 3 各城市招聘量柱状图及平均薪资折线图组合 4 各城市岗位薪资分布热力图 5 数

随机推荐

  • 结构体与枚举类型

    欢迎来到C语言的世界 博客主页 卿云阁 欢迎关注 点赞 收藏 留言 本文由卿云阁原创 本阶段属于锻体阶段 希望各位仙友顺利完成突破 首发时间 2021年1月18日 希望可以和大家一起完成进阶之路 作者水平很有限 如果发现错误 请留言轰炸哦
  • [转]QNX与Linux_OS系统对比比较:车载安全与移动博弈

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 无人驾驶汽车是汽车界的 目标 而这个 目标的实现离不开车载操作系统的完善 智能科技潮以强
  • 深度学习中Batch Size的大小对训练过程的影响

    最近在调参 看了一下batch size这个参数的意义以及对训练过程的影响 故记录一下自己学习到的内容 batch size大小的直接影响很明显 影响一个epoch中需要迭代iteration的次数以及完成每个epoch所需的时间 从训练的
  • 记录一下CausalDiscoveryToolbox的R包安装历程

    R的安装和配置文件的修改 使用python包CausalDiscoveryToolbox时 对R包是有依赖的 首先需要安装R R完成安装后 修改CausalDiscoveryToolbox的配置文件 对于anaconda来说 配置文件为Li
  • fedora 改变启动顺序

    vi boot grub menu lst
  • 阿里云对象存储OSS打造私人图床&私人云存储(1年仅9元)

    阿里云对象存储OSS打造私人图床 私人云存储 1年仅9元 阿里云对象存储OSS Object Storage Service 是一款海量 安全 低成本 高可靠的云存储服务 提供99 9999999999 12个9 的数据持久性 99 995
  • 亿赛通电子文档安全管理系统 RCE漏洞

    亿赛通电子文档安全管理系统 RCE漏洞 一 产品简介 二 漏洞概述 三 复现环境 四 漏洞复现 小龙POC检测 五 修复建议 免责声明 请勿利用文章内的相关技术从事非法测试 由于传播 利用此文所提供的信息或者工具而造成的任何直接或者间接的后
  • 什么是技术美术?

    前言 技术美术 英文名是Technical Art 简称TA 说白了就是一群既懂程序又懂美术的人 至于技术美术是属于程序还是属于美术我们在这里不做过多讨论 要不然会打起来的 反正我认为技术美术就是一名特殊的美术 要不然的话为什么不叫美术技术
  • Nginx 性能调优

    原文地址 http nginx com blog tuning nginx Tuning NGINX for Performance Nginx 性能调优 NGINX is well known as a high performance
  • 【Linux】Ubuntu的一些实用指令技巧

    目录 实用的技巧 文件目录操作技巧 远程管理使用技巧 用户管理使用技巧 查询系统信息的实用技巧 链接问题 打包和压缩的使用技巧 实用的技巧 1 tab补全 当我们在终端中敲命令时 有时候按下tab键 没有歧义 系统会自动帮助我们补全命令的剩
  • 微软拼音输入法繁体转简体

    win10自带的微软拼音输入法繁体转简体 在使用Eclipse时 格式化代码的快捷键是 CTRL SHIFT F 今天在使用eclipse时 因为格式化代码的快捷键是 CTRL SHIFT F 按了之后 在拼音打字时发现 出来的字都是繁体
  • 光伏圈告别「看天吃饭」,塞浦路斯大学耗时 2 年,发现机器学习预测污染损失未来可期

    内容一览 光伏系统是一种利用太阳能发电的可再生能源解决方案 具有减少温室气体排放 分散式发电 经济效益等优势 对于推动可持续能源发展和应对环境挑战具有重要作用 然而 许多具有最高太阳辐射的地点也存在地面干燥 多尘的缺点 这可能会影响光伏系统
  • NodeJS excel 导入(js-xlsx)

    js xlsx github地址 https github com SheetJS js xlsx 准备 excel文档 解析方法 const XLSX require xlsx function importExcel filePath
  • c语言的循环语句的结构,C语言的基本结构与循环语句(ppt 23页).ppt

    C语言的基本结构与循环语句 ppt 23页 ppt 由会员分享 可在线阅读 更多相关 C语言的基本结构与循环语句 ppt 23页 ppt 21页珍藏版 请在人人文库网上搜索 1 第四章 C51流程控制语句 第一节 C语言的基本结构 C语言是
  • vue+axios+vite实现跨域请求

    使用vue axios vite实现跨域请求 1 route js import createRouter createWebHistory from vue router const routerHistory createWebHist
  • VUEJS入坑日记.2 -DatePicker设置默认日期

    iview中DatePicker 的value属性和v modal不能同时使用
  • 从输入网址到显示网页的全过程分析

    作为一个软件开发者 你一定会对网络应用如何工作有一个完整的层次化的认知 同样这里也包括这些应用所用到的技术 像浏览器 HTTP HTML 网络服务器 需求处理等等 本文将更深入的研究当你输入一个网址的时候 后台到底发生了一件件什么样的事 1
  • python怎样让条形图x轴的字不要重叠

    在 matplotlib 中绘制条形图时 可以使用 rotation 参数来控制 x 轴标签的旋转角度 例如 如果你希望将 x 轴标签旋转 45 度 可以这样写 import matplotlib pyplot as plt 绘制条形图的代
  • 虚拟机类加载机制

    虚拟机类加载机制 深入理解Java虚拟机 第2版 类加载的时机 类从被加载到虚拟机内存中开始 到卸载出内存为止 它的整个生命周期包括 加载 验证 准备 解析 初始化 使用和卸载7个阶段 其中验证 准备 解析3个部分统称为连接 加载 验证 准
  • PAN解读 —— Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

    文章目录 简述 网络结构 Backbone Segmentation Head FPEM FFM Output and Pixel Aggregation PA 损失函数 Aggregation Loss Discrimination Lo