程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

文本检测算法一:CTPN

发布于2019-08-06 11:34     阅读(2334)     评论(0)     点赞(0)     收藏(5)


主要目的是复现CTPN,检验一下它检测文本的能力,看是否能应用在项目上,顺便将复现过程及过程中遇到的问题记录下来。 

CTPN是什么?

      CTPN结合CNN与LSTM深度网络,CTPN是从Faster R-CNN改进而来:知乎:一文读懂Faster RCNN从编程实现角度学习Faster R-CNN(附极简实现)

       CTPN能有效的检测出复杂场景的横向分布的文字,是目前比较好的文字检测算法,效果如下图。CTPN论文   tensorflow代码  

下面记录一下复现过程:

环境:win10+anaconda3+pycharm+python3.7+tensorflow1.10+vs2015_runtime

一 代码修改

  1.  在文件  ./ctpn/text.yml 设置  "USE_GPU_NMS "  as "False"
  2.  在文件  ./lib/fast_rcnn/config.py 设置 "__C.USE_GPU_NMS"   为  "False";
  3.  在文件  ./lib/fast_rcnn/nms_wrapper.py  中,注释掉 "from lib.utils.gpu_nms import gpu_nms" ;
  4. 在文件lib \ utils \ cython_nms.pyx的第26行进行一些更改“np.int_t”更改为“np.intp_t”    否则出现“ValueError:Buffer dtype mismatch,expected'int_t'但得到'long long' “在第6步。
  5. 在文件 \text-detection-ctpn-master\lib\rpn_msr\proposal_layer_tf.py中的第53行加入“cfg_key=cfg_key.decode('utf-8')”
  6. 在文件“ctpn \ demo.py”的第29行中,将“base_name = image_name.split('/')[ - 1]”更改为“base_name = image_name.split('\\')[ - 1]”

二 重新编译文件

       打开anaconda prompt,激活tensorlow环境,进入到路径“\ text-detection-ctpn-master \ lib \ utils ”中去(Anaconda Prompt 怎么切换工作路径到E盘);

  1. 执行 cython bbox.pyx 
  2. 执行 cython cython_nms.pyx

     我的处理截图:处理完后,cython_nms和bbox的修改日期会发生改变。

三 重建setup文件

         打开文件夹”text-detection-ctpn-master\lib\utils“,新建一个setup_cpu.py文件,文件代码如下所示:

import numpy as np
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
numpy_include = np.get_include()
setup(ext_modules=cythonize("bbox.pyx"),include_dirs=[numpy_include])
setup(ext_modules=cythonize("cython_nms.pyx"),include_dirs=[numpy_include])

四 重新编译

       打开vs2015 X64 本机工具命令提示符,激活tensorflow环境,进入”text-detection-ctpn-master\lib\utils“,

执行下列代码:

python setup_cpu.py build_ext --inplace 

       执行完会在文件夹”text-detection-ctpn-master\lib\utils\lib\utils“中生成2个pyd文件,分别为:

  1. “bbox.cp36-win_amd64.pyd”
  2. “cython_nms.cp36-win_amd64.pyd”

     将这两个文件复制到“text-detection-ctpn-master\lib\utils”。

我的处理截图:处理完后,会在utils文件下生成两个文件夹,分别是build文件夹和lib文件夹,pyd文件在lib文件夹下。

 

五 运行demo

       在运行demo前需要下载checkpoints训练好的模型到工程环境中去,下载完了直接解压成文件夹放到root目录下!类似于下图:

 

       在anaconda prompt中,激活tensorflow环境进入到工程root路径下(Pycharm中运行demo.py也行,其他IDE也行,反正就是要运行demo.py)。

python  .\ctpn\demo.py

1)运行发现以下错误: 

解决方法:此处我是将其他文件夹放到了ctpn文件夹里

2)继续运行demo.py,又出现了下面这个问题

解决方法:将77行代码,改成了用绝对路径:

cfg_from_file('E:/sxl_Programs/Python/TextDetector/CTPN/text-detection-ctpn-master/ctpn/text.yml')

 3)继续运行demo.py,又出现了下面这个问题:

 尝试方法:.\ctpn\lib\fast_rcnn文件夹下config.py,148行的路径设置有问题,不过直接在这里改没有用,改完后在demo中还是按默认路径读取。

最终解决方法:将demo.py,89行diamagnetic改成:

        ckpt = tf.train.get_checkpoint_state('./checkpoint/')   #cfg.TEST.checkpoints_path

 

六 如果出现以下界面就证明成功运行了。

七,效果图

      在下载的文件包里自带的几张图片的基础上,我加了几张图(11,12,16,19,31),测试一下效果,效果如下:

 

 



所属网站分类: 技术文章 > 博客

作者:头疼不是病

链接:https://www.pythonheidong.com/blog/article/8407/12910922cd54b74b1c1c/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)