剛弄明白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
?