环境:win10+tensorflow1.10+cpu
from preprocessing import ssd_vgg_preprocessing
from notebooks import visualization这里报错找不到ssd_vgg_300之类的,也不知道什么原因)
浏览器弹出的界面
修改这几个地方!!!!!!!
(这里image_names[-6]表示测试文件夹中的倒数第几张图片,可以自己改变)
等待结果出现
注:如果是自己制作的数据集,文件夹格式也应该和voc一样!!
Annotions:存放图片信息的xml;
JPEGImages:存放着图片
ImageSets:里面的文件夹main存放着训练集,验证集,测试集划分的信息(从voc提取需要的类或者是自己的数据之后,需要划分生成这四个文本,详细代码请看另一篇博客:python划分训练,测试,验证集)如果是voc2012,voc2007数据集,本来就有的~
2. 修改datasets文件夹中pascalvoc_common.py文件,将训练类修改别成自己的。
3.将图像数据转换为tfrecods格式,修改datasets文件夹中的pascalvoc_to_tfrecords.py文件,然后更改文件的83行读取方式为’rb‘,如果你的文件不是.jpg格式,也可以修改图片的类型。
命令:
Window系统下:
(1)修改最大训练步数
(2)由于我是cpu运行,我还改了这里(如果是gpu训练,可以不用改)
(3)修改训练的类别数
(4)可以改变初始学习率,batch size,多久保存一下模型,看自己
(1)
(2)
(3)
(4)
链接:https://pan.baidu.com/s/1diWbdJdjVbB3AWN99406nA 密码:ge3x(来自参考博主)
命令:(# (1)通过加载预训练好的vgg16模型,对数据集进行训练) 从vgg开始训练其中某些层的参数
python train_ssd_network.py -train_dir=D:\ssd_tensorflow\SSD-Tensorflow-master\logs -dataset_dir=D:\ssd_tensorflow\SSD-Tensorflow-master\tfrecords -dataset_name=pascalvoc_2007 -dataset_split_name=test -model_name=ssd_300_vgg -checkpoint_path=D:\ssd_tensorflow\SSD-Tensorflow-master\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=4
train_dir:#训练生成模型的存放路径
dataset_dir:#数据存放路径
dataset_name:#数据名的前缀
model_name: 加载的模型的名字
checkpoint_path: 所加载模型的路径
checkpoint_model_scope:所加载模型里面的作用域名
checkpoint_exclude_scopes:指定哪些层的参数不需要从vgg16模型里面加载进来
trainable_scopes:指定哪些层的参数是需要训练的,未指定的参数保持不变,若注释掉此命令,所有的参数均需要训练
save_summaries_secs:多久保存一下日志
save_interval_secs:多久保存一下模型
weight_decay:正则化的权值衰减的系数
optimizer:选取的最优化函数
learning_rate:学习率
learning_rate_decay_factor:学习率的衰减因子
batch_size:每一批次处理的图片数量
(当你的模型通过vgg训练的模型收敛到大概o.5mAP的时候,可以进行这一步的fine-tune)
# 通过加载预训练好的vgg16模型,对“voc07trainval+voc2012”进行训练
# 通过checkpoint_exclude_scopes指定哪些层的参数不需要从vgg16模型里面加载进来
# 通过trainable_scopes指定哪些层的参数是需要训练的,未指定的参数保持不变
DATASET_DIR=/home/doctorimage/kindlehe/common/dataset/VOC0712/
TRAIN_DIR=.././log_files/log_finetune/train_voc0712_20170816_1654_VGG16/
CHECKPOINT_PATH=./log_files/log_finetune/train_voc0712_20170712_1741_VGG16/model.ckpt-253287
python3 ../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_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 \ #每60s保存一下日志
--save_interval_secs=600 \ #每600s保存一下模型
--weight_decay=0.0005 \ #正则化的权值衰减的系数
--optimizer=adam \ #选取的最优化函数
--learning_rate=0.001 \ #学习率
--learning_rate_decay_factor=0.94 \ #学习率的衰减因子
--batch_size=24 \
--gpu_memory_fraction=0.9 #指定占用gpu内存的百分比
# 注释掉CHECKPOINT_PATH,不提供初始化模型,让模型自己随机初始化权重,从头训练
# 删除checkpoint_exclude_scopes和trainable_scopes,因为是从头开始训练
# CHECKPOINT_PATH=./log_files/log_finetune/train_voc0712_20170712_1741_VGG16/model.ckpt-253287
python3 ../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_model_scope=vgg_16 \ #所加载模型里面的作用域名
--save_summaries_secs=60 \ #每60s保存一下日志
--save_interval_secs=600 \ #每600s保存一下模型
--weight_decay=0.0005 \ #正则化的权值衰减的系数
--optimizer=adam \ #选取的最优化函数
--learning_rate=0.00001 \ #学习率
--learning_rate_decay_factor=0.94 \ #学习率的衰减因子
--batch_size=32