CentOS7.5下安装tensorflow和运行tf-faster-rcnn

Posted shenggang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7.5下安装tensorflow和运行tf-faster-rcnn相关的知识,希望对你有一定的参考价值。

一、升级服务器的python版本

  • 0、通过yum安装后续可能会依赖的包。注意:如果在后续的安装过程中,遇到缺少某些系统模块的错误的时候,需要通过yum源进行安装,然后需要重新编译python
yum install -y tkinter 
yum install -y tk-devel
 ./configure -prefix=/usr/local/python3.6.5
 make 
 make install
  • 4、将服务器上当前的python2.7版本进行备份,并且创建指向python3的新连接:
cd /usr/bin
mv python python_bak_2
mv python-config python-config_bak_2
ln -s /usr/local/python3.6.5/bin/python3 /usr/bin/python
ln -s /usr/local/python3.6.5/bin/python3-config /usr/bin/python-config
  • 5、下载setuptools,参考下载地址:

https://files.pythonhosted.org/packages/8c/58/0a9154c04ff99594c5563e2b03fdcded92e128afd5fa56db202b5877933b/setuptools-19.6.tar.gz

  • 6、解压后进入setuptools目录,执行:
python setup.py build
python setup.py install
  • 7、下载pip,参考下载地址:

https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz

  • 8、解压后进入pip目录,执行:
python setup.py build
python setup.py install
  • 9、将服务器上当前的pip版本进行备份,并且创建指向pip的新连接:
cd /usr/bin
mv pip pip-bak
ln -s /usr/local/python3.6.5/bin/pip /usr/bin/pip
  • 10、修正如下三个文件的python引用方式。由于yum依赖的python2环境,因此要修改对应的命令引用。
/usr/libexec/urlgrabber-ext-down
/usr/bin/yum-config-manager
/usr/bin/yum

将上面三个文件的第一行代码 #! /usr/bin/python 修改为 #! /usr/bin/python_bak_2 。其中 /usr/bin/python_bak_2 是之前备份的python2的命令。

二、下载并安装tensorflow

cpu版本:https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.5.0-cp36-cp36m-linux_x86_64.whl

gpu版本:https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.5.0-cp36-cp36m-linux_x86_64.whl

注意,从tensorflow的1.6版本开始,预构建二进制文件将使用AVX指令。较早的CPU可能无法执行这些二进制文件。 如果采用了1.6或以上的版本的话,如果CPU过老,在执行 import tensorflow as tf 的时候,会抛出 非法指令(吐核) 的错误。

  • 执行如下命令进行安装:
 pip install tensorflow-1.5.0-cp36-cp36m-linux_x86_64.whl
  • 验证安装,执行 python 进入python的命令行界面,然后输入如下代码:
 import tensorflow as tf
 hello = tf.constant(‘Hello, TensorFlow!‘)
 sess = tf.Session()
 print(sess.run(hello))

如果能够正常输出,说明tensorflow安装成功。

三、下载并运行tf-faster-rcnn

以下操作请保证当前网络环境能够访问google

  • 0、安装python的相关包(如果不够,后面根据提示自己添加):
pip install cython
pip install opencv-python
pip install matplotlib
pip install easydict
pip install Pillow
pip install scipy
  • 1、从github上下载源码:https://github.com/endernewton/tf-faster-rcnn
  • 2、从google云盘中下载测试模型 voc_0712_80k-110k.tgz (github上和代码中的链接已失效,必须从云盘上下载):https://drive.google.com/drive/folders/0B1_fAEgxdnvJeGg0LWJZZ1N2aDA
  • 3、将代码上传到服务器中,解压,然后进入 tf-faster-rcnn-master/lib 目录,执行如下命令:
make clean
make
cd ..
  • 4、安装Python COCO API,在 tf-faster-rcnn-master 目录下,执行如下命令:
cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
  • 5、修改文件 tf-faster-rcnn-master/tools/demo.py ,添加 一行代码 plt.switch_backend(‘agg‘)
import _init_paths
from model.config import cfg
from model.test import im_detect
from model.nms_wrapper import nms

from utils.timer import Timer
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import os, cv2
import argparse

from nets.vgg16 import vgg16
from nets.resnet_v1 import resnetv1
plt.switch_backend(‘agg‘)   # 这里是需要添加的代码

