warp-CTC安装踩坑:make与install步骤出错解决方案

warp-CTC安装踩坑

最近了解了下crnn+ctc,pytorch版本大于1.0自带ctc_loss,但是低版本的pytorch需要自己配置warpctc环境,开始用pytorch(1.3.0)自带的CTCLoss,总是莫名其妙的获得nan的梯度,看了一下知乎大佬们的分享,似乎也有人遇到了这个问题,作为只想完成任务的我果断换了warp-ctc。
warp-CTC安装踩坑:make与install步骤出错解决方案_第1张图片
如果torch自带的没有问题,在使用时应该注意二者的传入参数是不一样的,如果使用torch自带的ctcloss,在传入网络输出概率时,应先进行log_softmax,具体使用可参考链接。

安装warp-ctc的大致步骤如下:

git clone https://github.com/SeanNaren/warp-ctc.git
cd warp-ctc
git reset ac045b6
mkdir build; cd build
cmake ..
make

cd ../pytorch_binding
python setup.py install

如果使用的是pytorch0.4,需要将第一句下载变为以下命令。

git clone --branch 0.4.1 https://github.com/SeanNaren/warp-ctc.git

如果是ubuntu系统等自己带有权限的,最好将gcc降级一下,正常可降至4.9及以下,不过可以先尝试下面的步骤,这里不是必须的。

sudo apt install gcc-4.8 g++-4.8
cd /usr/bin
sudo mv gcc gcc_bak
sudo mv g++ g++_bak
sudo ln -s gcc-4.8 gcc
sudo ln -s g++-4.8 g++ 

官方推荐的是pytorch 0.4,然后走上述流程也会比较顺畅,这是你的显卡最好不要太好,不然与其匹配的最低CUDA版本会比较高,亲测pytorch 1.3.1也可,但是在make步骤出现了错误。在make之前,最好指定一下cuda版本,以便make能够找到我们所使用的cuda。目前来看CUDA 10.0及以下是安全的,我一开始用CUDA 10.1在make的最后一步卡住了,相同问题可见链接。指定CUDA版本如下:

 export CUDA_HOME=/usr/local/cuda-9.0/

第二步就是在install的时候出错了,这个时候可以按照以下方法进行修改pytorch_bingding/src/binding.cpp,我在使用的时候,行号好像不是很对应,但是变量名是唯一的,所以还是可用的。

1 at 92 line
int probs_size = THCudaTensor_size(state, probs, 2);
2 at l05 lines
void* gpu_workspace;
THCudaMalloc(state, &gpu_workspace, gpu_size_bytes);

如果使用的是pytorch0.4,在install的时候还可能弹出fatal error: torch/extension.h: No such file or directory的错误,原因可能是这样,此时在warp-ctc目录下,运行如下命令,然后重复安装即可。

git checkout ac045b6

如果上述改动依然无法安装成功,可以尝试使用如下方法代替python setup.py install,注意torch和cuda的版本号与自己的对应。

pip install warpctc-pytorch10-cuda90==0.1.3

安装完成后,需要添加环境变量。

export WARP_CTC_PATH="yourpath/warp-ctc/build"

之后可以简单测试一下,也可以直接到python中调用一下,行与不行一试便知

from warpctc_pytorch import CTCLoss

安装是个让人头疼的事,大家可以多到官网上找找答案,博客上写出来的问题毕竟只是一部分。
SeanNaren | baidu-research

你可能感兴趣的:(Text,Recognization,python,warp-ctc,CRNN,ocr)