0

0

文字识别:基于PaddlePaddle复现PANet

P粉084495128

P粉084495128

发布时间:2025-07-31 10:41:43

|

813人浏览过

|

来源于php中文网

原创

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

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

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

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 - php中文网        

背景简介

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

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

网络结构

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

上图为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 - php中文网        

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 - php中文网        

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

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

Loss

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

总的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 - php中文网        

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计算了,关注那些距离远的值即可。

天工大模型
天工大模型

中国首个对标ChatGPT的双千亿级大语言模型

下载

Discrimination Loss 

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

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。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号