CLASSES = (‘__background__‘,
           ‘aeroplane‘, ‘bicycle‘, ‘bird‘, ‘boat‘,
           ‘bottle‘, ‘bus‘, ‘car‘, ‘cat‘, ‘chair‘,
           ‘cow‘, ‘diningtable‘, ‘dog‘, ‘horse‘,
  • 6、【CPU模式下运行】需要修改 tf-faster-rcnn-master/lib/model/nms_wrapper.py ,修改如下:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from model.config import cfg
# from nms.gpu_nms import gpu_nms   # 注释掉这一行
from nms.cpu_nms import cpu_nms

def nms(dets, thresh, force_cpu=False):
  """Dispatch to either CPU or GPU NMS implementations."""

  if dets.shape[0] == 0:
    return []
# if cfg.USE_GPU_NMS and not force_cpu:  # 注释掉这一行
# return gpu_nms(dets, thresh, device_id=0)  # 注释掉这一行
# else:                                                 # 注释掉这一行
return cpu_nms(dets, thresh)             # 该行顶格       
  • 7、【CPU模式下运行】需要修改 tf-faster-rcnn-master/lib/model/config.py ,修改一行代码:
# Use GPU implementation of non-maximum suppression
__C.USE_GPU_NMS = False              # 将原本的 True 修改为 False
  • 8、【CPU模式下运行】需要修改 tf-faster-rcnn-master/lib/setup.py ,注释如下语句:
 ···
# CUDA = locate_cuda()                             # 注释掉这一行
···
# self.src_extensions.append(‘.cu‘)            # 注释掉这一行
···
    )                                   # 这里有个逗号需要删除
 # Extension(‘nms.gpu_nms‘,                        # 注释掉这一行
 # [‘nms/nms_kernel.cu‘, ‘nms/gpu_nms.pyx‘],       # 注释掉这一行
 # library_dirs=[CUDA[‘lib64‘]],       # 注释掉这一行
 # libraries=[‘cudart‘],       # 注释掉这一行
 # language=‘c++‘,       # 注释掉这一行
 # runtime_library_dirs=[CUDA[‘lib64‘]],       # 注释掉这一行
        # this syntax is specific to this build system
        # we‘re only going to use certain compiler args with nvcc and not with gcc
        # the implementation of this trick is in customize_compiler() below
 # extra_compile_args={‘gcc‘: ["-Wno-unused-function"],       # 注释掉这一行
 # ‘nvcc‘: [‘-arch=sm_52‘,       # 注释掉这一行
 # ‘--ptxas-options=-v‘,       # 注释掉这一行
 # ‘-c‘,       # 注释掉这一行
 # ‘--compiler-options‘,       # 注释掉这一行
 # "‘-fPIC‘"]},       # 注释掉这一行
 # include_dirs = [numpy_include, CUDA[‘include‘]]       # 注释掉这一行
 # )       # 注释掉这一行
  • 9、解压并放置之前下载的模型,在 tf-faster-rcnn-master 目录下,执行如下命令:
mkdir -p output/res101/voc_2007_trainval+voc_2012_trainval/default

然后将模型 voc_0712_80k-110k.tgz 进行解压,把解压后的四个文件放到刚刚创建好的目录中,完成后的结构如下:

[[email protected] default]# pwd
/opt/tensorflow/tf-faster-rcnn-master/output/res101/voc_2007_trainval+voc_2012_trainval/default
[[email protected] default]# ls
res101_faster_rcnn_iter_110000.ckpt.data-00000-of-00001 res101_faster_rcnn_iter_110000.ckpt.meta
res101_faster_rcnn_iter_110000.ckpt.index res101_faster_rcnn_iter_110000.pkl
[[email protected] default]#
  • 10、修改 tf-faster-rcnn-master/tools/demo.py 文件,添加一行代码,这样可以生成结果文件图片:
···
    plt.axis(‘off‘)
    plt.tight_layout()
    plt.draw()
    plt.savefig("/opt/{}.png".format(class_name))            # 添加一行代码,具体的可以自己定义文件名称
def demo(sess, net, image_name):
    """Detect object classes in an image using pre-computed object proposals."""
···
  • 11、运行demo程序,在 tf-faster-rcnn-master 目录下,执行如下命令:
 ./tools/demo.py

程序开始使用现有的模型对目录中的测试图片进行标记:


[[email protected] tf-faster-rcnn-master]# ./tools/demo.py
/opt/tensorflow/tf-faster-rcnn-master
Loaded network output/res101/voc_2007_trainval+voc_2012_trainval/default/res101_faster_rcnn_iter_110000.ckpt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Demo for data/demo/000456.jpg
Detection took 28.165s for 300 object proposals
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Demo for data/demo/000542.jpg

···

技术分享图片

技术分享图片

以上是关于CentOS7.5下安装tensorflow和运行tf-faster-rcnn的主要内容,如果未能解决你的问题,请参考以下文章

Mac下安装tensorflow不成功,啥原因

Mac下安装tensorflow不成功,啥原因

[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

Win10系统下安装tensorflow(cpu)+keras+jupyter notebook运行环境

win10环境下安装tensorflow

Anaconda环境下搭建tensorflow