paper : Detecting Oriented Text in Natural Images by Linking Segments
github地址:https://github.com/dengdan/seglink
参考博客:https://blog.csdn.net/u011440558/article/details/78564615
这篇博客是我按照github上大神开源代码后,然后我在自己的环境下复现出来的实践笔记,这也是我第一次写博客,文笔粗糙,望大家海涵,接下来步入正题。论文中也只是检测到了文本行的框,并没有进行识别,检测出来的最终结果会在指定路径下保存为和每张输入图片名字相对应的txt文档,命名格式为:res_图片名称.txt。
一、我的配置环境
(1)tensorflow-gpu 1.1.0
(2)opencv3.1.0
(3)python2.7
二、具体安装步骤
参考地址:http://blog.csdn.net/u011440558/article/details/78358447
推荐安装opencv3.4.2网址:https://blog.csdn.net/hu_helloworld/article/details/80251237
sudo apt-get install build-essential
# 必须的,gcc编译环境
suo as
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
udo apt-get install build-essentiapt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev lale-de
# 必须的,包括cmake等工具
sudo apt
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# 可选的,看个人需要,总共5M左右
官网下载:http://opencv.org/downloads.html
或者git clone:
cd ~/o
cd ~/opencv310
pencv310
# opencv310为自己新建文件夹,源码将放在这里
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
1.解压源码包,得到opencv-3.1.0 (用git的话,即是opencv310)
2.然后建立编译目标文件夹
cd
cd opencv-3.1.0
mkdir build
opencv-3.1.0
3.使用cmake或用cmake-gui生成Makefile
(1)cmake方式
cd opencv-3.1.0/build
cmak
cd opencv-3.1.0/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX
=/usr/local ..
e -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX
=/usr/local ..
# 生成后的Makefile在build文件夹中,而需要的CMakeLists.txt
在 ".."中,即上一级文件夹中(opencv-3.1.0)
sudo apt-get ins
sudo apt-get install cmake-qt-gui
tall cmake-qt-gui
然后打开cmake-gui:
“/opencv-3.1.0” 和 “/opencv-3.1.0/build”换成自己的,然后先点 Configure 然后点 Generate。
在Configure过程中,若出现
– ICV: Downloading ippicv_linux_20141027.tgz…
则下载ippicv_linux_20141027.tgz,地址:https://pan.baidu.com/s/1hWwR8VtHRwKNRmOilskmwA
密码: kvdz,替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/
linux-8b449a536a2157bcad08a2b9f266828b 下的同名文件即可,注意替换后,重新编译,或着一开始就放进去。
在opencv3.1.0/build下
# 4个线程编译,查看cpu核数量 # grep "model name" /proc/cpuinfo | wc -lwc -l
make -j4
# 安装
sudo make install
测试安装是否成功,查看这篇,ubuntu opencv3.1 编译demo报错:
http://blog.csdn.net/u011440558/article/details/78213796
3.创建虚拟环境seg-env,安装tensorflow
A.安装pip
sudo apt-get install python-pip python-dev python-virtualenv
B.创建虚拟环境seg-env
virtual
virtualenv --no-site-packages --python=python3 seg-env
env --no-site-packages --python=python3 seg-env
如果出现以下问题:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable t
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
o lock the administration directory (/var/lib/dpkg/), is another process using it?
解决方法:sudo rm /var/lib/apt/lists/lock
sudo rm /
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
C.接下来打开刚才创建的虚拟环境:
source seg-env/bin/activate
这时候你会发现在终端输入命令的时候前面都会有(seg-env),代表你的虚拟环境创建成功,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。接下来你的所以操作都是在这个虚拟环境中进行,安装的所有的依赖包也都会放在:/home/zhao/seg-env/local/lib/python2.7/site-packages目录下。
在刚才创建的虚拟环境seg-env中安装tensorflow:推荐使用清华大学镜像文件,速度会快很多,使用pip install方法安装速度会很慢,而且很容易超时。推荐使用:
pip install -i
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
如果报错:
(seg-env)**@gpuserver1:
~$pip install -i https://pypi.mirrors.ustc.edu.cn/
simple/ tensorflow_gpu-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl
tensorflow_gpu-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl is not a supported wheel on this platform.
Storing debug log for failure in /home/**.pip/pip.log
D.更新你所安装的pip:
python -m pip install --upgrade pip
升级pip3:
sudo pip3 install --upgrade pip
卸载pip3:
sudo apt-get remove python3-pip
python -m pip install --upgrade pip
然后再次安装:pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
pip install keras -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
若发现安装超时,试用第二句命令,其中的keras代表了你要安装的包。
这样基本上tensorflow安装已经没什么问题,等success之后进行下一步操作。
tensorflow安装参考:http://blog.csdn.net/isuker/article/details/52459992
E.接下来我们需要安装python需要的各种基础软件包,numpy、scipy、pandas、matplotlib。
首先更新所有插件:
sudo apt-get update
sudo apt-get update
安装numpy:
sudo apt-get install python-numpy
sudo apt-get install python-numpy
如果你使用的是python3.0以上版本,则:
sudo apt-ge
sudo apt-get install python3-numpy
t install python3-numpy
安装scipy:
sudo apt-get install python-scipy
sudo apt-get install python-scipy
安装pandsa:
sudo apt-get install python-pandas
sudo apt-get install python-pandas
安装matplotlib:
sudo
sudo apt-get install python-matplotlib
apt-get install python-matplotlib
安装scikit-learn:
sudo apt-get install python-sklearn
sudo apt-get install python-sklearn
F.运行 test_seglink.py
下载并解压模型(seglink-384)和测试数据(ICDAR2015),代码地址中有提供。
(1)修改 test_seglink.py中的图像文件路径,模型路径。
tf.app.flags.DEFINE_string('checkpoint_path', '/home/zhao/WZQ12/wzq/seglink-384/model.ckpt-136750',None)
tf.app.flags.DEFINE_string('checkpoint_path', '/home/zhao/WZQ12/wzq/seglink-384/model.ckpt-136750',None) //注意此处应是三个参数,最后一个参数为None
tf.app.flags.DEFINE_string('dataset_dir',
util.io.get_abs
tf.app.flags.DEFINE_string('dataset_dir',
util.io.get_absolute_path('/home/zhao/WZQ12/wzq/ch4_test_images'), 'The directory where the dataset files are stored.')
olute_path('/home/zhao/WZQ12/wzq/ch4_test_images'), 'The directory where the dataset files are stored.')//注意此处是test,后面生成的txt文件对应的也应是test,可视化检测结果所输入的图片也应该是test
(2)修改./tf_extended/seglink.py 808行(否则会报错,opencv3没有cv.BoxPoints()函数):
# points = cv2.cv.BoxPoints(bbox) #opencv2.4.9
#将原来的注释掉,用下面这一行代码:
points = cv2.boxPoints(bbox) #opencv3.1.0
points = cv2.boxPoints(bbox) #opencv3.1.0
G.运行代码
#需要在代码中填写好参数
sou
#需要在代码中填写好参数
source seg-env/bin/activate
python test_seglink.py
rce seg-env/bin/activate
python test_seglink.py
事实上你需要cd到对应的test_seglink.py的根目录下,比如:
先:sour
source seg-env/bin/activate
ce seg-env/bin/activate
然后:cd WZQ12/wzq/seglink 你就会看到你的test_seglink.py
接下来在终端输入p
python test_seglink.py
ython test_seglink.py
或者,
sh ./scripts/test.sh 0 ~/WZQ12/wzq/seglink-384/model.ckpt-136750 ~/WZQ12/wzq/ch4_test_images
每条命令注意中间只有一个空格,
报错:
import util
ImportError: No module named util
这是因为你没有将环境变量添加到python指定的路径下:
使用
sudo gedit .bash
sudo gedit .bashrc
编辑文档,在该文档末尾添加自己的src路径,
export PYTHONPATH= “${PYTHONPATH}:/home/zhao/WZQ12/wzq/pylib/src/”
接着是在linux下永久添加sys.path模块路径:
①
cd seg-env/local/lib/python2.7/site-packages
cd seg-env/local/lib/python2.7/site-packages
②
sudo echo a.pth
sudo echo a.pth
③
sudo gedit a.pth
sudo gedit a.pth
④编辑该文本,添加自己电脑所对应的路径:/home/zhao/WZQ12/wzq/pylib/src
⑤保存退出
⑥进入python环境:$ python
⑦>>>import sys
⑧>>>sys.path 查看刚才添加的路径是否在其中
H.再次运行代码
python test_seglink.py
p此时基本上没有什么问题了,如果出错提示你缺少安装什么包,下载相对应的安装包 ,推荐使用清华大学镜像文件:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 缺少的包名
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 缺少的包名
如果前面的操作都没有什么问题,那么现在你就会看到终端上正在跑500张图并且生成了txt文件,这是ICDR2015数据集中的test图,生成的txt文件/home/zhao/WZQ12/wzq/seglink-384/model.ckpt-136750/test/icdar2015_test/model.ckpt-136750/seg_link_conf_th_0.900000_0.700000/txt
I.可视化检测
在终端输入:
pyt
python visualize_detection_result.py \
--image=/home/zhao/WZQ12/wzq/ch4_test_images \
--det=/home/zhao/WZQ12/wzq/seglink-384/model.ckpt-136750/test/icdar2015_test/model.ckpt-136750/seg_link_conf_th_0.900000_0.700000/txt \
--output=/home/zhao/WZQ12/wzq/out
hon 注意以上给出的是绝对路径,“=”后面不可加空格,注意每行的空格数只有一个,python对格式要求很严格,否则编译器不允许通过,out是自己新建的文件夹,用来保存可视化检测之后的图片。
实际配置过程中还会出现很多的问题,因为python版本和tensorflow,opencv版本不匹配等问题,根据问题的提示总能百度出答案。
在我的实践过程中,还会出现最终生成的txt文件因为换行符“\n”的干扰,不能读取txt文件的第8个数,解决方案:
对visualize_detection_result.py进行修改,第11行添加:
while ‘\
while ‘\n’ in data:
data.remove(‘\n’)
第75行后添加:
if line!=‘\n’
至此,所有的环境已经配置完毕,你将会在out文件夹下看到ICDAR2015所有test图片,检测结果包含了场景中文本框,总共500张图,如果你想测试别的数据集,需要将test_seglink.py的输入图像路径更改即可。
欢迎转载,交流学习!
欢迎 if line!=‘\n’
source seg-env/bin/activate