TextBoxes_plusplus
TextBoxes_plusplus是基于TextBoxes改进的用于场景文字识别的项目,它用SSD来检测文字,然后对框出来的文字用CRNN进行识别。因为最近要用TextBoxes_plusplus,然后在编译它的过程中也遇到了一些问题,所以用这篇博客记录一下。
首先还是要先执行git clone https://github.com/MhLiao/TextBoxes_plusplus.git
编译TextBoxes++
TextBoxes是在caffe上实现的,直接按照普通caffe编译即可。
在编译前需要安装caffe的各种依赖,依赖安装可以网上查询。
编译时,根据不同的系统环境,需要修改主目录下的Makefile.config
USE_CUDNN := 1
CUDA_DIR := /usr/local/cuda-8.0
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/
接下来执行
make -j4
make py
在make 的过程中我有遇到error: ‘xxx’ does not name a type,经过查询了解到是由于Makefile中的一句话
COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-isystem $(includedir))
其中 -isystem 是 gcc 参数,表示引用路径,但是当 -isystem 里面如果与 -I 里面的头文件有冲突会忽略 -I,所以如果系统中其他地方有同名文件,此时就不会进行本地的头文件搜索。
由于我的服务器中有安装另一个ssd的caffe环境,所以发生了错误。只要修改-system
为-I
即可。
这样TextBoxes就编译完了
编译crnn
接下来就是crnn的配置,crnn编译前也需要安装多个依赖。
首先是torch7的安装,torch7安装比较简单,可以直接网上找教程。
然后是LMDB,如果系统中没有LMDB,可以直接apt-get install liblmdb-dev
再是fblualib的编译,fblualib确实有点难编,因为对于 ubuntu14.04,fblualib都是编译的老版本的库。
git clone https://github.com/facebookarchive/fblualib.git
cd fblualib
./install_all.sh
此时,系统就开始自动下载那些需要的库并自动编译,在编译fbthrift时会报autoconf
的错误,我查询半天无果,所以只能自己手动编译。找到install_all.sh脚本下载的 fbthrift 位置,将其删除,然后执行:
git clone https://github.com/facebook/fbthrift
cd build
cmake ..
make
此时又会有很多的错误,这是因为fbthrift这个库也有很多的依赖,所以要自己手动再将依赖装好,具体缺什么依赖可以看报的错误。然后依赖的地址可以去fbthrift看。
接下来就可以继续编译thpp了,将install_all.sh中编译thpp的代码手动输入,但还是发生了问题,gtest-1.7.0文件不存在,这是由于google将gtest-1.7.0换了个位置存。此时找到thpp的目录,手动编译
cd $dir/thpp/thpp ($dir是thpp在当前系统中的位置,需要自己去找)
curl -JLOk https://github.com/google/googletest/archive/release-1.7.0.zip
unzip googletest-release-1.7.0.zip
mv googletest-release-1.7.0 gtest-1.7.0
mkdir –p build
cd build
cmake ..
make
ctest
sudo make install
这样thpp就编译好了,接下来再编译fblualib
cd ../../fblualib/fblualib
./build.sh
这样整个 fblualib 就编译完了。
此时就可以返回 TextBoxes_plusplus 目录去编译 crnn 了
cd ~/TextBoxes_plusplus/crnn/src
sh build_cpp.sh
最后要测试一下,官方提供了两个模型。
一个是TextBoxes++的caffe模型 BaiduYun,下载来之后放到./models
一个是crnn的torch模型 BaiduYun,下载来之后放到./crnn/model/
现在可以在主目录执行 python examples/text/demo.py
最终结果将被保存在./demo_images