tensorflow object detection api学习笔记

参考博客:tensorflow object detection api 详细实践教程
基础环境:win10+anaconda3.5 和linux云服务器+anancnda3.5

第一次安装tensorflow object detection api,完全是参考@csdn_6105博客来的,配的过程可能不太对,以后继续更正

安装环境

创建虚拟环境:

  • 创建一个虚拟环境conda create -n tensorflow python=3.6,并安装tensorflow 安装tensorflow

接下来安装下面的包:

  • conda install -c anaconda protobuf
  • 用protoc --version查看安装的版本
    在这里插入图片描述
    关于protoc的安装,还有一种方法说直接下载源码后,解压就可以用的从这里下载

这里是引用

  • pip install pillow
  • pip install lxml
  • pip install Cython
  • pip install jupyter
  • pip install matplotlib
  • pip install pandas
  • pip install opencv-python(win10下安装成功)

如果opencv-python安装失败的话,可以选择离线安装,从此网站下载对应版本的whl文件,如win10+python=3.6版本就下载opencv_python-3.4.0-cp36-cp36m-win_amd64.whl文件

或者也可以参考这个链接,直接conda install -c menpo opencv(linux下安装成功)

查看opencv-python版本
import cv2
cv2.__version__

在这里插入图片描述

下载API

下载tensorflow目标检测API:tensorflow object detection api

  • https://github.com/tensorflow/models,下载的文件夹名称为models-master,里面包含了google开源的模型代码,目标检测源码存放在/research/object_detection目录下。
  • 在/research/object_detection/protos/目录下有很多以“.proto”结尾的文件,这些文件需要使用protoc程序编译成python文件。需要下载安装2.6.0以上版本的protoc进行编译。

配置变量

配置API的设置python搜索路径:永久性配置方法-没试过的

临时性方法(已测试):

  • set PYTHONPATH=pwd;pwd\research;pwd\research\slim
  • pwd是指解压的API文所在的路径,注意每次激活这个环境时都需要配置一下这个路径
  • 例如:set PYTHONPATH=D:\tensorflow_object_detection_api\models-master;D:\tensorflow_object_detection_api\models-master\research;D:\tensorflow_object_detection_api\models-master\research\slim 在D盘中新建一个文件夹tensorflow_object_detection_api,下载的API文件models-master解压在这里
  • 或者可以通过右击我的电脑–>属性–>高级系统设置–>环境变量–>新建系统变量的方式进行设置,这样就可以避免重复执行上述指令(永久)

在linux云服务器下:执行下面命令即可
export PYTHONPATH=$PYTHONPATH:/root/tensorflow/models:/root/tensorflow/models/research:/root/tensorflow/models/research/slim
还有种通过修改.bashrc文件来改,通过vi ~/.bashrc打开文件,按键a进入INSERT模式,直接在末尾加上上面的路径即可,再通过Esc+:+wq保存退出,没试过这种,因为我是在创建的虚拟环境中运行的,不清楚修改.bashrc文件后会不会影响其他环境,所以就每次启动环境时,都需要执行以下上面的命令

将API中的.proto文件编译为.py

编译API中/research/object_detection/protos/目录下以“.proto”结尾的文件

参考的博客中是一一列举了所有的.proto文件进行编译,但是我下载的是最新版本的proto里面更新了一些文件,所以也可以用另一个命令进行全部编译

方法一:注意先进入到\models-master/research文件夹下

protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto .\object_detection\protos\calibration.proto

方法二:全部直接编译,在\models-master/research/文件夹下输入

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

安装目标检测API

编译结束后,继续在当前窗口也就是research下安装API:

(tensorflow) D:\tensorflow_object_detection_api\models-master\research>python setup.py build
(tensorflow) D:\tensorflow_object_detection_api\models-master\research>python setup.py install

测试API安装成功没

安装好了,开始测试该API是否安装成功:
在步骤3.5执行完以后,我们cd到builders目录下,然后执行python model_builder_test.py 如果没报错的话,则表示安装成功(我的没有粗线参考博客上的那样子)。

修bug

开始bug了,不同的环境也有不同的bug,分别在win10+ananconda和linux云服务器上安装了:

  1. ModuleNotFoundError: No module named ‘tf_slim’
    解决方法:进入到models-master/research/slim/文件夹下,运行python setup.py install
  2. /root/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type,大段大段的警告
    解决方法:网上说时numpy版本过高,win10和linux都遇到了,降降版本后,亲测可以 pip install numpy==1.16.4
    在这里插入图片描述
  3. ModuleNotFoundError: No module named ‘absl’
    解决方法:pip install absl-py
    在这里插入图片描述
  4. 还有ModuleNotFoundError: No module named ‘tensorflow.compat’
    解决方法:说是因为tensorflow版本问题,win10遇到了,linux木有(tensorflow=1.14.0),
    反正就是重装tensorflow吧pip install tensorflow==1.14
    在这里插入图片描述
  5. win10还遇到过未找到文件的,那是因为在proto编译时,列举名称编译的,漏掉了一些,再重新编译下即可
    在这里插入图片描述
  6. 之后就是缺啥安啥

测试官方demo

测试官方demo:退回object_detection目录下,然后输入jupyter notebook,在跳出的浏览器页面上,打开.ipynb文件
在这里插入图片描述

在(win10)D:\tensorflow_object_detection_api\models-master\research\object_detection\colab_tutorials文件夹下有demo
打开object_detection_tutorial.ipynb文件
在这里插入图片描述
在这里插入图片描述
检测结果:
在这里插入图片描述
通过在终端中按 Ctrl + C(Mac及Linux上是按两次Ctrl + C),可以关闭整个服务器。这会立即关闭所有运行中的 notebook,所有未保存的内容会丢失。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值