目录
2.下载的文件比较大,因为其中已经包含了一个VGG的模型,解压这个模型:
通俗易懂介绍复现基于tensorflow的SSD:
I 实现demo,运用训练好的模型进行测试
1.首先下载完整的代码:
https://github.com/balancap/SSD-Tensorflow
2.下载的文件比较大,因为其中已经包含了一个VGG的模型,解压这个模型:
unzip ssd_300_vgg.ckpt.zip
3.我们先试一下SSD的检测效果:
jupyter notebook notebooks/ssd_notebook.ipynb
但我还是喜欢直接用python文件,所以不用管上面这条语句,把
ssd_notebook.ipynb的内容全部copy到demo.py(自己新建的)中,直接运行会报错,因为没装jupyter,千万记住是装jupyter,而不是notebooks。可以pip install jupyter,也可以用pycharm里直接搜索然后安装。如果是想使用pip 安装指定的目录下,可以参考我的另一篇博客:https://mp.csdn.net/postedit/86552214
另外需要注意的是,如果使用的是python2.7,notebooks是找不到的,因此需要在notebook目录下新建一个
__init__.py 文件。
运行demo.py结果如下:
II 接下来介绍如果训练:
先下载数据,数据集使用公开的pascal_voc2007:
1.下载数据:
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
解压:
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
最后文件的目录如下:
2.生成TF-Record文件:
新建一个run.sh文件,内容如下:
#!/usr/bin/env bash
DATASET_DIR=VOC2007/
OUTPUT_DIR=./tfrecords_
python ./tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_train \
--output_dir=${OUTPUT_DIR}
上面定义的两个路径时你自己的数据路径,执行结果如下:
3.训练
创建一个sh脚本文件为train.sh,内容如下:
#!/usr/bin/env bash
DATASET_DIR=./tfrecords_/
TRAIN_DIR=./train_model/
CHECKPOINT_PATH=./checkpoints/vgg_16.ckpt
python3 ./train_ssd_network.py \
--train_dir=./train_model/ \
--dataset_dir=./tfrecords_/ \
--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=600 \
--weight_decay=0.0005 \
--optimizer=adam \
--learning_rate=0.001 \
--learning_rate_decay_factor=0.94 \
--batch_size=24 \
--gpu_memory_fraction=0.9
训练效果: