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
1、下载python3并解压,参考下载地址:https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz。
2、创建文件夹
/usr/local/python3.6.5
。3、进入解压后的目录,执行如下命令:
./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,参考下载地址:
- 6、解压后进入setuptools目录,执行:
python setup.py build
python setup.py install
- 7、下载pip,参考下载地址:
- 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的主要内容,如果未能解决你的问题,请参考以下文章
[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建