ABCNet数据集转化(ICDAR 2015)及训练

article/2025/5/16 6:05:55

ABCNet数据集转化(ICDAR 2015)及训练

目录

  • ABCNet数据集转化(ICDAR 2015)及训练
  • 一、环境配置
    • 1. detectron2 安装
    • 2. AdelaiDet 安装
  • 二、ICDAR 2015 转化为Bezier pts格式
  • 三、网络训练
    • 1、文件目录
    • 2、训练
    • 3、训练过程中遇到的问题


一、环境配置

1. detectron2 安装

#创建虚拟环境
conda create -n  abcNet python=3.6.2
#激活虚拟环境
source activate abcNet
#安装pytorch 1.8
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
#检查GPU是否可用
(abcNet):~$ python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information
>>> import torch
>>> torch.cuda.is_available()
True
#安装相关库
pip install pythran scikit-image
pip install ninja yacs cython matplotlib tqdm opencv-python shapely scipy tensorboardX pyclipper Polygon3 editdistance 
#本地安装 detectron2
git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
git checkout -f 9eb4831
cd ..
python -m pip install -e detectron2

若报错

 Attempting uninstall: certifiFound existing installation: certifi 2016.9.26
ERROR: Cannot uninstall 'certifi'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall

则前往/home/XXX/anaconda3/envs/abcNet/lib/python3.6/site-packagess删除certifi的相关文件,再重新安装。

2. AdelaiDet 安装

从https://github.com/aim-uofa/AdelaiDet下载 AdelaiDet 包。

git clone https://github.com/aim-uofa/AdelaiDet.git
cd AdelaiDet
# 安装AdelaiDet
python setup.py build develop

二、ICDAR 2015 转化为Bezier pts格式

根据官方文档

This is a python3 example showing how to build a custom dataset for abcnet training. The example image and annotation are from CTW1500 dataset (https://github.com/Yuliang-Liu/Curve-Text-Detector/tree/master/data)

Step one: Given polygonal annotation, generating bezier curve annotation.
python Bezier_generator2.py

Step two: Given bezier curve annotation, generating coco-like annotation format for training abcnet.
python generate_abcnet_json.py ./ train 0

我们需要先将多边形标注文件转化为如下的Bezier曲线文件,再将Bezier曲线文件整合成COCO格式的json文件
由于ICDAR 2015 只有4个坐标点数据,而Bezier曲线文件需要10个坐标(上5个,下5个),因此我们需要通过差值的方式,在ICDAR中坐标1和坐标2之间插入v1,v2,v3,在坐标3和坐标4之间插入v4,v5,v6.
在这里插入图片描述代码如下:

    for il, line in enumerate(fin):# line = line.strip().split(',')icdar_line = list(map(int, line.rstrip('\n').lstrip('\ufeff').split(',')[:8]))x1 = icdar_line[0]/4*3+icdar_line[2]/4*1y1 = icdar_line[1]/4*3+icdar_line[3]/4*1x2 = icdar_line[0]/2+icdar_line[2]/2y2 = icdar_line[1] / 2 + icdar_line[3] / 2x3 = icdar_line[0] / 4 + icdar_line[2] / 4*3y3 = icdar_line[1] / 4 + icdar_line[3] / 4*3new_line = [icdar_line[0],icdar_line[1]]+[x1,y1,x2,y2,x3,y3]+[icdar_line[2],icdar_line[3]]x4 = icdar_line[4]/4*3+icdar_line[6]/4y4 = icdar_line[5] / 4*3 + icdar_line[7] / 4x5 = icdar_line[4] / 2 + icdar_line[6] / 2y5 = icdar_line[5] / 2 + icdar_line[7] / 2x6 = icdar_line[4] / 4 + icdar_line[6] / 4*3y6 = icdar_line[5] / 4 + icdar_line[7] / 4*3text = line.rstrip('\n').lstrip('\ufeff').split(',')[8]new_line = new_line +[icdar_line[4],icdar_line[5]]+[x4,y4,x5,y5,x6,y6]+[icdar_line[6],icdar_line[7]]new_line = [int(line/math.sqrt(factor)) for line in new_line]+[text]line = new_lineif not len(line[:-1]) == 20: continuect = line[-1]if ct == '###': continuecoords = [(float(line[:-1][ix]), float(line[:-1][ix+1])) for ix in range(0, len(line[:-1]), 2)]poly = Polygon(coords)data.append(np.array([float(x) for x in line[:-1]]))cts.append(ct)polys.append(poly)

之后调用官方的Bezier_generator2_txt_totaltext.py将icdar2015 的txt文件转化为bezier的txt文件。转化后文件如下:
在这里插入图片描述可视化后的结果如下:
在这里插入图片描述

最后调用官方的generate_abcnet_json.py文件,生成用于训练的coco数据集。
在这里插入图片描述修改后的数据集转化代码及total text 的ABCNet 训练模型可从https://download.csdn.net/download/lhe159324/85055738下载。

三、网络训练

1、文件目录

AdelaiDet-master中涉及到ABCNet的文件目录如下

AdelaiDet-master/
|--  AdelaiDet.egg-info /
|--  adet /
|   |-- configs /
|   |   |-- defaults.py  # 配置文件
|   |-- data/
|   |   |-- builtin.py # 数据集路径配置
|   |-- modeling/
|   |   |-- roi_heads/
|   |   |    |-- __init__.py 
|   |   |    |-- text_head.py  # BezierAlign + Recognizator
|   |   |    |-- attn_predictor.py   # Recognizator
|   |   |-- one_stage_detector.py  # 网络模型总体结构
|   |   |-- poolers.py   # BezierPooler
|   |-- utils/
|   |   |--visualizer.py  # 预测结果可视化
|--  build / # 编译文件存储路径
|--  configs /  
|   |-- BAText/
|   |   |-- TotalText/
|   |   |    |-- attn_R_50.yaml  # ABCNet  配置文件
|   |   |    |--  Base-TotalText.yaml
|   |   |    |--  v2_attn_R_50.yaml # ABCNetV2  配置文件
|--  datasets /
|--  demo  /
|   |-- demo.py  #模型测试demo
|   |--predictor.py # 模型调用并预测
|--  docker /
|--  docs /
|--  onnx/
|--  output /
|   |-- batext/
|   |   |-- totaltext/
|   |   |    |-- attn_R_50/ # 模型保存路径
|--  tools /
|   |-- train_net.py # 训练脚本
|--  setup.py  # AdelaiDet 编译脚本
|--  README.md

2、训练

修改AdelaiDet-master/adet/data/builtin.py 文件,添加icdar 数据集并将datasets路径设置为数据集本地存储路径。
在这里插入图片描述修改 AdelaiDet-master/configs/BAText/TotalText/attn_R_50.yaml文件,添加icdar数据集
在这里插入图片描述
attn_R_50.yaml文件 说明如下:

_BASE_: "Base-TotalText.yaml"# 基础配置文件
DATASETS:# 数据集TRAIN: ("icdar_train",)TEST: ("icdar_test",)
INPUT:# 训练/测试图片的最大尺寸和最小尺寸MIN_SIZE_TRAIN: (600,)MAX_SIZE_TRAIN: 760MIN_SIZE_TEST: 600MAX_SIZE_TEST: 760
MODEL:WEIGHTS:  "AdelaiDet-master/tt_e2e_attn_R_50.pth" :# 模型加载路径RESNETS:DEPTH: 50BATEXT:RECOGNIZER: "attn" # "attn" "rnn"
SOLVER:IMS_PER_BATCH: 1 # 模型训练BatchBASE_LR: 0.001 # 初始学习率MAX_ITER: 5000  # 模型训练次数CHECKPOINT_PERIOD: 1000 # 模型保存周期
TEST:EVAL_PERIOD: 1000 # 模型测试周期
OUTPUT_DIR: "output/batext/totaltext/attn_R_50" # 模型保存路径

cd 进入AdelaiDet-master文件夹内,运行

OMP_NUM_THREADS=1 python tools/train_net.py  --config-file configs/BAText/TotalText/attn_R_50.yaml 

进行训练。

运行结果如下:
在这里插入图片描述

3、训练过程中遇到的问题

问题:

RuntimeError: Default process group has not been initialized, 
please make sure to call init_process_group.

解决方案: 由于ABCNet Paper中是多GPU训练,但是本地只有单GPU,因此需要将 AdelaiDet-master/configs/BAText/TotalText/v2_attn_R_50.yaml和AdelaiDet-master/adet/config/defaults 中的"SyncBN"改为BN。
示例如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/4xRMAeaj.shtml

相关文章

ICDAR 比赛技术分享

一 背景 ICDAR 2021(International Conference on Document Analysis and Recognition)于2021年9月5-10日在瑞士召开。ICDAR会议是文档分析与识别领域国际顶级会议,每两年举办一次,涵盖了文档分析与识别领域的最新学术成果和前沿…

世界人工智能大会与ICDAR有何不同?

从事人工智能领域的小伙伴对世界人工智能大会和ICDAR应该都不会陌生,它们似乎都是属于研究、讨论人工智能的一种会议,但其实它们的区别还是挺大的,具体来说,它们主要有以下的区别: 一、组织性质不同 ICDAR是Internati…

【赛事推荐】ICDAR2023国际学术竞赛,六大OCR未解难题等你来挑战!

关注公众号,发现CV技术之美 ICDAR(International Conference on Document Analysis and Recognition)是全球文档图像分析识别领域公认的权威学术会议,从1991年起每两年召开一次,今年是第17届,将于2023年9月…

AI领域著名的ICDAR是何物?有何作用?

来百度APP畅享高清图片 一、ICDAR是什么? ICDAR是International Conference on Document Analysis and Recognition(国际文档分析与识别会议)的缩写。它每两年举办一次,由国际文献识别与文本处理委员会(International…

富芮坤fr8008gp代码:堆栈设置;lv_timer_handler定时器研究和优化;广播数据中不用定义GAP_ADTVYPE_FLAGS;广播使用设备唯一地址

堆栈设置 fr8008gp使用自定义的linker脚本: ;256k bytes, which is 2M ROM ;ROM 0x00000000 0x40000 0x30000 ROM 0x10000000 0x800000 {ER_TABLE 0{*(jump_table_0)*(jump_table_1)*(jump_table_2)*(jump_table_3)*(jump_table_4)}ER_RO 0x10002000 FIXED{*(RO)}ER_BOOT …

数坤科技上市遇阻?申请材料失效,融资“数据打架”,存数亿缺口

2022年3月21日,贝多财经了解到,数坤(北京)网络科技股份有限公司- B(下称“数坤科技”)在港交所的上市申请材料已“失效”,目前已经无法正常查看或下载。这代表着,数坤科技首次冲刺上…

《数据》杂志刊登坤前署名文章:金融信创构筑产业数字化转型之路

《数据》--《产业转型研究》专刊 《数据》杂志是由北京市统计局和北京日报报业集团战略合作,专注于数据领域报道,并在全国发行的经济资讯类新闻期刊。此次清华大学互联网产业研究院产业转型顾问委员会专刊,聚焦产业转型研究,理论和…

“聚力远谋,创赢未来”坤前全国巡展广州站圆满落幕

9月28日,“聚力远谋,创赢未来”2021坤前生态合作伙伴交流全国巡展首站在广州正式启幕,来自各行各业的核心客户及坤前生态合作伙伴齐聚一堂,共话信创产业发展。 飞腾信息技术有限公司华南区域总监李荣恩先生对会议主办方坤前表达了…

易经读书笔记02坤为地

地道柔刚 象曰 地势坤,君子以厚德载物。 坤:元,亨,利牝马之贞。 君子有攸往,先迷后得主,利;西南得朋,东北丧朋。 安贞,吉。 牝马指母马。为什么不用母牛?因为…

坤卦

坤卦 坤卦三偶六断,纯阴虚阙之象。“坤”字古文作“巛”,“顺”字偏旁及“川”字,亦“巛”之象形也,故《象传》曰“乃顺承天”,又曰“柔顺利贞”。《文言传》曰:“坤道其顺乎?”《系辞传》曰&am…

数坤科技:AI在医疗影像的应用和探索

机器之心编辑部 3 月 23 日,在机器之心 AI 科技年会上,数坤科技研发副总裁危夷晨发表了主题演讲《AI 在医疗影像的应用和探索》,对 AI 医疗影像行业进行了全面的介绍。 以下为危夷晨在机器之心 AI 科技年会上的演讲内容,机器之心…

周易卦爻解读笔记——大壮

第三十四卦大壮 雷天大壮 震上乾下 大壮卦为消息卦,象征阳盛阴衰。 大壮卦是遁卦的覆卦,序卦传【物不可以终遁,故受之以大壮】 首先说明壮这个字: 武士操戈而立,可以理解为强壮,更多的是要理解为打击&…

重庆大学计算机学院新生综合,重庆大学

随着如火如荼的军训落下帷幕,金秋十月天朗气清,重庆大学2016级本科新生同学正式开始了他们在重庆大学充实多彩的学习生活。2016年10月13日,重庆大学计算机学院领导老师与全体新生见面会在虎溪校区理科楼报告厅隆重召开。学院出席本次大会的主…

世坤投资大学:欲提供数据科学硕士学位的对冲基金

全文共1843字,预计学习时长6分钟 图源:unsplash 随着数据科学、人工智能和机器学习的普及,很多人开始对这一领域产生兴趣,与之相关的学习资源也同比例增长。这些资源来源广泛,既包括YouTube、Github和博客网站等多功能平台上的免费内容,亦包括慕课和在线纳米学位等相对…

周易卦爻解读笔记——坤卦

第二卦坤 坤为地 坤上坤下 坤:元,亨,利牝马之贞。君子有攸往,先迷后得主,利西南得朋,东北丧朋。安贞,吉。 坤卦,初始通达,利于向母马一样正固(意为一直顺从…

官网平台类产品的设计挖掘

参考图例:架构图素材库 -图标库 ToB 产品的官网设计,业务开始综合考虑产品设计在内外各平台上的一致性、高价值运营转化模块的凸显,以及上线后的用户满意度等运营数据。信息传达模式、信息分层逻辑、业务对设计理念的理解成本,成为…

抖音上坤之大强之作是什么意思

抖音坤之大强之作什么意思?最近抖音频繁出现这个词,谢广坤是谁?有很多的网友们都想知道坤之大强之作什么意思,感兴趣的网友们,下面就跟着小编一起来看看吧。 坤之大强之作什么意思 看过电视剧《乡村爱情》的人都知道,谢广坤的…

SLM7.1SR1SP05 配置(configuration guide+ link help) - 03 initial configuration part3

3.8 配置SLD 添加如下一条记录&#xff0c;setup localSLD 使用SOLMAN_ADMIN&#xff08;<password>&#xff09;账户登陆 输入用户名的密码 请注意&#xff0c;在安装SLD之前&#xff0c;如果不是使用的001集团&#xff0c;而是新copy出一个client&#xff0c;请确保JAV…

下载SAP-Approval list中的补丁

1、用SOLMAN_ADMIN登录slm 100系统 2、dswp 3、随便选择解决方案:ZPI_CON 4 变更管理 》 维护优化器 5 选择产品版本 6、 &#xff0c;如果已添加进Approval list 中&#xff0c;可以直接跳入下一步。 7、会转到sap网站的下载篮里。 确认下载

SLM7.1SR1SP05 配置(configuration guide+ link help) - 03 initial configuration part1

根据system preparation界面上方的roadmap&#xff0c;按步来进行系统需求配置。如果roadmap显示为叉号&#xff0c;即此ActiveX插件不可用&#xff0c;那么打开IE的设置&#xff0c;将安全级别调低&#xff0c;允许ActiveX插件&#xff0c;刷新登陆即可。 3.1 创建用户 点击ro…