SSD-tensorflow 测试与训练实践

url:http://www.studyai.com/article/3e454b9e

Github:https://github.com/balancap/SSD-Tensorflow

下载SSD工程压缩包

然后打开notebooks文件夹下的ssd_notebook.ipynb。。。。注释掉cell3

将cell6的ckpt_filename改为绝对路径,cell10的path也改为绝对路径

运行notebook,每个cell依次运行,最后会显示一张demo文件下的检测结果,这就是SSD的simple demo

测试-evaluation

测试就是用voc2007的test set来测试已经训练好的checkpoint的mAP,github上提供了三个已经训练好的model的checkpoint

需要做的准备有:
1. 下载voc2007的数据集,然后将test set转化成tfrecord(在转化时,源码只使用了annotations和jpegimages两个文件夹的内容来制作tfrecords)
2. 下载checkpoint,如voc2007和voc2012训练集训练的checkpoint(这个要到github上SSD的主页去下载,但是好像被墙了,不下载其实也没关系,因为前面自带的有一个checkpoint是可以用的)

下载好的voc2007文件test set 结构是这样的:

然后在SSD的工程下面创建一个shell脚本,调用tf_convert_data.py将test set转化成tfrecoeds:(注意:这里直接运行会碰到无法读取图片,UTF-8无法decode的Erro,解决办法是打开SSD工程—>datasets—>pascalvoc_to_tfrecords.py 。。。然后更改文件的83行读取方式为’rb’)

 
   
  1. #!/bin/bash
  2. #This is a shell script to convert Pascal VOC datasets(2007 and 2012) into TF-Records only.
  3. #Directory where the original dataset is stored
  4. DATASET_DIR=/home/wu/VOCtest_06-Nov-2007/VOCdevkit/VOC2007/
  5. #Output directory where to store TFRecords files
  6. OUTPUT_DIR=/home/wu/voc2007_test_tfrecords
  7. python3 ./tf_convert_data.py \
  8. --dataset_name=pascalvoc \
  9. --dataset_dir=${DATASET_DIR} \
  10. --output_name=voc_2007_test \
  11. --output_dir=${OUTPUT_DIR}

DATASET_DIR是下载的voc2007测试集的路径,OUTPUT_DIR是自己设置的保存tfrecords的路径,其他选项保持默认如截图

生成测试集的tfrecords后,继续在SSD工程下面创建一个shell脚本,调用eval_ssd_network.py使用刚刚生成好的tfrecords来测试checkpoint的准确率

 
   
  1. #!/bin/bash
  2. # This is the eval script.
  3. DATASET_DIR=/home/wu/voc2007_test_tfrecords/
  4. EVAL_DIR=/home/wu/ssd_eval_log/ # Directory where the results are saved to
  5. CHECKPOINT_PATH=/home/wu/Downloads/SSD-Tensorflow-master/checkpoints/VGG_VOC0712_SSD_300x300_iter_120000.ckpt
  6. python3 ./eval_ssd_network.py \
  7. --eval_dir=${EVAL_DIR} \
  8. --dataset_dir=${DATASET_DIR} \
  9. --dataset_name=pascalvoc_2007 \
  10. --dataset_split_name=test \
  11. --model_name=ssd_300_vgg \
  12. --checkpoint_path=${CHECKPOINT_PATH} \
  13. --batch_size=1

DATASET_DIR是刚刚保存tfrecords的路径,EVAL_DIR是自己设置用来保存测试结果的路径(生成结果后,在该路径下运行tensorboard可以查看可视化的结果),CHECKPOINT_PATH是下载的checkpoint的路径(如果未下载可以使用SSD工程本来自带的checkpoint),其他选项保持默认如图,最后运行脚本

windows下不用创建脚本,也可以在相应的路径下打开终端,直接使用命令调用相应得.py文件


训练-training

同上,先将训练集转化成tfrecords,然后打开train_ssd_network.py修改第154行的最大训练步数,将None改为比如50000。(第一次训练时,没发现,用voc2007训练集挂了十几个小时还在训练;查找原因tf.contrib.slim.learning.training函数中max-step为None时训练会无限进行。)

 
   
  1. #!/bin/bash
  2. DATASET_DIR=./tfrecords ###训练集转化成tfrecords存储的路径
  3. TRAIN_DIR=./logs/ ###存储训练结果的路径,包括checkpoint和event,自行指定
  4. CHECKPOINT_PATH=./checkpoints/ssd_300_vgg.ckpt
  5. python train_ssd_network.py \
  6. --train_dir=${TRAIN_DIR} \
  7. --dataset_dir=${DATASET_DIR} \
  8. --dataset_name=pascalvoc_2012 \ ###具体指定,可选项pascalvoc2007
  9. --dataset_split_name=train \
  10. --model_name=ssd_300_vgg \
  11. --checkpoint_path=${CHECKPOINT_PATH} \
  12. --save_summaries_secs=60 \
  13. --save_interval_secs=600 \
  14. --weight_decay=0.0005 \
  15. --optimizer=adam \
  16. --learning_rate=0.001 \
  17. --batch_size=32 ###GTX1070设置32,python会崩溃,改成16问题不大




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值