141.人工智能-FastDeploy:PPYOLOE模型部署,实现目标检测

飞桨PaddlePaddle是国内百度的源于产业实践的开源深度学习平台,值得推荐学习。

为方便模型快速部署落地,飞桨发布了FastDeploy,一款易用高效的推理部署开发套件。覆盖业界主流优质预训练模型并提供开箱即用的部署体验,包括图像分类、目标检测、图像分割、人脸检测、人脸识别、人体关键点识别、文字识别等多任务,满足开发者多场景,多硬件、多平台的便捷高效的产业级部署需求。

本文以PPYOLOE模型为例,体验一下FastDeploy的模型部署功能。

一、环境要求

  • python版本需要 >= 3.8。原使用的是3.7.4版本,所以再多安装一个python.3.9.13版本。
  • 根据python版本和系统类型,下载对应的whl文件,下载地址:https://www.paddlepaddle.org.cn/whl/fastdeploy.html
  • 安装命令:pip install fastdeploy_python-0.2.0-cp39-cp39-win_amd64.whl(本机CPU版)
  • 依赖库:numpy、opencv-python

安装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 条评论) “”
   
验证码:

相关文章

推荐文章