#一、数据准备
###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文件进行验证。
目前我还没跑出结果,截个图给大家瞅瞅先!还在训练中,估计跑一天。。。
继续补充结果