SSD-Tensorflow-master训练自己的数据集

1.数据准备:

    自己的图片打标,做成VOC2007格式,文件夹路径对应。

2.修改VOC_LABELS为自己的labels:

    修改脚本".datasets/pascalvoc_common.py",修改里面的"VOC_LABELS",背景为0,其余改为自己的类。

3.生成训练数据:

    运行tf_convert_data.py,将其里面的路径修改为自己的路径。


修改代码:

a.修改:/datasets/pascalvoc_common.py

第一类none不要动,其他的类修改为自己数据集的类

b.修改:datasets/pascalvoc_to_tfrecords.py

文件中,82行,格式改为相对应的‘.jpg’或‘.jpeg’,83行‘r’改为‘rb'

c.修改:nets/ssd_vgg_300.py

num_classes=21,

no_annotation_label=21,

将其修改为自己的类+1

d.修改:eval_ssd_network.py

num_classes', 21

修改num_classes为“类别数+1”

e.修改:datasets/pascalvoc_2007.py

根据自己的训练数据修改整个文件

none类不要动,其他类修改为自己数据集的类,其中括号内的第一个数为图片数,第二个数为目标数(也就是bonding box数,关于如何计算目标数,我写了一个python文件,在附录中),52行和76行的total是所有类的总和;

NUM_CLASSES改为自己的类别数(不用加一)

f.修改:train_ssd_network.py

num_classes为“类别数+1”

g.修改:max_number_of_steps

修改‘None’为最大训练步数(如50000),设为None时训练会一直进行,需要手动停止

参数配置参照:

python train_ssd_network.py

--train_dir=./logs/

--dataset_dir=./tfrecords

--num_classes=3

--dataset_name=pascalvoc_2007

--dataset_split_name=train

--model_name=ssd_300_vgg

--checkpoint_path=./checkpoints/model.ckpt-63669

--save_summaries_secs=60

--save_interval_secs=600

--weight_decay=0.0005

--optimizer=adam

--learning_rate=0.001

--batch_size=8

--gpu_memory_fraction=0.7

--max_number_of_steps=50000

--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

你可能感兴趣的:(SSD-Tensorflow-master训练自己的数据集)