zoukankan      html  css  js  c++  java
  • tensorflow利用预训练模型进行目标检测(一):安装tensorflow detection api

    一、tensorflow安装

    首先系统中已经安装了两个版本的tensorflow,一个是通过keras安装的, 一个是按照官网教程https://www.tensorflow.org/install/install_linux#InstallingNativePip使用Virtualenv 进行安装的,第二个在根目录下,做标记以防忘记。

    安装教程:

    使用 Virtualenv 进行安装
    请按照以下步骤使用 Virtualenv 安装 TensorFlow:
    
    发出下列其中一条命令来安装 pip 和 Virtualenv:
    
    $ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
    $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n
    发出下列其中一条命令来创建 Virtualenv 环境:
    
    $ virtualenv --system-site-packages targetDirectory # for Python 2.7
    $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
    targetDirectory 用于指定 Virtualenv 树的顶层目录。我们的指令假定 targetDirectory 为 ~/tensorflow,但您可以选择任何目录。
    
    通过发出下列其中一条命令激活 Virtualenv 环境:
    
    $ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh
    $ source ~/tensorflow/bin/activate.csh  # csh or tcsh
    $ . ~/tensorflow/bin/activate.fish  # fish
    执行上述 source 命令后,您的提示符应该会变成如下内容:
    
    (tensorflow)$ 
    确保安装了 pip 8.1 或更高版本:
    
    (tensorflow)$ easy_install -U pip
    发出下列其中一条命令以在活动 Virtualenv 环境中安装 TensorFlow:
    
    (tensorflow)$ pip install --upgrade tensorflow      # for Python 2.7
    (tensorflow)$ pip3 install --upgrade tensorflow     # for Python 3.n
    (tensorflow)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
    (tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
    如果上述命令执行成功,请跳过第 6 步。如果上述命令执行失败,请执行第 6 步。
    
    (可选)如果第 5 步执行失败(通常是因为您所调用的 pip 版本低于 8.1),请通过发出以下格式的命令,在活动 Virtualenv 环境中安装 TensorFlow:
    
    (tensorflow)$ pip install --upgrade tfBinaryURL   # Python 2.7
    (tensorflow)$ pip3 install --upgrade tfBinaryURL  # Python 3.n 
    其中 tfBinaryURL 表示 TensorFlow Python 软件包的网址。tfBinaryURL 的正确值取决于操作系统、Python 版本和 GPU 支持。可在此处查找适合您系统的 tfBinaryURL 值。例如,如果您要为装有 Python 3.4 的 Linux 安装仅支持 CPU 的 TensorFlow,则发出以下命令以在活动 Virtualenv 环境中安装 TensorFlow:
    
    (tensorflow)$ pip3 install --upgrade 
    
     https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl
    如果您遇到任何安装问题,请参阅常见的安装问题。
    
    后续步骤
    安装 TensorFlow 后,请验证安装。
    
    请注意,每次使用 TensorFlow 时,您都必须激活 Virtualenv 环境。如果 Virtualenv 环境当前未处于活动状态,请调用以下命令之一:
    
     $ source ~/tensorflow/bin/activate      # bash, sh, ksh, or zsh
    $ source ~/tensorflow/bin/activate.csh  # csh or tcsh
    在 Virtualenv 环境激活后,您就可以从这个 shell 运行 TensorFlow 程序。您的提示符将变成如下所示,这表示您的 Tensorflow 环境已处于活动状态:
    
    (tensorflow)$ 
    用完 TensorFlow 后,可以通过发出以下命令调用 deactivate 函数来停用环境:
    
    (tensorflow)$ deactivate 
    提示符将恢复为您的默认提示符(由 PS1 环境变量所定义)。
    
    卸载 TensorFlow
    要卸载 TensorFlow,只需移除您创建的树即可。例如:
    
    $ rm -r targetDirectory 
    View Code

    二、detection api配置

    参考链接:https://www.jianshu.com/p/86894ccaa407 https://www.cnblogs.com/qcloud1001/p/7677661.html  https://lijiancheng0614.github.io/2017/08/22/2017_08_22_TensorFlow-Object-Detection-API/ 

    Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(https://github.com/tensorflow/models ),大大降低了开发难度,利用现成的网络结构,无论fine-tuning还是重新训练方便了不少。最近笔者终于跑通TensorFlow Object Detection API的ssd_mobilenet_v1模型,这里记录下如何完整跑通数据准备到模型使用的整个过程,相信对自己和一些同学能有所帮助。

    Object Detection API提供了5种网络结构的预训练的权重,全部是用COCO数据集进行训练,这五种模型分别是SSD+mobilenet、SSD+inception_v2、R-FCN+resnet101、faster RCNN+resnet101、faster RCNN+inception+resnet101。各个模型的精度和计算所需时间如下。下面及介绍下如何使用Object Detection去训练自己的模型。

    使用 git 克隆 models 部分到本地,在终端输入指令:

    $ git clone https://github.com/tensorflow/models.git

    使用 protoc 编译

            在 models/research 目录下的终端执行:

    $ protoc object_detection/protos/*.proto --python_out=.
    

    将 object_detection/protos/ 文件下的以 .proto 为后缀的文件编译为 .py 文件输出。

    出现老问题,本服务器中安装caffe时依赖的为低版本的protoc,但是tensorflow需要高版本的protoc,在编译时报错
    object_detection/protos/anchor_generator.proto:12:3: Expected "required", "optional", or "repeated".
    object_detection/protos/anchor_generator.proto:12:32: Missing field number.

    几个查看protobuf版本信息之类的命令

    查看哪些路径安装了protoc:

    whereis protoc

    可以看到系统中安装了两个protoc

    查看默认调用的protoc是哪个:

    which protoc

    查看默认的protoc的版本:

    protoc --version

    查看pip安装的protoc的信息:(我的话就显示我在anaconda下的3.5+的版本了)

    pip show protobuf

    可以看到系统中存在着两个版本的protoc,现在的问题是如何在不改变默认版本protoc的情况下, 调用高版本的对tensorflow进行编译

    根据https://blog.csdn.net/strangerzz/article/details/73850484,考虑新装一个protoc3.0.2版本,并软连接/usr/local/bin/protoc3.0.2,这样,当我使用protoc命令时,调用的还是2.5.0版本。当我使用protoc3.0.2命令时,调用的是protoc3.0.2版本。然后当编译其他软件时,如果需要不同的版本,在Makefile中指定具体的版本。待验证可行性

    安装protoc3.0.2
    进入源码所在路径(比如为$PROTO_HOME)

    cd $PROTO_HOME

    更换到指定版本

    git checkout v3.0.2

    配置编译后的输出路径(比如为$PROTOC_3_0_2)

    ./configure --prefix=$PROTOC_3_0_2

    编译

    sudo make 

    sudo make install

    制作软连接

    ln -s $PROTOC_3_0_2/bin/protoc /usr/local/bin/protoc3.0.2
    然后通过命令 protoc3.0.2 object_detection/protos/*.proto --python_out=. 进行编译

    问题解决,继续下一步

    配置环境变量

            在 .bashrc 文件中加入环境变量。首先打开 .bashrc 文件:

    $ sudo gedit ~/.bashrc
    

    然后在文件末尾加入新行:

    export PYTHONPATH=$PYTHONPATH:/.../models/research:/.../models/research/slim
    

    其中省略号所在的两个目录需要填写为 models/research 文件夹、models/research/slim 文件夹的完整目录。保存之后执行如下指令:

    $ source ~/.bashrc
    

    让改动立即生效。

    测试是否安装成功

            在 models/research 文件下执行:

    $ python/python3 object_detection/builders/model_builder_test.py
    

    如果返回 OK,表示安装成功

    不过出现问题

    Traceback (most recent call last):
      File "object_detection/builders/model_builder_test.py", line 23, in <module>
        from object_detection.builders import model_builder
      File "/home/yanjieliu/models/models/research/object_detection/builders/model_builder.py", line 22, in <module>
        from object_detection.builders import box_predictor_builder
      File "/home/yanjieliu/models/models/research/object_detection/builders/box_predictor_builder.py", line 21, in <module>
        from object_detection.predictors import convolutional_box_predictor
      File "/home/yanjieliu/models/models/research/object_detection/predictors/convolutional_box_predictor.py", line 19, in <module>
        from object_detection.core import box_predictor
      File "/home/yanjieliu/models/models/research/object_detection/core/box_predictor.py", line 137, in <module>
        class KerasBoxPredictor(tf.keras.Model):
    AttributeError: 'module' object has no attribute 'keras'
    View Code

    解决方法:https://blog.csdn.net/qq_41185868/article/details/82890428

    升级tensorflow到最新版本即可! pip install -U tensorflow 

    升级完之后是到了tensorflow-1.11.0版本

    但是之前在装keras的时候因为部分原因降到了1.2版本,现在升回来可能会出现问题。先这样吧

    安装完成。

    三、下载预训练模型

    根据:https://lijiancheng0614.github.io/2017/08/22/2017_08_22_TensorFlow-Object-Detection-API/  下载预训练模型

    # From tensorflow/models/object_detection/
    mkdir checkpoints
    cd checkpoints
    wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_11_06_2017.tar.gz
    tar zxf ssd_mobilenet_v1_coco_11_06_2017.tar.gz

    另外可到https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md下载预训练模型,将上边命令中的模型名更换一下即可

  • 相关阅读:
    apache启用gzip压缩方法--转载自http://www.cnblogs.com/linzhenjie/archive/2013/03/05/2943635.html
    yii 主从数据库分离-转载http://www.yiichina.com/doc/guide/2.0/db-dao
    服装尺寸
    php 同步因子的并发处理
    NFC会员管理-转载自http://technews.cn/2014/09/13/nfc-sticker/
    Redis 利用锁机制来防止缓存过期产生的惊群现象-转载自 http://my.oschina.net/u/1156660/blog/360552
    移动端H5页面的设计稿尺寸大小规范-转载自http://www.chinaz.com/design/2015/1103/465670.shtml
    服饰行业淘宝商城店铺首页设计报告-转载自http://bbs.paidai.com/topic/88363
    网页设计的标准尺寸
    hdu2099
  • 原文地址:https://www.cnblogs.com/vactor/p/9816039.html
Copyright © 2011-2022 走看看