【TensorFlow Object Detection API 】Ubuntu16.04 训练自己的数据集 (一)

本文详细介绍了在Ubuntu16.04上使用Tensorflow Object Detection API训练自定义数据集的环境配置步骤,包括拉取代码、安装依赖、Protobuf配置以及添加Libraries路径。针对配置过程中可能遇到的问题,如protobuf版本和Tensorflow版本要求,给出了解决方案。文章末尾提供了进一步的参考资料和问题求助途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tensorflow Object Detection API

Tensorflow Object Detection API 是Tensorflow官方提供的一个目标检测的实现,可靠而且更新速度极快。就我个人使用的感受而言,好用但是坑也不少。现在就写一下我个人的训练过程,希望能给各位提供一个参考。

 

环境配置

Tensorflow Object Detection API 最近更新之后我个人是觉得环境配置方面更省心了,出的问题也少了很多。然而虽然环境配置问题少了,但是训练和测试的问题反而多了起来。

根据官方的指引,配置其实非常简单,官方指引 在这里 。

1. 拉取必要的文件

第一步当然是拉取一大堆的代码了,在你的工作目录使用下面的命令拉取。 无论是否是从源码编译的Tensorflow,我都建议你重新获取,因为最近Tensorflow Object Detection API 有更新,我是按照目前最新的版本来写的(我是8月8日拉取的代码)。如果你使用的版本和我不一致,可能出现一些我没有遇到的问题。

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

如果你在国内拉取,可能出现速度缓慢的问题,可以参照我的另一篇博客解决这个问题。

2. 安装必要依赖

这里的依赖全部按照官方要求安装就可以了,另外注意,如果你最后想使用的 xx_fpn 的算法,最好将你的Tensorflow 更新至**1.9.0及以上**,这样在export inference graph 时候不会出现问题。

**具体依赖在这里:**

Tensorflow Object Detection API depends on the following libraries:

Protobuf 3.0.0
Python-tk
Pillow 1.0
lxml
tf Slim (which is included in the "tensorflow/models/research/" checkout)
Jupyter notebook
Matplotlib
Tensorflow (>=1.9.0)
Cython
contextlib2
cocoapi

**安装依赖:**
 

# For CPU
pip install tensorflow
# For GPU
pip install tensorflow-gpu

sudo apt-get install protobuf-compiler python-pil python-lxml python-tk
pip install --user Cython
pip install --user contextlib2
pip install --user jupyter
pip install --user matplotlib


# 如果你的apt-get总出问题 可以尝试sudo apt-get update 命令,执行完毕后再使用上述 apt-get install 命令安装必要依赖。 
# 如果未能解决,可以尝试仅使用 pip install 安装依赖, 命令如下

pip install --user Cython
pip install --user contextlib2
pip install --user pillow
pip install --user lxml
pip install --user jupyter
pip install --user matplotlib


# 这个 '--user' 的参数是仅给当前用户组安装,如果你是使用虚拟环境的,别忘记加上这个参数

3. 使用 Protobuf 完成配置

这一步经常出各种各样的问题,找不到文件或者执行过程中有一两个文件报错说缺少参数什么的。这些我都一一解决过了,下面是具体步骤

**检查当前 protoc 版本号 :**

使用下面的命令检查当前版本号:

protoc --version

# 我的输出为 libprotoc 3.4.0

如果你的版本号低于3.4.0 执行过程中将会出现问题,具体更改 protoc 版本的方法为

# 查询protoc的具体位置,命令如下

which protoc

# 我的输出为 /usr/bin/protoc,这就意味着我当前使用的protoc位置在此

# 下载linux_x64对应的protoc,亲测适合Ubuntu 16.04,命令如下

wget https://github.com/google/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip

# 此版本应该适合绝大多数linux 
# 如果不适合你或者你是windows用户 
# 请参考我的另一篇windows环境配置博客 
# 或者 在github protobuf/releases下寻找自己合适的包下载

# 下载完成后需要解压, wget 和 unzip 都需要安装
# 如果提示你未找到该命令,可以使用下面命令安装
# installing wget
sudo apt-get install wget
# installing unzip
sudo apt-get install unzip

# 解压   -d参数指定解压出来的目录名为 protoc3
unzip protoc-3.4.0-linux-x86_64.zip -d protoc3

# 复制protoc 到对应目录
sudo cp -rf protoc3/bin/* /usr/bin/       
# 这个 /usr/bin/就是你刚刚 which protoc 执行打印的那个目录,有人是 /usr/local/bin/
# 注意不要复制错了目录
sudo cp -rf protoc3/include/* /usr/include/
# 同理,有的人是 /usr/local/include/

# 重新查询protoc 版本号,如果你复制的目录没错,应该已经是 3.4.0了
protoc --version

此时你的protoc 版本号应该已经正确了,那么下一步就是执行protoc

# 执行此命令的目录为 xx/models/research/

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

# 未报错即为成功

4. 添加 Libraries 路径并测试

# 执行此命令的目录为 xx/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

如果不每次跑之前都手动添加Libraries,就需要改一堆文件,还不如这样省心。你可以把这个 `pwd`改为 xx/models/research/ 然后写入 ~/.bashrc 就不用每次都重新执行一遍了。

**测试命令如下:**

python object_detection/builders/model_builder_test.py

# 如没有错误,会输出OK

 

至此,环境配置方面就算是完成了。下一部分将讲解如何将自己的图片制作为训练集,并如何送入训练。同时,如果你有任何问题,欢迎你在这里提问。也推荐你到Github官方讨论区提问,地址在这里

 

参考目录

  1. Peter, Szoldan. ObjectDetecionAPI TypeError: __new__() got an unexpected keyword argument 'serialized_options'[EB/OL]. https://stackoverflow.com/questions/50338968/objectdetecionapi-typeerror-new-got-an-unexpected-keyword-argument-seria.
  2. pkulzc. Installation[EB/OL]. https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值