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
二、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 文件输出。
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'
解决方法: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下载预训练模型,将上边命令中的模型名更换一下即可
tensorflow利用预训练模型进行目标检测(一):安装tensorflow detection api的更多相关文章
- tensorflow利用预训练模型进行目标检测(二):预训练模型的使用
一.运行样例 官网链接:https://github.com/tensorflow/models/blob/master/research/object_detection/object_detect ...
- tensorflow利用预训练模型进行目标检测(三):将检测结果存入mysql数据库
mysql版本:5.7 : 数据库:rdshare:表captain_america3_sd用来记录某帧是否被检测.表captain_america3_d用来记录检测到的数据. python模块,包部 ...
- tensorflow利用预训练模型进行目标检测(四):检测中的精度问题以及evaluation
一.tensorflow提供的evaluation Inference and evaluation on the Open Images dataset:https://github.com/ten ...
- caffe-ssd使用预训练模型做目标检测
首先参考https://www.jianshu.com/p/4eaedaeafcb4 这是一个傻瓜似的目标检测样例,目前还不清楚图片怎么转换,怎么验证,后续继续跟进 模型测试(1)图片数据集上测试 p ...
- 第三十四节,目标检测之谷歌Object Detection API源码解析
我们在第三十二节,使用谷歌Object Detection API进行目标检测.训练新的模型(使用VOC 2012数据集)那一节我们介绍了如何使用谷歌Object Detection API进行目标检 ...
- 利用私有的库MobileCoreServices检测正在安装的应用
利用的私有库检测正在安装的app 分为两步:第一,通过placeholderApplications获得所有的正在安装的app的信息 第二,遍历正在安装的app的信息,根据名称获得你想检测的app是否 ...
- 目标检测数据集The Object Detection Dataset
目标检测数据集The Object Detection Dataset 在目标检测领域,没有像MNIST或Fashion MNIST这样的小数据集.为了快速测试模型,我们将组装一个小数据集.首先,我们 ...
- TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程
运行步骤 1.从 YOLO 官网下载 YOLOv3 权重 wget https://pjreddie.com/media/files/yolov3.weights 下载过程如图: 2.转换 Darkn ...
- 【目标检测】SSD+Tensorflow 300&512 配置详解
SSD_300_vgg和SSD_512_vgg weights下载链接[需要科学上网~]: Model Training data Testing data mAP FPS SSD-300 VGG-b ...
随机推荐
- F - Dima and Lisa(哥德巴赫猜想)
Problem description Dima loves representing an odd number as the sum of multiple primes, and Lisa lo ...
- DDL:对数据库___database___的相关操作,包含数据库备份,导入
1.创建数据库 create database mydb2; create database mydb2 character set utf8; 2.删除数据库 drop database mydb2 ...
- 状态模式(state)C++实现
状态模式 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类 ...
- MongoDB 博客截图之二
使用内置帮助help() 基本命令示例 来源:MongoDB基本管理命令 - 千与的专栏 - 博客频道 - CSDN.NET
- hiho1804 - 整数分解、组合数、乘法逆元
题目链接 题目叙述很啰嗦,可以简化为:n个球[1-1e5],放到m个不同的桶里,一共多少种不同的放法.[桶里可以不放] ---------------------------------------- ...
- ObjectT5:在线随机森林-Multi-Forest-A chameleon in track in
原文::Multi-Forest:A chameleon in tracking,CVPR2014 下的蛋...原文 使用随机森林的优势,在于可以使用GPU把每棵树分到一个流处理器里运行,容易并行化 ...
- JdbcTemplate 增删查改
准备工作:1,拷贝工具类JDBCUtils, 2,导入包commons-logging-1.2-javadoc.jar spring-beans-5.0.0.RELEASE-javadoc.jar ...
- TF从文件中读取数据
从文件中读取数据 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 把样本数据写入TFRecords二进制文件 从队列 ...
- Teradata在大数据管理与分析领域连续18年评测排名第一
Gartner 魔力象限介绍 Gartner(高德纳)全球最具权威的IT市场研究与顾问咨询公司,他总是不停地推出IT行业的各种报告以及著名的Gartner魔力象限. Gartner魔力象限通常从两个方 ...
- Ural 1996 Cipher Message 3 (生成函数+FFT)
题面传送门 题目大意:给你两个$01$串$a$和$b$,每$8$个字符为$1$组,每组的最后一个字符可以在$01$之间转换,求$b$成为$a$的一个子串所需的最少转换次数,以及此时是从哪开始匹配的. ...