SSD系列之二:安装,调试(Tensorflow)


源代码Tensorflow
https://github.com/balancap/SSD-Tensorflow


 
1,构建数据集——tf_convert_data.py
python tf_convert_data.py --dataset_name=pascalvoc 
--dataset_dir=../VOCdevkit/VOCdevkit/VOC2012/ 
--output_name=voc_2012_train 
--output_dir=../VOCdevkit/VOCdevkit/VOC2012/TFRecord/

 

 
2,模型转换——caffe模型转换为tensorflow(checkpoint)
CAFFE_MODEL=./checkpoints/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel
python caffe_to_tensorflow.py 
--model_name=ssd_300_vgg 
--num_classes=21 
--caffemodel_path=${CAFFE_MODEL}

 

 
3,训练模型——train_ssd_network.py
A,可以自定义训练的明细(dataset, optimiser, hyper-parameters, model, ...)
B,可以载入ckeckpoints后fine-tune
python3 train_ssd_network.py --train_dir=./logs 
--dataset_dir=../VOCdevkit/VOCdevkit/VOC2012/TFRecord 
--dataset_name=pascalvoc_2012 --dataset_split_name=train 
--model_name=ssd_300_vgg 
--checkpoint_path=./checkpoints/VGG_VOC0712_SSD_300x300_iter_120000.ckpt 
--save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 
--optimizer=adam --learning_rate=0.001 --batch_size=8

 

 
4,测试
python3 eval_ssd_network.py --eval_dir=./logs/ 
--dataset_dir=../VOCdevkit/VOCdevkit/VOC2007/TFRecord/ 
--dataset_name=pascalvoc_2007 --dataset_split_name=train 
--model_name=ssd_300_vgg 
--checkpoint_path=./checkpoints/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt 
--batch_size=1

 

 
常见代码错误分析
1,源代码错误eval_ssd_network,增加flatten方法。
1 def flatten(x):
2     result = []
3     for el in x:
4          if isinstance(el, tuple):
5                result.extend(flatten(el))
6          else:
7                result.append(el)
8     return result
eval_op=flatten(list(names_to_updates.values()))

然后将原来的代码里slim.evaluation.evaluation语句里对应的eval_op参数修改如上

 
运行分析

代码打印了下列SSD使用到的超参数

不难看出,SSD的anchor_ratios在六张FM上不同。
结果如上所示,AP在07和12上都还显得不太好。一共花费640秒,平均每个BATCH花费0.127秒。注意这里batch_size为1,因此可以认为每张图需要0.127秒。
posted @ 2018-07-27 17:28  紫苑寺流歌  阅读(325)  评论(0)    收藏  举报