Tensorflow+SSD初步接触,测试+训练

环境:

Ubuntu16.04+CUDA8.0+Cudnn8.0v6.0+python3.5+tensorflow1.4

测试官方的模型:

1.  下载SSD-Tensorflow源码,下载模型ssd_300_vgg,(其实源码里有带的)存放在SSD-Tensorflow-master/checkpoints/目录下,并解压。

2.   在目录 ../SSD-Tensorflow-master/notebooks/ 打开终端,运行jupyter notebook   , 然后会进入服务器,打开ssd_notebook.ipynb,修改第6个cell的ckpt_filename = '../checkpoints/ssd_300_vgg.ckpt'--此处写自己想测试的模型路径及名字;修改第8个cell,path = '../demo/'--此处改成自己测试图片的文件夹路径,下面的[  ]中写测试的那张图片在文件夹中下标。点上面的  run  运行每一个小cell,到第8个就能看到结果了。如下图(1 2 3)

Tensorflow+SSD初步接触,测试+训练_第1张图片 

                     图(1)

   Tensorflow+SSD初步接触,测试+训练_第2张图片

                     图(2)

Tensorflow+SSD初步接触,测试+训练_第3张图片

                       图(3)

   有可能的错误:有可能报错缺少 matplotlib 等依赖包,sudo pip install matplotlib安装即可。运行到第四个cell有可能报错,把from notebooks import       visualization 改成 importnotebooks  就好。
3.    数据集格式转换:
        自己做成 voc 数据集格式。

Tensorflow+SSD初步接触,测试+训练_第4张图片
       转换tfrecords格式数据集时好像只用到标注信息 Annotations 和图片 imageSets,并不需要其它的东西,test中同样也只有这两个文件,生成测试数据集时用。
voc 格式的数据集做好以后,需要把数据集转换成tfrecords格式的能被 tensorflow 识别的类型,然后就需要修改一下源码,datasets \ pascalvoc_common.py,把它原有的20类修改成自 己数据集里的类别就好啦。如下图所示:
Tensorflow+SSD初步接触,测试+训练_第5张图片
然后还需要修改  datasets \ pascalvoc_to_tfrecords.py 中的
image_data = tf.gfile.FastGFile(filename, 'r').read()      ‘r’  改成  ‘rb’   不然会报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
然后在../SSD-Tensorflow-master目录下运行
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}
提前建文件夹 /tfrecords ,转换成的 训练数据就生成在里面了。
DATASET_DIR=./VOC2007/test/
OUTPUT_DIR=./tfrecords/
python tf_convert_data.py \
    --dataset_name=pascalvoc \
    --dataset_dir=${DATASET_DIR} \
    --output_name=voc_2007_test \
    --output_dir=${OUTPUT_DIR}
生成 测试数据,注意这两个命令的两处不同哦。。。(第一行和倒数第二行)
4.    训练自己的数据集
        训练中不收敛,等有好的结果再过来写吧。。
        

你可能感兴趣的:(Tensorflow+SSD初步接触,测试+训练)