1. 问题现象与初步排查
最近在使用PaddlePaddle框架训练文本识别(Recognition,简称rec)模型时,遇到了一个令人困惑的问题——训练过程中的准确率(acc)指标始终为0.0。这种情况在深度学习项目中并不常见,尤其是当其他训练参数看起来都正常时。作为一名刚接触PaddleX的新手,我最初以为这只是学习曲线的一部分,但随着问题持续存在,我意识到必须深入挖掘原因。
我首先检查了基础配置:
- 使用的PaddleX版本为最新稳定版
- 硬件环境为NVIDIA RTX 3060 GPU
- 数据集包含约5,000张标注图像
- 模型架构基于CRNN(卷积循环神经网络)
与参考教程对比发现,教程中的模型在10个epoch内acc就能达到60%以上,而我的模型即使训练20个epoch,acc仍停留在20%左右,且验证集上的表现同样糟糕。更奇怪的是,损失函数(loss)确实在下降,但acc却纹丝不动。
关键现象:loss下降但acc不变,通常表明模型确实在学习,但评估指标的计算可能存在问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据集标注问题的发现与验证
经过多次失败的调参尝试后,我将注意力转向了数据准备阶段。我的数据集包含各种方向的英文文本图像,包括:
- 水平正常文本(占比约60%)
- 倾斜文本(约30%)
- 完全倒置文本(约10%)
由于文本方向多样,我采用了四点标注法(多边形标注)而非传统的矩形框标注。在复查标注文件时,我注意到一个关键细节:PaddleX对多边形标注的点顺序有特定要求。
2.1 标注点顺序规范
正确的四点标注应该满足:
- 第一个点(point1)应位于文本行的起始字符处
- 第二个点(point2)应沿着文本阅读方向放置
- 第三、四点完成四边形闭合
- 四个点必须按顺时针或逆时针统一方向
错误示例:
code复制(100,100) → (200,100) → (200,150) → (100,150) # 水平文本正确标注
(100,100) → (100,150) → (200,150) → (200,100) # 点顺序反了,导致方向识别错误
2.2 方向敏感性的影响分析
当标注顺序错误时,会导致以下问题:
- 数据增强时的方向感知错误
- 特征提取时的空间关系混乱
- 注意
