用PaddlePaddle 实现方针检测使命——Paddle Fluid v1.1深度测评
2. 假如数据没有按要求生涯,则必要在reader.py修改数据路径: class Settings(object): def __init__(self, dataset=None, data_dir=None, label_file=None, resize_h=300, resize_w=300, mean_value=[127.5, 127.5, 127.5], apply_distort=True, apply_expand=True, ap_version='11point'): self._dataset = dataset self._ap_version = ap_version # 把data_dir替代为数据地址路径 self._data_dir = data_dir if 'pascalvoc' in dataset: self._label_list = [] label_fpath = os.path.join(data_dir, label_file) for line in open(label_fpath): self._label_list.append(line.strip()) 1. 假如碰着NoneType is not iterable的错误,一样平常是因为数据读取错误导致的,细心搜查文件路径应该可以办理。 2. 读取PascalVOC数据集用reader.py文件中的pascalvoc()函数,两个数据集的文件布局和标注不太一样,Paddle为我们写好了两个版本数据集的读取要领,可以直接挪用。 4.5模子实习数据读取完成后,就可以着手开始模子的实习了,这里直接行使PaddlePaddle SSD model内里的train.py举办实习: python -u train.py train.py里为全部的超参数都配置了缺省值,不认识PaddlePaddle参数调解的工程师可以直接用缺省参数举办实习,很是利便。假如必要,可以按照下表举办对应超参数的修改: 在执行剧本时,传入响应的参数值即可,譬喻: python -u train.py --batch_size=16 --epoc_num=1 --dataset='pascalvoc' --pretrained_model='pretrain/ssd_mobilenet_v1_coco/' 4.5.1单机多卡设置单机多卡的设置相较于多机多卡设置较为简朴,参数必要先在GPU0上初始化,再经过fluid.ParallelExecutor() 分发到多张显卡上。这里可以行使fluid.core.get_cuda_device_count()获得可用显卡数目,也可以本身界说用几张显卡。 train_exe = fluid.ParallelExecutor(use_cuda=True, loss_name=loss.name, main_program=fluid.default_main_program()) train_exe.run(fetch_list=[loss.name], feed={...}) 4.5.2参数调解PaddlePaddle这一套SSD模子给了行使者很是大的自由度,可以对收集布局、丧失函数、优化要领等多个角度对模子举办调解。本文回收的是基于MobileNet的SSD,假如想行使基于VGG的SSD,可以本身修改工程中的mobilenet_ssd.py文件,把内里界说的MobileNet Program变动为VGG的Program描写就可以了;假如必要修改丧失函数或优化要领,则在train.py中找到build_program()函数,在 with fluid.unique_name.guard("train"): loss = fluid.layers.ssd_loss(locs, confs, gt_box, gt_label, box, box_var) loss = fluid.layers.reduce_sum(loss) optimizer = optimizer_setting(train_params) optimizer.minimize(loss) 里修改丧失函数或优化器即可;修改batch_num、epoch_num、learning rate等参数可以直接在train.py传入参数中举办。 4.5.3模子生涯模子在COCO数据集上实习完后,可以用fluid.io.save_persistables()要领将模子生涯下来,我们实现了如下save_model()函数来将模子生涯到指定路径。 def save_model(postfix, main_prog, model_path): model_path = os.path.join(model_save_dir, postfix) if os.path.isdir(model_path): shutil.rmtree(model_path) print('save models to %s' % (model_path)) fluid.io.save_persistables(exe, model_path, main_program=main_prog) 4.5.4继承实习(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |