【多目标跟踪】可视化他人检测方法在MOT-17标准数据库结果

                                                    摘要

              在基于检测的跟踪框架(tracking-by-detection)下,为了方便研究者对比多目标跟踪方法的性能,多目标跟踪标准平台不仅提供了统一的验证视频,有时还提供某类检测方法在标准视频上检测结果。本文主要介绍了如何将多目标跟踪基准平台(Multiple Object Tracking Benchmark,https://motchallenge.net/)提供的DPM, Faster-RCNN, and SDP.检测结果可视化实时显示到对应的视频上,并提供相应代码。  首先介绍了用于行人多目标跟踪的MOT-17数据集提供的DPM, Faster-RCNN, and SDP三种方法对应的论文出处,以及用于车辆跟踪的UA-DETRAC 数据集提供的DPM, ACF, RCNN, and ComACT三种方法的论文出处。   然后下载MOT-17提供的检测结果和相应的视频,读取检测结果,解析后实时显示在视频上。具体过程下图所示:

                           


1 MOT平台提供检测结果出处

MOT-17 提供 DPM, Faster-RCNN, and SDP.检测器在其数据集上的结果。

 

UA-DETRAC 提供以下检测方法在其数据集上的检测结果

备用-论文网盘链接 提取码:eho6 】 


2 下载det.txt与对应的视频

2.1 下载MOT-17数据集检测结果与标签 https://motchallenge.net/data/MOT17/#download 

   Get detections and labels only (9.7 MB) 

2.2 单独下载需要测试的视频(有坑,分辨率与标签不同)

本文以下载 MOT17-04-SDP.mp4为例 :https://motchallenge.net/vis/MOT17-04-SDP。。也可下载整个MOT-17数据集

下载后,视频参数发生变化,与3.1中结果不相同,后续可视化需要修改代码:


3 解析det.txt,并将检测结果显示在MOT17-04-SDP上

#2019-04-29 Xingyu Zeng
import cv2
import numpy as np
def main():
    video_path="MOT17-04-SDP.mp4"
    vid=cv2.VideoCapture(video_path)
    dets=load_mot("mot17/train/MOT17-04-SDP/det/det.txt")
    for frame_num, detections_frame in enumerate(dets, start=1):
        #读取视频
        return_value,frame=vid.read()
        for a in range(len(detections_frame)):
            bbox=detections_frame[a]["bbox"]
            print(frame_num,"bbox:x1, y1, x2, y2", bbox)
        # rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None):
            #将解析处理的矩形框,绘制在视频上,实时显示
            cv2.rectangle(frame,bbox[:2],bbox[2:],(255,0,0),2)
            cv2.imshow("frame", frame)
        # 键盘控制视频播放  waitKey(x)控制视频显示速度
        key=cv2.waitKey(100)& 0xFF
        if key == ord(' '):
            cv2.waitKey(0)
        if key == ord('q'):
            break
if __name__ == '__main__':
    main()

其中解析函数load_mot,来自于AVSS2017多目标跟踪方法冠军【IOU-tracker】中ultil.py

def load_mot(detections):
    """
    Loads detections stored in a mot-challenge like formatted CSV or numpy array (fieldNames = ['frame', 'id', 'x', 'y',
    'w', 'h', 'score']).
    Args:
        detections
    Returns:
        list: list containing the detections for each frame.
    """

    data = []
    if type(detections) is str:
        raw = np.genfromtxt(detections, delimiter=',', dtype=np.float32)
    else:
        # assume it is an array
        assert isinstance(detections, np.ndarray), "only numpy arrays or *.csv paths are supported as detections."
        raw = detections.astype(np.float32)

    end_frame = int(np.max(raw[:, 0]))
    for i in range(1, end_frame+1):
        idx = raw[:, 0] == i
        # print(i,idx)
        bbox = raw[idx, 2:6]
        bbox[:, 2:4] += bbox[:, 0:2]  # x1, y1, w, h -> x1, y1, x2, y2
        scores = raw[idx, 6]
        dets = []
        for bb, s in zip(bbox, scores):
            #源代码没有除以2  由于下载的视频相较与标签分辨率缩小了一半,所以除以2
            dets.append({'bbox': (int(bb[0]/2), int(bb[1]/2), int(bb[2]/2), int(bb[3]/2)), 'score': s})
        data.append(dets)

    return data

程序及附件

链接:https://pan.baidu.com/s/1WjjGEWwk-vP28oQGIQQjkw 提取码:ysyd 

 

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾小蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值