走近CTPN:1. 解读README

走近CTPN:1. 解读README

本文链接:https://blog.csdn.net/weixin_44633882/article/details/90714222

我第一个读源码并复现的检测类神经网络就是CTPN(Connectionist Text Proposal Network),由于对Tensorflow的不了解,还有对网络流程的不熟悉,导致第一次读源码十分困难,也请教了一些人,才算是理解了整个网络。
相信有别的同学想要理解CTPN,但存在一些疑惑没有解决。这里希望能帮助到你们,若能帮助到你们,这篇博客就不只是我的记录,而是被赋予了更多的价值。
若有人认为本文有地方有误,请及时和我联系,非常欢迎交流沟通。
不再闲聊,让我们开始吧!

我参考的代码是来自于 https://github.com/eragonruan/text-detection-ctpn

首先来说明如何按README.md运行源码,补充一些注意点。好让需要用的人能尽快使用。


Test 直接跑demo

因为作者的代码和模型都提供了,我们可以直接拿来运行。接下来分析README.md.

1. git clone 不必多解释

2. setup 编译cpython实现的nms和bbox

为什么要使用cpython来实现nms和bbox呢?因为python实现速度太慢。

cd utils/bbox
chmod +x make.sh
./make.sh

make.sh文件
运行结果是产生bbox.cpython-35m-x86_64-linux-gnu.sonms.cpython-35m-x86_64-linux-gnu.so两个文件,这样就可以直接像调用库一样调用了。

python setup.py install // 对nms和bbox创建动态链接库
mv build/*/*.so ./   // 移动到主目录
rm -rf build/ // 删除build文件夹

具体更多配置细节和问题,可以参考我的博客文章CTPN/Faster-RCNN中使用cpython对overlap计算加速

3. demo

  • 先完成2.setup建立链接库
  • 从百度云或者google drive下载模型(ckpt文件)
  • 把下载得到的checkpoints_mlt/文件夹放入text-detection-ctpn/项目文件夹
  • 把你图片放入data/demo,就可以直接使用了,结果会被保存在data/res,在项目根目录运行demo
python ./main/demo.py

Train 训练自己的模型

1. prepare dataset 准备数据集

  • 下载VGG16 net预训练模型vgg_16.ckpt,放到data/文件夹中。下载地址tensorflow/models
    关于预训练模型在Tensorflow中的使用,参考我的博客文章Tensorflow如何直接使用预训练模型(vgg16为例)

  • 下载数据集,作者收集了一份ICDAR2017(Multi-lingual scene text detection)数据集,下载地址:google drive或百度云,将下载的数据放到data/dataset/mlt,就可以开始训练啦。

注意: 这个作者要求的ground truth(标签),和常用的不太一样。如果你看过论文,就会知道它的anchor(候选框)的宽度都是16。所以,GT(标签)——由4个点围成的矩形,宽度也是16。(对原数据集做切分)
这里清楚地描述:比如 ( 0 , 0 ) , ( 60 , 32 ) (0,0),(60,32) (0,0),(60,32)四个点围成一个矩形。
做了切分之后,变成了 32 / 16 = 2 32/16=2 32/16=2个anchors. 每个anchor的宽度都为16
作者提供的上面的mlt数据集,已经切分好的。如果没有切分,或者说你想用自己的数据集,怎么修改标签呢?

2. other datasets 其他的数据集

作者提供了split_label.py函数来让我们切分数据集。

  • 修改utils/prepare/split_label.py中的DATA_FOLDEROUTPUT,对应到你自己的数据集。
DATA_FOLDER = "/media/D/DataSet/mlt_selected/"
OUTPUT = "data/dataset/mlt/"
  • 在根目录运行run split_label.py
python ./utils/prepare/split_label.py
  • 数据集格式

    • 文件内容: x 0 , y 0 , x 1 , y 1 x0,y0,x1,y1 x0,y0,x1,y1
    • 输入文件名:gt_img_XXX.txt
    • 输出文件名: img_XXX.txt
  • 在图像中显示GT

3. train

run train.py即可

python ./main/train.py
  • 作者提到checkpoints_mlt模型是在GTX 1070上训练了50k iters. 每个iter使用0.25s.大概需要3.5h来完成50k iters.

你可能感兴趣的:(#,深度学习,CTPN)