如何用tensorflow中的object detection API来训练自己的数据集上的目标检测器

本文主要是介绍如何用tensorflow中的object detection API来训练自己的数据集上的目标检测器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这仍然是一个学习记录博~欢迎讨论

安装tensorflow object detection API

首先当然是要先安装tensorflow object detection API啦,网上有很多教程可以参考,比如:Ubuntu 16.04下安装TensorFlow Object Detection API(对象检测API)

P.S. 安装时需要注意的就是tensorflow-gpu的版本问题,你的tensorflow和tensorflow-gpu以及tensorflow API的版本都要一致,如果tensorflow-gpu版本是1.x的,那就不能安装2.x的API啦,有很多版本问题,使用的时候会报错的,比如:

ModuleNotFoundError: No module named 'tensorflow.contrib'; 'tensorflow' is not a package

我的tensorflow-gpu是1.13.1,我的tensorflow也是1.13.1,而我安装的API的版本是1.13.0~

基于浣熊的object detection

这个部分可以参考:用TensorFlow训练一个物体检测器(手把手教学版),写的真的蛮详细的。

不过文章里还是有点小问题的,所以在这里补充说明一下:

  • train.txt和test.txt文件的生成代码,博客里没有给全代码,下面给大家一段直接可以运行的代码来参考(路径自己改一下,运行一次就好了,不要重复运行,会一直追加写入的)
import os
import randomtrain_txt = open("xx/xx/dataset/train.txt", 'a+')
test_txt = open("xx/xx/dataset/test.txt", 'a+')pt = "xx/xx/xx/raccoon_dataset/images"
image_name = os.listdir(pt)count = 0
for temp in image_name:if temp.endswith(".jpg"):print(temp.replace('.jpg', ''))if count < 160:train_txt.write(temp.replace('.jpg', '')+'\n')else:test_txt.write(temp.replace('.jpg', '') + '\n')count += 1
  • 训练之前不要忘记添加环境变量
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

这里的pwd就是当前路径,一般我们都是切换到models/research/object_detection目录下来运行的,所以这个pwd就是object_detection所在的路径。

  • 训练所用的文件train.py,eval.py不在object_detection目录下,而在object_detection/legacy目录下,可能是版本变了,所以把train.py什么的挪了位置。

使用model_train.py代替train.py

如果不想使用老版本的train.py的话,可以用object_detection下的model_train.py进行训练,它把老版本的train.py和eval.py集合到了一起,model_train.py的源码解释可以参考一下:Tensorflow Object Detection API 源码分析之 model_main.py。

在终端输入:

python model_main.py \--pipeline_config_path=config文件所在路径 \--model_dir=模型数据输出的保存路径 \--num_train_steps=60000 \--num_eval_steps=20 \--alsologtostderr

不出意外的话就可以正常训练了,训练之后可以在model_dir文件夹中看到保存下来的模型。

:接下来冻结模型的导出以及模型的测试都还是和用TensorFlow训练一个物体检测器(手把手教学版)中介绍的一样。

这篇关于如何用tensorflow中的object detection API来训练自己的数据集上的目标检测器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539612

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)