【tensorflow】Object DetectionAPI训练识别自己的数据集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ACBattle/article/details/80787486

#一、数据准备
###1.一个友好的标注工具
各种系统安装已经再此介绍的很详细了,linux下可以三行命令解决。

注意:图片要求是png或者jpg格式

1> . 标注信息存为xml文件,使用该脚本可以将所有的xml文件转换为1个csv文件(自行修改xml路径)
2> . 把生成的csv文件分成训练集和测试集
###2.生成TFRecord文件
使用该脚本分别生成train.record 和 test.record.
记得修改其中三处路径,以及分类标识数据类型(中文有注释),分两次运行哦!
#二、环境搭建
###1.tensorflow 版本 >= 1.4.0
具体的安装,自行百度
###2.部署tensorflow model
1> . 从这里下载下整个models,解压,假设放在了A目录下;
注意:下文中的A 都表示下载的model文件的目录位置
2> . 这一步分linux和window介绍

------------------------------------------------linux开始----------------------------------------------------
进入A/models/research/目录,右键打开终端,运行
protoc object_detection/protos/*.proto --python_out=.      
添加slim和models/research路径,相当于环境变量
gedit ~/.bashrc
在该文件末,添加:
export PYTHONPATH=$PYTHONPATH:/A/models/research/slim:/A/models/research/
更新文件
source ~/.bashrc

------------------------------------------------linux以上结束----------------------------------------------------


------------------------------------------------window开始-----------------------------------------------------
下载protoc-3.3.0-win32.zip
解压后,运行一下protoc.exe文件
打开cmd窗口,cd到A/models/research/目录下(老版本没有research目录),执行如下:
protoc object_detection/protos/*.proto --python_out=.
将生成一堆python文件
然后为python添加默认模块搜索路径三种方式
本人选择的第三种,增加.pth文件
在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称,也就是下面两行:
A\models\research A\models\research\slim
然后保存为了.pth文件,名字随意选,然后放在Python运行能扫描到的地方,我放在了python下的lib下的site-packages里,因为python运行一定会经过这里。

------------------------------------------------window以上结束-----------------------------------------------------

3> . 两个系统都必须经过这一步
测试安装,进入到A/models/research/目录下,运行

python  object_detection/builders/model_builder_test.py

如果发现前方有坑:

Traceback (most recent call last):
  File "object_detection/builders/model_builder_test.py", line 21, in <module>
    from object_detection.builders import model_builder
ImportError: No module named 'object_detection'

说明前边模块文件路径配置没有成功。
#三、训练自己的数据
###1.下载模型
模型地址
选择其中的下载
###2.创建标签分类的配置文件(label_map.pbtxt)

item {
  id: 1 # id一定要从1开始编号
  name: 'syjxh'
}

item {
  id: 2
  name: 'dnb'
}

放在一个位置就好
###3.修改对应的pipline配置文件
找到\object_detection\samples\configs\XXXXXXXXXXX.config文件,XXXXXXXXXXX需要和你下载的模型一致的配置文件,复制到\test\data文件夹下,修改一下几处:

# ====修改 1=====
num_classes:2    # 根据你的目标分类来,我这里一共标记了6种对象
# ====修改 2=====
# 因为我们是重新训练模型,所以这里注释掉模型检测点,并将from_detection_checkpoint该为false
# fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"  
  from_detection_checkpoint: false
  num_steps: 200000  # 训练次数
# ====修改 3=====
train_input_reader: {
  tf_record_input_reader {
    # 训练样本路径
    input_path: "A/models/test/data/train.record" 
  }
  # 标签分类配置文件路径
  label_map_path: "A/models/test/label_map.pbtxt"
}

# ====修改 4=====
eval_input_reader: {
  tf_record_input_reader {
    # 验证样本路径
    input_path: "A/models/test/data/eval.record"
  }
   # 标签分类配置文件路径
  label_map_path: "A/models/test/label_map.pbtxt"
  shuffle: false
  num_readers: 1
}

###4.开始训练啦!!!!
直接使用object_detection\train.py文件进行训练即可,参数如下:

--logtostderr
--pipeline_config_path=F:/TensorFlow/models/test/data/ssd_inception_v2_pets.config
--train_dir=F:/TensorFlow/models/test/training

配置好参数后,直接run起来,接下来就是漫长的等待,训练过程中可以使用eval.py文件进行验证。
目前我还没跑出结果,截个图给大家瞅瞅先!还在训练中,估计跑一天。。。

这里写图片描述


继续补充结果


参考:
博客1,
博客2

猜你喜欢

转载自blog.csdn.net/ACBattle/article/details/80787486
今日推荐