SSD_Tensorflow 运行指南

这里作为自己在运行SSD(Tensorflow)版本的一个记录。主要参考github中的内容,链接如下:

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

因为服务器上没有配置jupyter 所以我也没有使用jupyter的内容,直接从图片转换开始。基本上是翻译了github上的内容,加上自己的操作步骤。

 

1、在当前目录下创建文件夹,命名为 tfrecords

2、控制台运行:

python tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=/project/SSD-Tensorflow/data/VOC2007/test/ --output_name=voc_2012_train --output_dir=./tfrecords

 

--dataset_dir=/project/SSD-Tensorflow/data/VOC2007/test/  这里写的是VOC2007/test/ 在主机上的位置

原github中写的是2007,这样在训练的时候在tfrecords中找不到2012的图片名字,所以在这里直接改成了2012

结果可以看到显示的是:

>> Converting image 4952/4952
Finished converting the Pascal VOC dataset!


3、训练

下载ssd_300_vgg.ckpt.zip文件,解压到checkpoints文件夹下。

这个时候checkpoints文件夹下应该除了ssd_399_vgg.ckpt.zip文件之外,还有ssd_300_vgg_ckpt.data-000000-of-000001以及ssd_300_vgg_ckpt.index两个文件。

控制台运行:

python train_ssd_network.py --train_dir = ./logs/ --dataset_dir=./tfrecords --dataset_name=pascalvoc_2012 --dataset_split_name=train --model_name=ssd_300_vgg --checkpoint_path=./checkpoints/ssd_300_vgg.ckpt --save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 --optimizer=adam --learning_rate=0.001 --batch_size=32

 

就可以看到结果。

这里记录一个问题,刚开始我运行的语句是:

python train_ssd_network.py --train_dir = ./logs/ --dataset_dir=./tfrecords --dataset_name=pascalvoc_2012 --dataset_split_name=train --model_name=ssd_300_vgg --checkpoint_path=./checkpoints/ssd_300_vgg.ckpt.zip --save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 --optimizer=adam --learning_rate=0.001 --batch_size=32

后来又尝试了:

python train_ssd_network.py --train_dir = ./logs/ --dataset_dir=./tfrecords --dataset_name=pascalvoc_2012 --dataset_split_name=train --model_name=ssd_300_vgg --checkpoint_path=./checkpoints/ssd_300_vgg.ckpt.data-000000-of-000001 --save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 --optimizer=adam --learning_rate=0.001 --batch_size=32

 

这两个都会报错,结果如下:


DataLossError (see above for traceback): Unable to open table file ./checkpoints/ssd_300_vgg.ckpt.zip: Data loss: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator?

 

我的解决方法是:

不要指定某一个具体的文件,直接写ssd_300_ckpt, 就可以解决了。

 

过程中还遇到了一个问题,但是已经被前人解决掉了,记录如下:

Tensorflow: ValueError: Can't load save_path when it is None in single shot detection

出现这个问题是因为我原来是直接在sdd_300_vgg.ckpt.zip中解压的,这样在找这个ckpt的时候其实需要进两层目录,我只进了一层,所以找不到。

 

 

 

 

借鉴博客:

https://blog.csdn.net/yexiaogu1104/article/details/77416020

这篇博客看起来挺详细的,留作以后学习代码的备用。

 

你可能感兴趣的:(DL,SSD,Tensorflow)