龙空技术网

158.人工智能——PP-Tracking行人跟踪模型部署

UNET 88

前言:

此时看官们对“行人检测与跟踪”都比较关心,咱们都想要学习一些“行人检测与跟踪”的相关内容。那么小编也在网摘上收集了一些关于“行人检测与跟踪””的相关知识,希望朋友们能喜欢,各位老铁们快快来了解一下吧!

为了方便测试,官网提供提供了PP-Tracking行人跟踪垂类模型,可直接下载使用。下载链接:

模型

参数大小

精度

备注

PP-Tracking

51.2MB

-

解压后,查看模型配置文件infer_cfg.yml信息

>tar -xvf fairmot_hrnetv2_w18_dlafpn_30e_576x320.tgz
mode: paddledraw_threshold: 0.5metric: MOTuse_dynamic_shape: falsetracker:  conf_thres: 0.4  metric_type: cosine  min_box_area: 200  tracked_thresh: 0.4  vertical_ratio: 1.6arch: FairMOTmin_subgraph_size: 5Preprocess:- target_size:  - 320  - 576  type: LetterBoxResize- is_scale: true  mean:  - 0  - 0  - 0  std:  - 1  - 1  - 1  type: NormalizeImage- type: Permutelabel_list:- pedestrian

测试视频文件:

模型预测结果说明

fastdeploy.vision.MOTResult
boxes(list of list(float)): 成员变量,表示单帧画面中检测出来的所有目标框坐标。boxes是一个list,其每个元素为一个长度为4的list, 表示为一个框,每个框以4个float数值依次表示xmin, ymin, xmax, ymax, 左上角和右下角坐标ids(list of list(float)):成员变量,表示单帧画面中所有目标的id,其元素个数与boxes一致scores(list of float): 成员变量,表示单帧画面检测出来的所有目标置信度class_ids(list of int): 成员变量,表示单帧画面出来的所有目标类别

代码:(fastdeploy==0.5.0)

import cv2import fastdeploy as fdimport timemodel_file="fairmot_hrnetv2_w18_dlafpn_30e_576x320/model.pdmodel"params_file="fairmot_hrnetv2_w18_dlafpn_30e_576x320/model.pdiparams"config_file="fairmot_hrnetv2_w18_dlafpn_30e_576x320/infer_cfg.yml"model=fd.vision.tracking.PPTracking(model_file,params_file,config_file,model_format=fd.ModelFormat.PADDLE)videofile="img/person.mp4"#图像预测,返回一个结构体数据'''fastdeploy.vision.MOTResultboxes(list of list(float)): 成员变量,表示单帧画面中检测出来的所有目标框坐标。boxes是一个list,其每个元素为一个长度为4的list, 表示为一个框,每个框以4个float数值依次表示xmin, ymin, xmax, ymax, 即左上角和右下角坐标ids(list of list(float)):成员变量,表示单帧画面中所有目标的id,其元素个数与boxes一致scores(list of float): 成员变量,表示单帧画面检测出来的所有目标置信度class_ids(list of int): 成员变量,表示单帧画面出来的所有目标类别'''# 预测图片分割结果cap = cv2.VideoCapture(videofile)frame_id = 0fps=int(cap.get(cv2.CAP_PROP_FPS)) #帧率ftotal=int(cap.get(cv2.CAP_PROP_FRAME_COUNT))#总帧数w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #宽度h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #高度print(w,h,fps)while True:    start_time = time.time()    frame_id = frame_id+1    ret, frame = cap.read()    frame=cv2.resize(frame,(w//4,h//4))    if frame is None:        break    result = model.predict(frame)    end_time = time.time()    fps = 1.0/(end_time-start_time)    #print(frame.shape,fps)    img = fd.vision.vis_mot(frame, result, fps, frame_id)    cv2.imshow("video", img)    cv2.waitKey(30)cap.release()cv2.destroyAllWindows()

运行结果:(CPU环境,运行速度很慢)

标签: #行人检测与跟踪