ScanSSD的github代码

ScanSSD: 文档图像中数学公式扫描SSD

环境:Cuda 9.1.85 + Pytorch 1.1.0

内容列表

安装
代码组织
训练
测试
性能

安装
  • 安装pytorch 克隆这个仓库(repository),需要python3
  • 按照这个链接上的说明下载数据集 ,数据集安装说明在文末。
  • 下载Visdom用于训练期间的实时损失可视化,这是Visdom的下载链接
    要在浏览器中使用Visdom:
# First install Python server and client首先安装Python服务器和客户端
pip install visdom
# Start the server (probably in a screen or tmux)启动服务器(可能在屏幕或tmux中)
python -m visdom.server
代码

SSD模型内置于ssd.py文件中。训练和测试SSD由train.py和test.py管理。所有训练代码都在layers目录中。训练和测试的超参数可以通过命令行和data目录中的config.py文件来指定。

data目录还包含gtdb_new.py数据读取器,使用滑动窗口生成页面的子图像以供训练。所有关于拼接子图像级检测的脚本都在gtdb目录中。

utils中提供了数据增强、边界框可视化和热图功能。

为训练设置数据

如果不确定如何设置数据,请使用 dir_struct文件。它有一个可能的目录结构,可以用来设置训练和测试数据。

为了生成.pmath文件或.pchar文件,您可以使用此脚本

训练
  1. 首先点击此处下载
    fc-reduced VGG-16 PyTorch基本网络权重(这个链接要科学上网,在谷歌硬盘上,共78M)
  2. 默认情况下,我们假定您已在 scanssd/weights 目录中下载了该文件:
  3. 运行命令
python3 train.py 
--dataset GTDB 
--dataset_root ~/data/GTDB/ 
--cuda True 
--visdom True 
--batch_size 16 
--num_workers 4 
--exp_name IOU512_iter1 
--model_type 512 
--training_data training_data 
--cfg hboxes512 
--loss_fun ce 
--kernel 1 5 
--padding 0 2 
--neg_mining True 
--pos_thresh 0.75
  1. 注释:
    对于训练,强烈建议使用 NVIDIA GPU 以提高速度。
    有关Visdom使用 / 安装的说明,请参阅安装部分。
    通过将路径指定为训练参数之一,可以从检查点拾取训练(同样,请参见train.py了解选项)
预训练权重

为了快速测试,这里提供了预先训练的权重。(科学上网)

测试

测试训练好的网络

python3 test.py 
--dataset_root ../ 
--trained_model HBOXES512_iter1GTDB.pth  
--visual_threshold 0.25 
--cuda True 
--exp_name test_real_world_iter1 
--test_data testing_data  
--model_type 512 
--cfg hboxes512 
--padding 3 3 
--kernel 1 1 
--batch_size 8

可以通过标记或手动更改 eval.py 文件中列出的参数来指定这些参数。

缝合补丁级别的结果
python3 <Workspace>/ssd/gtdb/stitch_patches_pdf.py 
--data_file <Workspace>/train_pdf 
--output_dir <Workspace>/ssd/eval/stitched_HBOXES512_e4/ 
--math_dir <Workspace>/ssd/eval/test_HBOXES512_e4/ 
--stitching_algo equal 
--algo_threshold 30 
--num_workers 8 
--postprocess True 
--home_images <Workspace>/images/ 

math_dir 是由 test.py生成的目录
output_dir是要生成最终输出的地方

评价

数据集下载说明

TFD-ICDAR 2019:用于排版数学公式检测的数据集

该数据集用于第15届国际文档分析与识别大会(ICDAR 2019)上的手写数学表达式识别和排版公式检测竞赛(CROHME+TFD 2019)。

它是使用GTDB数据集的注释开发的。TFD-ICDAR 2019数据集为PDF文档中的数学区域提供字符位置、OCR代码和边界框。

目录结构解释如下:
1、训练和测试数据分别在 traintest 目录中提供。
2、在Train中,math_gt 和 char_gt 目录下分别有math和character region注释。
3、在测试中,有一个名为 input 的目录。如果在推理时需要字符级信息,可以使用 input 中的注释。gt目录中提供了测试数据的groud truth。

groud truth注释在字符级和数学级提供:
字符级别:所有字符的边界框都带有数学/非数学标签。每个字符记录都有以下值-1:页码,2:字符id,3-7:边界框bounding box(左、上、右、下),8:普通文本或数学符号,9:与其他数学字符的关系10:父数学字符id 11:OCR代码

例如:0,1,376.0,438.0,448.0,514.0,ORDINARY_TEXT,NONE,-1,0154
关系可以是以下之一:HORIZONTAL,RIGHT_SUB,RIGHT_SUP,LEFT_SUB,LEFT_SUP,UPPER,LOWER 即 水平、右下、右下、左下、左下、上、下

数学区域:为每页提供数学区域的边界框。每个数学记录都有以下值
1:页码,2-6:边框(左、上、右、下)

文章页面最初以600 dpi扫描。尽管出于版权原因,我们无法包含文章的原始文档图像,但我们提供了用于获取原始文档的pdf URL。

数据集统计

在这里插入图片描述

下载说明

EasyDownload 目录提供了下载数据集中使用的PDF文件的工具。
1、从GTDB_文件中的给定URL下载所有PDF。txt。确保保存的文件的名称位于第二列(用于与GT文件的映射)。
2、使用 convert_pdf_to_image.py 将PDF转换为图像
3、使用相应文件夹中为测试和培训提供的GTs。请注意,对于测试PDF,提供的字符边界框没有数学/非数学标签。
注释:如果发现边界框从数学区域中移位,这是因为渲染的文档图像与注释时使用的图像大小不同。datasetV2为每个图像提供文件大小。将已渲染的图像调整为datasetV2中提供的大小,您应该能够使用注释。

评估工具

用法:python3, IOUevaluater.py ,detections,ground_truths

我们提供评估工具IOULib,用于计算检测结果的精确度、召回率和F分数。

该工具可用于评估预测数学区域的IoU度量,与每个pdf文件的ground_truths数学区域进行比较。对于测试集中的每个pdf,您应该生成一个包含预测边界框区域的csv文件。csv文件中的每一行对应一个数学区域的边界框。它由5个属性组成:page number, x, y, x2, y2

detections包含带有预测数学区域的pdfpdf_name.csv文件,ground_Truth包含<pdf_name.csv>具有ground_truths数学区域的文件。

对于ground_truth中的每个数学区域,将为检测中的每个数学区域(每页)计算IoU度量,并返回按降序排列的ground_truth列表:IoU分数,检测。每个页面的这些信息都保存在一个名为IOU_scores_pages的文件夹中。

其他工具

visualize_annotations.py 从图像上的注释文件中可视化数学区域和字符区域。在VisualizationTools下找到这个:
convert_pdf_to_image.py 将PDF文件转换为600 DPI图像。

数据集版本

TFD-ICDAR2019v1被用于Tyepset公式检测(TFD)的ICDAR 2019竞赛。TFD-ICDAR 2019数据集的Vesrion 2修复了版本1中的错误。所有字符注释都已更新,以适合字符,并添加了缺少的边界框。版本2可在目录TFD-ICDAR2019v2下获得。版本2中的IOULib被更新以提供文件级结果,它允许我们指定不同的IoU阈值。其他工具也进行了更新,可以处理csv、math和char文件。版本2提供用于创建注释的图像的文件大小。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑建宇Jy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值