谷歌开源Tensorflow Object Detection API学习笔记

谷歌宣布开源其内部使用的 TensorFlow Object Detection API 物体识别系统。本教程针对ubuntu16.04系统,快速搭建环境以及实现视频物体识别系统功能。

https://yq.aliyun.com/ziliao/405237

https://www.cnblogs.com/wmr95/p/7563173.html

https://blog.csdn.net/pkokocl/article/details/82596089

1、安装Tensorflow

请参考官方说明及其它博客安装tensorflow,要使用Tensorflow Object Detction API,tensorflow版本需1.4及以后版本。

我的系统已经安装Ubuntu 16.04系统,基础软件安装如下表,tensorflow,opencv均正常工作

2、安装必要的包及库

    sudo apt-get install protobuf-compiler
    sudo apt-get install python-pil
    sudo apt-get install python-lxml
    sudo pip3 install jupyter
    sudo pip3 install matplotlib

3、安装TensorFlow Object Detection API

在home目录下新建tensroflow目录。TensorFlow Object Detection API 存放在 tensorflow /models 项目下的。(地址: https://github.com/tensorflow/models)

    mkdir tensorflow
    cd tensorflow
    git clone https://github.com/tensorflow/models.git

 在clone的时候有可能比较慢,或提示网络超时。多试几次即可。clone完成后在tensorflow文件夹下有名为models的文件夹,在models文件夹下有research文件夹

~~~~~~~~~~`

下载TensorFlow Model模型库

TensorFlow 模型库包含了很多开源的模型,包括图像分类、检测、自然语言处理NLP、视频预测、图像理解等等,我们要学习的对象检测API也包括在这里面,可以用git checkout到本地,也可以直接在github下载zip包,本文直接下载的zip包(大概415M,虽然我们只会用到里面很少一部分内容)

下载后,解压到~/tensorflow目录下,为了与github目录结构一致,我们将models-master目录重命名为models

得到如下目录结构~/tensorflow/models/research/object_detection


原文:https://blog.csdn.net/chenmaolin88/article/details/79371891  
 

~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~


4、protobuf编译

在research/object_detection/protos目录下有很多.proto文件,需要将这些.ptoto文件编译成.py文件。使用protoc对proto文件进行编译

protoc ~/tensorflow/models/research/object_detection/protos/*.proto --python_out=.

执行上述命令后,提示如下错误:

object_detection/protos/ssd.proto:104:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:104:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.


查看protoc的版本是2.6.1,在以前的文章中说明2.6.1版本上OK的。但我下载的TensorFlow Object Detection API是2018年9月初的版本,protoc的2.6.1版本太低了。

    protoc --version
    libprotoc 2.6.1

需要升级protoc版本。首先卸载protoc旧版本。注意与第1步骤中安装protoc的命令参数对应

    sudo apt-get remove protobuf-compiler
    protoc --version
    bash: /usr/bin/protoc: No such file or directory

到 https://github.com/google/protobuf/releases 下载最新的protoc安装包 protobuf-all-3.6.1.tar.gz

下载完后解压,然后执行下面的命令编译安装:

    $ cd protobuf-3.6.1
    $ ./configure --prefix=/usr
    $ make -j15
    $ make check -j15
    $ sudo make install -j15
    $ sudo ldconfig
    $ protoc --version
    libprotoc 3.6.1
      
     

安装后查看protoc版本为3.6.1 版本。再重新执行编译命令

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

命令执行成功,没再报错。查看protos目录下,有相应的.py文件

anchor_generator_pb2.py
anchor_generator.proto
argmax_matcher_pb2.py
 argmax_matcher.proto
bipartite_matcher_pb2.py
bipartite_matcher.proto
5、将slim添加到PYTHONPATH

TensorFlow Object Detection API 是以 Slim 为基础实现的,需要将 Slim 的目录加入 PYTHONPATH 后才能正确运行。为方便起见,直接在.bashrc  文件中添加如下一行。

export PYTHONPATH=$PYTHONPATH:/your home path/tensorflow/models/research:/your home path/tensorflow/models/research/slim

其中/your home path/请根据你自己的安装目录修改。然后执行

source ~/.bashrc
6、验证测试

执行如下命令:(注意,下述命令必须是python3 ,而不能是python)

kou@aikou:~/tensorflow/models/research$ python3 object_detection/builders/model_builder_test.py

运行结果:

......................
----------------------------------------------------------------------
Ran 22 tests in 0.098s

OK

---------------------  
作者:pkokocl  
来源:CSDN  
原文:https://blog.csdn.net/pkokocl/article/details/82596089  
版权声明:本文为博主原创文章,转载请附上博文链接!

7、跑demo:https://blog.csdn.net/chenmaolin88/article/details/79371891

接下来,我们跑一个demo,你可以在这个路径下运行jupyter notebook打开笔记本,然后用笔记本打开/object_detection/object_detection_tutorial.ipynb

(然后输入jupyter notebook,就会调用浏览器(Chrome)打开当前文件夹,点开 object_detection_tutorial.ipynb,

在新标签页中打开 Object Detection Demo,点击上方的 “Cell”-"Run All",就可以直接看到结果,最后输出的是两张图片的识别结果,分别是狗,以及沙滩。第一次运行由于需要下载训练好的模型,耗时较长。第二次之后可以将 .ipynb文件中 Download Model 即 in[5]部分的代码注释掉,以加快运行速度。)

注意,下面这个demo里第4步是从网络中下载预训练模型文件,若执行的时候速度很慢,可以单独去下载这个模型文件,然后解压到相应目录,确保存在object_detection/ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb 文件,然后屏蔽到代码中下载指令,如图所示,把Download Model代码块设置MarkDown或直接注释掉也可以。
 

接下就一步步执行里面的代码,看看最后的结果是否如下图,更多的细节和功能大家自己去研究研究吧:

~~~~~~~~~~~~~~~~~~~~~~`

https://blog.csdn.net/pkokocl/article/details/82596089

报错:解决办法见上述博客

liuliu@liuliu:/usr/local/lib/python3.5/dist-packages/tensorflow/models/research$ sudo protoc object_detection/protos/*.proto --python_out=.
[sudo] password for liuliu:
object_detection/protos/ssd.proto:110:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:110:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.

报错分析:

查看protoc的版本是2.6.1,在以前的文章中说明2.6.1版本上OK的。但我下载的TensorFlow Object Detection API是2018年9月初的版本,protoc的2.6.1版本太低了。

    protoc --version
    libprotoc 2.6.1

需要升级protoc版本。首先卸载protoc旧版本。注意与第1步骤中安装protoc的命令参数对应

    sudo apt-get remove protobuf-compiler
    protoc --version
    bash: /usr/bin/protoc: No such file or directory

到 https://github.com/google/protobuf/releases 下载最新的protoc安装包 protobuf-all-3.6.1.tar.gz

下载完后解压,然后执行下面的命令编译安装:

    $ cd protobuf-3.6.1
    $ ./configure --prefix=/usr
    $ make -j15
    $ make check -j15
    $ sudo make install -j15
    $ sudo ldconfig
    $ protoc --version
    libprotoc 3.6.1
      
     

安装后查看protoc版本为3.6.1 版本。再重新执行编译命令

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

命令执行成功,没再报错。查看protos目录下,有相应的.py文件

anchor_generator_pb2.py
anchor_generator.proto
argmax_matcher_pb2.py
 argmax_matcher.proto
bipartite_matcher_pb2.py
bipartite_matcher.proto
 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

https://blog.csdn.net/Allen__Iverson/article/details/84038113

解决Failed to get convolution algorithm. cudnn failed to initialize...

服务器环境

Ubuntu16.04、cuda9.0、cudnn7.0、tensorflow1.12.0、python3.5、1080ti
错误

Failed to get convolution algorithm. cudnn failed to initialize…
原因

tensorflow版本太高
解决方案

sudo pip3 install --upgrade --force-reinstall tensorflow-gpu==1.9.0 --user
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

猜你喜欢

转载自blog.csdn.net/weixin_41078740/article/details/84617166