图片文字定位:https://github.com/tianzhi0549/CTPN
图片文字识别: https://github.com/bgshih/crnn
综合两者并支持中文:https://github.com/bear63/sceneReco
- 我使用的是Ubuntu 14.04.5 LTS(因为crnn作者的这句话The software has only been tested on Ubuntu 14.04 (x64). CUDA-enabled GPUs are required. )其它版本的Ubuntu按理说也是可以的,不过遇到的坑可能会有些不一样.
- 编译CTPN可以没有显卡(没有显卡至少需要5G的内存,虚拟机也可以)
- 编译crnn和sceneReco项目必须要有能支持cuda的NVIDIA显卡
- 虚拟机中无法识别显卡驱动,所以虚拟机中可以编译运行CTPN,无法编译crnn和sceneReco
首先需要安装Nvidia显卡驱动和cuda,cudnn(我选择的是cuda7.0,cuDNN V3,因为CTPN的README.md有说明,作者是基于这个来测试的)
但是,如果想顺利编译运行sceneReco的话,我强烈建议选择更高版本的的cuda(但是此时的cuDNN会不支持,因为编译caffe会出错,同时需要更多的显存,按照作者的说法是至少5G显存),因为编译sceneReco需要依赖pytorch,而pytorch管方只支持cuda7.5及以上的版本,我最开始使用的cuda7.5测试的,所以能安装pytorch,但是为了看看使用cuDNN的效果(作者的说法是使用cuDNN后,只需要1.5G显存),降到了cuda7.0
cuda和cuDNN下载网址(https://developer.nvidia.com/)
cuda下载
cudnn下载
下载cudnn需要注册账号
我最开始尝试使用cuda7.5和cuDNN6.0,不过编译caffe会报错(https://github.com/tianzhi0549/CTPN/issues/75)
而且CTPN作者说了这句话(Note: To use CUDNN, you need to download CUDNN from NVIDIA’s official website, and install it >in advance. The CUDNN version we use is 3.0.)
根据(https://github.com/tianzhi0549/CTPN/issues/8) 来说,不用cuDNN貌似影响也不是很大,只是会消耗更多的GPU Memory
我这里是事先下好cuda7.0,cuDNN V3的离线包,再进行安装的
安装cuda(参考官方教程)
sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb
sudo apt-get update
sudo apt-get install cuda
安装cudnn
tar xvzf cudnn-7.0-linux-x64-v3.0.8-prod.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
解决方案:
sudo apt-get install python-numpy
运行python tools/demo.py时
ImportError: No module named cv2
apt-get install python-opencv
运行python tools/demo.py时
ImportError: No module named skimage.io
sudo apt-get install python-skimage
运行python tools/demo.py时
ImportError: No module named google.protobuf.internal
pip install protobuf
如果没有安装pip
sudo apt-get install python-pip
运行python tools/demo.py时
ImportError: No module named yaml
sudo apt-get install python-yaml
官方教程http://torch.ch/docs/getting-started.html
我使用TORCH_LUA_VERSION=LUA50 ./install.sh
安装的Torch,
经过我的测试:
使用TORCH_LUA_VERSION=LUA52 ./install.sh
和TORCH_LUA_VERSION=LUA51 ./install.sh
安装Torch时,都可以成功编译crnn,但是demo无法运行起来,应该是老版本的thpp无法兼容新版Lua的问题.
这里由下面的坑,使用crnn提供的install_all.sh
脚本一键安装时,thpp和fblualib会安装失败,所以这里建议分开来安装folly,fbthrift,thpp,fblualib.
由于我的系统是Ubuntu14,所以根据crnn提供的安装脚本(https://github.com/bgshih/crnn/blob/master/install_all.sh) 来看,我需要安装以下版本的依赖库:
git clone -b v0.35.0 --depth 1 https://github.com/facebook/folly
git clone -b v0.24.0 --depth 1 https://github.com/facebook/fbthrift
git clone -b v1.0 https://github.com/facebook/thpp
git clone -b v1.0 https://github.com/facebook/fblualib
以及以下库:
sudo apt-get update && sudo apt-get install -y \
git \
curl \
wget \
g++ \
automake \
autoconf \
autoconf-archive \
libtool \
libboost-all-dev \
libevent-dev \
libdouble-conversion-dev \
libgoogle-glog-dev \
libgflags-dev \
liblz4-dev \
liblzma-dev \
libsnappy-dev \
make \
zlib1g-dev \
binutils-dev \
libjemalloc-dev \
$extra_packages \
flex \
bison \
libkrb5-dev \
libsasl2-dev \
libnuma-dev \
pkg-config \
libssl-dev \
libedit-dev \
libmatio-dev \
libpython-dev \
libpython3-dev \
python-numpy
由于我的是Ubuntu14,所以上面的$extra_packages
值为libiberty-dev
即:apt-get install -y libiberty-dev
安装folly和fbthrift的时候没有出现什么问题,直接调用folly和fbthrift的安装脚本即可.
注意由于上面我下载的是v1.0(git clone -b v1.0 https://github.com/facebook/thpp
)的thpp,而这个版本的thpp的/thpp/thpp/build.sh
安装脚本有点小问题,如下(最新版的thpp已经修复,不过使用最新版的会遇到其它问题,我没找到解决方案):
#!/bin/bash -e
#
# Copyright (c) 2014, Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.
#
#
set -o pipefail
if [[ ! -r ./Tensor.h ]]; then
echo "Please run from the thpp subdirectory." >&2
exit 1
fi
rm -rf gtest-1.7.0 gtest-1.7.0.zip
curl -JLO https://googletest.googlecode.com/files/gtest-1.7.0.zip
if [[ $(sha1sum -b gtest-1.7.0.zip | cut -d' ' -f1) != \
'f85f6d2481e2c6c4a18539e391aa4ea8ab0394af' ]]; then
echo "Invalid gtest-1.7.0.zip file" >&2
exit 1
fi
unzip gtest-1.7.0.zip
# Build in a separate directory
mkdir -p build
cd build
# Configure
cmake ..
# Make
make
# Run tests
ctest
# Install
sudo make install
注意:这里是从(https://googletest.googlecode.com/files/gtest-1.7.0.zip) 上下载的googletest,实际上这个地址的googletest已经不存在了,我在网上找了一个,下载地址在这里,使用sha1sum -b gtest-1.7.0.zip
命令测试以后,等于'f85f6d2481e2c6c4a18539e391aa4ea8ab0394af'
,与上述shell脚本给出的值一致,说明是能用的.
接下来就不能直接调用build.sh
安装了,我们只需要按照build.sh
脚本中给出的步骤,手动安装thpp即可.
安装fblualib也只需要调用安装脚本即可
最后记得安装LMDB:apt-get install liblmdb-dev
编译的过程中可能会遇到以下问题:
这是由于新版的Torch7改了某些方法增加了参数(THTensor_方法)导致的:
解决方案如下:
https://github.com/facebook/thpp/commit/d9f982c68d7522db9e77e50d135eaa86d84bab85#diff-22577c98d557ea9eca089e8e84d7f98d
没错:就是修改thpp/detail/TensorGeneric.h文件,把缺少的参数补上整数1即可
th demo.lua
错误:module ‘bit’ not found:No LuaRocks module found for bit
(https://github.com/deepmind/torch-hdf5/issues/57)
luarocks install luabitop
ldconfig
ImportError: No module named caffe
sceneReco/CTPN/目录缺少caffe,在该目录放入CTPN项目中的caffe,并编译(参考CTPN的caffe的编译)
也可以使用最新版本的caffe,不过会遇到这个问题(https://github.com/bear63/sceneReco/issues/20)
CTPN作者的说法是:
If you may want to use other Caffe instead of the one we ship for some reasons, you need to migrate the following layers into the Caffe.
- Reverse
- Transpose
- Lstm
ImportError: No module named torch
原因:(https://github.com/bear63/sceneReco/issues/26)
由于我的电脑运行pip install --upgrade torchvision
会失败(https://github.com/pytorch/pytorch/issues/566)
所以这里参考官方安装教程(http://pytorch.org)
根据自己的配置进行选择,我选择的是Linux->pip->Python2.7->cuda7.5所以官方生成的安装命令如下
pip install http://download.pytorch.org/whl/cu75/torch-0.3.0.post4-cp27-cp27mu-linux_x86_64.whl
pip install torchvision
# if the above command does not work, then you have python 2.7 UCS2, use this command
pip install http://download.pytorch.org/whl/cu75/torch-0.3.0.post4-cp27-cp27m-linux_x86_64.whl
由于第一句命令下载速度实在太慢,建议先用迅雷下载好这个文件(http://download.pytorch.org/whl/cu75/torch-0.3.0.post4-cp27-cp27mu-linux_x86_64.whl) 注意Python版本和cuda的版本,的然后依次执行
pip install torch-0.3.0.post4-cp27-cp27mu-linux_x86_64.whl
pip install torchvision
注意:这里如果是先用迅雷先下好的话,不要修改文件名,否者安装的时候会报错,参考(https://www.cnblogs.com/nice-forever/p/5371906.html)
ImportError: No module named lmdb
sudo pip install lmdb
ImportError: No module named mahotas
sudo pip install mahotas
ImportError: No module named cv2
sudo pip install opencv-python
ImportError: No module named skimage.io
sudo pip install scikit-image
ImportError: No module named google.protobuf.internal
pip install protobuf
ImportError: No module named _caffe
make pycaffe
RuntimeError: dimension out of range (expected to be in range of [-2, 1], but got 2)
解决方案(https://github.com/bear63/sceneReco/issues/24)