CTPN docker/nvidia-docker 安装

荒凉一梦 提交于 2019-12-07 13:06:26

本文主要是记录使用docker/nvidia-docker安装深度学习图片文字识别,开发运行环境.

在做图片文字识别的,需要用到CTPN以及crnn,服务器是ubuntu16的,但是上述两种框架(github现有的)只能运行在ubuntu14上面。考虑到,发布等问题,决定使用docker在ubuntu16搭建ubuntu14 cuda7.5 cudnn3开发运行环境。

服务器系统为ubuntu16.04,GPU卡为M40,安装了CUDA7.5.

主机,以及docker信息如下:

这里写图片描述

这里写图片描述

机器的CUDA信息:

这里写图片描述

接下来对照nvidia-docker安装方法,安装nvidia-docker.

docker一般都是使用基于CPU的应用,而如果是GPU的话,就需要安装特有的硬件环境,比如需要安装nvidia driver。所以docker容器并不直接支持Nvidia GPU。为了解决这个问题,最早的处理办法是在容器内部,全部重新安装nvidia driver,然后通过设置相应的设备参数来启动container,然而这种办法是很脆弱的。因为宿主机的driver的版本必须完全匹配容器内的driver版本,这样导致docker image无法共享,很可能本地机器的不一致导致每台机器都需要去重复操作,这很大的违背了docker的设计之初。

nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现的还是在docker的启动命令上携带一些必要的参数。

安装成功之后,安装上面的示例,我们可以看到GPU卡的信息:

这里写图片描述

下面首先安装ubuntu14以及对应的cuda7.5(需要和主机上面的CUDA一致), cudnn3,devel(可以编译使用CUDA的工具)

docker pull nvidia/cuda:7.5-cudnn3-devel-ubuntu14.04

安装成功之后:

这里写图片描述

运行容器并验证:

这里写图片描述

github上面的CTPN 的docker安装,在我的机器上面是不行的,由于要兼容CRNN,因此先对其做了修改:

FROM nvidia/cuda:7.5-cudnn3-devel-ubuntu14.04
MAINTAINER xiongyu <haluoluo@qq.com>

RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        cmake \
        git \
        wget \
        zip \
        unzip \
        libatlas-base-dev \
        libboost-all-dev \
        libgflags-dev \
        libgoogle-glog-dev \
        libhdf5-serial-dev \
        libleveldb-dev \
        liblmdb-dev \
        libopencv-dev \
        libprotobuf-dev \
        libsnappy-dev \
        protobuf-compiler \
        python-dev \
        python-numpy \
        python-pip \
        python-setuptools \
        python-scipy \
        python-opencv && \
    rm -rf /var/lib/apt/lists/*

ENV CTPN_ROOT=/opt/ctpn
WORKDIR $CTPN_ROOT

RUN git clone --depth 1 https://github.com/tianzhi0549/CTPN.git
WORKDIR $CTPN_ROOT/CTPN/caffe

# Missing "packaging" package
RUN pip install --upgrade pip
RUN pip install packaging

# -i use tsinghua source for speedup install
RUN cd python && for req in $(cat requirements.txt) pydot; do pip install $req -i https://pypi.tuna.tsinghua.edu.cn/simple/; done && cd ..

WORKDIR $CTPN_ROOT/CTPN/caffe
RUN cp Makefile.config.example Makefile.config
RUN apt-get update && apt-get install -y --no-install-recommends \
    vim
RUN mkdir build && cd build && \
    cmake -DUSE_CUDNN=1 .. && \
    WITH_PYTHON_LAYER=1 make -j"$(nproc)" && make pycaffe

# Set the environment variables so that the paths are correctly configured
ENV PYCAFFE_ROOT $CTPN_ROOT/CTPN/caffe/python
ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH
ENV PATH $CTPN_ROOT/CTPN/caffe/build/tools:$PYCAFFE_ROOT:$PATH
RUN echo "$CTPN_ROOT/CTPN/caffe/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig

# To make sure the python layer builds - Need to figure out a cleaner way to do this.
RUN cp $CTPN_ROOT/CTPN/src/layers/* $CTPN_ROOT/CTPN/caffe/src/caffe/layers/
RUN cp $CTPN_ROOT/CTPN/src/*.py $CTPN_ROOT/CTPN/caffe/src/caffe/
RUN cp -r $CTPN_ROOT/CTPN/src/utils $CTPN_ROOT/CTPN/caffe/src/caffe/

WORKDIR $CTPN_ROOT/CTPN
RUN make

上面的docker安装文件是对原有的docker做了部分修改.

安装成功之后,挂载模型文件运行:


docker run -ti --rm \-v/data/services/xy_text_rec/CTPN/models/ctpn_trained_model.caffemodel:/opt/ctpn/CTPN/models/ctpn_trained_model.caffemodel --runtime=nvidia ctpn

这里写图片描述

最终的运行结果如下(这里只是展示没有关闭cv2的display):

这里写图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!