概述
简述
ABINet的特点即是autonomous(自治的)、bidirectional(双向的)、iterative(迭代的)。它由2个自治的模型vision model(视觉模型)和language model(语言学模型)组成,视觉模型直接以图像数据作为输入,语言学模型则以视觉模型的输出概率向量作为输入概率向量。大量实验表明,ABINet在低质量图像上具有优势,并在几个主流基准上取得了最先进的结果。此外,通过集成自我训练训练的ABINet在实现人的级别识别方面显示出有希望的改进。
参考实现:
url=https://github.com/open-mmlab/mmocr/tree/0.x/configs/textrecog/abinet commit_id=a4fe6bb67f066bbb5023e38d404c1210b1b3bab2
适配昇腾 AI 处理器的实现:
url=https://gitee.com/ascend/ModelZoo-PyTorch.git code_path=PyTorch/built-in/cv/detection
准备训练环境
准备环境
当前模型支持的 PyTorch 版本和已知三方库依赖如下表所示。
表 1 版本支持表
Torch_Version 三方库依赖版本 PyTorch 1.8 mmcv==1.7.1; albumentations==1.2.1; mmdet==2.28.1 PyTorch 1.11 mmcv==1.7.1; albumentations==1.2.1; mmdet==2.28.1 说明: 当前Torch_Version不支持PyTorch2.1。
环境准备指导。
请参考《Pytorch框架训练环境准备》。
安装依赖。
在模型源码包根目录下执行命令,安装模型对应PyTorch版本需要的依赖。
pip install -r requirements.txt pip install -e . /bin/cp -f mmcv_need/epoch_based_runner.py ./mmcv/mmcv/runner/
准备训练数据集
- 第一步:参考源码实现,下载
mjsynth.tar.gz
- 第二步:参考源码实现,下载
shuffle_labels.txt
和label.txt
- 第三步:
cd /${模型文件夹名称}
mkdir -p data/mixture
cd data/mixture
mkdir Syn90k && cd Syn90k
mv /path/to/mjsynth.tar.gz .
tar -xzf mjsynth.tar.gz
mv /path/to/shuffle_labels.txt .
mv /path/to/label.txt .
准备测试数据集
- 第一步:参考源码实现,下载
IIIT5K-Word_V3.0.tar.gz
- 第二步:参考源码实现,下载
train_label.txt
和test_label.txt
- 第三步:
cd /${模型文件夹名称}/data/mixture
mv /path/to/IIIT5K-Word_V3.0.tar.gz .
tar -xzf IIIT5K-Word_V3.0.tar.gz
mv /path/to/train_label.txt .
mv /path/to/test_label.txt .
目录结构参考如下所示:
mixture
|——————IIIT5K
| └—————— lexicon.txt
| └—————— test/
| └—————— test_label.txt
| └—————— train/
| └—————— train_label.txt
数据预处理
cd /${模型文件夹名称}
python tools/data/utils/lmdb_converter.py data/mixture/Syn90k/label.txt data/mixture/Syn90k/label.lmdb --label-only
执行以上代码,将会在data目录生成Syn90k文件夹,目录结构参考如下所示:
mixture
|——————Syn90k
| └—————— label.lmdb
| └—————— label.txt
| └—————— mnt/
| └—————— shuffle_labels.txt
准备预训练模型
- 下载预训练模型abinet_pretrain-1bed979b.pth,路径为/path/to/abinet_pretrain-1bed979b.pth。
开始训练
训练模型
进入解压后的源码包根目录。
cd /${模型文件夹名称}
运行训练脚本。
该模型支持单机单卡训练、单机8卡训练。
单机单卡训练
启动单卡训练:
bash test/train_full_1p.sh --load_from=/path/to/abinet_pretrain-1bed979b.pth #单卡训练 bash test/train_performance_1p.sh #单卡性能测试
单机8卡训练
启动8卡训练:
bash test/train_full_8p.sh --load_from=/path/to/abinet_pretrain-1bed979b.pth #多卡训练 bash test/train_performance_8p.sh #多卡性能测试
脚本中调用的python命令参数说明如下:
--work-dir // 训练结果和checkpoint保存路径 --load-from // 加载的预训练参数路径 --resume-from // 用于恢复训练的上一次训练保存的参数路径 --seed // 随机种子
训练完成后,权重文件保存在work-dir路径下,并输出模型训练精度和性能信息。
训练结果展示
表 2 训练结果展示表
NAME | 0_word_acc_ignore_case | FPS | AMP_Type | Epochs | Batch Size |
---|---|---|---|---|---|
1p-NPU | - | 391.83 | O1 | - | 192 |
1p-竞品V | - | 248.614 | O1 | - | 192 |
1p-竞品A | - | 320 | O1 | - | 192 |
8p-NPU | 0.7740 | 3037.76 | O1 | 6 | 1536 |
8p-竞品V | 0.7667 | 1712.37 | O1 | 6 | 1536 |
8p-竞品A | 0.7567 | 2489.46 | O1 | 6 | 1536 |
版本说明
变更
2023.03.17:首次发布。
FAQ
- albumentations在部分环境可能存在无法导入的问题,可以在代码导入该包的逻辑中删除try逻辑,即可正常导入。
公网地址说明
代码涉及公网地址参考 public_address_statement.md