MORAN快速上手:5分钟从零搭建场景文字识别环境,跑通第一个Demo
【免费下载链接】MORAN_v2MORAN: A Multi-Object Rectified Attention Network for Scene Text Recognition项目地址: https://gitcode.com/gh_mirrors/mo/MORAN_v2
MORAN 是一款开源的场景文字识别(Scene Text Recognition)神经网络,通过"矫正机制"把图片中弯曲、倾斜的文字变直后再识别,在 IIIT5K、SVT 等主流基准数据集上表现优异。本文将带你快速搭建场景文字识别环境,5 分钟下载代码、配置依赖并跑通第一个识别 Demo,让新手零基础上手 MORAN 文字识别工具。
一、MORAN 是什么?能做什么?
MORAN 的全称是Multi-Object Rectified Attention Network,由华中科技大学罗灿杰团队提出,相关论文发表于《Pattern Recognition》(2019)。它解决的核心问题是:
- 🔍矫正机制:自动把场景图片中弯曲、透视变形的文字区域"拉直",显著提升识别精度;
- 🚀单向一次训练:v2 版本比 v1 更稳定,用 ResNet 替换 VGG 骨干网络,并引入双向解码器;
- 📊精度领先:在 IIIT5K 上达到93.4%,SVT-P 达到79.7%,超越 v1 多个百分点。
项目核心代码位于 [models/moran.py],数据预处理工具在 [tools/dataset.py],新手了解结构即可,无需深究源码。
二、环境要求:一键安装所需依赖
在开始之前,先确认你的环境满足以下最低要求:
| 依赖项 | 推荐版本 | 说明 |
|---|---|---|
| Python | 3.6 | 官方同时支持 2.7,但Python 3 速度更快 |
| PyTorch | 0.3.x | 注意:高版本 PyTorch 会导致训练变慢 |
| OpenCV | 任意 | 图像读取与展示 |
| Pillow / LMDB / matplotlib | 任意 | 数据格式与可视化 |
💡 建议使用 Anaconda 管理虚拟环境,避免依赖冲突。
项目依赖清单已整理在 [requirements.txt] 中,包含 torch==0.3.1、torchvision==0.2.1、opencv-python、Pillow 等。只需一条命令完成场景文字识别环境搭建:
pip install -r requirements.txt三、下载 MORAN 源码
打开终端,执行以下命令克隆代码仓库:
git clone https://gitcode.com/gh_mirrors/mo/MORAN_v2 cd MORAN_v2进入项目根目录后,你会看到这些关键文件:
demo.py—— 可视化 Demo 入口,本文主角;inference.py—— 封装好的Recognizer识别类,方便集成;main.py—— 训练与测试主程序;train_MORAN.sh—— 一键训练脚本;demo/—— 内置演示图片(0.png ~ 3.png)。
四、5 分钟跑通第一个 Demo
这是全文最快、最激动人心的部分,只需两步:
第 1 步:下载预训练模型
从项目说明 [README.md] 中的网盘链接下载预训练权重文件demo.pth(约几十 MB),放到项目根目录下。
第 2 步:执行 Demo
python demo.pydemo.py会自动加载demo/0.png这张演示图片,执行识别并弹出窗口展示结果。终端会同时打印左右两个方向的识别结果(双向解码器),例如图片中的路牌文字会被准确读出来。
整个流程通常只需几分钟,你就拥有了一个可用的场景文字识别工具。
五、识别自己的图片:自定义推理
想识别自己的照片?项目提供了封装好的推理脚本 [inference.py],核心是一个Recognizer类:
- 初始化时传入模型路径,自动判断 CPU/GPU;
- 调用
preprocess把图片缩放归一化为 100×32 的灰度图; - 执行
predict+post_process,返回正向与反向两组识别文本。
只需替换输入图片,即可批量识别自定义文本。
六、进阶:从零训练自己的识别模型
如果你有标注好的数据(需转换为 LMDB 格式),可以完整训练 MORAN:
1. 修改数据路径:打开 [train_MORAN.sh],把三个path_to_dataset改成你自己的 LMDB 数据集路径:
--train_nips path_to_dataset \ --train_cvpr path_to_dataset \ --valroot path_to_dataset \2. 启动训练:
sh train_MORAN.sh脚本默认开启 GPU(--cuda)、batchSize 64、Adadelta 优化器和双向解码器。官方参考:1080Ti 上 100 次迭代不到 20 秒,训练速度非常友好。
⚠️ 提示:多 GPU 暂不支持(batch 内文本长度不一致),
main.py中会强制单卡。
七、新手常见坑位排查清单 🛠️
| 问题现象 | 解决方案 |
|---|---|
| 训练异常缓慢 | 确认 PyTorch 版本为 0.3.x,高版本会明显变慢 |
demo.py报demo.pth找不到 | 权重必须放在项目根目录,而非 models 下 |
加载模型出现module.前缀报错 | 脚本已内置OrderedDict重命名逻辑,勿手动改动 |
| 无显卡用户报错 | demo.py会自动降级为 CPU 的 FloatTensor 模式 |
八、写在最后
MORAN 用简洁的代码把"矫正 + 注意力"两条技术路线揉成了一个开箱即用的场景文字识别方案,从git clone到看到识别结果不超过 5 分钟。
接下来你可以尝试:
- 用 [inference.py] 封装自己的识别服务;
- 替换演示图片,观察不同字体/角度下的识别效果;
- 基于 [train_MORAN.sh] 微调出适配你业务场景的专属模型。
祝搭建顺利,玩得开心!🎉
【免费下载链接】MORAN_v2MORAN: A Multi-Object Rectified Attention Network for Scene Text Recognition项目地址: https://gitcode.com/gh_mirrors/mo/MORAN_v2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考