EfficientDet(tensorflow2 API)
regulation loss 贡献大,由BN产生
1.环境tensorflow2.2
2.py介绍:
xml_to_csv.py:转换xml到csv %可以不用
generate_tfrecord.py 将图片和csv文件打包成训练输入 %可以不用
create_pascal_tf_record.py 得出record值
model_main_tf2.py 可训练,可验证
exporter_main_v2.py 模型导出成为可以使用的frozen graph模型,得到 pth
3.生成record
将数据集分成训练集,验证集9:1
先新建一个pascal_label_map.pbtxt文件
train: %val同理
create_pascal_tf_record.py
python create_pascal_tf_record.py
–label_map_path pascal_label_map.pbtxt
–data_dir Vocvkit2007/
–year
–set train
–output_path pascal_train.record
代码:
flags.DEFINE_string('data_dir', './object_detection/datasets/VOC2007/', 'Root directory to raw PASCAL VOC dataset.')
flags.DEFINE_string('set', 'train', 'Convert training set, validation set or '
'merged set.')
flags.DEFINE_string('annotations_dir', './object_detection/datasets/VOC2007/Annotations/',
'(Relative) path to annotations directory.')
flags.DEFINE_string('year', '2007', 'Desired challenge year.')
flags.DEFINE_string('output_path', './object_detection/datasets/train.tfrecords', 'Path to output TFRecord')
flags.DEFINE_string('label_map_path', './object_detection/datasets/label_map.pbtxt',
'Path to label map proto')
flags.DEFINE_boolean('ignore_difficult_instances', False, 'Whether to ignore '
'difficult instances')
examples_path = '/object_detection/datasets/VOC2007/ImageSets/Main/train.txt'
annotations_dir = os.path.join(data_dir, year, FLAGS.annotations_dir)
annotations_dir = '/object_detection/datasets/VOC2007/Annotations/'
4.修改pipeline.config 管道(6处)
4.1 修改类别数 num_class
4.2 fine_tune_checkpoint: /ckpt-0 #下载预训练好的模型
fine_tune_checkpoint_type: “detection”
3.3 batch_size
4.4 train:
label_map_path: .bptxt
input_map_path: train.record
4.5 val:
label_map_path: .bptxt
input_map_path: val.record
4.6 学习率也可以改下 %可以不改
修改optimizer中的learning_rate,学习率是损失函数loss收敛快慢的重要参数,若loss无比巨大,来回变化,减小学习率。
loss减小慢,增大学习率,训练过程中,调整lr,有助于减小loss,刚开始lr要小点。
5.数据格式
Vocdevkit2007
–VOC2007
–Annotations
–ImageSets
–JPEGImages
有个版本:
object objection
–me
–data
–Vocdevkit2007
–VOC2007
–Annotations
–ImageSets
–JPEGImages
–ssd_mobilenet
–eval_logs %评估生成log
–events.out.tfevents
–logs
train_txt
–output %用来保存训练好的模型
–ssd.mobilenet %预训练模型
–graph.pbtxt
–frozen_infeencer_graph.pb
–model.ckpt.data-0000-0001
–model.ckpt.index
–model.ckpt.meta
–train_logs %训练生成log
–checkpoint
–model0-1
–model.ckpt.index
–model.ckpt.meta
–eval.sh %脚本,命令行输入 sh ./eval.sh
–train.sh
–ssd.mobilenet.v1_coco.config %修改管道
6.开始训练:
改model_dir pipline-config num_steps
train:
python object_detection/model_main_tf2.py
–pipeline_config_path object_detection/configs/tf2/ssd_efficientdet_d0_512x512_coco17_tpu-8.config
–model_dir object_detection/model_training/my_model/train
–alsologtostderr
eval:
python object_detection/model_main_tf2.py
–pipeline_config_path object_detection/configs/tf2/ssd_efficientdet_d0_512x512_coco17_tpu-8.config*
–model_dir object_detection/model_training/my_model/eval
–checkpoint_dir object_detection/model_training/my_model/train/
–alsologtostderr
7.得到pth:exporter_main_v2.py 改下路径
8.可视化
tensorboard --logdir=./train
9.测试
online_detection.py