百度飞浆行人多目标跟踪笔记

news/2025/1/18 5:09:44/

开源地址:

PaddleDetection/configs/mot at release/2.3 · PaddlePaddle/PaddleDetection · GitHub

百度飞浆集成了多目标跟踪的多种算法,地址:

PaddleDetection/configs/mot at release/2.3 · PaddlePaddle/PaddleDetection · GitHub

deepsort:

jde

farimot:

本人测试结果如下,后续可能继续跟踪跟进。

本机代码:运行ok:

PaddleDetection-release-2.3

环境,py37

测试入口类:

tools/infer_mot.py

测试结果:有漏检,

奇怪的地方:

如果读取的是视频文件,先用ffmpeg转为图片,然后排序,读取图片列表,

直接读取图片就可以把?

 cap = cv2.VideoCapture(self.video_file)

电脑没有安装ffmpeg,所以把程序改了一下,直接读取文件夹的图片:

    def _load_video_images(self):if self.frame_rate == -1:# if frame_rate is not set for video, use cv2.VideoCapturecap = cv2.VideoCapture(self.video_file)self.frame_rate = int(cap.get(cv2.CAP_PROP_FPS))extension = self.video_file.split('.')[-1]output_path = self.video_file.replace('.{}'.format(extension), '')# frames_path = video2frames(self.video_file, output_path,#                            self.frame_rate)self.video_frames = natsorted(glob.glob(os.path.join(output_path, '*.jpg')))self.video_length = len(self.video_frames)logger.info('Length of the video: {:d} frames.'.format(self.video_length))ct = 0records = []for image in self.video_frames:assert image != '' and os.path.isfile(image), \"Image {} not found".format(image)if self.sample_num > 0 and ct >= self.sample_num:breakrec = {'im_id': np.array([ct]), 'im_file': image}if self.keep_ori_im:rec.update({'keep_ori_im': 1})self._imid2path[ct] = imagect += 1records.append(rec)assert len(records) > 0, "No image file found"return records

改后入口类:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionimport os
import sys# add python path of PadleDetection to sys.path
parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2)))
sys.path.insert(0, parent_path)import warningswarnings.filterwarnings('ignore')import paddle
from paddle.distributed import ParallelEnv
from ppdet.core.workspace import load_config, merge_config
from ppdet.engine import Tracker
from ppdet.utils.check import check_gpu, check_version, check_config
from ppdet.utils.cli import ArgsParserfrom ppdet.utils.logger import setup_loggerlogger = setup_logger('train')def parse_args():parser = ArgsParser()parser.add_argument('--config', type=str, default="../configs/mot/fairmot/fairmot_dla34_30e_576x320.yml", help='Video name for tracking.')parser.add_argument('--video_file', type=str, default="1.mp4", help='Video name for tracking.')parser.add_argument('--frame_rate', type=int, default=-1, help='Video frame rate for tracking.')parser.add_argument("--image_dir", type=str, default=None, help="Directory for images to perform inference on.")parser.add_argument("--det_results_dir", type=str, default='', help="Directory name for detection results.")parser.add_argument('--output_dir', type=str, default='output', help='Directory name for output tracking results.')parser.add_argument('--save_images', default=False, help='Save tracking results (image).')parser.add_argument('--save_videos', default=False, help='Save tracking results (video).')parser.add_argument('--show_image', default=True, help='Show tracking results (image).')parser.add_argument('--scaled', type=bool, default=False, help="Whether coords after detector outputs are scaled, False in JDE YOLOv3 ""True in general detector.")parser.add_argument("--draw_threshold", type=float, default=0.5, help="Threshold to reserve the result for visualization.")args = parser.parse_args()return argsdef run(FLAGS, cfg):# build Trackertracker = Tracker(cfg, mode='test')# load weightsif cfg.architecture in ['DeepSORT']:if cfg.det_weights != 'None':tracker.load_weights_sde(cfg.det_weights, cfg.reid_weights)else:tracker.load_weights_sde(None, cfg.reid_weights)else:tracker.load_weights_jde(cfg.weights)# inferencetracker.mot_predict(video_file=FLAGS.video_file, frame_rate=FLAGS.frame_rate, image_dir=FLAGS.image_dir, data_type=cfg.metric.lower(), model_type=cfg.architecture, output_dir=FLAGS.output_dir,save_images=FLAGS.save_images, save_videos=FLAGS.save_videos, show_image=FLAGS.show_image, scaled=FLAGS.scaled, det_results_dir=FLAGS.det_results_dir, draw_threshold=FLAGS.draw_threshold)if __name__ == '__main__':FLAGS = parse_args()cfg = load_config(FLAGS.config)merge_config(FLAGS.opt)check_config(cfg)check_gpu(cfg.use_gpu)check_version()place = 'gpu:{}'.format(ParallelEnv().dev_id) if cfg.use_gpu else 'cpu'place = paddle.set_device(place)run(FLAGS, cfg)


http://www.ppmy.cn/news/405827.html

相关文章

调用百度AI实现人像分割(上)

百度AI申请应用,获取 APP_ID API_KEY SECRET_KEY。 开始扣图: # -*- coding:utf-8 -*- import cv2 import base64 import numpy as np import os from aip import AipBodyAnalysis import time import randomAPP_ID 25365416 API_KEY pS5cVzzw2i…

百度IM内测:提供内测版下载地址

秘密研发历时一年,无耻的百度终于承认其在开发IM,于今日开始内测。 内测版下载地址:http://down2.beareyes.com.cn/temp/BaiduHi_1.0_Beta1.exe 。此地址非网易地址。网易地址提供的下载貌似是病毒,我在那儿下了,不到…

百度人像分割API

配置API的视频教程在这里。建议看视频,视频里的很详细。 视频教程 百度Ai平台链接 这是最后的代码 代码和教程的代码一样 import requests import base64import cv2 import numpy as np import base64from PIL import Image人像分割file_path F:/630/images/test/…

计算机考研408真题百度云,2021计算机408考研计算机网络百度云+408历年真题

原标题:2021计算机408考研计算机网络百度云+408历年真题 2021计算机408考研天勤王道计算机网络百度云 2021计算机408考研天勤王道计算机网络百度云 2021计算机408考研天勤王道百度云 材料链接: https://shimo.im/docs/PCrHwQqK6tyKVWTw/ 祝咱们考研顺畅! 更多材料见大众号:…

腾讯 vs 百度

有幸在这两家公司都工作过一段时间,对这两家互联网巨头做了个对比,供大家参考 1 文化 百度提倡“简单,可依赖”,我的理解是做出来的产品要靠谱,要有很好的用户体验。以搜索起家的百度,对产品质量相当看中&…

IM基础:XMPP协议相关

xmpp.org XMPP协议实现原理介绍 XMPP协议中文参考指南 XEP-0045: 多用户聊天(muc) XMPP权威指南 (中文版DOC) (英文版PDF) RFC6121 - Jabber/XMPP中文翻译计划RFC 2779 [IMP-REQS] XMPP协议中文版 XMPP:CORE RFC3920 XEP-020…

Android之基于百度云推送IM

Android之基于百度云推送IM 转载于:https://www.cnblogs.com/zhujiabin/p/5345185.html

对接腾讯IM

最近项目中用到了腾讯IM,写篇文章记录一下。 文章目录 1.对接方法代码2.碰到的一些坑 1.对接方法代码 Slf4j public class IMUtil {private static Logger logger LogManager.getLogger(IMUtil.class);//创建应用时即时通信 IM 控制台分配的 SDKAppIDprivate stat…