-
实验准备
ssd项目代码:ssd_tensorflow
数据集下载:VOC2007
vgg_16.ckpt -
新建相关的文件夹
将解压下来的项目代码和VOC2007和vgg_16.ckpt
VOC2007的文件夹目录如下
-
xml文件转换为tfrecord格式文件
运行根目录下的tf_convert_data.py文件将xml文件转化成tfrecord文件
python tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./VOC2007/ --output_name=voc_2007_train --output_dir=./tfrecords1
如果出现以下错误
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte
解决方法:修改datasets目录下的pascalvoc_to_tfrecords.py的第83行
原来是r现在改成rb
- 训练
运行train_ssd_network.py
python train_ssd_network.py
--train_dir=./logs/
--dataset_dir=./tfrecords1/
--dataset_name=pascalvoc_2007
--dataset_split_name=train
--model_name=ssd_300_vgg
--checkpoint_path=./checkpoints/vgg_16.ckpt
--checkpoint_model_scope=vgg_16 --checkpoint_exclude_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box --trainable_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box
--save_summaries_secs=60
--save_interval_secs=100
--weight_decay=0.0005
--optimizer=adam
--learning_rate=0.001
--learning_rate_decay_factor=0.94
--batch_size=4
--gpu_memory_fraction=0.7
训练调参也可参考作者的
https://github.com/balancap/SSD-Tensorflow
5. 测试效果
训练自己的数据集