飞桨PaddlePaddle是国内百度的源于产业实践的开源深度学习平台,值得推荐学习。
为方便模型快速部署落地,飞桨发布了FastDeploy,一款易用高效的推理部署开发套件。覆盖业界主流优质预训练模型并提供开箱即用的部署体验,包括图像分类、目标检测、图像分割、人脸检测、人脸识别、人体关键点识别、文字识别等多任务,满足开发者多场景,多硬件、多平台的便捷高效的产业级部署需求。
本文以PPYOLOE模型为例,体验一下FastDeploy的模型部署功能。
安装fastdeploy
在VsCode编辑器中,多python版本,可以切换:Ctrl+Shift+P,打开命令面版,python:Select interpreter,选择相应python版本作为解释器。
这里选择PaddleDetection导出的部署模型:ppyoloe模型。下载地址:https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz。
模型 | 参数大小 | 精度 | 备注 |
ppyoloe_crn_l_300e_coco | 200MB | 51.4% |
import cv2
import fastdeploy as fd
model_file="ppyoloe_crn_l_300e_coco/model.pdmodel"
params_file="ppyoloe_crn_l_300e_coco/model.pdiparams"
config_file="ppyoloe_crn_l_300e_coco/infer_cfg.yml"
model=fd.vision.detection.PPYOLOE(model_file,params_file,config_file,model_format=fd.Frontend.PADDLE)
#读取infer_cfg.yml文件,获取目标对象对应名称(80个目标对象)
def get_model_config(file_path):
class_names=[]
with open(file_path, 'r') as f:
for line in f:
if line.strip()=="label_list:":
continue
class_names.append(line[1:].strip())
return class_names[-80:]
class_names=get_model_config(config_file)
#print(class_names)
#图像预测,返回一个结构体数据结果
img=cv2.imread("img/street.jpg")
result=model.predict(img.copy())
#print(result)
#解析结构体数据结果(也可以直接可视化输出结果,但没有目标对象名称,只显示ID)
reslst=str(result).split("
")
for res in reslst[1:-1]:
r=res.split(",")
if float(r[4].strip())>=0.5:
x0=int(float(r[0].strip()))
y0=int(float(r[1].strip()))
x1=int(float(r[2].strip()))
y1=int(float(r[3].strip()))
id=int(r[5].strip())
#print(x0,y0,x1,y1,id) #(xmin,ymin,xmax,ymax), id
idcolor=((id*50)%255,(id*100)%255,(id*200)%255) #id颜色区分
cv2.rectangle(img,(x0,y0),(x1,y1),idcolor,2) #画框
cv2.putText(img,class_names[id]+":"+str(round(float(r[4].strip()),2)),(x0,y0),cv2.FONT_HERSHEY_SIMPLEX,0.6,idcolor,2) #目标名称
#直接可视化输出结果
#vis_img= fd.vision.vis_detection(img,result,score_threshold=0.5)
#保存结果
#cv2.imwrite("visualized_result.jpg", vis_img)
cv2.imshow("result",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
预测结果1
预测
参考:https://github.com/PaddlePaddle/FastDeploy
留言与评论(共有 0 条评论) “” |