利用Tensorflow实现SSD架构model训练(voc2012)

一、VOC图片获取

VOC数据下载地址:

找到上图位置,下载training/validation data 和 development kit code and documentation

二、VOC图片格式转换为TFRcord

因为tf训练需要tfrecord格式,所以首先需要把VOC数据集转换成record格式,ObjectDetectionAPI下提供了格式转换的方法:create_pascal_tf_record.py

需要把164行examples_path修改为:data_dir, year, ‘ImageSets’, ‘main’, FLAGS.set + ‘.txt’

VOC数据集和转换的record数据集可以自己选择相应的路径,把create_pascal_tf_record.py文件copy到与objectdetection同级目录下,然后进入dos界面,进入create_pascal_tf_record.py复制后的文件夹路径下,输入:

Python create_pascal_tf_record.py --data_dir=...VOCdevkit (voc数据集路径) --year=VOC2012(相应的年份) --set=train --output_path=....**_train.record(输出文件路径)

Python create_pascal_tf_record.py --data_dir=...VOCdevkit (voc数据集路径) --year=VOC2012(相应的年份) --set=val --output_path=....**_val.record(输出文件路径)

如果在相应的输出路径生成record文件,则说明转换成功

三、利用TFRcord在SSD架构下训练model

1、下载SSD训练model

下载地址:

2、解压到一定路径,进入文件将model.ckpt.*的三个文件copy到VOC文件夹下面

3、将object_detection/samples/configs/ssd_mobilenet_v1_pets.config文件copy到2步骤文件夹下,修改配置:

A) num_classes:修改为自己的classes num, 这里是20

B) 将所有PATH_TO_BE_CONFIGURED的地方类比修改为自己之前设置的路径(5处),按照自己的路径修改即可

C) 还可以根据自己电脑配置以及训练效果更改batch_size ,learning rate, step

4、将..models esearchslim下面的deployment 和 nets文件夹copy到与object_detection文件夹同级目录

5、在object_detection 文件夹下找到train.py 将他复制到和object_detection同级目录下,进入dos窗口,进入train.py路径下,输入:

Python train.py --train_dir=’../train’(model 输出存放路径) --pipeline_config_path=’../ssd_mobilenet_v1_pets.config’

出现下图说明训练成功

四、固化model

Object detection api 提供了export_inference_graph.py,可将训练好的model转换为pb文件,达到固化的效果

同样,在object_detection下找到export_inference_graph.py,将他copy到object_detection同级目录下,进入dos窗口,进入export_inference_graph.py路径下输入:

python export_inference_graph.py --input_type image_tensor

--pipeline_config_path ../ssd_mobilenet_v1_pets.config

--trained_checkpoint_prefix ../model.ckpt[step]* (step是训练的次数,必须与输出的model的一致,不然会无法获取model的size)

--output_directory ../result

在相应文件夹下出现pb文件说明固化成功

下面就可以直接用这个model了

参考:

经验分享 程序员 微信小程序 职场和发展