下载
中文
注册
ABINet-PyTorch

概述

简述

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.txtlabel.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.txttest_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。

开始训练

训练模型

  1. 进入解压后的源码包根目录。

    cd /${模型文件夹名称} 
  2. 运行训练脚本。

    该模型支持单机单卡训练、单机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

  1. albumentations在部分环境可能存在无法导入的问题,可以在代码导入该包的逻辑中删除try逻辑,即可正常导入。

公网地址说明

代码涉及公网地址参考 public_address_statement.md

使用模型资源和服务前,请您仔细阅读并理解透彻 《昇腾深度学习模型许可协议 3.0》