tfrecord数据集的制作 https://blog.csdn.net/qq_40806289/article/details/89510467
重新训练模型的代码修改(主要是自己检测类别数目的修改)
1、datasets文件夹下:pascalvoc_2007.py文件
2、nets文件夹下ssd_vgg_300.py,96、97行(类别数+1)
3、根目录下eval_ssd_network.py文件,66行,类别数+1
4、修改训练步长epoch。train_ssd_network.py
27行:
DATA_FORMAT = 'NCHW' # gpu
# DATA_FORMAT = 'NHWC' # cpu
135行:类别数+1
154行:讲None(无限训练下去)修改为自己想要的迭代步数
5、加载预训练模型,重新训练
下载vgg_16模型
写一个sh文件,方便传参。
DATASET_DIR=./tfrecords_/
TRAIN_DIR=./train_model/
CHECKPOINT_PATH=./checkpoints/vgg_16.ckpt
python train_ssd_network.py --train_dir=./train_model/ --dataset_dir=./tfrecords_/ --dataset_name=pascalvoc_2007 --dataset_split_name=train --model_name=ssd_300_vgg --checkpoint_path=./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=5 --gpu_memory_fraction=0.9
注释:
--save_interval_secs是训练多少次保存参数的步长;
--optimizer是优化器;
--learning_rate是学习率;
--learning_rate_decay_factor是学习率衰减因子;
6、训练结束得到模型
7、测试
使用notebook文件夹下的ssd_notebook.ipynb。我将其转为了py文件使用
有两点需要注意:
1、这个是ipython,注释掉就好
2、模型调用:
生成的模型有3个文件
调用使用