加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (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对中文社区很是友爱,有完美的中文社区、项目为导向的中文教程,可以让更多中文行使者更利便地举办深度进修、呆板进修相干的研究和实践。

CPU/GPU占用率:正常实习环境下CPU占用率在40%-60%之间,GPU占用率不变在50%阁下。

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

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

CPU/GPU行使环境

4.6模子评估

在PaddlePaddle的SSD模子中,可以行使eval.py剧本举办模子评估,可以选择11point、integral等要领来计较模子在验证集上的mAP。

python eval.py --dataset='pascalvoc' --model_dir='train_pascal_model/best_model' --data_dir='data/pascalvoc' --test_list='test.txt' --ap_version='11point' --nms_threshold=0.45

个中,model_dir是我们实习好的模子的生涯目次,data_dir是数据集目次,test_list是作为验证集的文件列表(txt文件),条件是这些文件必必要有对应的标签文件,ap_version是计较mAP的要领,nms_threshold是分类阈值。最后我们获得PaddlePaddle SSD模子在Pascal VOC数据集上的mAP为73.32%[2]

4.7模子猜测及可视化

4.7.1模子猜测

模子实习完成后,用test_program = fluid.default_main_program().clone(for_test=True)将Program转换到test模式,然后把要猜测的数据feed进Executor执行Program就可以计较获得图像的分类标签、方针框的得分、xmin、ymin、xmax、ymax。详细进程如下:

test_program = fluid.default_main_program().clone(for_test=True)

image = fluid.layers.data(name='image', shape=image_shape, dtype='float32')

locs, confs, box, box_var = mobile_net(num_classes, image, image_shape)

nmsed_out = fluid.layers.detection_output(

locs, confs, box, box_var, nms_threshold=args.nms_threshold)

place = fluid.CUDAPlace(0) if args.use_gpu else fluid.CPUPlace()

exe = fluid.Executor(place)

nmsed_out_v, = exe.run(test_program,

feed=feeder.feed([[data]]),

fetch_list=[nmsed_out],

return_numpy=False)

nmsed_out_v = np.array(nmsed_out_v)

4.7.2猜测功效可视化

对付方针检测使命,我们凡是必要对猜测功效举办可视化进而得到对功效的感性熟悉。我们可以编写一个措施,让它在原图像上画出猜测框,焦点代码如下:

def draw_bounding_box_on_image(image_path, nms_out, confs_threshold,

label_list):

image = Image.open(image_path)

draw = ImageDraw.Draw(image)

im_width, im_height = image.size

for dt in nms_out:

if dt[1] < confs_threshold:

continue

category_id = dt[0]

bbox = dt[2:]

xmin, ymin, xmax, ymax = clip_bbox(dt[2:])

(left, right, top, bottom) = (xmin * im_width, xmax * im_width,

ymin * im_height, ymax * im_height)

draw.line(

[(left, top), (left, bottom), (right, bottom), (right, top),

(left, top)],

width=4,

fill='red')

if image.mode == 'RGB':

draw.text((left, top), label_list[int(category_id)], (255, 255, 0))

image_name = image_path.split('/')[-1]

print("image with bbox drawed saved as {}".format(image_name))

image.save(image_name)

这样,我们可以很直观的看到猜测功效:

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

令人欣喜的是,PaddlePaddle的SSD模子中帮我们实现了完备的一套猜测流程,我们可以直接运行SSD model下的infer.py剧本行使实习好的模子对图片举办猜测:

python infer.py --dataset='coco' --nms_threshold=0.45 --model_dir='pretrained/ssd_mobilenet_v1_coco' --image_path='./data/ pascalvoc/VOCdevkit/VOC2012/JPEGImages/2007_002216.jpg'

4.8模子陈设

PaddlePaddle的模子陈设必要先安装编译C++猜测库,可以在http://www.paddlepaddle.org/documentation/docs/zh/1.1/user_guides/howto/inference/build_and_install_lib_cn.html下载安装。猜测库中提供了Paddle的猜测API,猜测陈设进程大抵分为三个步调:1.建设PaddlePredictor;2.建设PaddleTensor传入PaddlePredictor中;3.获取输出 PaddleTensor,输出功效。这部门操纵也并不伟大,并且Paddle的教程中也提供了一份陈设具体代码参考,各人可以很快地操作这个模板完成模子陈设(https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/fluid/inference/api/demo_ci)

5.行使感觉
  • 中文社区支持好

(编辑:湖南网)

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

热点阅读