一 数据格式转换
1.从github上下载项目并解压
2.下载VOC2007数据集,并放在如下目录:
3.格式转换
首先修改datasets / pascalvoc_to_tfrecords.py中83行, r ---> rb, 如下:
image_data = tf.gfile.FastGFile(filename, 'rb').read()
在VOC2007下建立convert_train.sh脚本,内容如下:
#!/bin/bash
DATASET_DIR=./image/train/
OUTPUT_DIR=./tfrecords/train
python ../tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_train \
--output_dir=${OUTPUT_DIR}
同样建立convert_test.sh脚本,内容如下:
#!/bin/bash
DATASET_DIR=./image/test/
OUTPUT_DIR=./tfrecords/test
python ../tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_test \
--output_dir=${OUTPUT_DIR}
分别运行脚本进行数据格式转换
二 用训练好的模型测试
下载训练好的模型, 按如下写好test.sh脚本, 改好自己的路径
#!/bin/bash
DATASET_DIR=./tfrecords/test
EVAL_DIR=./logs/test_logs/
CHECKPOINT_PATH=../checkpoints/ssd_300_vgg_120000/VGG_VOC0712_SSD_300x300_iter_120000.ckpt
python ../eval_ssd_network.py \
--eval_dir=${EVAL_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=pascalvoc_2007 \
--dataset_split_name=test \
--model_name=ssd_300_vgg \
--checkpoint_path=${CHECKPOINT_PATH} \
--batch_size=1
测试输出结果:
2018-07-18 16:24:31.317474: I tensorflow/core/kernels/logging_ops.cc:79] AP_VOC07/mAP[0.59928033396046509]
2018-07-18 16:24:34.181961: I tensorflow/core/kernels/logging_ops.cc:79] AP_VOC12/mAP[0.60921422042100792]
INFO:tensorflow:Finished evaluation at 2018-07-18-08:24:34
Time spent : 522.992 seconds.
Time spent per BATCH: 0.106 seconds.
之后在test_log文件夹下会生成两个文件, 在此目录下运行以下命令后,在浏览器打开127.0.0.1:6006即可看到各种数据,还有网络结构.
tensorboard --logdir ./
三 训练
首先修改train_ssd_network.py的154行,None修改成你要迭代的次数,例如5000
之后在VOC2007目录下创建train.sh脚本,并添加如下内容:
#!/bin/bash
DATASET_DIR=./tfrecords/train
TRAIN_DIR=./logs/train_from_ssd_300_vgg/
CHECKPOINT_PATH=../checkpoints/ssd_300_vgg/ssd_300_vgg.ckpt
python ../train_ssd_network.py \
--train_dir=${TRAIN_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=pascalvoc_2007 \
--dataset_split_name=train \
--model_name=ssd_300_vgg \
--checkpoint_path=${CHECKPOINT_PATH} \
--save_summaries_secs=60 \
--save_interval_secs=600 \
--weight_decay=0.0005 \
--optimizer=adam \
--learning_rate=0.001 \
--batch_size=16
运行脚本进行训练