新闻中心

文字识别:基于PaddlePaddle复现PANet

2025-07-31
浏览次数:
返回列表
该论文提出PAN网络,以ResNet-18为骨干,结合FPEM、FFM和像素聚合法,平衡场景文本检测的精度与速度。基于Paddle的复现项目,部分数据集F-measure达81.46%,超验收标准。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

文字识别:基于paddlepaddle复现panet -

Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network

Wenhai Wang, Enze Xie, Xiaoge Song, Yuhang Zang, Wenjia Wang, Tong Lu, Gang Yu, Chunhua Shen

论文介绍

文字识别:基于PaddlePaddle复现PANet -        

背景简介

场景文本检测是场景文本阅读系统的重要一步,随着卷积神经网络的快速发展,场景文字检测也取得了巨大的进步。尽管如此,仍存在两个主要挑战,它们阻碍文字检测部署到现实世界的应用中。第一个问题是速度和准确性之间的平衡。第二个是对任意形状的文本实例进行建模。最近,已经提出了一些方法来处理任意形状的文本检测,但是它们很少去考虑算法的运行时间和效率,这可能在实际应用环境中受到限制。

之前在CVPR 2019上发的PSENet是效果非常好的文本检测算法,处理速度很快,准确度很高,但后处理过程繁琐,而且没办法和网络模型融合在一起,实现训练,导致其整体运行速度很慢。于是PSENet算法的原班作者提出了PAN网络,使其在不损失精度的情况下,极大加快了网络inference的速度,因此也可以把PAN看做是PSENet V2版本。

网络结构

文字识别:基于PaddlePaddle复现PANet -        

上图为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

Backbone选择的是resnet18, 提取stride为4,8,16,32的conv2,conv3,conv4,conv5的输出作为高低层特征。每层的特征图的通道数都使用1*1卷积降维至128得到轻量级的特征图Fr。

Segmentation Head

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

FPEM 

Feature Pyramid Enhancement Module(FPEM),即特征金字塔增强模块。FPEM呈级联结构且计算量小,可以连接在backbone后面让不同尺寸的特征更深、更具表征能力,结构如下:

文字识别:基于PaddlePaddle复现PANet -        

FPEM是一个U形模组,由两个阶段组成,up-scale增强、down-scale增强。up-scale增强作用于输入的特征金字塔,它以步长32,16,8,4像素在特征图上迭代增强。在down-scale阶段,输入的是由up-scale增强生成的特征金字塔,增强的步长从4到32,同时,down-scale增强输出的的特征金字塔就是最终FPEM的输出。 FPEM模块可以看成是一个轻量级的FPN,只不过这个FPEM计算量不大,可以不停级联以达到不停增强特征的作用。

FFM 

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

文字识别:基于PaddlePaddle复现PANet -        

最后通过上采样将它们Concatenate到一起。

模型最后预测三种信息: 1、文字区域 2、文字kernel 3、文字kernel的相似向量

Loss

文字识别:基于PaddlePaddle复现PANet -        

总的loss如上,其中LtexLtex和LkerLker分别是文本实例和kernel的分割loss,LaggLagg是衡量文本实例和其对应kernel的loss,LdisLdis是不同文本实例的kernel的loss。αα和ββ是平衡各个loss的值,设为0.5和0.25。

如上图所示,LtexLtex和LkerLker的公式和psenet一致,使用dice loss。论文的重点在于LaggLagg和LdisLdis,下面分别描述。

Aggregation Loss 

文字识别:基于PaddlePaddle复现PANet -        

LaggLagg用于衡量文本实例和其对应kernel的loss,其作用是保证同一文本实例的kernel和文本实例内其他像素点之间的距离小于δaggδagg。

其中,NN是图像中文本实例的数量,TiTi表示第ii个文本实例,KiKi是文本实例对应的kernel。D(p,ki)D(p,ki)定义的了文本实例TiTi内的像素pp和 KiKi之间的距离。δaggδagg是一个常量,默认0.5,FpFp是网络在像素pp处输出的相似度向量,G(.)G(.)是KiKi的相似度向量。

G(.)G(.)的计算就是对于KiKi里的每一个像素qq,网络在像素qq处输出的相似度向量KiKi的像素点数量,Ki∣Ki∣指KiKi的L1范数,这里代表的就是KiKi里像素点的数量。

D(p,ki)D(p,ki)里的F(p)G(Ki)∣∣F(p)−G(Ki)∣∣表示F(p)G(Ki)F(p)−G(Ki)的L2范数,是一个用于衡量像素点到KiKi距离的值,值越小表示相似度越大,公式中距离小于 δaggδagg的像素点就没必要参与loss计算了,关注那些距离远的值即可。

瑞志企业建站系统(ASP版)2.2 瑞志企业建站系统(ASP版)2.2

支持模板化设计,基于标签调用数据 支持N国语言,并能根据客户端自动识别当前语言 支持扩展现有的分类类型,并可修改当前主要分类的字段 支持静态化和伪静态 会员管理功能,询价、订单、收藏、短消息功能 基于组的管理员权限设置 支持在线新建、修改、删除模板 支持在线管理上传文件 使用最新的CKEditor作为后台可视化编辑器 支持无限级分类及分类的移动、合并、排序 专题管理、自定义模块管理 支持缩略图和图

瑞志企业建站系统(ASP版)2.2 0 查看详情 瑞志企业建站系统(ASP版)2.2

Discrimination Loss 

文字识别:基于PaddlePaddle复现PANet -        

LdisLdis用于是不同文本实例的kernel的loss,其作用是保证任意两个kernel之间的距离> δdisδdis。即对于每一个文本实例kernel,分别计算和其他kernel的距离,公式如上所示。

其中,δdisδdis是一个常量,默认3。当两个kernel之间的距离G(Ki)G(Kj)∣∣G(Ki)−G(Kj)∣∣> δdisδdis时,就表示这两个kernel的距离已经足够远了。

另外,在训练过程中,LtexLtex的计算使用的OHEM,正负像素之比是1:3,计算LkerLker,LaggLagg和LdisLdis时均只考虑ground truth内的文本像素。

后处理

  1. 从kernel中通过连通域确定初始的文本实例集合KK。
  2. 对于每一个文本实例KiKi,按4方向从text_region中融合文本像素。融合条件: 文本像素点pp和KK之间similarity vectors的欧式距离dd (测试过程中dd默认为6)。
  3. 重复步骤2直到text_region没有文本像素。

项目介绍

项目背景

项目为百度飞桨起航菁英计划团队赛中复现的论文。项目基于 Paddle 2.1.2 与 Python 3.7 进行开发并实现论文精度,十分感谢百度提供比赛平台和 GPU 资源!

项目实现

复现心得

正所谓“磨刀不误砍柴工”,复现论文前,如果对论文的整体结构有所把握,接下来的复现过程中可能会省力很多。以复现PANet为例,当了解到PANet是PSENet的改进后,我们学习参考了PSENet的复现,少走了不少弯路。此外,PaddlePaddle与Pytorch的函数并非完全对应,有部分函数需要自己实现。在了解了论文细节后,实现函数能够更加轻松。

在复现过程中,主要参考PaddlePaddle的API文档与Pytorch的API文档,需要耐心与细心。比如PaddlePaddle中Softmax包含参数axis,而Pytorch中Softmax对应参数为dim。

除此以外,遵循PaddlePaddle官方提供的论文复现步骤,可以及时找到问题所在环节,减少后期的debug的时间,提升论文复现效率。

参考链接

论文复现指南

Paddle API 文档

PyTorch-PaddlePaddle API映射表

项目使用

数据集准备

数据集推荐按照$Paddle-PANet-main/data进行设置。如果您的文件结构不同,则可能需要修改dataloader中相应的内容。

Paddle-PANet-main
└── data
    └── CTW1500
        ├── train
        │   ├── text_image
        │   └── text_label_curve
        └── test
            ├── text_image
            └── text_label_curve
    In [1]
!mkdir Paddle-PANet-main/data
!unzip -q /home/aistudio/data/data113487/ctw1500.zip -d Paddle-PANet-main/data
   

预训练模型准备

下载resent18预训练模型:pretrain_resnet18

