文本检测CTPN训练自己的数据集

CTPN训练自己的数据集

代码来自:eragonruan/text-detection-ctpn
一,下载预训练模型
下载链接:预训练模型
文本检测CTPN训练自己的数据集_第1张图片
选择VGG16,但是貌似下载特别慢。下载VGG net的预训练模型解压并将其放在data / vgg_16.ckpt中。
文本检测CTPN训练自己的数据集_第2张图片
二,准备自己的训练集
目的:将原始数据中四个点框住的文本切分为16份。
1.我的原始数据是利用labelimage生成的xml文件格式,需要先将xml文件中的坐标信息转化为txt格式,在我的前几篇文章中有参考代码。生成的坐标信息如图所示:
文本检测CTPN训练自己的数据集_第3张图片
至于代码作者贴出的格式中,后面写的“english,###“表示没有作用,只需要四个点的坐标信息即可:
在这里插入图片描述
2.运行split_label.py
这个程序是为了将框切分成宽为16的矩形。
在utils / prepare / split_label.py中修改DATA_FOLDER和OUTPUT。然后在根目录下运行split_label.py
在这里插入图片描述
DATA_FOLDER文件摆放情况如图:
文本检测CTPN训练自己的数据集_第4张图片
image文件夹中存放的是图片,label文件夹中存放的是.txt格式的标签。

在这一步我遇到了两个问题记录一下:

1.一直报错Error processing
单步调试后发现在

 with open(gt_path, 'r') as f:
            lines = f.readlines()

这里无法正常读入,是因为在


        gt_path = os.path.join(DATA_FOLDER, "label", 'gt_' + bfn + '.txt')
        img_path = os.path.join(DATA_FOLDER, "image", im_fn)

中因为’gt_’,对.txt的标签数据命名加个个gt_000001.txt ,导致无法找到与之对应的000001.jpg图片。将’gt_'删除即可。

2.ImportError: No module named utils.rpn_msr.anchor_target_layer
在这里插入图片描述
这个问题我试了很多方法,最后发现原来是基于anaconda里面安装了一个名字为utils的库,导致程序在调用时,没有调用CTPN中的utils文件夹。解决方法是:
1.卸载utils库,在终端中直接输入pip uninstall utils即可(不知道会不会对anancoda产生影响,但确实有效),utils库也可以安装回去。
2.修改utils文件夹以及所有代码中utils的名字(工作量有点大)

三,开始训练
将生成的数据放入data / dataset /中,如图:
文本检测CTPN训练自己的数据集_第5张图片
接下来开始训练即可。

你可能感兴趣的:(文本检测CTPN训练自己的数据集)