基于tensorflow目标检测API训练自己的目标检测模型

准备

  1. 准备数据集,做好标注。把下载好的tensorflow的迁移训练文件(object_detection)放到工程目录下。使用labelImg工具标注
  2. xml转换到csv

因为用于训练的.record格式文件时用的是csv格式文件,可以通过xml_to_csv.py程序处理,其中xml_df = xml_to_csv(image_path) 其中image_path为xml目录路径。

安装pandas后,运行xml_to_csv.bat文件,会生成label.csv文件。

  1. 生成tfrecord格式文件

generate_tfrecord.py用于生成自己的tfrecord格式文件,其中#TO-DO replace this with label map 下的内容需要根据自己的数据集进行修改,修改为自己数据集的标签。

==generate_tfrecord.py要改内容啊==

tfrecord 文件相当于把图标和标注整合在一起的文件

  1. 准备.pbtxt文件,文件内容根据标签确定
  2. model.ckpt文件为训练模型,一般采用预训练模型,课降低训练所需时间,根据实际需求选择合适自己的模型,下载完成后解压,将名字带有models.ckpt的三个文件移动到training目录下。
  3. 改配置文件

配置文件目录在下载好的 object_detection\samples\configs 目录下。

选择对应的模型:ssd_mobilenet_v1_coco.config

复制到工作目录下,修改参数

num_classes:20
batch_size:16
num_steps:10000
fine_tune_checkpoint:"./training/model.ckpt"

num_steps训练次数不够可以改小点,每次训练会接着训练

  1. 训练模型

新建traindir文件夹

python train.py --logtostderr --pipeline_config_path=ssd_mobilenet_v1_coco.config --train_dir=train_dir/
pause

工程目录下需要 以下文件

/net

/PythonAPI

/deployment

遇到 OOM when allocating tensor with shape 报错时,请把批次大小改小。

  1. 模型导出

新建models文件夹

python export_inference_graph.py ^
--input_type image_tensor ^
--pipeline_config_path ssd_mobilenet_v1_coco.config ^
--trained_checkpoint_prefix train_dir/model.ckpt-20020 ^
--output_directory models
pause
  1. 模型评估

新建 eval_dir

python eval.py --logtostderr --pipeline_config_path=ssd_mobilenet_v1_coco.config --eval_dir=eval_dir/ --checkpoint_dir=train_dir/
pause

评估也会化很长时间。

查看方法:

  1. 先移动到工程目录
  2. 执行 tensorboard --logdir==eval_dir
  3. 访问网站