用PaddlePaddle 实现方针检测使命——Paddle Fluid v1.1深度测评
CPU/GPU占用率:正常实习环境下CPU占用率在40%-60%之间,GPU占用率不变在50%阁下。 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的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.行使感觉
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |