百度网盘AI大赛 | 您所在的位置:网站首页 › ai调整色相饱和度 › 百度网盘AI大赛 |
百度网盘AI大赛-表格检测进阶:表格的结构化第4名方案 ★★★ 本文源自AlStudio社区精品项目,【点击此处】查看更多精品内容 >>> 超链为 一、赛题分析背景:随着票据、名单等带有表单、表格的文件被广泛应用,将纸质文件转化成电子数据并保存管理成为了很多企业的必然工作。传统人工录入的方式效率低、差错多、流程长,如果能通过技术处理,实现表格图片的结构化展现,则可以很大程度降低成本,提高效率以及使用体验。本次比赛希望各位选手能通过OCR等技术解决此痛点问题,识别表格图片的内容与坐标,精准还原纸质数据。分析:比赛中需要检测的对象包括表格、行、列、合并单元格四种。表格的识别较为简单,训练集和A榜测试集中大部分表格与图片边界较为贴合,但是对于某些难例,可能存在一张图片识别出多个表格的情况。行列的识别较为困难,主要包含两个难点。1)行往往宽度极大、高度极小,在进行 IoU 匹配时,假设行的检测框与真实框宽度相等,行的真实框y坐标与匹配框y坐标中的最大值为 y_max、最小值为 ymin,则 IoU 可近似看成检测框宽度 w/( ymax - ymin),这意味着检测框 y 坐标有较小的波动,都会造成 IoU 匹配的失败,造成大量的误检。列往往高度极大,宽度较小,因此也存在上述问题,我们暂且将其称为短边波动。2) 当表格被遮挡时,遮挡行列的置信度较低,不利于遮挡行列和低质量行列的区分,且坐标回归结果较差,即使检测到了也会被匹配为FN。下图是上述两个问题的示意图,左图为行列的短边波动问题,右图为表格遮挡问题。该方案不对数据集进行划分,采用全部数据进行训练,并根据 A 榜样例图片可视化结果和 A 榜测评分数选择最优模型作为 B 榜提交模型。 数据增广随机像素内容变换,包括对亮度、对比度、饱和度、色相角度、通道顺序的调整随机扩张,填充值为 [123.675, 116.28, 103.53]随机裁剪随机翻转按批次随机缩放,缩放大小选取列表为 [640, 672, 704, 736, 768,800,832,864,896,928,960,992,1024,1056,1088,1120,1152,1184,1216]归一化处理, 均值为 [0., 0., 0.],标准差为 [1., 1., 1.]训练配置总迭代周期: 80 epoch, 除数据处理外,训练配置均采用官方配置。预训练模型: ppyoloe-plus-x 在 Object365 数据集上的预训练模型。首先,我们采用 LinearWarmup 策略对ppyoloe-plus-x 进行预热,其中,预热周期为 5 epochs。 之后,采用 CosineDecay 策略对学习率进行调整,其中,训练的基础学习率为 0.001, 训练周期为 75 epochs。此外,我们采用动量为 0.9 的 Momentum 优化器对网络进行优化。同时,我们采用 Focal loss 作为分类损失,采用 GIOU 作为回归损失,采用 L1 Loss 计算预测值与真实值之间的误差,采用 DF loss 计算预测分布与真实分布之间的距离,并将上述四个损失的加权和作为模型的总损失。数据集准备# 解压数据集 %cd /home/aistudio/work !unzip /home/aistudio/data/data182562/train.zip !unzip /home/aistudio/data/data182562/testA.zip # 生成 VOC 标签 %cd /home/aistudio/work !mkdir /home/aistudio/work/train/annotations !python gen_anno.py训练过程# 解压 PaddleDetection 套件 %cd /home/aistudio/ !unzip /home/aistudio/data/data186448/PaddleDetection-release-2.5.zip # 安装相关包 %cd /home/aistudio/PaddleDetection-release-2.5 ! pip install -r requirements.txt # 修改配置文件 %cd /home/aistudio/work/modify_code/ !cp ppyoloe_plus_crn_table.yml /home/aistudio/PaddleDetection-release-2.5/configs/ppyoloe/_base_ !cp ppyoloe_plus_reader_table.yml /home/aistudio/PaddleDetection-release-2.5/configs/ppyoloe/_base_ !cp ppyoloe_plus_crn_x_table.yml /home/aistudio/PaddleDetection-release-2.5/configs/ppyoloe/ !cp voc.yml /home/aistudio/PaddleDetection-release-2.5/configs/datasets/voc.yml # 模型训练,训练周期为 80 epochs , 每1000个迭代打印一次日志,每5个epoch保存一次模型 %cd /home/aistudio/PaddleDetection-release-2.5 ! python tools/train.py -c configs/ppyoloe/ppyoloe_plus_crn_x_table.yml测试过程# 模型导出,这里导出的是之前训练好的model_final.pdparams文件,如果要导出新训练的模型,请修改weights参数下的模型路径 # 一般来说,新训练好的模型路径位于/home/aistudio/PaddleDetection-release-2.5/output/ppyoloe_plus_crn_x_table %cd /home/aistudio/PaddleDetection-release-2.5 ! python tools/export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_x_table.yml \ --output_dir=/home/aistudio/work/predict_code/\ -o weights=/home/aistudio/data/data186448/model_final.pdparams\ # 预测结果可视化 %cd /home/aistudio/work/predict_code/ # B榜提交时模型名称为 ppyoloe_plus_crn_x_80e_coco,因此需要对模型重命名 !mv ppyoloe_plus_crn_x_table ppyoloe_plus_crn_x_80e_coco !python vis_yoloe.py /home/aistudio/work/pubtest/imgs /home/aistudio/work/predict_code/output # 提交测试 %cd /home/aistudio/work/predict_code/ !python predict.py /home/aistudio/work/pubtest/imgs /home/aistudio/work/predict_code/output # 打包提交,这里可以直接下载/home/aistudio/data/data186448/submit_2_28_3.zip文件进行提交(比赛时B榜提交的是submit_2_28_3.zip) # 或打包/home/aistudio/work/predict_code下的模型和代码进行提交,打包前,请务必保证训练模型已经导出,且提交测试通过 !zip -r submit_3_5_1.zip ./ppyoloe_plus_crn_x_80e_coco predict.py六、代码结构PaddleDetection-release-2.5:检测套件work:代码与数据集目录modify_code:需要修改的配置文件predict_code:预测与打包提交目录ppyoloe_plus_crn_x_80e_coco:模型导出文件output: 可视化结果输出目录predict.py: 提交测试脚本vis_yoloe.py: 检测结果可视化脚本train:训练数据集pubtest: A榜测试数据集样例gen_anno.py VOC标签生成脚本label_list.txt 类别标签文件train.txt 训练集标签文件七、上分策略[1] 百度网盘AI大赛——表格检测进阶:表格的结构化 Baseline https://aistudio.baidu.com/aistudio/projectdetail/5234267 本文章为转载 原文链接 |
CopyRight 2018-2019 实验室设备网 版权所有 |