加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

用PaddlePaddle 实现方针检测使命——Paddle Fluid v1.1深度测评

发布时间:2018-12-12 17:33:04 所属栏目:移动互联 来源:睿博远航
导读:【51CTO.com原创稿件】 1.媒介 11月1日,百度宣布了Paddle Fluid的1.1版本,作为海内首个深度进修框架,PaddlePaddle对中文社区很是友爱,有完美的中文社区、项目为导向的中文教程,可以让更多中文行使者更利便地举办深度进修、呆板进修相干的研究和实践。

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

用PaddlePaddle 实现方针检测使命——Paddle Fluid v1.1深度测评

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继承实习

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读