欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阿里天池竞赛分享

程序员文章站 2022-07-14 14:37:58
...

        最近参加阿里天池的“网络图像的文本检测”挑战赛,终于结束,最终排名第181,总共是1424只队伍参加。第一次参加机器学习挑战赛,成绩不是很理想,今天把一些体悟写一下,希望对后来参加的人有用。

阿里天池竞赛分享

 

一、赛题简介

在互联网世界中,图片是传递信息的重要媒介。特别是电子商务,社交,搜索等领域,每天都有数以亿兆级别的图像在传播。图片文字识别(OCR)在商业领域有重要的应用价值,是数据信息化和线上线下打通的基础,也是学术界的研究热点。然而,研究领域尚没有基于网络图片的、以中文为主的OCR数据集。本竞赛将公开基于网络图片的中英混合数据集,该数据集数据量充分,涵盖几十种字体,几个到几百像素字号,多种版式,较多干扰背景。期待学术界可以在本数据集上作深入的研究,工业界可以藉此发展基于OCR的图片管控,搜索,信息录入等AI领域的工作。

 

二、数据集

我们提供20000张图像作为本次比赛的数据集。其中50%用来作为训练集,50%用来作为测试集。该数据集全部来源于网络图像,主要由合成图像,产品描述,网络广告构成。典型的图片如图1所示:

阿里天池竞赛分享

图1:典型图片

 

这些图像是网络上最常见的图像类型。每一张图像或者包含复杂排版,或者包含密集的小文本或多语言文本,或者包含水印,这对文本检测和识别均提出了挑战。

对于每一张图像,都会有一个相应的文本文件(.txt)(UTF-8编码与名称:[图像文件名] .txt)。文本文件是一个逗号分隔的文件,其中每行对应于图像中的一个文本串,并具有以下格式:

      X1,Y1,X2,Y2,X3,Y3,X4,Y4,“文本”

其中X1,Y1,Y2,X2,X3,X4,Y3,Y4分别代表文本的外接四边形四个顶点坐标。而“文本”是四边形包含的实际文本内容。

图2是标注的图片,红色的框代表标注的文本框。

图3是标注图片对应的文本文件。标注时我们对所有语言,所有看不清的文字串均标注了外接框(比如图2中的小字),但对于除了中文,英文以外的其它语言以及看不清的字符并未标注文本内容,而是以“###”代替。

   阿里天池竞赛分享

 

2image.jpg


阿里天池竞赛分享

3image.txt

 

任务描述

网络图像的文本检测:

检测并定位图像中的文字行位置,允许使用其它数据集或者生成数据, 允许Fine-tuning 模型或者其他模型。入围团队提交报告中须对额外使用的数据集,或非本数据集训练出的模型做出说明。

训练集:

对于每个图像,只需要用[图像文件名] .txt里的坐标信息。即: X1Y1X2Y2X3Y3X4Y4

测试集:

输入:整图

输出:对于每一个检测到的文本框,按行将其顶点坐标输出到对应的[图像文件名] .txt中。

提交:

将所有图像对应的[图像文件名] .txt放到一个zip压缩包中,然后提交。

 

 

四、团队组建

团队的力量真的很重要,第一次参加机器学习挑战赛并完成数据提交主要是组员一起分解任务头脑风暴,群力群策分不开

组队由4人组成,分别负责环境搭建、模型训练和优化模型测试等

 

五、应用工具

                Ubuntu 14.04Python3.5TensorFlowShapely 1.5.13Flask 0.10.1Matplotlib 1.5.1Scipy 0.19.0Plumbum 1.6.2Numpy 1.12.1Ipython 6.1.0Pillow 4.2.1

 

        六、实现

从接触大数据及机器学习以来,学习了较多理论知识,但接触项目不多,大多都是课程的project。抱着重在参与、学习的态度,准备在天池大数据平台试试水。

 

A、 环境搭建

Ubuntu、TensorFlow的安装,网上教程很多,参考:

https://blog.csdn.net/y1250056491/article/details/78670710/

 

B、 参考Github上的项目进行模型训练

https://github.com/argman/EAST?spm=5176.9876270.0.0.60d22ef1Skvwzk

 

模型训练:

pythonmultigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14--checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ \

--text_scale=512--training_data_path=/data/ocr/icdar2015/ --geometry=RBOX--learning_rate=0.0001 --num_readers=24 \

--pretrained_model_path=/tmp/resnet_v1_50.ckpt

 

 

模型测试:

python eval.py --test_data_path=/tmp/images/ --gpu_list=0 --checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ \
--output_dir=/tmp/

 

 

        七、存在问题与总结

                问题1由于时间问题使用Github别人的项目进行训练和测试未进行任何优化,输出的结果正确率比较低

 

                问题2训练的电脑GPU不好造成训练时间很长,效率非常低

 

                问题3:机器学习TensorFlow方面的知识不够还需要加强