下载ssd-tensorflow版本的网址:https://github.com/balancap/SSD-Tensorflow
一、遇到的问题
1、import cv2报错 no module named cv2
解决办法:https://mp.csdn.net/postedit/90769863
2、pycharm同一目录下无法import明明已经存在的.py文件
链接:https://blog.csdn.net/wcx1293296315/article/details/81156036
3、报错: AttributeError: 'module' object has no attribute 'to_rgba'
主要是matplotlib版本引起的问题,可以降低其版本。
可运行如下代码:
sudo pip install matplotlib==2.2.0
4、jupyter notebook打开显示500 : Internal Server Error
在anaconda prompt中打开jupyter notebook新建一个文件时出现错误:500 : Internal Server Error
解决办法:pip install --upgrade --user nbconvert
二、训练步骤(不改变数据集的情况)
1、将数据转化为tensorflow统一的格式TFRecord
图一
Annotation:xml文件;JPEGImages:图片数据;
ImageSets:每个txt文档写的内容是图片的名没有后缀;
图二
新建一个.sh文件tf_convert_data.sh 内容:
#!/usr/bin/env bash
#训练数据存放路径,即图一
DATASET_DIR=/home/liangjing/PycharmProject/PASCAL_VOC/VOCtest_06-Nov-2007/VOC2007/
#tfrecords格式的文档存放路径
OUTPUT_DIR=/home/liangjing/PycharmProject/SSD-Tensorflow-master/tfrecords_test/
python3 ./tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_test \
--output_dir=${OUTPUT_DIR}
运行命令:sh tf_convert_data.sh ,若是无法运行,可利用chomd +x tf_convert_data.sh ,将其转化为可执行文件;
2、训练
新建train.sh文件,内容如下:
#!/usr/bin/env bash
#tfrecords格式的文档存放路径
DATASET_DIR=./tfrecord
TRAIN_DIR=./log/
#fineturn的model
CHECKPOINT_PATH=./checkpoints/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} \
--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 \
--save_summaries_secs=60 \
--save_interval_secs=600 \
--weight_decay=0.0005 \
--optimizer=adam \
--learning_rate=0.001 \
--batch_size=8 \
--ignore_missing_vars = True \
运行:sh train.sh