EAST文本检测+天池竞赛++经验分享+踩坑合集

EAST文本检测+天池竞赛++经验分享+踩坑合集

EAST的模型在检测自然场景下的英文文本有着较好的性能,要实现中文场景下的中文文本检测,需要重新训练模型,本篇文章就是在此基础上,经历了无数次的奔溃,虽然没有达到预期,也算跑出来一个结果。
CSDN链接:https://blog.csdn.net/weixin_42042397/article/details/95946118

一、前言

天池竞赛官网链接
EAST论文链接:https://arxiv.org/abs/1704.03155v2
EAST-github代码:https://github.com/argman/EAST

OpenCv-East文本检测这个地址是网上的朋友用python直接调用已经训练好的模型进行检测,附上代码分享
生活不易,喜欢就点个star吧~~

观点参考: 用EAST这个模型来进行中文文本检测存在着很大的缺陷,有些图片很清晰的文本也检测不出来,同时图片中的长文本检测也具有缺陷。如果你想要得到很高的精度,建议可以尝试其他模型。

二、论文分析

2.1 技术分析

亮点

简单的管道实现在当时较高精度的文本检测。
• 图像通过FCN处理产生像素级文本缩放地图和几何图形的多个频道。
• 可旋转的文本框,可以检测文本也可以检测单词。
具体的分析可以参照文本检测之EAST

三、重新训练

我的设备:
Ubuntu 16.04
tensorflos 1.4
CUDA 8.0

3.0 环境配置

安装tensoflow-gpu版本和CUDA以及cudnn这些我就不在这里详述,网络上有很多详细的教程,注意tensorflow下载的版本和CUDN要匹配。

3.1 下载

下载代码: 熟悉github使用的朋友可以直接用clone命令 git clone https://github.com/argman/EAST.git
当然也可以直接Download ZIP

下载预训练模型:
Resnet V1 50 provided by tensorflow slim: slim resnet v1 50
原作者在ICDAR2013+ICDAR2015 数据集上已经训练好的模型百度云盘 谷歌云盘

数据集处理:
数据集要按照原作者的命名方式修改,即使你使用的ICDAR3013这类的数据集,也需要修改一下图片命名方式。

原代码数据集的命名方式:图片1.jpg 图片1.txt

我用来处理数据集进行重命名的代码 处理后的数据集按照image1.jpg image2.jpg这样的命令方式

注:代码是通过获取文件类型然后重新命名以原来的文件类型保存的,所以文本数据和图片数据需要分开处理

训练命令:

python multigpu_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
  • gpu_list=0 :使用1块gpu,有多块就设置该命令为gpu_list = 0,1,2,3
  • checkpoint_path:训练结果保存路径,不需要修改,训练得到的模型可以在该路径查看
  • text_scale :文本尺度
  • training_data_path:训练用的数据集,如果使用自己的数据集,这里的路径修改了训练用的图片路径
  • pretrained_model_path: 预训练模型路径,不需要修改了

四、踩坑合集

这里记录了我大大小小的奔溃合集。希望可以对其他朋友有所帮助。

4.1 tensorflow安装后导入报错:libcudnn.so.6:cannot open sharedobject file :No such file or directory.

错误描述: 缺少这个文件,查看/usr/local/cuda/lib64/ 文件夹中是否对应存在libcudnn.so.6,没有的话到官网下载一个放在这个文件夹就可以了。

解决办法:

1、 查看cuda的版本 cat /usr/local/cuda/version.txt
查看你的系统信息 uname -m && cat /etc/*release

2、官网下载对应cudnn库 https://developer.nvidia.com/cudnn (要注册账号)

3、我下载的是libcudnn.so.6.0.21,下载后的文件放在文件夹中/usr/local/cuda/lib64/

4、 修改文件权限,并创建原本的软连接,把文件改为你下载的文件
sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.0.20

sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6

sudo ln -s libcudnn.so.6 libcudnn.so

4.2 Faided to find any matching files for /tmp/resnet_v1_50.ckpt

错误描述: 奇怪令人奔溃的错误只有,只是文件夹的指向不对,按照github上复制的命令需要修改
解决办法: 把训练命令中--pretrained_model_path=/tmp/resnet_v1_50.ckpt 文件路径前的/去掉,改为--pretrained_model_path=tmp/resnet_v1_50.ckpt 如果出现无法找到图片文件,同样的修改方式,把文件路径前的/去掉

4.3 运行eval.py 出现 g++:error :unrecognized command line option ‘-fno-plt’以及 can't compile lanms

错误描述 最让我奔溃的错误,网上分析有说是编译版本问题,更新gcc版本并没有解决问题。鼓捣了一整天,然后在github项目里的issue找到了解决方法。
lanms是作者建立的一个C函数的库(描述可能有错误,大概是这个意思),在eval.py中import lanms,使用lanms来调整boxs,作者们可能是考虑到了编译问题等巴啦巴拉,在代码的上一行作者备注了使用python中自带的函数nms来解决相同的问题,据作者描述可能只是速度的问题。

解决方法:
直接将eval.py文件中100行的boxes = lanms.merge_quadrangle_n9(boxes.astype('float32'), nms_thres)
换作boxes = nms_locality.nms_locality(boxes.astype(np.float64), nms_thres)
使用python函数库而不是lanms的函数库
同时备注掉import lanms。这样就不会出现编译错误又可以运行代码拉。

4.4 test 过程,运行eval.py没有报错,但是在output_dir上也没有对应的输出图片等等。

错误分析: 1、图片就是检测不出来,模型训练的问题以及图片名称问题;
2、output_dir 路径应该和test的图片路径一致(可能只是我这里的问题);

解决方法: 多放点图片(这个只是我的数据集问题),将路径修改为一致,修改后的路径如下:
test命令

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352