密码: j5g3

在正式开始训练前,请将resnet18预训练模型放置到$Paddle-PANet-main/pretrained/文件夹下。如果不使用预训练模型,则需要修改config中的设置。

In [3]
!mkdir Paddle-PANet-main/pretrained
!mv /home/aistudio/data/data113510/resnet18.pdparams Paddle-PANet-main/pretrained
   

环境准备

Python 3.6+paddlepaddle-gpu 2.0.2nccl 2.0+mmcv 0.2.12editdistancePolygon3pyclipperopencv-python 3.4.2.17Cython
       

训练

项目的环境准备、启动命令已经写入train.sh中,执行train.sh即可完成环境所需依赖的安装,并启动训练。

In [ ]
%cd Paddle-PANet-main/
sh train.sh
   

如果需要恢复训练,则执行如下命令:

python train.py ${CONFIG_FILE} --resume ${CHECKPOINTS_STORE_PATH}
       

例如:

python train.py config/pan/pan_r18_ctw_train.py --resume checkpoints/pan_r18_ctw_train
       

评估

CTW数据集地址:CTW 执行test.sh进行评估,评估结束后生成res.txt,存储模型的评估结果。

In [ ]
sh test.sh
   

实验结果

Method Backbone Fine-tuning Config Precision (%) Recall (%) F-measure (%) Model Log
mmocr_PANet Resnet18 N ctw_config 77.6 83.8 80.6 -- --
PAN (paper) ResNet18 N config 84.6 77.7 81.0 - -
PaddlePaddle_PANet ResNet18 N panet_r18_ctw.py 84.51 78.62 81.46 Model Log

从第500轮开始,每十轮保存一次模型。最终根据F-measure选择了第570轮保存的模型参数,F-measure为81.46,超过验收标准80.6。

以上就是文字识别:基于PaddlePaddle复现PANet的详细内容,更多请关注其它相关文章!


# qq  # python  # 来书屋设计文案网站推广  # 咸宁网站优化公司排名  # 嘉定抖音营销怎么做推广  # 百色芒果营销推广中心  # seo原理讲解视频  # 衡水关键词排名优化  # 宝山抖音营销推广方法  # uc关键词排名优化 s  # 黄平企业网站建设  # 非遗营销与推广  # 菁英  # 所示  # 文档  # 后处理  # 建站系统  # 过程中  # 一言  # 提出了  # 是一个  # 中文网  # fig  # udio  # 百度  # ai 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 什么是typescript  1s等于多少ms  cmd如何定时执行命令  三星固态硬盘如何安装  为什么夸克运行不了  春运抢票到哪里抢票啊  typescript用在哪里  苹果16系统多了哪些  put linux命令如何书写  虚拟机如何用命令清除垃圾  苹果16多有哪些功能  命令行如何运行j*a  得物怎样不扣手续费 如何通过得物不支付手续费  春运抢票需要什么软件抢  电动车power灯亮红灯是什么意思  typescript适合什么用  单片机速度怎么看  360n4怎么关闭锁屏壁纸  typescript学多久可以学会  HTML5如何引用typescript  苹果16promax有哪些颜色  华为交换机如何复制命令行  为什么youtube音乐打不开  如何选择启用固态硬盘  typescript有什么作用  夸克链信有什么用  python 如何执行linux命令  如何使用ping命令  征信不好如何快速恢复 征信不好快速恢复的方法  新找到ao3镜像网站链接入口  喇叭上标的power30w是什么意思  使用typescript对团队有什么要求  怎么把手机里爱奇艺的视频下载到u盘里  react怎么用typescript  如何查看网站域名解析  负市盈率是什么意思  typescript变量是什么  typescript是什么软件  typescript中范围如何设定  系统如何装在固态硬盘  夸克po什么意思  gs是什么意思  dos命令 如何将变量 作为路径的一部分  交管12123协议头不完整怎么解决  光刻机的分类及其优缺点  三星 nfc什么功能是什么意思  typescript怎么写call方法  比亚迪秦nfc功能是什么意思  苹果16系统有哪些问题  净水器上的power是什么意思 

搜索