刚弄明白CTPN部署的时候,CTPN作者刚更新了简易代码版本,看介绍是把代码优化了不需要多的配置。。。感觉好忧伤!
源码地址:https://github.com/eragonruan/text-detection-ctpn/tree/master
新版本地址:https://github.com/eragonruan/text-detection-ctpn
环境:win10+anaconda3+python3.6+tensorflow1.10+vs2015_runtime
一 代码修改
1.设置 "USE_GPU_NMS " 在文件 ./ctpn/text.yml as "False"
2.设置 "__C.USE_GPU_NMS" 在文件 ./lib/fast_rcnn/config.py 为 "False";
3.注释掉 "from lib.utils.gpu_nms import gpu_nms" 在文件 ./lib/fast_rcnn/nms_wrapper.py 中;
4.在文件lib \ utils \ cython_nms.pyx的第25行进行一些更改“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.将“base_name = image_name.split('/')[ - 1]”更改为“base_name = image_name.split('\\')[ - 1]”在文件“ctpn \ demo.py”的第24行中
二 重新编译文件
打开anaconda prompt,激活tensorlow环境,进入到路径“\ text-detection-ctpn-master \ lib \ utils ”中去;
1.执行 cython bbox.pyx
2.执行 cython cython_nms.pyx
三 重建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文件“bbox.cp36-win_amd64.pyd”和“cython_nms.cp36-win_amd64.pyd”,将这两个文件复制到“text-detection-ctpn-master\lib\utils”。
五 运行demo
在运行demo前需要下载checkpoints训练好的模型到工程环境中去,下载完了直接解压成文件夹放到root目录下!类似于下图:
在anaconda prompt中,激活tensorflow环境进入到工程root路径下,
python .\ctpn\demo.py
如果出现以下界面就证明成功运行了。
后记:
作为一个小白,花了好多功夫才完成的,但仍然不知道其中一些步骤的目的什么,说白了就是知其然不知其之所以然,希望努力加油弄明白配置环境的原理。共勉!
参考文献:
1.https://github.com/eragonruan/text-detection-ctpn/issues/264
2.https://blog.csdn.net/qq_32791307/article/details/81324343