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秒。

浙公网安备 33010602011771号