TensorFlow Object Detection API 训练VOC2012数据集

安装好Tensorflow 和 Tensorflow Object Detection API
下载好VOC2012数据集

1.准备训练集

Tensorflow对象检测API使用TFRecord文件格式读取数据。提供两个示例脚本(create_pascal_tf_record.py)将PASCAL VOC2012数据集转换为TFRecords

生成PASCAL VOC TFRecord文件

# 从 tensorflow/models目录运行
#首先解压数据集
tar -xvf VOCtrainval_11-May-2012.tar
python object_detection/create_pascal_tf_record.py \
    --label_map_path=object_detection/data/pascal_label_map.pbtxt \
    --data_dir=VOCdevkit --year=VOC2012 --set=train \
    --output_path=pascal_train.record
python object_detection/create_pascal_tf_record.py \
    --label_map_path=object_detection/data/pascal_label_map.pbtxt \
    --data_dir=VOCdevkit --year=VOC2012 --set=val \
    --output_path=pascal_val.record

结束后两个名为TFRecord文件pascal_train.record,并 pascal_val.record在tensorflow/models目录中,PASCAL VOC数据集的标签图可以在 object_detection/data/pascal_label_map.pbtxt

我的训练文件夹就放在object_detection里面,修改了API的原封性,不推荐

在object_detection新建文件夹train2012,执行后会在object_detection文件夹下生成pascal_train.record和pascal_val.record两个文件,将其移动到train2012,同时将data/pascal_label_map.pbtxt文件拷贝到train2012

2.下载SSDMobilenet模型

在object_detection新建trainmodels文件夹
应该在安装API的时候就已经下载好了,这里还是提出链接SSDMobilenet将其放在trainmodels

解压:
tar -xvf ssd_mobilenet_v1_coco_11_06_2017.tar.gz
将文件里面的model.ckpt.*的三个文件copy到trainmodels

添加配置文件:
将文件object_detection/samples/configs/ssd_mobilenet_v1_pets.config复制到trainmodels,打开做如下修改:
(1)num_classes:修改为自己的classes num ,这里为20
(2)将所有PATH_TO_BE_CONFIGURED的地方类比修改为自己之前设置的路径(5处),按照自己的路径修改即可

fine_tune_checkpoint: “/home/amax/hmw/models/object_detection/trainmodels/model.ckpt” 


input_path: “/home/amax/hmw/models/object_detection/tain2012/pascal_train.record” 

label_map_path: “/home/amax/hmw/models/object_detection/tain2012/pascal_label_map.pbtxt” 

input_path: “/home/amax/hmw/models/object_detection/tain2012/pascal_val.record” 

label_map_path: “/home/amax/hmw/models/object_detection/tain2012/pascal_label_map.pbtxt” 

3.开始训练
在medel目录下运行:

Python ‘/home/amax/hmw/models/object_detection/train.py’ –train_dir=’/home/amax/hmw/models/object_detection/train’ –pipeline_config_path=’/home/amax/hmw/models/object_detection/trainmodels/ssd_mobilenet_v1_pets.config

期间出现import的错误,可能是导入的模块有问题,将模块修改成路径即可
注:至于为什么我会出现以下问题,没搞明白
如:
from deployment import model_deploy
ImportError: No module named deployment
解决:from slim.deployment import model_deploy
如:
File“/home/amax/hmw/models/object_detection/builders/model_builder.py”, line 38, in
‘ssd_inception_v2’: SSDInceptionV2FeatureExtractor,
NameError: name ‘SSDInceptionV2FeatureExtractor’ is not defined
解决:修改builder.py将不是ssd_mobilenet的其余网络相关的注释掉即可

再次运行训练命令,开始训练
TensorFlow Object Detection API 训练VOC2012数据集_第1张图片

我是迭代到loss为5左右就开始在周围震荡,具体参数设置还没详细深究

打开tensorboard查看loss,如出现端口6006问题,参考另一篇博客
输入命令查看:

tensorboard --logdir=/home/amax/hmw/models/object_detection/train

你可能感兴趣的:(tensorflow)