TensorFlow Object Detection API 训练VOC2012数据集

  • Post author:
  • Post category:其他


安装好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的其余网络相关的注释掉即可

再次运行训练命令,开始训练

训练

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

打开tensorboard查看loss,如出现端口6006问题,参考另一篇

博客


输入命令查看:

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



版权声明:本文为weixin_35654926原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。