首先介绍一下我的环境配置,ubuntu16.04+cuda9.0,cudnn7.0,tensorflow-gpu=1.8
简介
其实对这个不是很有研究的,只是要参加一个阿里天池的比赛,然后用这个跑了一下,成绩很一般。
论文原地址:https://arxiv.org/abs/1704.03155v2
源码:https://github.com/argman/EAST
下载
主要是根据上面github源码进行的,首先下载源码,然后可以看到教程中的Download中训练好的模型以及slim resnet v1,如下图。
然后首先解压源码EAST,打开EAST-master/tmp文件,将上面下载好的模型解压就行了。
训练
首先得寻找一个数据集,然后我首先用的是icdar2015的数据集,上面教程也说了需要将image和label(.txt)修改一下名字,当然也可以修改代码,这里面我选择的是修改名字,代码如下:
import os def rename(path, num=1): filelist = os.listdir(path) filelist = sorted(filelist) Newdir = 'label' if not os.path.exists(Newdir): os.makedirs(Newdir) for files in filelist: Olddir = os.path.join(path, files) if os.path.isdir(Olddir): continue filename = os.path.splitext(files)[0] filetype = os.path.splitext(files)[1] if 'img_' + str(num) == filename: num = num + 1 continue New_name = 'img_' + str(num) + filetype os.system("cp " + Olddir + ' ' + os.path.join(Newdir, New_name)) num = num + 1 if __name__ == "__main__": path = 'txt_1000' num = 1 rename(path,num)
根据自己文件的名字进行修改的啦。
将修改好的images(.jpg)和(.txt)文件放在一起,重新起一个名字,如icdar2015也行吧,如图:
训练命令如下:
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=icdar2015/ --geometry=RBOX --learning_rate=0.0001 --num_readers=24 \ --pretrained_model_path=tmp/resnet_v1_50.ckpt注意:不要在文件前添加/会出现找不到Failed to find any matching files for /tmp/resnet_v1_50.ckpt
这里面可以修改一下训练多少次保存模型,打开mutigpu_train.py,找到作如下修改,因为电脑配置有点差。
tf.app.flags.DEFINE_integer('save_checkpoint_steps', 200, '')
还有一个就是如果不想要训练的话,可以直接Ctrl+c直接停止训练,虽然保存了模型,但是还是得在此训练一段时间才能达到之前的效果。再次训练的话,可以不用添加
--pretrained_model_path=tmp/resnet_v1_50.ckpt使用tensorboard查看训练情况
cd ~/Documents/workspace/EAST-master/tmp/ tensorboard --logdir='east_icdar2015_resnet_v1_50_rbox'
测试
测试的话,里面images的名字还是有一点限制的,不过一般都不会有问题,主要是阿里天池比赛的images中有T1..VkFqJdXXXXXXXX_!!0-item_pic.jpg.jpg。这里面需要稍微修改一下就可以了。
python eval.py --test_data_path=test_images/ --gpu_list=0 --checkpoint_path=tmp/east_icdar2015_resnet_v1_50_rbox/ \ --output_dir=test_out_images